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(); ...
随机推荐
- Spring —— bean生命周期
bean生命周期 生命周期:从创建到消亡的完整过程 bean生命周期:bean从创建到销毁的整体过程 bean生命周期控制:在bean创建后到销毁前做一些事情 方式一:配置控制生命周期 <b ...
- 【赵渝强老师】大数据工作流引擎Oozie
一.什么是工作流? 工作流(WorkFlow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算.工作流要解决的主要问题是:为实现某 ...
- USB gadget驱动框架(五)
本节主要分析虚拟串口的tty设备的注册.创建/dev/ttyGSx设备节点.tty相关接口的实现. tty的申请与注册 源码:drivers/usb/gadget/function/u_serial. ...
- eBPF 概述:第 1 部分:介绍
1. 前言 有兴趣了解更多关于 eBPF 技术的底层细节?那么请继续移步,我们将深入研究 eBPF 的底层细节,从其虚拟机机制和工具,到在远程资源受限的嵌入式设备上运行跟踪. 注意:本系列博客文章将集 ...
- ADO.NET组成
SqlConnection(数据库连接器) SqlCommand(数据库命名对象) SqlCommandBuilder(生存SQL命令) SqlDataReader(数据读取器) SqlDataAda ...
- 010 Python 重中之重的变量
#!/usr/bin/env python # -*- coding:utf-8 -*- # Datatime:2022/7/16 20:32 # Filename:010 Python 重中之重的变 ...
- 18 Transformer 的动态流程
博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...
- kotlin类与对象——>嵌套类与内部类、枚举类
1.嵌套类,类可以嵌套在其他类中: class Outer { private val bar: Int = 1 class Nested { fun foo() = 2 } } val demo = ...
- Android复习(四)-->权限汇总
官方地址: https://developer.android.google.cn/reference/android/Manifest.permission#public-constructors ...
- vue打包后,添加入spring boot下,访问不到字体的BUG
主要报错:OTS parsing error: incorrect file size in WOFF header OTS parsing error: incorrect entrySelecto ...