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); } } }
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); }