現在寫了一個串口通信軟體,由于單片機要求收到unsigned char型 也就是8位。我在上位機上把所有的資料都處理成unsigned char a的陣列比如 a[0]= 14a[1]= 1; a[2]=22;a[3]=9; 但是串口發送用的是write(QString.toAscii)。于是我將a 轉成QString 這樣一來我發送的資料就是922114請問這樣一來單片機能按byte收到字符嗎?也就是說能夠分辨9,22,1,14,為4個數如果無法辨別出來 我該如何直接發unsigned char[]陣列呢?同樣 如果接收到這么一串數字 QT是放到QByteArray里的 我應該如何區分對應值呢?
uj5u.com熱心網友回復:
建議你先拿單片機接收一下看看具體資料是什么。uj5u.com熱心網友回復:
實際發的就是二進制流,不要用QString,如果中間有0,會斷掉。可以用write(const char*, qint64 maxSize), 至于是unsigned還是signed是無所謂的,就是給定要發送的資料塊首地址,及告之長度就可以了。也可以把陣列放到QByteArray中,用write(const QByteArray & byteArray)uj5u.com熱心網友回復:
感覺上,你似乎對一些東西理解不太夠比如 "\x11\x22\x33" 與 "112233" ,"\x30\x31\x32" 與 "123" 等uj5u.com熱心網友回復:
qt有專門的串口類啊uj5u.com熱心網友回復:
樓主,請問你這個問題解決了嗎?我遇到跟你一樣的問題了,我也沒搞懂。我用的是QByteArray array((const char*)shuzu,sizeof(shuzu)) //shuzu 是unsigned char陣列;然后串口write(array),然后下位 機把資料全部回傳給上位機,但是我接收到的資料為發送資料的兩倍,且接收到的資料有問題,好像都是0,在文本編輯欄沒顯示出來,請問樓主有類似問題嗎?解決了嗎?轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/218745.html
標籤:其他技術討論專區
