当前这套课程布于工控编程实战学院 https://e.gkbc8.com/course-1.html 课程介绍上位机通过MFC/C++利用触摸屏宏指令实现与威纶通触摸屏自由串口通讯功能,视频教程中的 项目源代码与宏指令函数可下载观看学习,也可以直接在自己项目中复制使用,节省项目的开发周期。 上位机源代码中,关键代码部分都有详细的注释,非常容易阅读。上位机代码编写的视频教程里针对函数功能介绍及 代码的具体使用步骤做了讲解。 1)首先是设置串口通讯参数调用一函数SetComPara 2)然后就是连接触摸屏调用一函数ConnectScreen 3)紧接着就可以对具体的数据进行读与写操作了,对应函数为SetData,GetData。
课程大致分为六课时,课程也有对应的PPT,以及上位机MFC/C++与触摸屏宏指令函数都打包 在附件里,供大家下载观看学习。
下面为每课程的具体内容:
0.视屏教程程序实现功能介绍 图1
图2
视频教程以项目程序为向导,讲解如何通过C++代码与触摸屏宏指令实现自由串口通讯功能,上位机界面如上图1, 屏界面如上图2。 上位机程序运行时,会加载事先设置好的串口通讯参数,并连接屏,开始读取屏LW100-LW109十个数据显示 在界面底部的十个编辑框中。也可以通过按钮读取。上位机界面按钮<写入到屏LW0-LW09>可以将上部十个编辑框内容 写入到屏对应元件LW0-LW09中。 屏界面中,顶部16个位指示灯从左到右依次表示LW0.0---LWO.15,将LW0的16个二进制位状态显示出来。 右上角为屏通讯的开关使能按钮与通讯状态指示灯。向下每行分别显示 LW0-LW09数值, LW0-LW09数值对应16进制格式4个字母, 通讯帧的数据, 供上位机读取的LW100-LW109字元件
1.串口通讯线与驱动的准备 个人笔记本一般不会有串口通道,工控机会自两到三个。 所以我们自己学习时会使用USB转串口线来仪表连接通讯。 可以购买一根,价格10元到百元不等,学习用几元的可行。项目用买价格贵点, 主要区别还是搞干扰与稳定性能力。 电脑与屏连接上后会发现并不能通讯很是尴尬! 查阅屏手册 tk6071ip触摸屏带有一COM口,COM1,COM2同在此口,此串口针定义 •IN COM1(RS232) COM2(rs485 4w) COM2(RS485 2W)
•1 rx- data-
•2 rx+ data+
•3 tx-
•4 tx+
•5 GND GND GND
•6 TxD
•7 rts
•8 cts
•9 RxD
查阅USB转串口线9针定义后,发再中间还得自行转接,下面是数据线9针的定义 •有了针脚定义后,淘一对螺丝旋紧式公母头,或自行拆线转接便可。 •数据线制作好后,安装串口转USB线驱动,通讯的准备工作便完成。
•驱动可联系卖家或搜索CH340,CH341下载。安装完驱动,电脑图标上鼠标
•右键依次:管理-设备管理-端口。可以看到驱动生成的串口号
2.串口自由通讯协议约定
两个硬件之间的通讯,得事先做出约定,收发的数据硬件才知道如何处理。自由通讯,就是约定的规则自由定制。 当前我们电脑与触摸屏间的通讯做出简练的约定。如后页表格所示。
【1】 | 【2】 | [3] | [4] | 【5】 | [6] |
| 帧开头 | 屏站号 | 命令码 | 数据 | 校验码 | 帧结尾 |
| STX | H | L | H | L |
| H | L | ETX |
|
| 1]帧开头,ASCII表对应16进制为0x02, 帧开始的固定标识 |
| 2]触摸屏的站号,为两位16进制数,对应线路中屏的站号。 |
| 3】指令码,为两位16进制数,0X40从屏读,0X50向屏写指令。 |
| 4】具体数据,为500内ASCII码字元。 |
| 5】校验码,1,2,3,4四数据进行LRC计算,得两位ASCII码16进制数。 |
| 6】帧结束,ASCII表对应16进制为0X03,帧结束的固定标识。 |
|
|
| 4】数据位最长500,具体约定为 | 上位机发送: | stx | 站号 | 读指令(40) | WORD数据个数 | 暂存器起始码 | 校验码 | etx |
|
| 屏回应: | stx | 站号 | 读指令 | 错误码 | 4位数据1 | … | 校验码 | etx |
|
| 上位机发送: | stx | 站号 | 写指令(50) | WORD数据个数 | 暂存器起始码 | 4位数据1 | … | 校验码 | etx | 屏回应: | stx | 站号 | 写指令 | 错误码 | 校验码 | etx |
|
|
|
| 暂存器起始码约定为LW00000-LW10000,其他暂存器暂不使用。十进制形式 |
| 错误码,0为无误。1为出错,具体错误暂不定义。 |
| 数据个数为两位16进制数,H,L排序。可限制在32个WORD数据个数内 |
|
|
发送:stx,00,50,01,LW00000,0250,18,etx 回应: stx,00,50,0,12,etx | 发送:stx,00,40,01,LW00000,18,etx 回应: stx,00,40,0,0123,F3,etx |
3.触摸屏界面的搭建 触摸屏控件的布局与属性的设置很大一部分是根据宏代码的设置进行。
第一行为16个位状态设置元件,
依次为LW0.0—LW0.15
右上角按钮为位状态切换开关,控制LB12799状态。还有一个指示灯为LB9200显示COM1通讯状态。 第二行为数值显示元件10个,依次为LW0—LW09
显示电脑传输过来的10个数据
第三行为10个字符显示元件,双字长度,依次为
LW200—LW218
第四行为字符显示元件LW300,30字长,显示收发的通讯帧
第五行为数值显示元件10个,依次为LW100—LW109
设置的数值将会被电脑读取
4.触摸屏自由串口通讯宏代码的编写 触摸屏宏指令大概可以分为三个部分编写, 一是接收上位机帧后的数据提取, 二是针对提取的数据进行写指令0X50的处理。 三是针对提取的数据进行读指令0X40的处理。 宏指令是通过100MS间隔不断读取串口数据,接收到0X03后表示完整接收一帧,进而进入数据处理阶段。
宏代码比较多,我们可以打开编辑软件介绍每个代码的含义以及宏的具体使用
5.上位机界面的搭建 上位机界面会比较简单,如右图。
中间为两个按钮,分别实现 1.将上部10个编辑框数据打包后发送给触摸屏,并显示在屏的LW0—LW0910个元件上。
2.从触摸屏LW100—LW109读取10个数据显示到下部10个编辑框中
6.上位机自由串口通讯代码的编写 上位机中,串口通讯代码分通过两个类实现,首先编写一个串口处理类CComPort,处理串口相关事宜。 有串口参数设置,打开,关闭串口,发送数据,接收数据等功能。
然后从串口类继承一新类Cscreen,处理与屏通讯功能。类的使用很简单,首先调用SetComPara设置串口参数。 上位机与屏的串口参数要保持一致才能通讯成功。然后是连接屏ConnectScreen或断开屏DisconnectScreen。 成功连接屏后就可以调用SetData或GetData读取与设置数据
具体代码的介绍与使用,视频介绍.
|