串口助手如果不勾選十六進制,則說明是按照字符型進行發送的,勾選十六進制,則是按照十六進制進行發送。本文中使用十六進制。
使用串口助手 十六進制進行發送時,在處理數據時,可以採用兩種方法。
因爲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,沒有考慮基數進制