使用QSerialPort

时间:2019-06-30 09:28:36

标签: c++ qt

我这里有一个与计算机串行连接的嵌入式系统,该计算机应该接收嵌入式系统发送的数据。由于我使用Qt ,我使用集成的QSerial接口,该接口应该能够实现我想要的功能。

因此出现了一个数据流,其中集成了以下命令:

[[header_byte_0-1] [command_byte_0] [data_byte_0-3] [crc_0]]

标头字节为'a'和'b'且数据可以包含0到255之间的任何uint8_t值。

例如,我收到此流(我认为某些字节未正确描绘):

“ ab \ x10 \ x05”“ A \ x0F \ x00 \ xDF”“ ab \ x11 \ x00 \ x00 \ x00 \ x00 \ xB4”“ ab \ x12”“ 2 \ x00 \ x00 \ x00 \ xBF” “ ab \ x13 \ x00 \ x00 \ x00 \ x00#ab \ x14”“ d \ x00 \ x00 \ x00 \ xE6”“ ab \ x15 \ x00 \ x00 \ x00 \ x00 \ xAB”“ ab \ x16 @ \ xAC '\ x00 \ xAA“” ab \ x17 + \ x00 \ x00 \ x00 \ xCC“

我现在需要的是一个包含所有数据的数组,这样我就可以使用uint8_t指针并逐字节读取,但这似乎比应有的困难,因为任何特殊字符(例如'\ 0'或'\ n'具有影响力,当我尝试将流复制到这样的数组中时:

 QString str = serialPort->readAll();

那么,如何将整个流复制到uint8_t数组中,其中每个特殊字符都会被忽略?

0 个答案:

没有答案