我已经在这里看了几个关于这个主题的问题,但没有什么能为我提供解决方案。
通过VM进行测试,我的传入数据长度为47,80或31个字符。
串口的readyRead连接到:
void MainWindow::readData(){
QString buf;
myByteArray = serial->readAll();
for(int i = 0; i < myByteArray.size(); ++i){
if(myByteArray.at(i) == '\n'){
buf.append(myByteArray.at(i));
qDebug() << buf << endl;
buf.clear();
else{
buf.append(myByteArray.at(i));
}
我知道每条消息的结尾都是&#34; \ r \ n&#34;所以我们用它来结束当前的消息。
我遇到的问题是,我每50岁时可能会得到一条干净的信息。这是左右两边的字符。我有一个文本文件显示通过串口发送的消息,这样我就可以与收到的内容进行比较,并且令人厌恶它们是多么令人厌恶。
我已尝试过readLine()以及其他线程中的其他一些建议,但结果总是相同。
我的想法是检查收到的消息是否符合我期望的长度,47,80或31个字符,然后忽略那些不匹配的消息。这个问题是我每隔2分钟就会得到一条真正干净的信息......也许吧。
如果我在收到电报后立即将电话丢失,结果与我缓冲数据的结果没什么不同。
我收到的另一个问题是我收到的每条消息,我总共想念3-4个。
有关如何更好地处理此问题的任何建议吗?
答案 0 :(得分:1)