引
····设想这样一个场景:下位机FPGA通过串口uart来向PC上位机发送一个32bit的数据,
····如果下位机每次发送8bit 的 hex数据,则一帧的开始和结尾需要定义多个字节来避免和实际数据混叠;
····如果FPGA内部将2进制的原始数据转换成10进制的BCD,则转换过程麻烦,一是延时、二则消耗额外的资源
····这个问题我给出的答案是:原32bit的数据,每次取4bit,然后加上48(‘0’),再发送,上位机以ASCII码接收。这样存在一个问题,4bit的数据包括10、11、12、13、14、15等几个不存在单ASCII字符。48+10,+11,+12,+13…对应的字符分别是’: ; < = > ?’,所以本文分享的上位机的一个可勾选的自定义解码功能就主要是解决把’: ; < = > ?’ 替换成’ABCDEF’的,最终呈现出正确的16进制数。
软件介绍
上位机界面
功能
····1. 支持包括中文的ASCII收发;支持HEX数据接收,不支持HEX发送(没用就没写进去);
····2. 波特率支持1382400、256000、115200、57600、38400、19200、9600、4800;
····3. 勾选Reverse,支持ASCII字符倒序发送,即发送框内’ABCDE’ ,实际上发送’EDCBA’;
····4. 勾选帧控制,会在待发送的字符串前后分别加上帧头、帧尾中的内容,仅支持ASCII模式,且逻辑上先进行倒序处理,在进行帧判断。
····5. HEX checkbox框有3个状态,不勾选、半勾选、完全勾选;其中不勾选、完全勾选分别为ASCII和HEX接收,半勾选即本文开头所说的自定义解码功能以及其他对应的特殊处理。
程序
····程序平台: QT 5.14.2;
····使用语言: C++;
····代码地址: https://github.com/Jun005/Serial.git
····不包含可复制的exe程序包,因为有60MB+,不方便传github,需要程序包的可以留言。
结
····如果发现程序存在问题,欢迎交流指正。