C# 使用NModbus4进行TCP读取,并且实现自动断线重连

这篇具有很好参考价值的文章主要介绍了C# 使用NModbus4进行TCP读取,并且实现自动断线重连。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C# 使用NModbus4进行TCP读取,并且实现自动断线重连文章来源地址https://www.toymoban.com/news/detail-708389.html

//简要版本

using Modbus.Device;


TcpClient tcp = new TcpClient();
private IModbusMaster master;

public ushort[] aa(ushort add, ushort length)
        {
            ushort[] a = null;
            Task.Run(() =>
            {
                do
                {
                    try
                    {
                        if (!tcp.Connected)
                        {
                            tcp.Connect("192.168.1.50", 502);
                            master = ModbusIpMaster.CreateIp(tcp);
                        }
                        a = master.ReadHoldingRegisters(1, add, length);
                    }
                    catch (Exception ex)
                    {
                        tcp.Close();
                        Thread.Sleep(10);
                        tcp = new TcpClient();
                    }
                }
                while (a == null);
            }).Wait(100);    // 超过100ms没执行完,就不等待了,可能是网线掉了,连接费时
            return a;
        }

//周期:500ms
private void timer1_Tick(object sender, EventArgs e)
        {
            ushort[] a = aa(1000, 4);
            if (a != null)
                label1.Text = a[0].ToString();
            else
            {
                label1.Text = "xxxx";
                num++;
                label2.Text = num.ToString();
            }    
        }

到了这里,关于C# 使用NModbus4进行TCP读取,并且实现自动断线重连的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#使用TCP进行聊天通信(详细解析)

    TCP通信可以使用Socket和TcpListene进行通信,TcpListene是Socket的一个封装,可以更好的操作Socket,底层依然是socket。 进行通信分为2部分,一个是服务端,一个是客户端。 一,服务端 1.使用TcpListener实例化,得到服务器的ip和端口  myListener = new TcpListener(IPAddress.Parse(textBox1.Text), Co

    2024年02月04日
    浏览(46)
  • 编写C#程序实现和西门子1500PLC进行Modbus Tcp通讯仿真

    前言 本文章的主题是介绍Modbus Tcp通讯仿真,其中C#编写的程序充当客户端(Client),西门子1500PLC充当的服务器端(Server),有关Modbus Tcp协议的具体内容在此也不再赘述,大家可以自行阅读官方文档。 注:在实现其基本功能的条件下,本文的代码编写以及软件配置均简化。

    2024年02月11日
    浏览(68)
  • C#:对word中表格进行复制、粘贴并且替换内容

    在我上一篇对于word开发讲述的文章中对word开发进行了一些介绍,今天接着上一篇文章再介绍一下如何复制word中的表格,然后进行粘贴的操作,最后再介绍一下如何替换表格中的文本。 首先如果想要复制word中的表格自然然需要先实例化doc,这个就不写了。不会的伙伴可以去

    2024年02月09日
    浏览(41)
  • Java实现使用jlibmodbus读取Modbus TCP数据

    提示:可以使用Modbus slave工具模拟Modbus数据站并添加一些数据。 1、pom引入依赖 2、创建modbus主机连接 3、通过连接获取功能码0x04与0x03的数据 4、根据具体业务情况,进行方法的调用与数据解析。在本人实际业务中,存在两个IP地址(实际中上文的主机连接,可以根据IP的不同

    2024年02月11日
    浏览(54)
  • c# 从零到精通 读取连接数据库-并将数据填入dataGridView控件中,并且获取所选单元格的值

    c# 从零到精通 读取连接数据库-并将数据填入dataGridView控件中,并且获取所选单元格的值 using System; using System.Data; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace Test02 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } SqlConnection conn; SqlDataAdapter sd

    2024年02月09日
    浏览(44)
  • 使用netdxf(C#)框架实现dxf文件读取与导出坐标

    窗体FormDxfTool.Designer.cs设计器源程序如下: 关键结构 netDxf.Vector3             可以认为是立体三维坐标(x,y,z) 关键结构 netDxf.Vector2             可以认为是平面二维坐标(x,y) DxfDocument用于读写dxf文件       关键函数Load()用于加载文件       添加实体:dxfDocument.Entities.Add(Ent

    2024年01月16日
    浏览(186)
  • C#【必备技能篇】使用NPOI实现对excel的读取和写入

    依次执行下图中的1-6按钮 , 可以通过查看程序文件夹中的excel文件来加深理解。 链接:https://pan.baidu.com/s/19PgQMhCKviw9aBAjmJHSww 提取码:2omi 需要在源码中增加如下引用。相应的dll已更新到 5 的下载地址中。

    2023年04月13日
    浏览(41)
  • 使用javaweb实现登录注册页面,并且对功能和业务进行分层 用户登录成功跳转到主页并展示数据库的商品的信息

    一、Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据。 Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式。 这里以一个最常用的用户登录

    2024年02月03日
    浏览(65)
  • (STM32)PWM输出控制电机旋转并且使用编码器读取脉冲数

    目录  前言 一、pwm输出让电机转  1.电机的接线说明 2.驱动的接线说明 3.pwm输出代码  pwm.c pwm.h 4.输出pwm控制电机旋转 二、配置定时器编码器模式 1.定时器编码器模式 编码器原理 编码器相关的概念 2.编码器模式——代码部分 3.获取脉冲数 三、定时读取编码器读取的脉冲数

    2024年02月03日
    浏览(58)
  • 如何使用useNavigate 进行路由的跳转以及传参,并且获取参数。

    本文章主要是讲述如何通过 useNavigate携带参数并在对应组件进行接收。 提示:以下是本篇文章正文内容,下面案例可供参考 一定一定要在App组件外面包裹一层router,比如BrowerRouter 获取Params参数使用useParams 获取search参数使用useSearchParams 使用useLocation获取search参数 不同的路由

    2024年02月12日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包