gpt4 book ai didi

c++ - Qt中确定接收到的字符串后如何在数组中保存以下100个接收值

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:11:15 24 4
gpt4 key购买 nike

我是 C++ 和 Qt 的新手。我想在收到字符串“数据”后将串行端口中收到的值保存在一个数组中。我正在使用终端示例,因此串行端口可以正常工作。

The read function in the Example is the same:
void MainWindow::readData()
{
QByteArray data = serial->readAll();
console->putData(data);

}

如何修改?谢谢!!!

最佳答案

如果您手动发送数据,我建议您最好添加帧开始定界符和帧结束定界符以及校验和。

 QByteArray packet_storage;

只需在声明串行的地方声明它。StartOfMessage 和 EndOfMessage 将取决于您的设备。我不知道你传送的是什么。希望您可以从设备的文档中弄清楚您发送的是什么。

我在用

 enum Constants
{
StartOfMessage = '\x02', /* Value of byte that marks the start of a message */
EndOfMessage = '\x03', /* Value of byte that marks the end of a message */
CarridgeReturn = '\x0D', /* Carridge return is first byte of end of line */
LineFeed = '\x0A', /* Line feed is second byte of end of line */
NullChar = '\0' /* Null Character */
};

void MainWindow::readData()
{
// read all
QByteArray data = serial->readAll();

// store all read data packet_storage is a QByteArray
packet_storage.append(data);

int start_index = 0;
int end_index = 0;

// process packet if not empty
if(!packet_storage.isEmpty())
{
if( packet_storage.contains(StartOfMessage) && packet_storage.contains(EndOfMessage))
{
start_index = packet_storage.indexOf(StartOfMessage,0);
end_index = packet_storage.indexOf(EndOfMessage,0);

int length = 0;

for (int i=start_index; i <= end_index; i++)
{
length++;
}

// get data
QByteArray dt = packet_storage.mid(start_index,length);

// do your processing here.
// store in vector write to file etc.
processpacket(dt);

packet_storage.remove(start_index,dt.size());

}

}
}

关于c++ - Qt中确定接收到的字符串后如何在数组中保存以下100个接收值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41159712/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com