Esempio n. 1
0
        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);
        }
Esempio n. 4
0
        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);
                }
            }
        }