实验16 修改波特率,校验位,停止位实验

  1. 实验目的

通过列表控件,选择修改串口屏工程的波特率,校验位,停止位

通过协议解析器接收上位机串口助手发来的ascii码数据显示在串口屏上

使用发送函数外发字符串数据显示在上位机串口助手里面

  1. 实验工具

任意型号串口屏,本例程串口屏型号为(SANY-WQ-S43-01-C)

电脑端串口调试助手,本例程使用 SSCOM V5.13.1 串口助手

Usb转串口工具,用于串口屏和电脑串口助手通讯

  1. 界面布局
  1. 控件介绍
  1. 逻辑实现

|--------------|------------|-------------------------|
| 控件名称 | 属性 | 功能 |
| List_stop | 可见 列表 | 列出停止位可选项,值改变事件中写入修改脚本 |
| List_check | 可见 列表 | 列出校验位可选项,值改变事件中写入修改脚本 |
| List_baud | 可见 列表 | 列出波特率可选项,值改变事件中写入修改脚本 |
| Text_baud | 可见 文本 | 显示当前波特率,列表修改时直接赋值 |
| Text_check | 可见 文本 | 显示当前校验位,列表修改时直接赋值 |
| Text_stop | 可见 文本 | 显示当前停止位,列表修改时直接赋值 |
| Log7 | 可见 日志 | 显示协议解析器接受到的数据,配合协议解析器使用 |
| Text10 | 可见 文本 | 输入并显示外发的字符串 |
| Button_clear | 可见 按钮 | 按钮事件写入脚本清空日志内容 |
| Button_send | 可见 按钮 | 按钮事件写入脚本外发字符串 |
| Com | 不可见 协议解析器 | 处理接收到的数据,配合日志控件将数据显示出来 |

  1. 设置停止位

点击页面上停止位文本控件,调用列表控件,列表值改变事件脚本对工程停止位作出修改

文本控件脚本:

list_stop.x = 15;//显示列表框

列表脚本:

//设置停止位

text_stop.txt = list_stop.getItem(list_stop.sel);//将选项的内容赋值给文本控件

if(list_stop.sel == 0)

sys_stopbits = 1;//停止位的读写值为1表示停止位为1,此表示为系统变量固定表示

else if(list_stop.sel == 1)

sys_stopbits = 3;//停止位的读写值为3表示停止位为1.5,此表示为系统变量固定表示

else if(list_stop.sel == 2)

sys_stopbits = 2;//停止位的读写值为2表示停止位为2,此表示为系统变量固定表示

list_stop.x = -132;//隐藏列表框

  1. 设置校验位

点击页面上校验位文本控件,调用列表控件,列表值改变事件脚本对工程校验位作出修改

文本控件脚本:

list_check.x = 15;//显示列表框

列表脚本

//设置工程校验位

text_check.txt = list_check.getItem(list_check.sel);//将列表选中项的值赋值给文本控件

sys_parity = list_check.sel;//设置系统校验位,校验位读取值0表示无校验 1表示odd校验 2表示even校验,此处与列表序号一致

list_check.x = -132;//隐藏列表框

  1. 设置波特率

点击页面上波特率文本控件,调用列表控件,列表值改变事件脚本对工程波特率作出修改

文本控件脚本:

list_baud.x = 15; //显示列表框

列表脚本:

//设置工程波特率

text_baud.txt = list_baud.getItem(list_baud.sel);//将列表先选中值赋值给文本控件

sys_baud = stringToInt(text_baud.txt); //设置系统波特率

list_baud.x = -132; //隐藏列表框

  1. 协议解析器

将接受到的数据打印在日志控件显示,用于测试工程波特率,校验位,停止位是否修改正确

脚本:

//将串口屏收到的数据打印在日志控件显示

//com.rxbuf:协议解析器用来缓存接收数据的数组

//com.rslen:com.rxbuf长度

log7.addString(bytesToAscii(com.rxBuf,0,com.rxLen));//将接收到的数据转成ascii字符串打印出来.

  1. 清除日志内容Button_clear

按钮 Button_clear 按钮弹起事件写脚本清除日志内容

脚本:

log7.clear();//清除日志内容

  1. 通过串口发送字符串数据

Text10文本控件右侧属性栏kbld属性,可以直接调用键盘控件此处无需脚本,发送按钮button_send脚本如下

uartSend(text10.txt);//通过串口发送text10字符串文本

  1. 实验结果

将工程和串口助手得波特率修改为19200,校验位修改为0dd 停止位设置为2

用usb转串口将屏与电脑连接,串口屏发送 HELLO SANY 上位机串口助手发送HELLO

串口助手和串口屏接收正常

串口助手接收和发送

串口屏接收和发送

相关推荐
恒锐丰科技林技术员4 小时前
EG2302 半桥驱动芯片详解:高压半桥高性价比栅极驱动方案
经验分享·嵌入式硬件·硬件工程
LCG元8 小时前
STM32 定时器编码器接口模式电机测速实战:从 CubeMX 配置到 M 法转速计算与溢出处理
stm32·单片机·嵌入式硬件
samble10 小时前
从零搭建工业控制系统(二十二):线程安全与并发控制
c#·wpf·并发·mvvm·线程安全·工业控制
星河单片机11 小时前
STM32驱动WaterSensor水位传感器+OLED显示完整原理与实验
stm32·单片机·嵌入式硬件
子文雨12 小时前
基于 uC3845 与 ATtiny13 双芯片架构的 8.4V/2.5Ah 锂电池智能充电器设计
单片机·嵌入式硬件·算法
快秃头的码农12 小时前
esp32-s3移植lvgl总结
嵌入式硬件·esp32-s3
恒锐丰科技林技术员13 小时前
EG1191 宽压降压 DC‑DC 芯片解析:高性价比工业电源方案
经验分享·嵌入式硬件·硬件工程
智购科技无人售货机工厂店14 小时前
2026自动售货机大屏交互设计原则:从信息层级到视觉动线的工程实践~YH
运维·python·单片机·嵌入式硬件·自动化·交互
艾芯微科技17 小时前
SKY13370‑374LF|0.5‑6GHz SPDT 射频开关,WLAN/LTE 射频前端实用器件
网络·单片机·嵌入式硬件·集成测试·51单片机
samble17 小时前
从零搭建工业控制系统(二十一):状态管理系统——中心状态对象设计
c#·wpf·mvvm·状态管理·工业控制