当前位置:网站首页>昆仑通态屏幕制作(连载3)---基础篇(按钮串口发送)
昆仑通态屏幕制作(连载3)---基础篇(按钮串口发送)
2022-07-30 05:45:00 【透明的光】
写在开始
经历了两天的努力,终于对这款嵌入式屏幕有了新的认识。下面做下类比:
单片机或者ARM:
(1)main函数开始,进行INIT初始化;
(2)while(1)循环;
(3)外部或内部中断。
以上三点是咱们熟悉的硬件常规编程
而昆仑通态屏幕脚本编程:

(1)初始化脚本;---对应INIT初始化
(2)采集脚本;---对应while(1)循环
(3)单通道写脚本;---对应中断
(4)退出脚本。
结论:这两种编程是一一对应的,只是昆仑通态屏幕脚本编程的时候多了一个退出脚本。也就是退出屏幕时执行的程序。
初始化和while(1)循环这两个没什么区别,单通道脚本里相当于中断,而通道值的变化就是触发单通道脚本执行的中断。这点下面会详细叙述。
第一节:回顾
上文中https://blog.csdn.net/weixin_45426095/article/details/119410084,《昆仑通态屏幕制作(连载2)------基础篇(初试篇)》详细介绍了怎么写脚本,怎么配置脚本和屏幕的链接,怎么制作屏幕,怎么调试,怎么验证。还不清楚的小伙伴可以移步上述链接。
现在打开窗口必须有三个:
(1)组态软件,也就是屏幕,随时拉模块,随时改变显示。
(2)脚本软件,随时修改脚本文件,然后连接到组态软件中。
(3)串口助手,方便调试。
注:利用虚拟串口软件,虚拟出成对的串口,组态软件连接到一个串口,串口助手连接到另一个串口,就可以不用硬件连接,直接通过虚拟的串口达到串口调试的目的。
昨天制作了取数、显示和串口发送的例程,今天加入新的东西:按钮发送数据,滑块输入其他显示,加减输入显示,串口数据显示。
第二节:按钮发送
1. 编写脚本
(1)加入通道:第一个按钮,设备通道直接数数,第三个。

(2)编写脚本:在单通道写脚本里。
DIM ButtonChannel as INTEGER首先定义一个通道号,目的:取哪个通道变化了,也就是哪个设备通道有中断。
ButtonChannel = !GetCurrentChannelNum()执行上述程序,可以得到哪个设备通道里面的值变了。
IF ButtonChannel = 3 THEN
!Sleep(1000)
nSendByteArr[1] = &H5B
nSendByteArr[2] = &HB5
nSendByteArr[3] = &HFF
nSendByteArr[4] = !BitRShift(gnGetData1, 8)
nSendByteArr[5] = gnGetData1
nSendByteArr[6] = !SvrByteArraySum(nSendByteArr,3,3)'和校验
!DevClearBuff() '清缓冲
!DevWriteAndReadByteArr(nSendByteArr,6,nRecvByteArr,6,通讯延时)
ENDIF因为第一个按钮是第三个通道,也就是第三个数,所以以下按行解释代码
如果按钮被按下,==3时,执行以下程序;
缓冲1000ms,这个是系统时间,不占空中断时间,所以可以放心的延时,对整个中断程序和while(1)的程序执行都无影响。
填充发送的buffer 6个数,
清缓存,发送6个数据,接收6个数据;
(3)保存。
2. 加载脚本和屏幕链接驱动
(1)打开昨天建立的文件:

(2)点击设备窗口:双击设备窗口,弹出对话框:因为脚本文件已经被改写,所以出现驱动已在外部被修改,

双击驱动:更新设备,在通道连接选项中,添加对应数据对象。这样脚本里的参数就可以被屏幕界面中的模块识别了。

(3)保存,退出,打开用户窗口。
3. 屏幕界面设置
(1)放置按钮模块,这个不会的话,在前面的教程里有详细介绍。

(2)修改参数:双击按钮,打开对话框,在操作属性中:

数值对象中,选择取反,问号里面选择第一个按钮。
注:这里必须点击取反,因为每次按键都要执行中断脚本程序,也就是单通道写脚本。选择其他的就只执行一次,或者执行多次。
(3)保存。
4. 验证
工具,下载配置,工程下载,启动运行:

(1)初始结果:昨天的发送程序,1s执行一次,报文正确。

(2)取数框中修改数据:显示框中跟随变化,串口显示变为0A,报文正确。


(3)点击按钮后,报文正确。

第三节:总结
(1)总的来说,编程思想和以前是一样的,但是编程内容接近于嵌入式,或许这个就是为啥叫嵌入式屏幕了吧。
(2)当编写好第一例程之后,下面的东西就是比葫芦画瓢了,一个一个的添加,然后去验证。从脑力劳动变成了体力劳动。
(3)屏幕入门有一定的门槛,特别是没有嵌入式ARM单片机等面向逻辑编写基础的小伙伴,应该有一定的困难。如果是面向对象编程的小伙伴,可以看看前面的文章,有介绍面向逻辑和面向对象编程的区别。之后就是有面向逻辑编写基础的小伙伴,如果没有一定的例程也非常难搞,要是有例程了,可以在此基础上改动,这个时候就比较容易了。
第四节:展望
现在先写一个按钮的程序,之后的教程会相继发出,毕竟编程序需要一定的时间,写文章也需要一定的时间,同时上班期间还有其他的工作需要干,请耐心等待,谢谢了!有需要讨论的小伙伴可以添加微信,大家一起进步:

边栏推荐
猜你喜欢

Target detection, object classification and semantic segmentation of UAV remote sensing images based on PyTorch deep learning

建造者模式(Swift 实现)

Xcode 绑定按钮点击事件

R-GIS: 如何用R语言实现GIS地理空间分析及模型预测

“R语言+遥感”的水环境综合评价方法

基于OpenCV的双目重建

R - GIS: how to use R language implementation of GIS geospatial analysis and model prediction

求职准备知识点

Pytorch(一):动态图机制以及框架结构

MySQL 数据类型及占用空间
随机推荐
OpenCV中(rows,cols)与图像(x,y)
卷积神经网络(CNN)之卷积操作、池化操作、激活函数
十、Kotlin基础学习:1、延迟加载;2、异常处理;3、使用 throw 主动抛出异常;4、自定义异常;
无人机生态环境监测、图像处理与GIS数据分析
二叉树(一):深度优先遍历与广度优先遍历
User password encryption using Bcrypt instead of MD5, SHA1 and SHA256
边境的悍匪—机器学习实战:第十三章 使用TensorFlow加载和预处理数据
联影医疗二面
函数的信息传递(C语言实践)
Function functional interface and application
大气颗粒物 PMF 源解析
Trust anchor for certification path not found.异常解决方法。
2021-09-19 集成学习TASK2
Kotlin协程的简单用法:1、GlobalScope(不建议使用);2、lifecycleScope、viewModelScope(建议使用);
点云统计滤波理解
Pytorch(三):可视化工具(Tensorboard、Visdom)
常用损失函数(一):Focal Loss
Detailed introduction to the usage of Nacos configuration center
MySQL window function
mysql delete duplicate data in the table, (retain only one row)