加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專(zhuān)業(yè)用戶(hù)
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 1.幀頭幀尾標(biāo)志法
    • 2.長(zhǎng)度字段法
    • 3.超時(shí)等待法
    • 4.結(jié)束符法
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

串口接收不定長(zhǎng)數(shù)據(jù)的幾種方式

01/05 11:41
1萬(wàn)
閱讀需 5 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

串口是一種常見(jiàn)的數(shù)據(jù)傳輸接口,用于在計(jì)算機(jī)和外部設(shè)備之間進(jìn)行數(shù)據(jù)通信。在實(shí)際應(yīng)用中,我們經(jīng)常遇到需要接收不定長(zhǎng)數(shù)據(jù)的情況。不定長(zhǎng)數(shù)據(jù)指的是數(shù)據(jù)包的長(zhǎng)度不固定,可能是一個(gè)字節(jié),也可能是多個(gè)字節(jié)。本文將介紹幾種常見(jiàn)的方式來(lái)處理串口接收不定長(zhǎng)數(shù)據(jù)的問(wèn)題。

1.幀頭幀尾標(biāo)志法

1.1 原理

幀頭幀尾標(biāo)志法是一種常用的方式,通過(guò)在數(shù)據(jù)包的開(kāi)頭和結(jié)尾添加特定的標(biāo)志符號(hào)來(lái)標(biāo)識(shí)數(shù)據(jù)包的起始和結(jié)束。接收端通過(guò)檢測(cè)標(biāo)志符號(hào)的位置,將接收到的數(shù)據(jù)拼接成完整的數(shù)據(jù)包。

1.2 實(shí)現(xiàn)步驟

  • 發(fā)送端:在數(shù)據(jù)包的開(kāi)頭添加幀頭標(biāo)志,例如0xAA;在數(shù)據(jù)包的結(jié)尾添加幀尾標(biāo)志,例如0xBB。
  • 接收端:循環(huán)接收串口數(shù)據(jù),并判斷接收到的數(shù)據(jù)是否與幀頭標(biāo)志相匹配。如果匹配成功,則開(kāi)始接收數(shù)據(jù),直到遇到幀尾標(biāo)志為止。

1.3 注意事項(xiàng)

使用幀頭幀尾標(biāo)志法時(shí),需要注意以下事項(xiàng):

  • 標(biāo)志符號(hào)的選擇應(yīng)避免與數(shù)據(jù)包中的數(shù)據(jù)重復(fù)。
  • 如果數(shù)據(jù)包中可能出現(xiàn)標(biāo)志符號(hào)本身,則需要進(jìn)行轉(zhuǎn)義處理,以避免誤判。

閱讀更多行業(yè)資訊,可移步與非原創(chuàng),車(chē)規(guī)級(jí)MCU芯片年度發(fā)展報(bào)告(2023版完整報(bào)告下載)、復(fù)旦微,不只是FPGA、比亞迪進(jìn)入“下半場(chǎng)”,2023年銷(xiāo)冠還能領(lǐng)跑新能源汽車(chē)嗎?? ?等產(chǎn)業(yè)分析報(bào)告、原創(chuàng)文章可查閱。

2.長(zhǎng)度字段法

2.1 原理

長(zhǎng)度字段法是另一種常用的方式,通過(guò)在數(shù)據(jù)包中添加一個(gè)字節(jié)或多個(gè)字節(jié)的長(zhǎng)度字段,來(lái)明確指示數(shù)據(jù)包的長(zhǎng)度。接收端根據(jù)長(zhǎng)度字段提前知道數(shù)據(jù)包的長(zhǎng)度,從而正確接收并解析數(shù)據(jù)。

2.2 實(shí)現(xiàn)步驟

  • 發(fā)送端:在數(shù)據(jù)包中添加一個(gè)長(zhǎng)度字段,表示數(shù)據(jù)包的長(zhǎng)度。
  • 接收端:先接收長(zhǎng)度字段,然后根據(jù)長(zhǎng)度字段的值設(shè)定接收緩沖區(qū)的大小。之后再接收剩余的數(shù)據(jù),并進(jìn)行解析。

2.3 注意事項(xiàng)

使用長(zhǎng)度字段法時(shí),需要注意以下事項(xiàng):

  • 長(zhǎng)度字段的長(zhǎng)度和編碼方式需要提前約定好,以確保發(fā)送端和接收端一致。
  • 需要考慮字節(jié)序(大端序或小端序)的問(wèn)題,以保證多字節(jié)長(zhǎng)度字段的正確解析。

3.超時(shí)等待法

3.1 原理

超時(shí)等待法是一種簡(jiǎn)單直觀的方式,通過(guò)設(shè)定一個(gè)接收超時(shí)時(shí)間,在接收到數(shù)據(jù)后等待一段時(shí)間,如果在超時(shí)時(shí)間內(nèi)沒(méi)有接收到新的數(shù)據(jù),則認(rèn)為數(shù)據(jù)接收完畢。

3.2 實(shí)現(xiàn)步驟

  • 發(fā)送端:連續(xù)發(fā)送數(shù)據(jù)包。
  • 接收端:設(shè)定一個(gè)接收超時(shí)時(shí)間。當(dāng)接收到數(shù)據(jù)后開(kāi)始計(jì)時(shí),如果在超時(shí)時(shí)間內(nèi)沒(méi)有接收到新的數(shù)據(jù),則認(rèn)為數(shù)據(jù)接收完畢。

3.3 注意事項(xiàng)

使用超時(shí)等待法時(shí),需要注意以下事項(xiàng):

  • 超時(shí)時(shí)間的設(shè)置需要考慮到數(shù)據(jù)包的最大長(zhǎng)度和串口傳輸速率,以確保足夠的時(shí)間接收完整的數(shù)據(jù)包。
  • 如果數(shù)據(jù)包傳輸中出現(xiàn)錯(cuò)誤或丟失數(shù)據(jù),可能會(huì)導(dǎo)致超時(shí)判斷錯(cuò)誤,因此需要在設(shè)計(jì)中考慮數(shù)據(jù)的可靠性。

4.結(jié)束符法

4.1 原理

結(jié)束符法是一種簡(jiǎn)單直接的方式,通過(guò)在數(shù)據(jù)包的結(jié)尾添加一個(gè)特定的結(jié)束符號(hào)來(lái)標(biāo)識(shí)數(shù)據(jù)包的結(jié)束。接收端通過(guò)檢測(cè)結(jié)束符號(hào)的位置來(lái)確定數(shù)據(jù)包的邊界。

4.2 實(shí)現(xiàn)步驟

  • 發(fā)送端:在數(shù)據(jù)包的結(jié)尾添加一個(gè)特定的結(jié)束符號(hào),例如換行符'n'或回車(chē)符'r'。
  • 接收端:循環(huán)接收串口數(shù)據(jù),并檢測(cè)接收到的數(shù)據(jù)中是否包含結(jié)束符號(hào)。如果存在結(jié)束符號(hào),則將之前接收到的數(shù)據(jù)視為一個(gè)完整的數(shù)據(jù)包。

4.3 注意事項(xiàng)

使用結(jié)束符法時(shí),需要注意以下事項(xiàng):

  • 結(jié)束符號(hào)的選擇應(yīng)避免與數(shù)據(jù)包中的數(shù)據(jù)重復(fù)。
  • 如果數(shù)據(jù)包中可能出現(xiàn)結(jié)束符號(hào)本身,則需要進(jìn)行轉(zhuǎn)義處理,以避免誤判。

串口接收不定長(zhǎng)數(shù)據(jù)是實(shí)際應(yīng)用中常見(jiàn)的問(wèn)題,但也有多種解決方案可供選擇。本文介紹了幾種常見(jiàn)的方式來(lái)處理串口接收不定長(zhǎng)數(shù)據(jù)的問(wèn)題,包括幀頭幀尾標(biāo)志法、長(zhǎng)度字段法、超時(shí)等待法和結(jié)束符法。每種方式都有其原理、實(shí)現(xiàn)步驟和注意事項(xiàng),通過(guò)合理選擇和使用這些方式,我們可以更好地處理和解析串口接收的不定長(zhǎng)數(shù)據(jù),確保數(shù)據(jù)的完整性和準(zhǔn)確性。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
BTA06-600SWRG 1 STMicroelectronics 6A standard and Snubberless™ Triacs

ECAD模型

下載ECAD模型
$1 查看
LM2903PWR 1 Texas Instruments Dual differential comparator 8-TSSOP -40 to 125

ECAD模型

下載ECAD模型
$0.56 查看
G6AK-274P-ST-US-DC9 1 OMRON Corporation Power/Signal Relay, 2 Form C, DPDT, Latched, 0.02A (Coil), 9VDC (Coil), 180mW (Coil), 2A (Contact), 30VDC (Contact), DC Input, Random, AC/DC Output, Through Hole-Straight Mount, ROHS COMPLIANT
$64.68 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜