英威腾VS触摸屏二维码的应用

本例程中生成两个16位正整数变量,用来模拟实际应用中需要生产二维码的数据。本例中显示2个正整数变量共10位数,实际应用中可根据需要定义二维码字符串的长度。

新建一个VS触摸屏的空工程,添加一个画面,在画面中添加对应的控件。如下图

1.png

画面各控件含义为

1)数值显示116位正整数,对应地址为LW0

2)数值显示216位正整数,对应地址为LW1

3)“随机码”位开关:地址LB0

4)“二维码字符串”ASCII显示:地址LW1000,总字数11

5)二维码显示器:监视地址LW1000,字符长度11

各控件属性如下图所示。

单击“随机码”位开关触发宏程序RandomCode,程序如下:

#include "MacroInit.h"

void Macro_main(IN *p)

{

MarcoInit

//ToDo

LocalWord[0]=RAND();//生成随机数LW0;

LocalWord[1]=RAND();//生成随机数LW1;

}

7.png


循环宏程序QR_Code将两个随机数生产二维码字符串,程序如下:

#include "MacroInit.h"

void Macro_main(IN *p)

{

MarcoInit

//ToDo

char source[10];

source[0]=LocalWord[0]/10000; //将LW0分解,第5位数值

source[1]=(LocalWord[0]/1000)%10; //将LW0分解,第4位数值

source[2]=(LocalWord[0]/100)%10; //将LW0分解,第3位数值

source[3]=(LocalWord[0]/10)%10; //将LW0分解,第2位数值

source[4]=(LocalWord[0]/1)%10; //将LW0分解,第1位数值

source[5]=LocalWord[1]/10000; //将LW1分解,第5位数值

source[6]=(LocalWord[1]/1000)%10; //将LW1分解,第5位数值

source[7]=(LocalWord[1]/100)%10; //将LW1分解,第5位数值

source[8]=(LocalWord[1]/10)%10; //将LW1分解,第5位数值

source[9]=(LocalWord[1]/1)%10; //将LW1分解,第5位数值

char res[11];

int i=0;

for(i=0;i<10;i++)

{

res[i]=source[i]+48; //将0~9的数值转换成ASCII码字符

}

res[10]=0;//字符串以/0结束

memcpy((char*)&LocalWord[1000],res,11);//将字符串赋给LW1000二维码地址

}

8.png

注意,虽然二维码显示的字符串只显示10位数,但是实际字符串变量长度为11位,因为字符串最后1位为/0

离线模拟,点击“随机码”按钮,生产随机码并显示结果,如下图。

9.png

用手机微信扫一下二维码,得到如下图结果。10.png