internal LSResponseMessage(PLCMessageTypes messageType, LSRequestMessage source, byte[] data) : base(messageType, source.UniqueId) { OriginRequestType = source.RequestType; OriginDataType = source.DataType; OriginAddress = source.OriginAddress; DomainType = OriginAddress.Substring(1, 1); DataType = OriginAddress?.Substring(2, 1); Address = OriginAddress?.Remove(0, 3); Addresses = (from i in Address?.Split('.') select int.Parse(i)).ToArray(); RequestDomainType = source.RequestAddress.Substring(1, 1); RequestDataType = source.RequestAddress.Substring(2, 1); RequestAddress = source.RequestAddress.Remove(0, 3); RequestAddresses = (from i in RequestAddress?.Split('.') select int.Parse(i)).ToArray(); switch (messageType) { case PLCMessageTypes.Ascii: _SetAscii(data); break; case PLCMessageTypes.Binary: _SetBinary(data); break; } }
private byte[] _WriteTo(LSRequestMessage message) { _SerialNo = (ushort)((int)_SerialNo++ % 255 + 1); message?.SetSerial(_SerialNo); if (Requests.ContainsKey(_SerialNo)) { Requests[_SerialNo] = message; } else { Requests.Add(_SerialNo, message); } return(_GetBytes(message)); }
private byte[] _GetBytes(LSRequestMessage message) { if (message == null) { return(null); } List <byte> list = new List <byte>(16); list.AddRange(new byte[1] { 5 }); list.AddRange(message.GetAsciiData); list.AddRange(new byte[1] { 4 }); if (message.IsEnableBCC) { list.AddRange(Encoding.ASCII.GetBytes(_CalcBCC(list.ToArray()))); } return(list.ToArray()); }
private byte[] _GetBytes(LSRequestMessage message) { if (message == null) { return(null); } byte[] getBinaryData = message.GetBinaryData; List <byte> list = new List <byte>(16); list.AddRange(Encoding.ASCII.GetBytes(_Mode)); list.AddRange(new byte[3] { 0, 0, 160 }); list.Add(51); list.AddRange(BitConverter.GetBytes(_SerialNo)); list.AddRange(BitConverter.GetBytes((ushort)getBinaryData.Length)); list.Add(Position); list.Add((byte)(list.Sum((byte b) => b) & 0xFF)); list.AddRange(getBinaryData); return(list.ToArray()); }
protected void _SendTo(LSRequestMessage message) { EthernetAdaper.Write(_WriteTo(message)); }