Winform窗体控件双向绑定数据模拟读写PLC数据
1.用Modbus工具模拟PLC

2.创建一个实体类
点击查看代码
internal class Data : INotifyPropertyChanged
{
ushort[] ushorts = new ushort[10];
public ushort D0 { get => ushorts[0]; set { ushorts[0] = value; OnPropertyChanged(nameof(D0)); } }
public ushort D1 { get => ushorts[1]; set { ushorts[1] = value; } }
public ushort D2 { get => ushorts[2]; set { ushorts[2] = value; } }
public ushort D3 { get => ushorts[3]; set { ushorts[3] = value; } }
public ushort D4 { get => ushorts[4]; set { ushorts[4] = value; } }
public ushort D5 { get => ushorts[5]; set { ushorts[5] = value; } }
public ushort D6 { get => ushorts[6]; set { ushorts[6] = value; } }
public ushort D7 { get => ushorts[7]; set { ushorts[7] = value; } }
public ushort D8 { get => ushorts[8]; set { ushorts[8] = value; } }
public ushort D9 { get => ushorts[9]; set { ushorts[9] = value; } }
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
3.创建窗体,添加10个TextBox控件用于显示和设置plc端数据

4.把数据绑定控件,利用定时器事件读取和写入PLC数据。
点击查看代码
Data DB = new Data();
ModbusTcp ModbusTcp = new ModbusTcp();
private void Form1_Load(object sender, EventArgs e)
{
try
{
textBox1.DataBindings.Add("Text", DB, "D0");
textBox2.DataBindings.Add("Text", DB, "D1");
textBox3.DataBindings.Add("Text", DB, "D2");
textBox4.DataBindings.Add("Text", DB, "D3");
textBox5.DataBindings.Add("Text", DB, "D4");
textBox6.DataBindings.Add("Text", DB, "D5");
textBox7.DataBindings.Add("Text", DB, "D6");
textBox8.DataBindings.Add("Text", DB, "D7");
textBox9.DataBindings.Add("Text", DB, "D8");
textBox10.DataBindings.Add("Text", DB, "D9");
ModbusTcp.ModbusTcpConnect("127.0.0.1", 502);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void timer1_Tick(object sender, EventArgs e)
{
ushort[] ushorts = {DB.D0,DB.D1,DB.D2,DB.D3,DB.D4,DB.D5,DB.D6,DB.D7,DB.D8,DB.D9};
ModbusTcp.WriteMultipleRegisters(1, 0, ushorts);
ushorts = ModbusTcp.ReadHoldingRegisters(1, 0, 10);
}
Winform窗体控件双向绑定数据模拟读写PLC数据的更多相关文章
- winform窗体控件(全)
回顾跟补充下除了昨天那常用6个其他的winform窗体控件作用 1:Button:按钮 (1)AutoSize:如果是True的情况下,内容将会撑开:False的话会另起一行 (2)Enabled: ...
- C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法
C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法 1.新建组件这里可以自定义一个Panel控件起名为PanelEx 2.增加一个BoderColor属性和BoderSize属性 pr ...
- C# WinForm窗体控件GroupBox修改边框颜色控件
C# WinForm窗体控件GroupBox修改边框颜色控件 1.新建组件这里可以自定义一个GroupBox控件起名为GroupBoxEx 2.增加一个BoderColor属性 private Col ...
- TreeView树形控件递归绑定数据库里的数据
TreeView树形控件递归绑定数据库里的数据. 第一种:性能不好 第一步:数据库中查出来的表,字段名分别为UNAME(显示名称),DID(关联数据),UTYPE(类型) 第二步:前台代码 <% ...
- 如何在多线程中调用winform窗体控件
由于 Windows 窗体控件本质上不是线程安全的.因此如果有两个或多个线程适度操作某一控件的状态(set value),则可能会迫使该控件进入一种不一致的状态.还可能出现其他与线程相关的 bug,包 ...
- winform窗体 控件【菜单和工具栏控件】【容器控件】
winform的菜单栏和工具栏 1.ContextMenuStrip -- 右键菜单 可以绑定在任何一个控件上,添加操作快捷键,并可以设置多层 每行相当于一个按钮,输入-可添加 ...
- Winform窗体控件自适应大小
自己写的winform窗体自适应大小代码,代码比较独立,很适合贴来贴去不会对原有程序造成影响,可以直接继承此类或者把代码复制到自己的代码里面直接使用 借鉴了网上的一些资料,最后采用重写WndProc方 ...
- Winform 窗体控件随窗体自动(等比例)调整大小
新建窗体程序了,添加窗体事件Load(加载窗体时).Resize(调整控件大小时).自定义方法setTag(获取控件的width.height.left.top.字体大小等信息的值).setContr ...
- 【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器
一.打印控件 第一步先把打印对象搞出来. - printDocument 打印对象(将要打印的内容放到该对象里,从该对象里取内容打印) 设置他的PrintPage事件(对于要打印的每一页触发一次 ...
- winform窗体 控件【MDI 窗体容器】
MDI :窗体容器 -- 在窗体中放置窗体 属性 IsMdiContainer : 是否是窗体 -- 只有 Form 有此属性 Form2 f2 = new Form2(); ...
随机推荐
- SQL Server – 我常用语句
前言 旧没用又忘记了, 又没有 intellisense, 记入这里吧. Reset Auto Increment DBCC CHECKIDENT ('TableName'); -- check cu ...
- springboot-实现csv文件导出功能
excle文件导出,会遇到一个65535行限制的问题,就是导出的数据行数超过65535行就会导出失败,这个是excle本生的限制,这种情况下通常将导出的格式改成csv这样就可以跨过这个限制,同时生成的 ...
- SpringBoot——项目快速启动
SpringBoot项目快速启动 对SpringBoot项目打包(执行Maven构建指令package) 执行后会生成对应的项目 jar包,在文件夹找到该文件 在对应文件夹下即可执行 j ...
- Flutter 3.3 正式发布
Flutter 3 是我们正式为全平台提供支持的一个重量级里程碑,距离它的发布仅过去了三个月,今天让我们有请 Flutter 3.3 正式版!近三个月我们并没有放慢更新迭代的速度--自 Flutter ...
- NOIP2023 游记 初见曙光
NOIP2023 游记 Day 0 明天就考 NOIP 了,今天还是得扎实的复习一下. 安排一下我的复习计划: 上午&&下午 复习线段树 复习权值线段树 学习带权并查集 复习 lca ...
- Android 基于 Choreographer 的渲染机制详解
本文介绍了 App 开发者不经常接触到但是在 Android Framework 渲染链路中非常重要的一个类 Choreographer.包括 Choreographer 的引入背景.Choreogr ...
- KubeSphere 社区双周报 | 2023.12.21-2024.01.04
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- 基于 KubeSphere 的应用容器化在智能网联汽车领域的实践
公司简介 某国家级智能网联汽车研究中心成立于 2018 年,是担当产业发展咨询与建议.共性技术研发中心.创新成果转化的国家级创新平台,旨在提高我国在智能网联汽车及相关产业在全球价值链中的地位. 目前着 ...
- 使用 Cursor 和 Devbox 快速开发并上线 Gin 项目
作为开发者,最让我们头疼的事情是什么?那必须是环境配置.版本控制以及各种部署配置等等繁琐的工作. 想象一下,如果你只需点击几下鼠标,就能拥有一个完全配置好的开发环境,支持从 Java 到 Python ...
- Next.js 零基础开发入门教程2 构建基础脚手架 2024最新更新中|曲速引擎 Warp Drive
开发目标 我们将构建一个简化版本的财务仪表板,其内容包括:公共主页.登录页面.受身份验证保护的仪表板页面.用户可以添加.编辑和删除发票 这篇文章先创建一个简单的nextjs脚手架页面 安装pnpm包管 ...