我已经在TM4C1294 mc和PC两侧写了C代码。在mc端我使用UARTprintf,它可以发送不同的数据格式%c%d%s。我本来希望找到一个PC端读取功能,它可以直接处理来自mc但未找到的uint16_t。如果有人知道这可能会解决我的问题,那就是:将数据从mc(连接到以40 KHz发送数据的传感器)传输到PC。
我尝试使用CreateFile Windows串口通讯工具 - ReadFile只接受数据字节(char X []排序)。所以我通过sprintf转换(str,"格式",数据)并将字符串发送到PC ok,我将atoi转换回int完美无缺,但对于40KHz流来说太慢了(波特率设置为921600两者)侧)。这些字符串包含4,5个字符,用于发送以及编码/解码开销。
我将我的int16数据转换为hiByte二进制和loByte二进制 - 基本上只是将int16分成两半,因此只需要2个字节就可以通过一个简单的bithift来发送,并在pc端添加以重建int16 。效果很好 - 大部分时间;(当两个字节中的任何一个是0x0A或0x00时,会发生一些非常令人讨厌的事情 - 串行通信在流中插入一个0x0D搞乱了hiBtye-loByte-hiByte-loByte交替序列,我试过了用更多的代码修补它然后引入了大量的IF那么筛选检查将合理的数据速率降低到接近40KHz到小于10.问题:是否有一些有效的方法可以防止串口将字节解释为ASCII命令像0x0A是换行符吗?