...
qbytearray info = m_serialport->
readall()
;...
uint8_t bytelow, bytehigh, crc16low, crc16high;
uint16_t crc16 =
chkcrc
(pchardata,6)
;crc16low =
(unsigned
char
)(crc16 &
0xff);
//校驗位低8位
crc16high =
(unsigned
char)(
(crc16 >>8)
&0xff);
//校驗位高8位
if(crc16high == info.at(
6)&& crc16low == info.at(7))
上面直接把接收到的串列埠資料跟校驗後的結果比較,上面的if始終是false,按照vc++的經驗,at取出來的應該也是無符號的位元組資料呀,怎麼就是不對呢?
後來檢視一下at函式,發現了:
返回的竟然是char型,學習了,下面強轉一下就可以了。
if
(crc16high ==
(uint8_t)info.at(
6)&& crc16low ==
(uint8_t)info.at(7))
Qt 深受QByteArray的陷害
這兩天在維護以前寫的乙個服務端軟體,這軟體使用qt開發的。除錯了2天,終於找到了答案。原因正是我太相信qt的介面,qbytearray類提供了轉換成char 的介面,可以這麼轉換 qbytearray arr arr.tolatin1 data 中斷一下,以前在使用arr.toascii data ...
啟蒙老師的誤導
你的啟蒙老師應該也是這樣教你的吧?考試的時候要慢慢得答,不要圖快。不僅你的啟蒙老師會這樣,你初次步入職場的時候也會有經驗者來這樣教導你。慢工出細活。如果你已經根深蒂固的接受這個觀點超過25年,那麼基本上你一定認為這是正確的。而很難通過一篇博文就讓你轉變看法。並且在這期間,你一定嚐到很多甜頭 並因此對...
QByteArray常用型別轉換
在使用qt串列埠時,經常會進行qbytearray相關的轉換。uchar轉換為qbytearray型別方法 qbytearray sbuf qbytearray fromrawdata char buf,sizeof buf qbytearray轉換為uchar型別方法 1.使用reinterpre...