` 本帖最后由 我爱下载 于 2020-8-17 11:14 编辑
通过串口完成屏幕元素控制 当屏幕元素布置完成后,让他们动起来,完成我们的设计需要才是重点。这里面必须提到X3的串口通讯功能,他是屏幕和外部设备完成数据交换的重要接口之一。 1. 串口通讯介绍串口是X3完成外部通讯的重要接口之一。如何使用串口,游芯科技的官网上有详细的说明,我这里简单的介绍一下,也整理一下我的思路。 官方对于通过串口完成数据通讯,从底层驱动,到高层协议的解析实现了完整的一个框架。 这里面我只需要关注,在框架基础上,数据本身的传递和解析就可以了。但是为了和其它设备通讯,我们还必须了解通讯协议,才能让X3发挥最用。 通讯协议以0xFF55开头,2字节命令字,1字节数据长度,若干数据和一个字节的校验。 通过数据协议,我们可以看到,单帧数据最多可以传输256个字节的数据内容,同时数据帧末尾增加了校验和,提高了数据安全性。校验功能是可选功能,测试中会屏蔽掉这个功能,比较方便。 2. 通过串口控制屏幕元素1)创建工程 按照常规的工程创建过程,但是必须注意如下图所示的信息需要记录下来。 串口号:ttyS2,波特率:115200 根据实际需要也可以修改,例如波特率可以修改为我们需要的值。 2)添加显示元素 我们利用现有程序结构,增加一个功率显示标签和内容显示窗口,一个阈值显示标签和数据框,一个设置确认框。 3)增加驱动代码 我们首先跳转到“设置”按键的响应代码处添加阈值获取和发送的相关代码。 阈值获取并转换为整形数: inti = atoi(mEditText1Ptr->getText().c_str()); 填充缓冲区,并发送: buf[0]= (BYTE)i; buf[1]= (BYTE)(i>>8); sendProtocol(0x0001,buf, 2); 然后再协议解析回调函数中处理接收到的数据 sta tic void onProtocolDataUpdate(const SProtocolData &data) { mTextView3Ptr->setText(data.power); }
3. 实测展示接线形式 通过一个USB-TTL的接口,和X3的端子连接。 上位软件采用串口调试助手 实际的界面执行状态 总结,基于游芯系统自身的串口通讯协议及后处理,可以非常方便的完成界面元素设计及内容更新。 `
|