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

標題: 基于RS485 的Modbus RTU 接收機制 [打印本頁]

作者: xuwei    時間: 2015-6-13 00:57
標題: 基于RS485 的Modbus RTU 接收機制


由于LW同志的白眼所以今晚決定搞一下基于RS485的modbus RTU 模式代碼移植。

不同的是LW同志是自己實現,而我是使用現成的Modbus協議棧!

1、Modbus協議棧移植,
協議棧移植代碼不算復雜,用了2個小時完成移植 for arm 上運行。移植完畢編譯成功
注意端口內的操作函數,注釋掉,然后在填充硬件相關部分

2、Modbus
接收層
機理其實就是一個串口中斷,然后每接收一個字符都會啟動一個定時器計時并且存入BUFF中,同時刷新定時器值,這樣如果有字符接收那么定時器就不斷的刷新而不會溢出,當一幀接收完畢后定時器由于得不到刷新而溢出,這就會導致定時器的溢出。定時器一旦溢出就會觸發一次事件,通知應用層,我收到了一幀報文你可以來取走了。空口無平,要LW同志死心要上代碼的,come on !

以上為串口接收到一個字節中斷后調用,是一個指針函數,在協議棧初始化的時候他被定義為

也就是說我們只要找到這個函數即可找到串口的底層接收代碼,OK繼續

很不幸我們找到了,并且看到他從硬件中讀了一字節繼續
看他如何處理

哈哈到此已經可以看到了首先他狀態為,所以先接受存進buff,然后開啟定時器
接著如果再有數據中斷就會這樣

可見是一樣的,和上面,那么有字節就會一直這樣循環,當然不能大于
最后就是什么時候幀結束了呢?
首先幀結束了會停止中斷,然后定時器就得不到刷新,然后定時器就會中斷,然后,,,繼續

不好意思又是一個函數指針,他也是初始化定義了如下

繼續

很明顯到這里已經完成了底層的幀截獲,他上報給了應用層

也就是說他是利用字節超時作為幀結束的標志。這就RTU模式底層串口的接收處理。僅此而已。并不高深。

3、應用層
底層把數據投遞后,應用層通過

函數進行輪訓是否收到一幀數據
然后繼續


比較孰了吧,這是判斷是不是給我們的,或者是不是廣播地址,因為廣播首地址我們從機也是要接受滴!然后繼續告訴上層進入

此處完了之后之各種的讀寫

然后就是用戶針對這些填充的函數實體即可!!!OK


以上是理論分析,實際代碼測試不日擇機進行!!


有是LW同志!能不能老實點啊

比特電子
老王








歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲国产精品视频 | 91精品国产综合久久久动漫日韩 | 一区二区三区不卡视频 | 国产精品视频一二三区 | 91麻豆产精品久久久久久 | 欧洲视频一区二区 | 三级av在线 | av在线视 | 中文字幕视频在线看5 | 免费一级黄色电影 | 欧美日韩一区在线 | 性国产丰满麻豆videosex | 天天干天天爱天天 | 免费国产视频在线观看 | 亚洲精品高清视频在线观看 | 区一区二区三在线观看 | 亚洲成人精品国产 | 亚洲精品久久久久久久久久久久久 | 成人超碰 | 久草青青草 | 99精品国产成人一区二区 | 国产一区二区精品在线观看 | 国产欧美一区二区三区在线看 | 天堂素人约啪 | 超碰免费在线观看 | 久久免费观看视频 | 欧美涩涩网 | 亚洲视频在线一区 | 久久综合久久综合久久综合 | 久久久免费毛片 | 国产精品自拍视频网站 | 亚洲综合色丁香婷婷六月图片 | 黄色免费观看 | 蜜桃传媒av| 久久av资源网 | 国产高清自拍视频在线观看 | 精品真实国产乱文在线 | 国产精品日韩在线观看 | 亚洲人成人一区二区在线观看 | 中文字幕免费视频 | 国产片一区二区三区 |