diff --git a/NA200H/ModBus.Net/ComConnector.cs b/NA200H/ModBus.Net/ComConnector.cs index 511b3d1..6e42326 100644 --- a/NA200H/ModBus.Net/ComConnector.cs +++ b/NA200H/ModBus.Net/ComConnector.cs @@ -122,6 +122,7 @@ namespace ModBus.Net } byte[] data = new byte[200]; + Thread.Sleep(100); int i = serialPort1.Read(data, 0, serialPort1.BytesToRead); byte[] returndata = new byte[i]; Array.Copy(data, 0, returndata, 0, i); diff --git a/NA200H/ModBus.Net/ProtocalLinkerBytesExtend.cs b/NA200H/ModBus.Net/ProtocalLinkerBytesExtend.cs index 02ad441..f243b1a 100644 --- a/NA200H/ModBus.Net/ProtocalLinkerBytesExtend.cs +++ b/NA200H/ModBus.Net/ProtocalLinkerBytesExtend.cs @@ -52,7 +52,7 @@ namespace ModBus.Net } } - public class ModbusComProtocalLinkerBytesExtend : ProtocalLinkerBytesExtend + public class ModbusRtuProtocalLinkerBytesExtend : ProtocalLinkerBytesExtend { public override byte[] BytesExtend(byte[] content) { diff --git a/NA200H/NA200H.UI.Console/Program.cs b/NA200H/NA200H.UI.Console/Program.cs index 5a920cd..c7958b1 100644 --- a/NA200H/NA200H.UI.Console/Program.cs +++ b/NA200H/NA200H.UI.Console/Program.cs @@ -90,6 +90,7 @@ namespace NA200H.UI.ConsoleApp //先初始化一个协议转换器,这里构造Modbus/Rtu协议。 BaseProtocal wrapper = new ModbusRtuProtocal(); + /* //调用方法一:手动构造 //第一步:先生成一个输入信息的object数组 object[] inputObjects = new object[]{(byte)0x02,(byte)0x01,(short)0x00,(short)0x03}; @@ -102,8 +103,15 @@ namespace NA200H.UI.ConsoleApp } Console.WriteLine(); Console.Read(); - Console.Read(); + Console.Read();*/ + ReadHoldRegisterModbusProtocal.ReadHoldRegisterInputStruct readHoldRegisterInputStruct = new ReadHoldRegisterModbusProtocal.ReadHoldRegisterInputStruct(2, "0", 4); + ReadHoldRegisterModbusProtocal.ReadHoldRegisterOutputStruct readHoldRegisterOutputStruct = (ReadHoldRegisterModbusProtocal.ReadHoldRegisterOutputStruct)wrapper.SendReceive(wrapper["ReadHoldRegisterModbusProtocal"], readHoldRegisterInputStruct); + for (int i = 0; i < readHoldRegisterOutputStruct.HoldRegisterStatus.Length; i++) + { + Console.WriteLine(readHoldRegisterOutputStruct.HoldRegisterStatus[i]); + } + Console.Read(); /* //调用方法二:自动构造 //第一步:先生成一个输入结构体,然后向这个结构体中填写数据 diff --git a/NA200H/NA200H.UI.WPF/MainWindow.xaml.cs b/NA200H/NA200H.UI.WPF/MainWindow.xaml.cs index 65ff804..0f0c649 100644 --- a/NA200H/NA200H.UI.WPF/MainWindow.xaml.cs +++ b/NA200H/NA200H.UI.WPF/MainWindow.xaml.cs @@ -1,18 +1,7 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; using ModBus.Net; +using System.Windows; + namespace NA200H.UI.WPF { @@ -24,14 +13,14 @@ namespace NA200H.UI.WPF public MainWindow() { InitializeComponent(); - ModbusTCPProtocal wrapper = new ModbusTCPProtocal(); - ReadCoilStatusTCPProtocal.ReadCoilStatusInputStruct readCoilStatusInputStruct = new ReadCoilStatusTCPProtocal.ReadCoilStatusInputStruct(11, "Q1", 3); - ReadCoilStatusTCPProtocal.ReadCoilStatusOutputStruct readCoilStatusOutputStruct = wrapper.Protocals[ReadCoilStatusTCPProtocal.GetType()].SendReceive(readCoilStatusInputStruct); - for (int i = 0; i < readCoilStatusOutputStruct.CoilStatus.Length; i++) + BaseProtocal wrapper = new ModbusRtuProtocal(); + ReadHoldRegisterModbusProtocal.ReadHoldRegisterInputStruct readHoldRegisterInputStruct = new ReadHoldRegisterModbusProtocal.ReadHoldRegisterInputStruct(2, "0", 4); + ReadHoldRegisterModbusProtocal.ReadHoldRegisterOutputStruct readHoldRegisterOutputStruct = (ReadHoldRegisterModbusProtocal.ReadHoldRegisterOutputStruct)wrapper.SendReceive(wrapper["ReadHoldRegisterModbusProtocal"], readHoldRegisterInputStruct); + for (int i = 0; i < readHoldRegisterOutputStruct.HoldRegisterStatus.Length; i++) { - System.Console.WriteLine(readCoilStatusOutputStruct.CoilStatus[i]); + Console.WriteLine(readHoldRegisterOutputStruct.HoldRegisterStatus[i]); } - System.Console.Read(); + Console.Read(); } } }