標(biāo)題: stm32單片機串口如何連續(xù)接收幀數(shù)據(jù)并提取所需數(shù)據(jù)? [打印本頁]

作者: 陳琦琛    時間: 2022-2-9 15:53
標(biāo)題: stm32單片機串口如何連續(xù)接收幀數(shù)據(jù)并提取所需數(shù)據(jù)?
如下圖所示為設(shè)備通信指令解析



當(dāng)發(fā)送啟動測距指令“01 10 00 28 00 01 02 00 04 A1 BB”之后,設(shè)備開始啟動測距,并不斷發(fā)送測距數(shù)據(jù)。
接收到的數(shù)據(jù)如下圖示



當(dāng)發(fā)送“01 10 00 28 00 01 02 00 04 A1 BB”后設(shè)備會發(fā)送一次回復(fù)指令和n次測距數(shù)據(jù)直到收到停止命令 ,窗口助手接收到回復(fù)指令“01 10 00 28 00 01 81 C1”,然后就不斷地發(fā)送測距數(shù)據(jù)幀 總共有47個字節(jié),每個字符的含義在第一張圖的數(shù)據(jù)解析。我想取出數(shù)據(jù)幀中的 第15個字節(jié)和第17個字節(jié),也就是A基站和B基站的測量數(shù)據(jù)。

串口接收數(shù)據(jù)格式為 “一次回復(fù)指令+n次測距數(shù)據(jù)幀”

我使用了中斷和IDLE中斷,結(jié)合判斷幀頭為 “01 03 2A”的方法沒能成功,請教各位實現(xiàn)

作者: munuc_w    時間: 2022-2-10 09:39
通信中,收發(fā)數(shù)據(jù)的使用必須按通信協(xié)議解析,否則,不知道如何處理。
作者: xws245925587    時間: 2022-2-10 10:50
這就一個modbus 協(xié)議啊,根據(jù)協(xié)議解析就可以了
作者: AUG    時間: 2022-2-10 10:54
串口做數(shù)據(jù)處理最好是中斷接收,用隊列存儲,然后去輪詢處理數(shù)據(jù)就可以了。
作者: 陳琦琛    時間: 2022-2-10 14:25
munuc_w 發(fā)表于 2022-2-10 09:39
通信中,收發(fā)數(shù)據(jù)的使用必須按通信協(xié)議解析,否則,不知道如何處理。

抱歉,第一次接觸這個通信協(xié)議
作者: lkc8210    時間: 2022-2-10 14:40
不懂STM32
抽空寫了一個51的
你可以參考看看
仿真可用
從機用的是Modbus Slave
所以命令格式是Func 03 命令(Senddata2)
而不是你的定位命令
而且沒有命令回覆
只有定位數(shù)據(jù)
并把你要的數(shù)據(jù)在數(shù)碼管顯示











作者: 陳琦琛    時間: 2022-2-14 12:50
lkc8210 發(fā)表于 2022-2-10 14:40
不懂STM32
抽空寫了一個51的
你可以參考看看

萬分感謝大佬的指點,我嘗試一下
作者: TEC    時間: 2022-2-14 13:28
你的問題是上位機(串口調(diào)試工具)如何解析下位機(單片機)的數(shù)據(jù),還是STM32單片機解析另一塊單片機通過串口發(fā)送過來的數(shù)據(jù)?如果是用電腦上的串口調(diào)試工具軟件解析,那么市面上一些通用的串口工具是不能直接解析的,得針對性的開發(fā)上位機。
作者: 陳琦琛    時間: 2022-2-28 08:59
TEC 發(fā)表于 2022-2-14 13:28
你的問題是上位機(串口調(diào)試工具)如何解析下位機(單片機)的數(shù)據(jù),還是STM32單片機解析另一塊單片機通過 ...

是stm32單片機解析另一塊單片機發(fā)過來的數(shù)據(jù),這個我沒能解決。后面我才用定時器中斷查詢的方法獲取數(shù)據(jù)了




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