示例#1
0
        private void SerialDataIntBUSResponse()
        {
            int byteRecieved = SerialPortIntBUS.BytesToRead;

            byte[] responseBytes = new byte[byteRecieved];
            if (responseBytes.Length == 0)
            {
                return;
            }
            SerialPortIntBUS.Read(responseBytes, 0, byteRecieved);
            SerialPortIntBUS.DiscardInBuffer();

            string message = BitConverter.ToString(responseBytes).Replace('-', ' ');

            message = AddTime(message);
            AddConsoleText(message + "\r", textBox_ConsoleIntBUS, Brushes.LimeGreen);

            List <byte> listBytes = new List <byte>();

            listBytes.AddRange(responseBytes);
            listBytes = listBytes.Skip(2).ToList();//TODO переделать
            listBytes = listBytes.Take(listBytes.Count() - 2).ToList();
            listBytes.AddRange(ModbusUtility.CalculateCrc(listBytes.ToArray()));
            responseBytes = listBytes.ToArray();

            message = BitConverter.ToString(responseBytes).Replace('-', ' ');
            message = AddTime(message);
            if (SerialPortModbus != null)
            {
                if (SerialPortModbus.IsOpen)
                {
                    SerialPortModbus.Write(responseBytes, 0, responseBytes.Length);
                }
            }
        }
示例#2
0
        public List <byte> ConvertToIntbusFrame(List <byte> modbusFrame)
        {
            IntbusDevice intbusDevice = this;

            do
            {
                modbusFrame.Insert(0, intbusDevice.AddressWithInterface);
                modbusFrame.InsertRange(0, intbusDevice.PrefixBytes);
                modbusFrame.AddRange(intbusDevice.PostfixBytes);
                intbusDevice = intbusDevice.MasterIntbusDevice;
            } while (intbusDevice != null);
            modbusFrame.RemoveRange(modbusFrame.Count - 2, 2);
            byte[] crc = ModbusUtility.CalculateCrc(modbusFrame.ToArray());
            modbusFrame.AddRange(crc.ToList());

            return(modbusFrame);
        }