实验18 二维码控件实验
1. 实验目的
1). 二维码显示输入的字符,通过手机扫码能识别内容
2). 上位机软件通过自定义协议将传输的数据内容显示在二维码中,通过手机扫码能识别
2. 实验工具
1). 串口屏,三易串口屏全系列支持二维码控件
2). Vp软件
3). 上位机软件,本实验使用 sscom5.13.3串口助手
4). Usb转串口工具,用来连接上位机和串口屏
3. 创建工程
1). 打开vp软件,按照串口屏型号创建一个工程
2). 创建工程另有教程,如有需要移步官网
4. 界面布局
5. 控件介绍
控件id |
控件属性 |
控件功能 |
---|---|---|
Keyboard |
可见 键盘 |
输入字符,并且将字符赋值给二维码控件 |
Txet_qr |
可见 文本 |
显示输入的字符 |
Textbox |
可见 文本 |
弹起事件脚本注释中写有数据转换示例 |
Text_ |
可见 文本 |
配合定时器时时显示二维码的字符内容 |
Protocol |
不可见 协议解析器 |
对接收到的数据进行解析处理 |
Timer4 |
定时器 |
配合文本控件时时显示二维码控件的内容 |
6. 逻辑实现
1). 点击输入处文本控件弹出键盘
脚本:
keyboard8.x=0;//调用键盘
2). 键盘输入完成,将输入值赋值给二维码控件
脚本
输入完成:
text6.txt=keyboard8.txt;//键盘输入内容赋值给文本
qrcode0.txt=text6.txt;//输入内容赋值给二维码控件
keyboard8.x=-800;//隐藏键盘
输入取消:
keyboard8.x=-800;//隐藏键盘
3). 自定义协议将接收到的数据显示在二维码控件上
数据类型转换
byte arr[10]={0xbd,0xf1,0xcc,0xec,0xd0,0xc7,0xc6,0xda,0xd2,0xbb}; //定义数组来缓存十六进制字符串 GB2312国标码 每两个字节代表一个汉字
qrcode0.txt=stringDecode(arr,0,10); // 函数内(数组,起始位,长度)
text3.txt=qrcode0.txt; //用一个文本来显示二维码的内容 "你好星期一"
byte brr[4]={0x53,0x61,0x6e,0x79};//定义数组来缓存十六进制字符串 ascii 码 每个字节代表一个字符
qrcode0.txt=bytesToAscii(brr,0,4);//函数内(数组,起始位,长度)
text3.txt=qrcode0.txt;//用一个文本来显示二维码的内容 "Sany"
自定义协议脚本
//自定义协议传输GBK2312国标码
//数据格式 0a 01 04 00 00 00 00 0b
// 帧头0a 01 两个字节
// 数据长度 1个字节
// 数据
// 帧尾 0b 一个字节
int len;//定义一个整数表示数据长度
if(protocol1.rxBuf[0]==0x0a&&protocol1.rxBuf[1]==0x01)//判断帧头
{
len=protocol1.rxBuf[2];//获取数据长度
qrcode0.txt=stringDecode(protocol1.rxBuf,3,len);//将解析的数据赋值给二维码控件
}
//自定义协议传输ascii码
//数据格式 例如 01 0a 04 00 00 00 00 0b
// 帧头01 0a 两个字节
// 数据长度 1个字节
// 数据
// 帧尾 0b 一个字节
if(protocol1.rxBuf[0]==0x01&&protocol1.rxBuf[1]==0x0a)//判断帧头
{
len=protocol1.rxBuf[2];//获取数据长度
qrcode0.txt=bytesToAscii(protocol1.rxBuf,3,len);//将解析的数据赋值给二维码控件
}
4). 定时器将二维码控件内容实时显示在文本控件上
定时器脚本
//协议解析器收到数据时开启定时器,将二维码的内容显示在text3文本控件
text3.txt=qrcode0.txt;//定时器每100ms读取二维码的内容显示在text3文本控件
可以用手机扫码检查结果是否与数据一致
7. 实验结果
将工程下载至串口屏并且用usb转串口工具连接电脑和串口屏
1). 手动输入字符,”hello”,实时显示框显示”hello”
2). 串口助手发送十六进制数组给串口屏0x0a 0x01 0x0a 0xbd 0xf1 0xcc 0xec 0xd0 0xc7 0xc6 0xda 0xd2 0xbb 0x0b(换行)串口屏显示 “你好星期一”
3). 串口助手发送十六进制数组给串口屏0x01 0x0a 0x04 0x53 0x6 0x6e 0x79 0x0b(换行)串口屏显示”Sany”