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