分享

威纶通触摸屏宏指令,数据转换分类函数,详解与实操

 启云_9137 2022-05-20 发布于湖南

在编写宏指令时,我们基本都是调用威纶给我们提供的系统指令。

这些指令按功能作了细分,如下图,约有11个分类。

前面小节我们以视频教程的形式介绍了数学运算相关的函数。

发现每个分类下的函数非常多,所以我们这里以图文的形式介绍数据转换分类下的全部函数。

每一个函数的介绍与使用都通过例程的形式,在编程软件上测试运行。

大家可以在自己电脑打开编程软件实践,运行例程,查看效果。

遇到问题可以在平台提问,@我,一起交流。

文章图片1

数据转换类函数共有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表示。这些关系可以这小节的数据转换分类下的函数实现互换。

文章图片2

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

文章图片3

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

文章图片4

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

文章图片5

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

文章图片6

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

文章图片7

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

文章图片8

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

文章图片9

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

文章图片10

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

文章图片11

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

文章图片12

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

文章图片13

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

文章图片14

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

文章图片15

数据转换分类下的函数,共14个,上面就是全部函数的介绍。

可以在编辑软件里执行测试每个函数下的代码,会有比较直观的理解。

后面小节我们会介绍数据操作分类下的全部函数。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多