C#上位机基本通信过程


csharp 复制代码
 TcpClient tcpClient = new TcpClient();
  tcpClient.Connect("127.0.0.1", 502);
  Modbus.Device.ModbusIpMaster master = Modbus.Device.ModbusIpMaster.CreateIp(tcpClient);
  //public ushort[] ReadHoldingRegisters(byte slaveAddress, ushort startAddress, ushort numberOfPoints)
  ushort[] values = master.ReadHoldingRegisters(1, 0, 1);//读的湿度
  textBox1.Text = values[0].ToString();
  

如果想要多线程去读记得要加上

Control.CheckForIllegalCrossThreadCalls = false;

原因是:在多线程应用程序中,如果你尝试在非创建控件的线程上访问控件,

就会触发跨线程调用异常。这是因为 Windows 窗体控件是单线程模型的,不能跨线程直接访问。

csharp 复制代码
 /*是用来禁用控件跨线程调用的检查。在多线程应用程序中,如果你尝试在非创建控件的线程上访问控件,
 就会触发跨线程调用异常。这是因为 Windows 窗体控件是单线程模型的,不能跨线程直接访问。*/
 Control.CheckForIllegalCrossThreadCalls = false;


 //如果做监控 持续拿寄存器的值

 TcpClient tcpClient = new TcpClient();
 tcpClient.Connect("127.0.0.1", 502);
 Modbus.Device.ModbusIpMaster master = Modbus.Device.ModbusIpMaster.CreateIp(tcpClient);
 //public ushort[] ReadHoldingRegisters(byte slaveAddress, ushort startAddress, ushort numberOfPoints)

 //启用多线程去处理这个不然其他操作无法进行
 Task.Run(async () =>
 {
     while (true)
     {
         await Task.Delay(500);//500毫秒执行一次
         try
         {
             ushort[] values = master.ReadHoldingRegisters(1, 0, 1);//读的湿度
             textBox1.Text = values[0].ToString();
         }
         catch (Exception)
         {

             throw;
         }

     }

 });

写入操作是

csharp 复制代码
  //获取到输入的值
  ushort value=ushort.Parse(textBox2.Text);
  // 将值写入到 Modbus 设备的寄存器中(第一个参数是起始寄存器,第二个是个数,第三个是值)
  master.WriteSingleRegister(1, 1, value);
相关推荐
Ray Liang4 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Scout-leaf3 天前
WPF新手村教程(三)—— 路由事件
c#·wpf
用户298698530143 天前
程序员效率工具:Spire.Doc如何助你一键搞定Word表格排版
后端·c#·.net
mudtools4 天前
搭建一套.net下能落地的飞书考勤系统
后端·c#·.net
玩泥巴的5 天前
搭建一套.net下能落地的飞书考勤系统
c#·.net·二次开发·飞书
唐宋元明清21885 天前
.NET 本地Db数据库-技术方案选型
windows·c#
郑州光合科技余经理5 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
lindexi5 天前
dotnet DirectX 通过可等待交换链降低输入渲染延迟
c#·directx·d2d·direct2d·vortice
feifeigo1235 天前
matlab画图工具
开发语言·matlab
dustcell.5 天前
haproxy七层代理
java·开发语言·前端