using HybirdFrameworkCore.Autofac.Attribute; using HybirdFrameworkCore.Const; using HybirdFrameworkDriver.ModbusTcpMaster; using log4net; using Service.FireControl.Msg; namespace Service.FireControl.Client; [Scope] public class FireControlClient: ModbusTcpMaster { private static readonly ILog Log = LogManager.GetLogger(typeof(FireControlClient)); public FireControlClient() { ReadAction = BatchRead; Ip = "172.0.50.100"; Port = 502; Duration = 1000; AutoReConnect = true; ByteSeq = EndingConst.ByteSeq.BA; WordSeq= EndingConst.WordSeq.CD; } private void BatchRead(ModbusTcpMaster master) { Log.Info("fire start read"); var bytes02 = master.ReadCoil("0x0000", 17).Content;//0x01 var bytes03 = master.BatchReadHolderRegister(1, 3);//0x03 读1 3 var bytes04 = master.BatchReadHolderRegister(0x0100, 383);//0x03 读256 383 var bytes05 = master.BatchReadHolderRegister(1, 115);//0x04 可以 List bytes06=new List();//= master.BatchReadHolderRegister(0x0800, 2048);//0x04 可以 var bytesAdd1 = master.BatchReadHolderRegister(0x0800, 1000);//0x04 可以 var bytesAdd2 = master.BatchReadHolderRegister(3048, 1048);//0x04 可以 if (bytesAdd1 != null && bytesAdd2 != null) { bytes06.AddRange(bytesAdd1); bytes06.AddRange(bytesAdd2); } var bytes07 = master.BatchReadHolderRegister(0x1000, 32);//0x04 可以 var bytes08 = master.BatchReadHolderRegister(0x0000, 134);//0x05 写 var bytes09 = master.BatchReadHolderRegister(0x0100, 64);//0x06 写 try { if (bytes02 != null) { Log.Info("fire read bytes02 success"); //ModbusDecoder.Decode(bytes02, FireControlMgr.Subzone2, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); FireControlMgr.Subzone2.GiveAnAlarm.Value = bytes02[0]; FireControlMgr.Subzone2.NumberOfFailures.Value = bytes02[1]; FireControlMgr.Subzone2.SoundSuppression.Value = bytes02[2]; FireControlMgr.Subzone2.SelfInspection.Value = bytes02[3]; FireControlMgr.Subzone2.MainPower.Value = bytes02[4]; FireControlMgr.Subzone2.PowerSupplyBackup.Value = bytes02[5]; FireControlMgr.Subzone2.BackupPowerUnderpowered.Value = bytes02[6]; FireControlMgr.Subzone2.AutomaticMode.Value = bytes02[7]; FireControlMgr.Subzone2.ManualMode.Value = bytes02[8]; FireControlMgr.Subzone2.ManualStart.Value = bytes02[9]; FireControlMgr.Subzone2.ManualScram.Value = bytes02[10]; FireControlMgr.Subzone2.StartUpControl.Value = bytes02[11]; FireControlMgr.Subzone2.Delay.Value = bytes02[12]; FireControlMgr.Subzone2.PrimingSpray.Value = bytes02[13]; FireControlMgr.Subzone2.Spray.Value = bytes02[14]; FireControlMgr.Subzone2.AudibleVisualAlarmStatus.Value = bytes02[15]; FireControlMgr.Subzone2.DeflatedDoNotEnter.Value = bytes02[16]; } } catch (Exception e) { Log.Info($"fire read bytes02 erroe{e}"); } try { if (bytes03 != null) { ModbusDecoder.Decode(bytes03, FireControlMgr.Subzone3, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); } } catch (Exception e) { Log.Info($"fire read bytes03 erroe{e}"); } try { if (bytes04 != null) { ModbusDecoder.Decode(bytes04, FireControlMgr.Subzone4, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); } } catch (Exception e) { Log.Info($"fire read bytes04 erroe{e}"); } try { if (bytes05 != null) { ModbusDecoder.Decode(bytes05, FireControlMgr.Subzone5, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); } } catch (Exception e) { Log.Info($"fire read bytes05 erroe{e}"); } try { if (bytes06 != null) { ModbusDecoder.Decode(bytes06.ToArray(), FireControlMgr.Subzone6, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); } } catch (Exception e) { Log.Info($"fire read bytes06 erroe{e}"); } try { if (bytes07 != null) { ModbusDecoder.Decode(bytes07, FireControlMgr.Subzone7, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); } } catch (Exception e) { Log.Info($"fire read bytes07 erroe{e}"); } try { if (bytes08 != null) { ModbusDecoder.Decode(bytes08, FireControlMgr.Subzone8, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); } } catch (Exception e) { Log.Info($"fire read bytes08 erroe{e}"); } try { if (bytes09 != null) { ModbusDecoder.Decode(bytes09, FireControlMgr.Subzone9, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); } } catch (Exception e) { Log.Info($"fire read bytes02 erroe{e}"); } } }