在Ubuntu18.04下
串口引數 都是按照協議填寫的,但是在發送的時候,出現了例外,發送函式如下:
//發送資料槽函式
void thread_file::senddata()
{
//mark位發送資料
QByteArray markb;
markb.resize(1);
markb[0] = 0x01;
m_serical->setParity(QSerialPort::MarkParity);
m_serical->write(markb);
QStringList list;
list.append("FA");
list.append("AF");
list.append("00");
list.append("01");
list.append("58");
list.append("00");
list.append("58");
QString sendstr;
sendstr = list.join("");
qDebug() << "senddata="https://bbs.csdn.net/topics/ << sendstr;
QByteArray b = TwoHexStrToByteArray(sendstr);
m_serical->setParity(QSerialPort::SpaceParity);
m_serical->write(b);
}
以上代碼 發送到設備端,居然都是Space位的資料,Mark位居然消失了.
對于這個情況,不知道有沒有人遇到過,該如何處理???
希望了解的幫幫忙,謝謝!!!!!




uj5u.com熱心網友回復:
QString sendstr;sendstr = list.join("");
qDebug() << "senddata="https://bbs.csdn.net/topics/ << sendstr;
QByteArray b = TwoHexStrToByteArray(sendstr);
m_serical->setParity(QSerialPort::SpaceParity);//跟這一行有關嗎?
m_serical->write(b);
uj5u.com熱心網友回復:
m_serical->setParity(QSerialPort::MarkParity);m_serical->write(markb);
m_serical->waitForBytesWritten();//在這里等待一下寫入試試
uj5u.com熱心網友回復:
你設定的是校驗位,通訊的每一個位元組都包含起始位、停止位、校驗位,并不是只有8位二進制數,另外,通過設定校驗位并不能起到標志通訊幀起始與終止的目的,建議你參考一下其他的通訊定義。轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/9252.html
標籤:Qt
上一篇:genymotion安卓模擬器中Android9出現花屏現象
下一篇:unity匯出xcode工程報錯 Undefined symbols for architecture arm64
