使用QBuffer获取二进制数据

时间:2011-10-03 01:17:52

标签: c++ qt

我正在编写一个Qt(4.6)应用程序,负责从usb acm调制解调器设备读取。从设备读入原始二进制和(ascii)字符数据的混合。我有一个线程负责在设备可用时不断地将数据从设备读入共享内存,以及处理此数据处理的第二个线程。

我正在考虑使用QBuffer类来存储数据并在线程之间共享它,但是当我读到QByteArray(QBuffer用作数据存储)时。因为QByteArray表现出这种行为,我开始担心QBuffer会在线程之间传递的数据的末尾附加一个'\ 0'空字符?是这种情况还是QBuffer允许我存储和检索数据而不对我的所有数据强制执行任何终止'\ 0'字符?

2 个答案:

答案 0 :(得分:1)

终止0对您的应用程序是透明的。

例如,如果将“ABC”附加到数组中,将附加“ABC \ 0”,但size()仍将返回3,如果随后附加“DEF”,则数组将包含“ABCDEF \ 0” (和size()仍将返回6,而不是7)。

如果您请求指向原始数据的指针以便使用C库中的函数进行进一步处理,则终止0可能很有用。

答案 1 :(得分:0)

我建议您搜索Qt-Apps.org代码示例。

例如,也许QSerialDevice可能会给你一些想法或窍门。它没有特别提到USB,但它听起来与你想要做的事情非常相关。