目录

1. 创建WPF项目ModbusTcpDemo

​2. NuGet安装依赖包

3. 编辑ModelView.xmal代码

4. 编辑ModelView.xmal.cs代码

5. 启动Modbus Slave工具

​6. 启动程序进行连接测试


1. 创建WPF项目ModbusTcpDemo

Visual Studio 2019

.NET Framework 4.8.1


2. NuGet安装依赖包

Nmodbus4

3. 编辑ModelView.xmal代码

<Window x:Class="ModbusTcpDemo.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:ModbusTcpDemo"mc:Ignorable="d"Title="ModBus示例" Height="450" Width="800"><Grid><Grid.RowDefinitions><RowDefinition Height="320"/><RowDefinition/></Grid.RowDefinitions><StackPanel HorizontalAlignment="Center"><TextBox x:Name="TextReceiveData" Text="读取内容" IsReadOnly="True" FontWeight="Bold" VerticalAlignment="Center" HorizontalAlignment="Center" Width="700" Height="300" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Margin="0 10 0 10"/></StackPanel><StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Center"><Label Content="IP地址:" VerticalContentAlignment="Center" FontWeight="Bold"/><TextBox x:Name="TextIpAddress" Text="127.0.0.1" Height="30" Width="100" FontSize="20" HorizontalContentAlignment="Center"/><Label Content="端口:" VerticalAlignment="Center" FontWeight="Bold"/><TextBox x:Name="TextPort" Text="502" Height="30" Width="50" FontSize="20" HorizontalContentAlignment="Center"/><Label Content="从站地址:" VerticalAlignment="Center" FontWeight="Bold"/><TextBox x:Name="TextSlaveAddress" Text="1" Height="30" Width="50" FontSize="20" HorizontalContentAlignment="Center"/><Label Content="起始地址:" VerticalAlignment="Center" FontWeight="Bold"/><TextBox x:Name="TextStartAddress" Text="0" Height="30" Width="50" FontSize="20" HorizontalContentAlignment="Center"/><Label Content="读取个数:" VerticalAlignment="Center" FontWeight="Bold"/><TextBox x:Name="TextTotalSize" Text="1" Height="30" Width="50" FontSize="20" HorizontalContentAlignment="Center"/><Button x:Name="BtnConnectAndStart" Content="连接并启动" FontWeight="Bold"  Height="30" Width="80" Margin="10 0 0 0" Click="ConnectAndStartRetriveData"/></StackPanel></Grid>
</Window>

4. 编辑ModelView.xmal.cs代码

using System;
using System.Net.Sockets;
using System.Threading.Tasks;
using System.Windows;namespace ModbusTcpDemo
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{TcpClient tcpClient = null;public MainWindow(){InitializeComponent();}private void ConnectAndStartRetriveData(object sender, RoutedEventArgs e){var port = TextPort.Text;var ipAddress = TextIpAddress.Text;var readTotalSize = TextTotalSize.Text;var slaveAddress = TextSlaveAddress.Text;var startReadAddress = TextStartAddress.Text;//1. 读取IP地址并验证是否是合法的if (!isValidIpAddress(ipAddress)){MessageBox.Show("不是合法的IP地址");return;}//2. 读取端口号并验证是否是合法的if (!isValidPort(port)){MessageBox.Show("不是合法的端口");}//3. 禁用“连接并启动”按钮BtnConnectAndStart.IsEnabled = false;//4. 建立TCP连接if (tcpClient == null){tcpClient = new TcpClient();}tcpClient.Connect(ipAddress, int.Parse(port));//5. 建立Modbus连接Modbus.Device.ModbusIpMaster master = Modbus.Device.ModbusIpMaster.CreateIp(tcpClient);//6. 启动线程去循环获取数据Task.Run(()=> {while (true){ushort[] ushortArray = master.ReadHoldingRegisters((byte)int.Parse(slaveAddress), (byte)int.Parse(startReadAddress), (byte)int.Parse(readTotalSize));//注意这里WPF线程更新UI需要用以下的方法 不然程序运行会出问题Application.Current.Dispatcher.Invoke((Action)delegate (){TextReceiveData.Text = ushortArray[0].ToString();});}});}private bool isValidIpAddress(string ipAddress){//TODOreturn true;}private bool isValidPort(string port){//TODOreturn true;}}
}

5. 启动Modbus Slave工具


6. 启动程序进行连接测试

WPF编程--Modbus通信Demo相关推荐

  1. 嵌入式Linux 串口编程系列4——EasyARM287开发板通过freemodbus实现Modbus通信

    前面的文章分析了串口的一些基本知识,在工业应用中,串口通信比较常用的协议就是Modbus RTU,freemodbus是一款微型modbus协议栈,之前对各种单片机.小型处理器支持的比较好,从V1.6 ...

  2. s7-200与计算机modbus通讯案例,【案例】S7-200SMART MODBUS通信介绍与实例编程

    一. 西门子S7-200 SMART作为modbus从站 1.检查Micro/WIN SMART Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序 ...

  3. s7-200与计算机modbus通讯案例,西门子S7-200 Smart Modbus通信介绍与实例编程

    一. 西门子S7-200 SMART作为modbus从站 1.检查Micro/WIN SMART Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序 ...

  4. 信捷plc485通信上位机_三菱FX3U编程口通信上位机QT实现

    三菱FX3U编程口通信上位机软件 上位机开发流程: 一 查找类似工具 找到 三菱FX串口实验(FX Serial) 这款工具 这款工具挺好用的,能够验证大多数的功能,而且能够看到发送和接收的报文,是一 ...

  5. plc模拟量与通信控制应用实践_PLC 应用技术——编程、通信、装调、案例

    SIMATIC S7-200 SMART是西门子公司针对中国小型自动化应用市场研发的一款高性价比 PLC产品,其目标是逐步取代目前市场上的S7-200 系列PLC产品.作为 SIMATIC家族的新成员 ...

  6. 如何利用MODBUS通信实现伺服内部位置控制(X3E伺服和SMART PLC)

    如何利用MODBUS通信控制伺服进行位置控制,这篇博客是伺服控制系列博客之一,如何MODBUS通信使能伺服.回原点等,可以参看下面的博客: X3E伺服MODBUS通信控制(附S7-200SMART P ...

  7. 【Qt Modbus通信】libmodbus实现modbus的主机功能/从机功能 源码分享

    前言 modbus在上下位机数据交互时被广泛使用,因此写了这篇笔记和大家一起学习. 参考文献 Libmodbus源码分析(二)-常用接口函数分析 Libmodbus源码分析(四)-RTU相关函数分析 ...

  8. 西门子200/300PLC转以太网同时实现PPI/MPI/DP转modbus通信

    西门子200/300PLC转以太网同时实现PPI/MPI/DP转modbus通信 产品简介 兴达易控MPI-ETH-XD1.0plus是在MPI-ETH-XD1.0的基础上,以太网口增加了支持与西门子 ...

  9. Labview的Modbus通信

    ***Labview的Modbus通信*** 我们在做labview的modbus通讯的时候通常使用的是,NI自带的DSC块或者是免费的自定义库.好处就是简单快捷稳定.当然任何事物是有两面性的,保证通 ...

最新文章

  1. Unity插件之NGUI学习(4)—— 创建UI2DSprite动画
  2. H264 数据avi文件封装和拆解
  3. 《剑指offer》不用加减乘除做加法
  4. python对英语的要求_英语和数学都不好,但是我想学Python编程可以吗?
  5. ES6学习(新增字符串方法)
  6. (原创)我也玩万能表单(自定义表单)(一)
  7. linux下部署jdk+Tomcat
  8. (转)C# Color类图示
  9. python入门指南小说-Python 入门指南
  10. 小知识--oppo R9sk手机刷机
  11. MATLAB 生成随机数
  12. 视频教程-EXCEL VBA编程进阶-Office/WPS
  13. Quartz 知识点汇总
  14. FastFDS分布式文件系统
  15. 2020年中国医药冷链物流行业市场现状分析,行业步入发展快车道「图」
  16. 银行技术岗笔试计算机基础知识点,想去银行技术岗,考试都考啥?
  17. 烙铁使用注意事项及元器件件焊接要点
  18. 利用大白菜制作多系统启动U盘(ubuntu+windows)
  19. Python实现马科维茨有效边界
  20. Android屏幕适配全方位解析与指导

热门文章

  1. Excel导入导出工具类
  2. 面试官问我:未来五年的职业规划..我是这样回答的
  3. 【C语言】字符指针数组查找字符串
  4. 北航数理统计大作业_如何自学概率论与数理统计/微积分/线性代数等科目
  5. html图片沿y轴转换,html-使用CSS水平翻转/垂直翻转/镜像图像
  6. bootmgr能放在Linux分区吗,使用Bootmgr 引导Ubuntu (非wubi安装)
  7. U盘安装centos遇到bootmgr is missing
  8. 【学术知识】纯干货!最全学术会议参会流程分享
  9. 【数据库】事务管理概念
  10. 限时抢购php购广告语,网络购物博览会广告语