Пример #1
0
 string ReadInputRegister(byte _cmd, int _abonent, int _pos, ref ushort _result)
 {
     byte[] query = new byte[] { Convert.ToByte(_abonent), _cmd, 0, Convert.ToByte(_pos), 0, 1, 0, 0 };
     Crc16.Add(query);
     if (!comPort.Write(query))
     {
         return("Не смогли записать");
     }
     // 0 - абонент
     // 1 - ошибки
     // 2 - длина / код ошибки
     // 3 - данные
     // 4 - данные
     // 5 - crc
     // 6 - crc
     byte[] packet = comPort.Read(7);
     if (packet.Length != 7)
     {
         return("Не смогли прочитать");
     }
     if (packet[0] != _abonent)
     {
         return("Не тот абонент");
     }
     if ((packet[1] & 0x80) != 0)
     {
         return("Ошибка в ответе: " + packet[2].ToString());
     }
     if (packet[2] != 2)
     {
         return("Не верная длина в ответе");
     }
     if (!Crc16.Check(packet))
     {
         return("Не верная контрольная сумма");
     }
     _result = BitConverter.ToUInt16(new byte[2] {
         packet[4], packet[3]
     }, 0);
     return(null);
 }
Пример #2
0
        byte[] ReadTail()
        {
            List <byte> L = new List <byte>();

            while (true)
            {
                byte[] packet = comPort.Read(1);
                if (packet.Length == 0)
                {
                    break;
                }
                L.Add(packet[0]);
                if (packet[0] == 0x0A)
                {
                    break;
                }
            }
            return(L.ToArray());
        }