From cca238e0439deff93e77bfd896e5d5fdccb6c4a8 Mon Sep 17 00:00:00 2001 From: blankboy <308416350@163.com> Date: Sat, 13 Apr 2019 22:07:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4ModbusRTU=20=E5=86=99?= =?UTF-8?q?=E5=8D=95=E4=B8=AA=E7=BA=BF=E5=9C=88=E5=92=8C=E5=86=99=E5=A4=9A?= =?UTF-8?q?=E4=B8=AA=E5=AF=84=E5=AD=98=E5=99=A8=E7=9A=84=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SCADA/Program/ModbusDriver/ModbusRTUDriver.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs b/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs index 86f807e..52ac7d7 100644 --- a/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs +++ b/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs @@ -414,6 +414,17 @@ namespace ModbusDriver dv.Bit--; } break; + case '5': + { + dv.DBNumber = Modbus.fctWriteSingleCoil; + int st; + int.TryParse(address.Substring(1), out st); + dv.Bit = (byte)(st % 16); + st /= 16; + dv.Start = st; + dv.Bit--; + } + break; case '1': { dv.DBNumber = Modbus.fctReadDiscreteInputs; @@ -457,6 +468,22 @@ namespace ModbusDriver dv.ByteOrder = ByteOrder.BigEndian; } break; + case 'F': + { + int index = address.IndexOf('.'); + dv.DBNumber = Modbus.fctWriteMultipleRegister; + if (index > 0) + { + dv.Start = int.Parse(address.Substring(1, index - 1)); + dv.Bit = byte.Parse(address.Substring(index + 1)); + } + else + dv.Start = int.Parse(address.Substring(1)); + dv.Start--; + dv.Bit--; + dv.ByteOrder = ByteOrder.BigEndian; + } + break; } return dv; }