[問題] QSerialPort接受數據問題
開發平台(Platform): (Ex: Win10, Linux, ...)
win7
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
vs2015
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
qt 5.7
問題(Question):
http://codepad.org/lpy6REnh
以上是我的code
我想對usb的東西送指令
使用的是
UART to USB
我用QSerialPort的SIGNAL(readyRead())去監聽回傳回來的東西
他可能分段傳回來 但我需要完整的一段 才有辦法解析
回傳可能長這樣
"\x06"
"\x23"
"\x4\x12\x85"
"\x83\x86\xB0\x83\xEA"
但我需要知道他甚麼時候結束 才能作解析
"\x06\x23\x4\x12\x85\x83\x86\xB0\x83\xEA" <-再把這串拿去做解析
開頭跟結尾理論上會是固定的 \x06開頭 \xEA結尾
目前還是用btn去控制 但之後要用timer去掃SnedMsg()這個slot
請問有推薦的做法嗎
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.242.6.98
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1492587653.A.0A4.html
→
04/19 16:43, , 1F
04/19 16:43, 1F
→
04/19 16:43, , 2F
04/19 16:43, 2F
所以是讀到的字串用QString AddStr
把他接起來 然後掃最後一位數是否為 \xEA
如果是的話 把這段往上傳 然後然後把AddStr清除?
void Meter::portToRead() {//資料接收、打印
QString Rx;
QString AddStr;
Rx = serial->readAll();
AddStr += Rx;
if (AddStr.right(4) == \xEa){
emit message(AddStr);
AddStr = "";
}
}
大概改成這種感覺?
※ 編輯: MOONY135 (210.242.6.98), 04/19/2017 16:52:42
→
04/19 18:06, , 3F
04/19 18:06, 3F
我知道 QString Rx; 要弄成全域變數
不過好像還是少了點甚麼
※ 編輯: MOONY135 (36.225.55.127), 04/19/2017 20:28:52