欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 各位師傅,大俠,親愛的朋友們,還是單片機串口接收數據的問題,還沒有解決。 [打印本頁]

作者: hmgqljz111    時間: 2019-10-9 09:35
標題: 各位師傅,大俠,親愛的朋友們,還是單片機串口接收數據的問題,還沒有解決。
兩個單片機通信,A單片機發送80 10 20 30 40 50 FF 給B單片機,B單片機收到后回復 90 41 FF  90 51 FF。A單片機發送80 60 70 80 FF 給B單片機,B單片機返回 90 50 01 02 03 04 FF。請教 如何只接收 90 50 01 02 03 04 FF保存到數組,
而不接收上一命令返回的 90 41 FF 90 51 FF。



作者: wulin    時間: 2019-10-9 11:28
兩組返回的字節長度、內容都不同,都可以作為判斷是否保留的標準。
也可以把90 50 01 02 03 04 FF相加,取數據和的低8位 0xe9 作為判斷是否保留的標準。
作者: eee123    時間: 2019-10-9 13:58
因為不知道通信環境,所以簡單點的處理給數據增加一個字節作為協議號,通過協議號判斷,收到數據后先判斷協議號,然后數據處理去掉協議號。為保證數據準確最好加上CRC校驗
作者: jiandanxuanxin    時間: 2019-10-9 14:35
根據字節內容90 50 以及 90 41 區分整組字節內容,選擇丟掉或保存
作者: hmgqljz111    時間: 2019-10-9 15:24
eee123 發表于 2019-10-9 13:58
因為不知道通信環境,所以簡單點的處理給數據增加一個字節作為協議號,通過協議號判斷,收到數據后先判斷協 ...

通信的字符是固定的
作者: hmgqljz111    時間: 2019-10-9 15:26
wulin 發表于 2019-10-9 11:28
兩組返回的字節長度、內容都不同,都可以作為判斷是否保留的標準。
也可以把90 50 01 02 03 04 FF相加,取 ...

返回原不是固定的90 50 01 02 03 04 FF,單片機B返回的字符串是個位置信息,每次返回不一樣。
作者: 13930856308    時間: 2019-10-9 15:46
返回原不是固定的90 50 01 02 03 04 FF,單片機B返回的字符串是個位置信息,每次返回不一樣
作者: yzwzfyz    時間: 2019-10-9 15:46
你不可以選擇要串口接收什么,不接收什么,只能將收到的數據用軟件可能篩查,留下一些,丟棄一些!

作者: wulin    時間: 2019-10-9 15:54
hmgqljz111 發表于 2019-10-9 15:26
返回原不是固定的90 50 01 02 03 04 FF,單片機B返回的字符串是個位置信息,每次返回不一樣。

此類串口傳輸的字符串都屬于自定義通訊協議范疇,可以增加特殊識別碼加以區分。接收端可以判斷是否需要返回信息,發送端也可以判斷是否需要保存返回的信息。方式方法很多,只要真正理解“自定義”就可以了。
作者: hmgqljz111    時間: 2019-10-9 16:17
jiandanxuanxin 發表于 2019-10-9 14:35
根據字節內容90 50 以及 90 41 區分整組字節內容,選擇丟掉或保存

能上個實例看一下嗎?如何丟掉,
作者: liuzx66    時間: 2019-10-9 17:49
發送的數據可以認為是一種命令,不同的返回不同的回答,根據發送的內容決定接受的內容是否保存。也可以根據返回字符串的特征來決定是否保存。
作者: baiyun1234    時間: 2019-10-10 08:40
A→B:80 10 20 30 40 50 FF
B→A:90 41 FF  90 51 FF
A→B:80 60 70 80 FF
B→A:“90 50 01 02 03 04 FF”
你既然都知道發送接收幾個字節了,就很好處理了。
把SBUF放在不同的數組里就好了。我只用最后一個舉例下:
使用SM0=0,SM1=1,模式,波特率自己定;
ucahr string[7];
int a;
REN=1;
for(a=0;a<7;a++)
{
while(!RI);
string[a]=SBUF;
RI=0;
}
REN=0;
   




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