示例#1
0
        private void ModbusRtu_OnReceiveDataChanged(object sender, ReceiveDataEventArgs e)
        {
            List <byte> recevideData = e.ReceiveData;

            this.canSendNextRequestCommandBytes = true;

            if (null != recevideData)
            {
                this.currentRecivedByteData = recevideData;

                DataAnalyzeMode           dataAnalyzeMode = ModbusConfigService.GetCurrentDataAnalyzeMode();
                AnalyzeRecivedDataReponse reponse         =
                    RecivedDataAnalyzer.AnalyzeRecivedData(dataAnalyzeMode, this.currentRequestByteData, this.currentRecivedByteData);

                if (reponse.ModbusReponseSuccess && reponse.AnalyzeRecivedDataSuccess)
                {
                    ProcessRegisterValue(reponse.Registers, this.allDataPoints);
                }

                //if (reponse.DataPointType == DataPointType.WriteAndReadByFunNum01
                //    || reponse.DataPointType == DataPointType.WriteAndReadByFunNum03)
                //{
                //    //TODO:分析写寄存器接受侦
                //}
            }
        }
        public void TestReadConfigFormModbusConfigFile()
        {
            ApplicationSettingsFactory.InitializeApplicationSettingsFactory(new AppConfigApplicationSettings());
            IApplicationSettings applicationSettings =
                ApplicationSettingsFactory.GetApplicationSettings();

            IUnitOfWork          unitOfWork          = new AdoUnitOfWork();
            IDataPointRepository dataPointRepository = new DataPointRepository(unitOfWork);
            IModuleRepository    moduleRepository    = new ModuleRepository(unitOfWork);

            ModbusConfigService modbusConfigService = new ModbusConfigService(dataPointRepository,
                                                                              moduleRepository);

            modbusConfigService.ReadConfigFormModbusConfigFile();
        }
示例#3
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);
                }
            }
        }