public void SendCyclicData(PhysicalAddress destination, UInt16 frameID, UInt16 cycleCounter, byte[] userData) { Trace.WriteLine("Sending cyclic data", null); MemoryStream mem = new MemoryStream(); //ethernet Ethernet.Encode(mem, destination, adapter.MacAddress, (Ethernet.Type) 0x8892); //Profinet Real Time RT.EncodeFrameId(mem, (RT.FrameIds)frameID); //user data if (userData == null) { userData = new byte[40]; } if (userData.Length < 40) { Array.Resize <byte>(ref userData, 40); } mem.Write(userData, 0, userData.Length); //RT footer RT.EncodeRTCStatus(mem, cycleCounter, RT.DataStatus.DataItemValid | RT.DataStatus.State_Primary | RT.DataStatus.ProviderState_Run | RT.DataStatus.StationProblemIndicator_Normal, RT.TransferStatus.OK); //Send Send(mem); }