久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

只需一步,快速開(kāi)始

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

關(guān)于單片機(jī)自定義通訊協(xié)議的一個(gè)的問(wèn)題

[復(fù)制鏈接]
ID:976190 發(fā)表于 2023-2-6 20:41 | 顯示全部樓層 |閱讀模式
300黑幣
現(xiàn)自定義PC機(jī)與單片機(jī)的通訊協(xié)議為:包長(zhǎng)+數(shù)據(jù)段

例:05 0A 0B 0C 0D 0E
假設(shè)現(xiàn)在受到通信干擾,包長(zhǎng)數(shù)據(jù)改變?yōu)?4,那么單片機(jī)接收到的就是數(shù)據(jù)0A 0B 0C 0D 而數(shù)據(jù)0E則會(huì)被當(dāng)成下一次數(shù)據(jù)包的包長(zhǎng),造成通信錯(cuò)誤。
請(qǐng)問(wèn)一下如果遇到這種狀況應(yīng)該怎么解決?小弟已經(jīng)想一天了

最佳答案

查看完整內(nèi)容

你定的協(xié)議解決不了問(wèn)題。 給你MODBUS的解決方案: MODBUS/ASC以":"作為幀頭標(biāo)志,"\r\n"(0xa、0xd)作為幀尾標(biāo)志,數(shù)據(jù)幀只有字母和數(shù)字的ASCII碼,不可能出現(xiàn)幀頭幀尾的字符。 MODBUS/RTU以3.5字符的總線空閑時(shí)間做幀頭標(biāo)志,如果出現(xiàn)傳輸3.5個(gè)字符的總線空閑時(shí)間,則剛才收到的最后一個(gè)字符則為幀尾,接下來(lái)收到的第一個(gè)字符就是幀頭。
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2023-2-6 20:41 | 顯示全部樓層
你定的協(xié)議解決不了問(wèn)題。

給你MODBUS的解決方案:

MODBUS/ASC以":"作為幀頭標(biāo)志,"\r\n"(0xa、0xd)作為幀尾標(biāo)志,數(shù)據(jù)幀只有字母和數(shù)字的ASCII碼,不可能出現(xiàn)幀頭幀尾的字符。

MODBUS/RTU以3.5字符的總線空閑時(shí)間做幀頭標(biāo)志,如果出現(xiàn)傳輸3.5個(gè)字符的總線空閑時(shí)間,則剛才收到的最后一個(gè)字符則為幀尾,接下來(lái)收到的第一個(gè)字符就是幀頭。
回復(fù)

使用道具 舉報(bào)

ID:525244 發(fā)表于 2023-2-6 22:36 來(lái)自觸屏版 | 顯示全部樓層
兩個(gè)辦法,一個(gè)辦法前邊加上3個(gè)數(shù)據(jù)包長(zhǎng)度,兩個(gè)一樣或三個(gè)一樣的有效!方法二:用接收結(jié)束延時(shí)法!必須一個(gè)字節(jié)1ms,接收完一個(gè)字節(jié),然后定時(shí)器計(jì)時(shí),來(lái)一個(gè)字節(jié)再清零,沒(méi)有字節(jié)接收之后,定時(shí)器計(jì)到3-10ms之后,判斷接收完成。還有其他方法!多思考!
回復(fù)

使用道具 舉報(bào)

ID:771630 發(fā)表于 2023-2-6 22:57 | 顯示全部樓層
直接加個(gè)累加校驗(yàn)或者異或校驗(yàn)就行了
回復(fù)

使用道具 舉報(bào)

ID:419968 發(fā)表于 2023-2-6 23:16 | 顯示全部樓層
可以通過(guò)計(jì)時(shí)解決。因?yàn)榘l(fā)送肯定連續(xù)發(fā)送的,假設(shè)每字節(jié)最大發(fā)送時(shí)間間隔1ms,那么毎接受一個(gè)字節(jié)開(kāi)始計(jì)時(shí)超過(guò)1.5ms認(rèn)為本次接受結(jié)束
回復(fù)

使用道具 舉報(bào)

ID:86926 發(fā)表于 2023-2-7 08:05 | 顯示全部樓層
最后用個(gè)字節(jié)做校驗(yàn)就好了,一直這樣用
回復(fù)

使用道具 舉報(bào)

ID:844772 發(fā)表于 2023-2-7 08:49 | 顯示全部樓層
最好再加上CRC驗(yàn)證,錯(cuò)一位還能修正過(guò)來(lái)。
回復(fù)

使用道具 舉報(bào)

ID:370884 發(fā)表于 2023-2-7 09:49 | 顯示全部樓層
那你可以將協(xié)議擴(kuò)展一下加一個(gè)校驗(yàn)啊  校驗(yàn)不對(duì)說(shuō)明這包數(shù)據(jù)有誤   如果你想指導(dǎo)通信中哪一位誤碼了,還可以加糾錯(cuò)編碼啊
回復(fù)

使用道具 舉報(bào)

ID:1034262 發(fā)表于 2023-2-7 09:57 | 顯示全部樓層
校驗(yàn)都沒(méi)有,非常不可靠。
用CRC16校驗(yàn)吧,參考MODBUS-RTU協(xié)議。
我建議直接用MODBUS-RTU協(xié)議,工控上,我從90年代一直用到現(xiàn)在,全球通用。
回復(fù)

使用道具 舉報(bào)

ID:390412 發(fā)表于 2023-2-7 11:00 | 顯示全部樓層
格式可以改成 : 包頭  數(shù)據(jù)長(zhǎng)度 數(shù)據(jù) 校驗(yàn)和 包尾
                        校驗(yàn)和 = 包頭+數(shù)據(jù)長(zhǎng)度+數(shù)據(jù)+包尾

接收端:判斷if(rx_buf[0]==包頭 && rx_buf[4]==包尾)
                    {
                        u8 JiaoYan=rx_buf[0]+rx_buf[1]+rx_buf[2]++rx_buf[4]; //校校驗(yàn)=包頭+數(shù)據(jù)長(zhǎng)度+數(shù)據(jù)+包尾
                       if( JiaoYan == rx_buf[3] )  //校驗(yàn)正確
                        {
                            //開(kāi)始接收數(shù)據(jù)
                            dat[0]=rx_buf[2]
                        }
                  }
//注意:自定義協(xié)議的數(shù)據(jù)不能包含包頭和包尾一樣數(shù)據(jù),如果是自定義的應(yīng)該可以避免這個(gè)問(wèn)題

回復(fù)

使用道具 舉報(bào)

ID:130230 發(fā)表于 2023-2-7 18:00 | 顯示全部樓層
加幀頭長(zhǎng)度及校驗(yàn)給你參考:幀頭高8位(head high) 幀頭低8位(head low) 幀數(shù)據(jù)長(zhǎng)度(payloadLen ) 保留字節(jié)(res ) 命令類型(cmdType) 命令數(shù)據(jù)(cmdPayload) 幀校驗(yàn)(check)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99视频久| 国产探花在线观看视频 | 欧美成人h版在线观看 | 欧美精品一区三区 | 亚洲国产精品久久久 | 日韩高清国产一区在线 | 日韩精品一区二区三区视频播放 | aaaaaa大片免费看最大的 | 天天干天天谢 | 日韩精品一区二区三区中文字幕 | 欧美一级小视频 | 精品久久精品 | 91社区在线观看播放 | 亚洲视频在线播放 | 精品欧美一区二区三区 | 干出白浆视频 | 91精品国产91久久久 | 久久久久久国产 | 色先锋影音 | 日日操操| 高清视频一区二区三区 | 久久亚洲一区 | 国产午夜亚洲精品不卡 | 亚洲欧美综合 | 国产精品久久久久久久久久久久冷 | 午夜欧美一区二区三区在线播放 | 欧美性猛交一区二区三区精品 | 国产99久久精品一区二区永久免费 | 国产精品视频网站 | 伊人久久成人 | 国产综合精品 | 人人插人人 | 国产成人综合在线 | 欧美日韩久久精品 | 国产探花在线精品一区二区 | 精品国产乱码久久久 | 国产精品久久久久久52avav | 在线欧美视频 | 亚洲视频中文字幕 | 色综合一区二区三区 | 一区亚洲 |