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;
            }
        }
Ejemplo n.º 2
0
 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));
 }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        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());
        }
Ejemplo n.º 5
0
 protected void _SendTo(LSRequestMessage message)
 {
     EthernetAdaper.Write(_WriteTo(message));
 }