找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5372|回復(fù): 13
收起左側(cè)

單片機(jī)通過(guò)串口接收不定長(zhǎng)字符串如何判斷發(fā)完了?

[復(fù)制鏈接]
ID:839001 發(fā)表于 2020-11-4 21:03 | 顯示全部樓層 |閱讀模式
    就比如說(shuō),單片機(jī)通過(guò)串口接收到pc機(jī)發(fā)來(lái)的字符串“abc”時(shí),單片機(jī)就做某些事。怎么對(duì)單片機(jī)接收到的字符串進(jìn)行判斷呢,而且每一次發(fā)來(lái)的字符串長(zhǎng)度也不確定,怎么確定pc機(jī)發(fā)完了一次呢,一直不知道怎么解決。。。
回復(fù)

使用道具 舉報(bào)

ID:414556 發(fā)表于 2020-11-4 23:15 | 顯示全部樓層
可以延時(shí)判斷,50~100MS沒通訊即結(jié)束.
回復(fù)

使用道具 舉報(bào)

ID:839001 發(fā)表于 2020-11-4 23:28 來(lái)自手機(jī) | 顯示全部樓層
amandv 發(fā)表于 2020-11-4 23:15
可以延時(shí)判斷,50~100MS沒通訊即結(jié)束.

意思是延時(shí)一下,然后如果RI還是等于0,說(shuō)明發(fā)完了,好像有道理。
回復(fù)

使用道具 舉報(bào)

ID:283954 發(fā)表于 2020-11-5 00:20 | 顯示全部樓層
一般上字串都帶有結(jié)束符的,比如ABC其實(shí)是ABC\n\r,\n是CHR$(13) \r是CHR$(10)。
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2020-11-5 06:43 | 顯示全部樓層
水月sy 發(fā)表于 2020-11-4 23:28
意思是延時(shí)一下,然后如果RI還是等于0,說(shuō)明發(fā)完了,好像有道理。

常用的方法有定時(shí)判斷、字符串長(zhǎng)度標(biāo)識(shí)判斷和結(jié)束符判斷。
回復(fù)

使用道具 舉報(bào)

ID:592807 發(fā)表于 2020-11-5 08:25 | 顯示全部樓層
每接受一次數(shù)據(jù)清零一次定時(shí)器,超過(guò)100ms沒數(shù)據(jù)直接判斷發(fā)送結(jié)束
回復(fù)

使用道具 舉報(bào)

ID:839001 發(fā)表于 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í)候,比如沒有發(fā)結(jié)束符、只發(fā)了AB,那應(yīng)該怎么處理
回復(fù)

使用道具 舉報(bào)

ID:839001 發(fā)表于 2020-11-5 09:13 | 顯示全部樓層
wulin 發(fā)表于 2020-11-5 06:43
常用的方法有定時(shí)判斷、字符串長(zhǎng)度標(biāo)識(shí)判斷和結(jié)束符判斷。

我覺得定時(shí)判斷是最好的了,沒有什么限制
回復(fù)

使用道具 舉報(bào)

ID:839001 發(fā)表于 2020-11-5 09:14 | 顯示全部樓層
黃youhui 發(fā)表于 2020-11-5 08:25
每接受一次數(shù)據(jù)清零一次定時(shí)器,超過(guò)100ms沒數(shù)據(jù)直接判斷發(fā)送結(jié)束

謝謝,有思路了,今天晚上試試
回復(fù)

使用道具 舉報(bào)

ID:839001 發(fā)表于 2020-11-5 09:15 | 顯示全部樓層
amandv 發(fā)表于 2020-11-4 23:15
可以延時(shí)判斷,50~100MS沒通訊即結(jié)束.

不應(yīng)該延時(shí)判斷,應(yīng)該用定時(shí)器判斷
回復(fù)

使用道具 舉報(bào)

ID:339654 發(fā)表于 2020-11-11 17:12 | 顯示全部樓層
將數(shù)據(jù)打包,設(shè)置一個(gè)開始符和結(jié)束符
回復(fù)

使用道具 舉報(bào)

ID:838395 發(fā)表于 2020-11-12 11:53 | 顯示全部樓層
定義一個(gè)結(jié)束標(biāo)識(shí)符
回復(fù)

使用道具 舉報(bào)

ID:367934 發(fā)表于 2020-11-13 09:03 | 顯示全部樓層
在報(bào)文添加標(biāo)志符比如&abc&。通過(guò)判斷是否接收到了兩個(gè)&定義符號(hào)。如果接收到了說(shuō)明已經(jīng)接收完了。或者加\r\n。方法有很多,多做嘗試。
回復(fù)

使用道具 舉報(bào)

ID:311846 發(fā)表于 2020-11-13 14:24 | 顯示全部樓層
可以定義傳輸格式,簡(jiǎn)單來(lái)說(shuō)就是協(xié)議,或者規(guī)定超時(shí)時(shí)間視為結(jié)束接收
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表