QT 串口數據--十六進制顯示

串口助手如果不勾選十六進制,則說明是按照字符型進行發送的,勾選十六進制,則是按照十六進制進行發送。本文中使用十六進制。
使用串口助手 十六進制進行發送時,在處理數據時,可以採用兩種方法。
因爲QIODEvice::ReadAll返回的是QByteArray ,裏面字符是十六進制。如果直接顯示,則會亂碼。

     bool bret = false;
    QString strEncode1 = byteData.mid(8,4);//byteData是十六進制
    sEncodeData.nEncode1 = strEncode1.toInt(&bret,16);//字符串轉16進制
    qDebug()<<"encode1 = "<<sEncodeData.nEncode1 << "  " <<bret;
pdata = m_pcom->ReadAll();//讀到的是十六進制
parse(pdata.toHex(),10);//轉換爲十六進制進行顯示

方法二: 使用char *時

std::string strData = pData;//char * pdata;//前面有賦值
    std::string strEncode1 = strData.substr(8,4);
    //sEncodeData.nEncode1 = std::atoi(strencode1.c_str());//轉換結果錯誤
    sEncodeData.nEncode1 = std::stoi(strEncode1.c_str(),nullptr,16);//使用atoi時,轉換十六進的e929時轉換結果爲0,沒有考慮基數進制

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章