private void WriteRegister() { if (this.canSendNextRequestCommandBytes) { this.CurrentWriteRegisterCommand = this.allWriterRegisterCommands.Dequeue(); if (null != this.CurrentWriteRegisterCommand) { this.serialPortNotResponseCount = 0; this.modbusRtu.WriteSerialPort(this.CurrentWriteRegisterCommand.WriteCommand.ToArray()); this.canSendNextRequestCommandBytes = false; } } else { if (SerialPortNotResponseGiveUpValue <= ++this.serialPortNotResponseCount) { this.canSendNextRequestCommandBytes = true; } else { //重发 if (null != this.CurrentWriteRegisterCommand) { this.modbusRtu.WriteSerialPort(this.CurrentWriteRegisterCommand.WriteCommand.ToArray()); this.canSendNextRequestCommandBytes = false; } } System.Threading.Thread.Sleep(2000); } }
private void WriteRegister() { WriteRegisterCommand writeRegisterCommand = this.allWriterRegisterCommands.Dequeue(); this.modbusRtu.WriteSerialPort(writeRegisterCommand.WriteCommand.ToArray()); }
private void AddWriteRegisterCommands(List <DataPoint> dataPoints) { WriteRegisterCommand writeRegisterCommand = new WriteRegisterCommand(); this.allWriterRegisterCommands.Enqueue(writeRegisterCommand); }
public void AddWriteRegisterCommands(List <DataPoint> dataPoints) { if (null == dataPoints || dataPoints.Count < 1) { return; } DataAnalyzeMode dataAnalyzeMode = ModbusConfigService.GetCurrentDataAnalyzeMode(); List <List <DataPoint> > dataPointsGroupedForWrite = DataPointGrouper.GroupingDataPointsForWriteRegister(dataPoints); foreach (var dataPointsGroup in dataPointsGroupedForWrite) { List <List <byte> > requestCommadBytes = RequestCommandByteStreamCreater.CreateRequestCommandByteStreamForWriteRegisterBy(dataAnalyzeMode, dataPointsGroup); foreach (var requestCommadByte in requestCommadBytes) { WriteRegisterCommand writeRegisterCommand = new WriteRegisterCommand(); //请求唯一性,用guid标示唯一性 List <byte> guidBytes = Guid.NewGuid().ToByteArray().ToList(); requestCommadByte.AddRange(guidBytes); writeRegisterCommand.WriteCommand = requestCommadByte; //TODO:删除,测试用的 //List<byte> textBytes = new List<byte>(); //textBytes.Add((byte)0x02); //textBytes.Add((byte)0x10); //textBytes.Add((byte)0x00); //textBytes.Add((byte)0x72); //textBytes.Add((byte)0x04); //textBytes.Add((byte)0x01); //textBytes.Add((byte)0x02); //textBytes.Add((byte)0x03); //textBytes.Add((byte)0x04); //textBytes.Add((byte)0x09); //textBytes.Add((byte)0x09); //GUID //textBytes.Add((byte)0x02); //textBytes.Add((byte)0x02); //textBytes.Add((byte)0x02); //textBytes.Add((byte)0x02); //textBytes.Add((byte)0x02); //textBytes.Add((byte)0x02); //textBytes.Add((byte)0x02); //textBytes.Add((byte)0x02); //textBytes.Add((byte)0x02); //textBytes.Add((byte)0x02); //textBytes.Add((byte)0x02); //textBytes.Add((byte)0x02); //textBytes.Add((byte)0x02); //textBytes.Add((byte)0x02); //textBytes.Add((byte)0x02); //textBytes.Add((byte)0x02); //writeRegisterCommand.WriteCommand = textBytes; this.allWriterRegisterCommands.Enqueue(writeRegisterCommand); } } }