威纶通触摸屏宏指令,数据转换分类函数,详解与实操
liebian365 2024-10-18 09:31 157 浏览 0 评论
在编写宏指令时,我们基本都是调用威纶给我们提供的系统指令。
这些指令按功能作了细分,如下图,约有11个分类。
前面小节我们以视频教程的形式介绍了数学运算相关的函数。
发现每个分类下的函数非常多,所以我们这里以图文的形式介绍数据转换分类下的全部函数。
每一个函数的介绍与使用都通过例程的形式,在编程软件上测试运行。
大家可以在自己电脑打开编程软件实践,运行例程,查看效果。
遇到问题可以在平台提问,@我,一起交流。
数据转换类函数共有14个,分别为
ASCII2DEC, DEC2ASCII,
ASCII2FLOAT, FLOAT2ASCII,
ASCII2HEX, HEX2ASCII,
BCD2BIN, BIN2BCD,
StringBin2DecAsc, StringDecAsc2Bin,
StringBin2HexAsc, StringHexAsc2Bin,
StringDecAsc2Float, StringFloat2DecAsc
在使用这些函数前,我们得知道一些知识。
十进制数由0,2,3,4,5,6,7,8,9组成,
十六进行数上面的0到9另加A,B,C,D,E,F组成。
BIN数据,为二进制数据,我们在编程时传递十或十六进制数,
触摸屏会在后台转换为对应的二进制数处理。
BCD码,用四位二进制数表示一个十进制数,主要方便二进制与十进制间的转换。
ASCII码用于电脑显示数字,英文,字符等信息,我们常用的数字,
大小写字母,标点符号都有可以通过对应的数字表示,可以通过查表知道对应关系。
如查询下图ASCII表,知道字符‘A’可以用十进制66表示,
也可以用十六进制0X42表示。这些关系可以这小节的数据转换分类下的函数实现互换。
1.ASCII2DEC。
此函数用于将ASCII格式字符转换为十进制格式数字。
要注意的是我们十进制数只有0到9个数字,所以我们传递的字符也只能有这几个字符。
我们可以在编辑器中使用下面代码。
再添加数值输入元素,如下图设置后查看输出结果。
macro_command main()
//使用方法1.可以只转换一个字符。
char c='5'
int result
//将字符‘5’转换为十进制整数,结果存储在result,result值为5.
//1表示转换字符的个数,因为‘5’为一个字符,所以这里传递1.
ASCII2DEC(c,result,1)
//SetData(result, "Local HMI", LW, 0, 1)
//使用方法2.可转换多字符
char cc[3] = {'1', '2', '3'}
//这里我们定义了字符数组CC,共3个元素,分别为cc[0],cc[1],cc[2]
//我们将cc[0]传递进去表示从元素0开始,传递3表示共转换3个字符
//结果存储在result中,result=123
ASCII2DEC(cc[0],result,3)
SetData(result, "Local HMI", LW, 0, 1)
end macro_command
2.DEC2ASCII。
此函数与上边的函数ASCII2DEC相反,将十进制格式数字转换为ASCII字符。
我们可以在宏编辑界面复制下面代码,
然后添加字符元件,进行如下图两步设置,查看运行结果。
macro_command main()
int nValue =123
char cc[3]
//nValue=123有3个数字,所以我们定义了3个元件的数组cc来保存转换结果。
//以面代码表示存储在字符数组cc第0个元素开始的3个元素里。
//结果cc[0]='1',cc[1]='2',cc[2]='3'
DEC2ASCII(nValue,cc[0],3)
SetData(cc[0], "Local HMI", LW, 0, 3)
end macro_command
3.ASCII2FLOAT。
此函数用于将ASICC字符转换为浮点数。
要注意的是浮点数是由字符0到9加小数点'.'组成,所以只支持字符’0‘到’9‘和'.'。
我们可以在宏编辑器内使用下面代码,再添加数值元件,读写地址LW0,
格式如下图设置为浮点数据,运行查看输出结果。
macro_command main()
char c[3]={'1','.','2'}
float result
//下面代码表示将c[0]开始的3个字符转换为浮点数,result=1.2。
ASCII2FLOAT(c[0], result, 3)
SetData(result, "Local HMI", LW, 0, 1)
end macro_command
4.FLOAT2ASCII
此函数与上边的函数ASCII2FLOAT,将浮点数转换为ASCII字符。
我们可以在宏编辑界面里使用下面代码,
然后添加字符元件,进行如下图两步设置,查看运行结果。
macro_command main()
float result =1.2
char c[3]
//将浮点数转换为ASCII格式字符,结果为c[0]=‘1’, c[1]=‘.’, c[2]=‘2’
//下面代码表示将结果存储在c[0]元素开始的3个字符元素里。
FLOAT2ASCII(result, c[0], 3)
SetData(c[0], "Local HMI", LW, 0, 3)
end macro_command
5.ASCII2HEX。
此函数将ASCII字符转换为16进制数。
要注意的是16进制数只有’0'到‘9’和'A'到'F'字符(或小写),其他字符无效。
我们可以在宏编辑器里使用下面代码,
再添加数值元件,设置其读写地址为LW0,如下图设置其格式后,查看输出结果。
macro_command main()
char c[3]={'1','F'}
int result
//将C[0]开始的2个字符转换为16进制数,保存到result,result=0x1f.
ASCII2HEX(c[0],result,2)
SetData(result, "Local HMI", LW, 0, 1)
end macro_command
6.HEX2ASCII。
此函数为上面函数ASCII2HEX的反向运算,将16进制数转为ASCII字符。
我们可以在宏编辑界面使用下面代码。
然后添加字符元件,进行如下图两步设置,查看运行结果。
macro_command main()
int value = 0x1f
char c[2]
//将数据value转换为ASCII字符,保存在c[0]开始的2个字符里。
//这里0x1f的前缀0x表示16进制,转换为十进制数为31
HEX2ASCII(value,c[0],2)
SetData(c[0], "Local HMI", LW, 0, 2)
end macro_command
7.BCD2BIN 和 BIN2BCD。
这两个函数为互逆运算,分别实现将BCD码转换为二进制码,将二进制码转换为BCD码。
在我们编写宏指令时数据会以十进制数表示,如123。
或以16进制数据表示,如0X123。
BCD码和二进制码为软件后台运算使用。
所以我们在使用这两个函数时,也只是传递十或十六进制数。
我们可以在宏编辑界面里使用下面的代码,
然后添加数值元件,设置读写地址为LW0,显示格式16位BCD码。
添加另一数值元件,设置读写地址为LW1,显示格式为16位二进制码。
显示格式设置如下图,模拟运行,可以查看宏指令输出结果
macro_command main()
int value = 0XF
int result
BCD2BIN(value, result)
SetData(result, "Local HMI", LW, 1, 1)
BIN2BCD(result,value)
SetData(value, "Local HMI", LW, 0, 1)
end macro_command
8.StringBin2DecAsc。
函数StringBin2DecAsc将一个整数转换为十进制字符串。
也就是转换的结果字符只有'0'到'9'这个十字符。
在宏编辑器使用下面的代码。
然后添加字符元件,如下图设置后,用于显示运行结果。
macro_command main()
int value = 0XF
char c[10]
bool rst
//在注意定义的字符数据char c[],元素个数一定要足够多,这里定义10个元素来接收。
rst = StringBin2DecAsc(value, c[0])
//如果函数执行成功,则将结果显示在控件上。
if(rst==true) then
SetData(c[0], "Local HMI", LW, 0, 4)
end if
end macro_command
9.StringDecAsc2Bin。
此函数与上边函数StringBin2DecAsc相反,
用于将一个十进制格式的字符串转换为一个整数。
同样要注意的是十进制格式的字符串里只有'0' 到 '9'。
在宏编辑器里,使用下面代码。
再添加数值元件,显示执行结果,元件读写地址设置如下图。
macro_command main()
int result
char c[10] ="123"
bool rst
//将从c[0]开始的数字串转换为一个整数,结果result=123.
//要注意的是如果char c[10] ="123c",则函数执行出错,十进制里没有'c'字符。
rst = StringDecAsc2Bin(c[0], result)
if(rst == true)then
SetData(result, "Local HMI", LW, 0, 1)
end if
end macro_command
10.StringBin2HexAsc。
此函数用于将整数转换为16进制格式字符。
十六进制字符里只有'0'到'9'和'A'到'F',所以转换结果字符串里只有这些字符。
我们可以在宏编辑器使用下面的代码。
然后添加一个字符元件,如下图设置后,用于显示运行结果。
macro_command main()
char c[10]
int result
bool rst
//将整数123转换为十六进制格式字符,存储在C[0]开始的字符串里。
//要注意的是字符串长度一定够长,不然函数执行出错。
rst = StringBin2HexAsc(123, c[0])
if rst==true then
SetData(c[0], "Local HMI", LW, 0, 4)
end if
end macro_command
11.StringHexAsc2Bin。
与上面函数StringBin2HexAsc相反,此函数用于将16进制的字符串转换为整数。
我们可以在宏编辑器里使用下面代码。
然后添加一个数值元素,如下图,
设置其读写地址为LW0,格式为2进制,模拟运行查看结果。
macro_command main()
char c[10]="2F"
int result
bool rst
//函数将c[0]开始的字符串转换为二进制整数。
//界面是二进制数以十进制格式显示,我们可以添加数值显示元件,
//设置其格式为二进制来查看结果,执行结果为101111
rst = StringHexAsc2Bin(c[0],result)
if rst==true then
SetData(result, "Local HMI", LW, 0, 1)
end if
end macro_command
12.StringFloat2DecAsc。
函数用于将浮点数据转换为字符串。
我们可以在宏编辑器时使用下面函数。
再添加字符元件,如下图设置其读写地址,模拟显示执行结果。
macro_command main()
float value=1.23
char c[10]
bool rst
//函数将浮点数value转换为字符串保存在c[0]开始的存储器中。
//要注意的是用于存储结果的字符数组要能足够空间,不然函数出错
rst = StringFloat2DecAsc(value, c[0])
if rst==true then
SetData(c[0], "Local HMI", LW, 0, 4)
end if
end macro_command
13.StringDecAsc2Float。
与上面的函数StringFloat2DecAsc相反,此函数用于将字符串转换为浮点数。
要注意的是浮点数字符只有'0’到‘9’和小数点‘.',不然函数执行失败。
我们可以添加数值元件,设置读写地址为LW0,
再如下图,设置其格式为浮点数,执行查看结果。
macro_command main()
float result
char c[10]="1.23"
bool rst
//将c[0]开始的字符串转换为浮点数。
rst = StringDecAsc2Float(c[0],result)
if rst==true then
SetData(result, "Local HMI", LW, 0, 1)
end if
end macro_command
数据转换分类下的函数,共14个,上面就是全部函数的介绍。
可以在编辑软件里执行测试每个函数下的代码,会有比较直观的理解。
后面小节我们会介绍数据操作分类下的全部函数。
相关推荐
- “版本末期”了?下周平衡补丁!国服最强5套牌!上分首选
-
明天,酒馆战棋就将迎来大更新,也聊了很多天战棋相关的内容了,趁此机会,给兄弟们穿插一篇构筑模式的卡组推荐!老规矩,我们先来看10职业胜率。目前10职业胜率排名与一周前基本类似,没有太多的变化。平衡补丁...
- VS2017 C++ 程序报错“error C2065:“M_PI”: 未声明的标识符"
-
首先,程序中头文件的选择,要选择头文件,在文件中是没有对M_PI的定义的。选择:项目——>”XXX属性"——>配置属性——>C/C++——>预处理器——>预处理器定义,...
- 东营交警实名曝光一批酒驾人员名单 88人受处罚
-
齐鲁网·闪电新闻5月24日讯酒后驾驶是对自己和他人生命安全极不负责的行为,为守护大家的平安出行路,东营交警一直将酒驾作为重点打击对象。5月23日,东营交警公布最新一批饮酒、醉酒名单。对以下驾驶人醉酒...
- Qt界面——搭配QCustomPlot(qt platform)
-
这是我第一个使用QCustomPlot控件的上位机,通过串口精确的5ms发送一次数据,再将读取的数据绘制到图表中。界面方面,尝试卡片式设计,外加QSS简单的配了个色。QCustomPlot官网:Qt...
- 大话西游2分享赢取种族坐骑手办!PK趣闻录由你书写
-
老友相聚,仗剑江湖!《大话西游2》2021全民PK季4月激燃打响,各PK玩法鏖战齐开,零门槛参与热情高涨。PK季期间,不仅各种玩法奖励丰厚,参与PK趣闻录活动,投稿自己在PK季遇到的趣事,还有机会带走...
- 测试谷歌VS Code AI 编程插件 Gemini Code Assist
-
用ClaudeSonnet3.7的天气测试编码,让谷歌VSCodeAI编程插件GeminiCodeAssist自动编程。生成的文件在浏览器中的效果如下:(附源代码)VSCode...
- 顾爷想知道第4.5期 国服便利性到底需优化啥?
-
前段时间DNF国服推出了名为“阿拉德B计划”的系列改版计划,截至目前我们已经看到了两项实装。不过关于便利性上,国服似乎还有很多路要走。自从顾爷回归DNF以来,几乎每天都在跟我抱怨关于DNF里面各种各样...
- 掌握Visual Studio项目配置【基础篇】
-
1.前言VisualStudio是Windows上最常用的C++集成开发环境之一,简称VS。VS功能十分强大,对应的,其配置系统较为复杂。不管是对于初学者还是有一定开发经验的开发者来说,捋清楚VS...
- 还嫌LED驱动设计套路深?那就来看看这篇文章吧
-
随着LED在各个领域的不同应用需求,LED驱动电路也在不断进步和发展。本文从LED的特性入手,推导出适合LED的电源驱动类型,再进一步介绍各类LED驱动设计。设计必读:LED四个关键特性特性一:非线...
- Visual Studio Community 2022(VS2022)安装图文方法
-
直接上步骤:1,首先可以下载安装一个VisualStudio安装器,叫做VisualStudioinstaller。这个安装文件很小,很快就安装完成了。2,打开VisualStudioins...
- Qt添加MSVC构建套件的方法(qt添加c++11)
-
前言有些时候,在Windows下因为某些需求需要使用MSVC编译器对程序进行编译,假设我们安装Qt的时候又只是安装了MingW构建套件,那么此时我们该如何给现有的Qt添加一个MSVC构建套件呢?本文以...
- Qt为什么站稳c++GUI的top1(qt c)
-
为什么现在QT越来越成为c++界面编程的第一选择,从事QT编程多年,在这之前做C++界面都是基于MFC。当时为什么会从MFC转到QT?主要原因是MFC开发界面想做得好看一些十分困难,引用第三方基于MF...
- qt开发IDE应该选择VS还是qt creator
-
如果一个公司选择了qt来开发自己的产品,在面临IDE的选择时会出现vs或者qtcreator,选择qt的IDE需要结合产品需求、部署平台、项目定位、程序猿本身和公司战略,因为大的软件产品需要明确IDE...
- Qt 5.14.2超详细安装教程,不会来打我
-
Qt简介Qt(官方发音[kju:t],音同cute)是一个跨平台的C++开库,主要用来开发图形用户界面(GraphicalUserInterface,GUI)程序。Qt是纯C++开...
- Cygwin配置与使用(四)——VI字体和颜色的配置
-
简介:VI的操作模式,基本上VI可以分为三种状态,分别是命令模式(commandmode)、插入模式(Insertmode)和底行模式(lastlinemode),各模式的功能区分如下:1)...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- “版本末期”了?下周平衡补丁!国服最强5套牌!上分首选
- VS2017 C++ 程序报错“error C2065:“M_PI”: 未声明的标识符"
- 东营交警实名曝光一批酒驾人员名单 88人受处罚
- Qt界面——搭配QCustomPlot(qt platform)
- 大话西游2分享赢取种族坐骑手办!PK趣闻录由你书写
- 测试谷歌VS Code AI 编程插件 Gemini Code Assist
- 顾爷想知道第4.5期 国服便利性到底需优化啥?
- 掌握Visual Studio项目配置【基础篇】
- 还嫌LED驱动设计套路深?那就来看看这篇文章吧
- Visual Studio Community 2022(VS2022)安装图文方法
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)