標(biāo)題: 單片機(jī)通過(guò)串口接收不定長(zhǎng)字符串如何判斷發(fā)完了? [打印本頁(yè)]

作者: 水月sy    時(shí)間: 2020-11-4 21:03
標(biāo)題: 單片機(jī)通過(guò)串口接收不定長(zhǎng)字符串如何判斷發(fā)完了?
    就比如說(shuō),單片機(jī)通過(guò)串口接收到pc機(jī)發(fā)來(lái)的字符串“abc”時(shí),單片機(jī)就做某些事。怎么對(duì)單片機(jī)接收到的字符串進(jìn)行判斷呢,而且每一次發(fā)來(lái)的字符串長(zhǎng)度也不確定,怎么確定pc機(jī)發(fā)完了一次呢,一直不知道怎么解決。。。
作者: amandv    時(shí)間: 2020-11-4 23:15
可以延時(shí)判斷,50~100MS沒(méi)通訊即結(jié)束.
作者: 水月sy    時(shí)間: 2020-11-4 23:28
amandv 發(fā)表于 2020-11-4 23:15
可以延時(shí)判斷,50~100MS沒(méi)通訊即結(jié)束.

意思是延時(shí)一下,然后如果RI還是等于0,說(shuō)明發(fā)完了,好像有道理。
作者: dalaoshi    時(shí)間: 2020-11-5 00:20
一般上字串都帶有結(jié)束符的,比如ABC其實(shí)是ABC\n\r,\n是CHR$(13) \r是CHR$(10)。
作者: wulin    時(shí)間: 2020-11-5 06:43
水月sy 發(fā)表于 2020-11-4 23:28
意思是延時(shí)一下,然后如果RI還是等于0,說(shuō)明發(fā)完了,好像有道理。

常用的方法有定時(shí)判斷、字符串長(zhǎng)度標(biāo)識(shí)判斷和結(jié)束符判斷。
作者: 黃youhui    時(shí)間: 2020-11-5 08:25
每接受一次數(shù)據(jù)清零一次定時(shí)器,超過(guò)100ms沒(méi)數(shù)據(jù)直接判斷發(fā)送結(jié)束
作者: 水月sy    時(shí)間: 2020-11-5 09:03
dalaoshi 發(fā)表于 2020-11-5 00:20
一般上字串都帶有結(jié)束符的,比如ABC其實(shí)是ABC\n\r,\n是CHR$(13) \r是CHR$(10)。

一般字符串都帶有結(jié)束符,意思是接收到結(jié)束符就停止嗎?那如果發(fā)的字符串命令是錯(cuò)誤的時(shí)候,比如沒(méi)有發(fā)結(jié)束符、只發(fā)了AB,那應(yīng)該怎么處理
作者: 水月sy    時(shí)間: 2020-11-5 09:13
wulin 發(fā)表于 2020-11-5 06:43
常用的方法有定時(shí)判斷、字符串長(zhǎng)度標(biāo)識(shí)判斷和結(jié)束符判斷。

我覺(jué)得定時(shí)判斷是最好的了,沒(méi)有什么限制
作者: 水月sy    時(shí)間: 2020-11-5 09:14
黃youhui 發(fā)表于 2020-11-5 08:25
每接受一次數(shù)據(jù)清零一次定時(shí)器,超過(guò)100ms沒(méi)數(shù)據(jù)直接判斷發(fā)送結(jié)束

謝謝,有思路了,今天晚上試試
作者: 水月sy    時(shí)間: 2020-11-5 09:15
amandv 發(fā)表于 2020-11-4 23:15
可以延時(shí)判斷,50~100MS沒(méi)通訊即結(jié)束.

不應(yīng)該延時(shí)判斷,應(yīng)該用定時(shí)器判斷
作者: weijoyer    時(shí)間: 2020-11-11 17:12
將數(shù)據(jù)打包,設(shè)置一個(gè)開(kāi)始符和結(jié)束符
作者: lycike    時(shí)間: 2020-11-12 11:53
定義一個(gè)結(jié)束標(biāo)識(shí)符
作者: 適得府君書(shū)    時(shí)間: 2020-11-13 09:03
在報(bào)文添加標(biāo)志符比如&abc&。通過(guò)判斷是否接收到了兩個(gè)&定義符號(hào)。如果接收到了說(shuō)明已經(jīng)接收完了。或者加\r\n。方法有很多,多做嘗試。
作者: 權(quán)威人物    時(shí)間: 2020-11-13 14:24
可以定義傳輸格式,簡(jiǎn)單來(lái)說(shuō)就是協(xié)議,或者規(guī)定超時(shí)時(shí)間視為結(jié)束接收




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1