成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C語言與物聯網之簡單通信協議

開發 前端
用C語言做物聯網網關開發時,經常需要通過串口、485接口等從一些傳感器讀取數據,由于網關設備和傳感器所處的環境復雜多樣,電磁干擾等常常會破壞傳輸的數據,為了確保傳輸數據的可靠性。

用C語言做物聯網網關開發時,經常需要通過串口、485接口等從一些傳感器讀取數據,由于網關設備和傳感器所處的環境復雜多樣,電磁干擾等常常會破壞傳輸的數據,為了確保傳輸數據的可靠性,通常會采取一些策略,常用的策略:數據校驗+超時重傳,具體過程如下:

[[331222]]

發送方在發送數據時,在元數據的基礎上增加校驗數據形成請求數據包(data pack),然后將請求數據包發送出去,并啟動守衛計時器(Guard Timer)。

接收方在收到請求數據包后,以跟發送方相同的算法對元數據進行計算得到校驗數據,然后跟收到的校驗數據進行比較,若相同,則說明數據可靠,可以使用;反之,說明數據被破壞,直接丟棄掉。若數據可靠,接收方以同樣的格式做成響應數據包回復給發送方;若發現數據被破壞,接收方不回復任何數據。

如果發送方在守衛計時器超時前正確地接收到了接收方回復的響應數據包,則停止守衛計時器,并進行后續的處理;若發送方在守衛計時器超時時仍未收到接收方回復的響應數據包,則重新發送"1."中的數據包,如此反復,直到正確發送或達到了重傳次數。

步驟1~3重點為了講述如何確保數據可靠傳輸,真實情景中為了能正確地斷包(識別數據包),通常會按照如下結構來定義數據包:

 

C語言與物聯網之簡單通信協議
  • 包起始標識:通常使用固定數據,比如0xFA, 0xAA, 0xA5等;
  • 元數據長度:根據元數據長度進行斷包。比如:元數據長度占1字節,校驗數據占2字節,當元數據長度取值為10時,則數據包大小為14字節;
  • 元數據:發送的或接收的,有一定格式或意義的應用數據;

校驗數據:按照某種校驗算法(比如checksum,crc等)計算得到的值。

  1. #define MAX_DATA_LEN  100     /* 假設元數據的最大長度為100字節 */ 
  2. typedef struct tag_data_pack { 
  3.     uint8_t sop;                     /* 包起始標識,(Start Of Pack) */ 
  4.     uint8_t len;                     /* 元數據長度,假設為1字節 */ 
  5.     uint8_t datas[MAX_DATA_LEN + 2]; /* 元數據 + 2字節的校驗數據 */ 
  6. }data_pack_t; 

總線式的通信中,通常還會在數據包中加入目標設備的地址,以便于確定數據是發往總線上的哪個設備,數據包的參考結構如下:

 

C語言與物聯網之簡單通信協議

用C語言描述如下:

  1. #define MAX_DATA_LEN  100     /* 假設元數據的最大長度為100字節 */ 
  2. typedef struct tag_data_pack { 
  3.     uint8_t sop;                     /* 包起始標識,(Start Of Pack) */ 
  4.     uint8_t addr;                    /* 目標設備地址,假設為1字節 */ 
  5.     uint8_t len;                     /* 元數據長度,假設為1字節 */ 
  6.     uint8_t datas[MAX_DATA_LEN + 2]; /* 元數據 + 2字節的校驗數據 */ 
  7. }data_pack_t; 

 

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2018-04-10 14:16:14

物聯網

2024-01-23 12:47:27

2021-12-16 10:49:32

物聯網通信協議網絡

2020-06-01 14:15:57

物聯網通信協議無線通訊

2023-04-27 17:49:38

物聯網通信協議

2022-02-23 19:38:22

物聯網通信協議

2018-12-07 13:58:38

物聯網通信協議IOT

2020-02-20 22:44:01

通信協議物聯網終端設備

2019-12-03 12:16:36

物聯網ZigBee藍牙低功耗

2024-03-20 10:26:08

物聯網物聯網協議通信協議

2018-08-04 05:08:50

物聯網架構通信協議IOT

2023-10-28 16:14:38

RS485通信協議

2019-06-21 14:17:52

工業物聯網通信協議IIOT

2020-07-05 22:57:04

物聯網通信協議IOT

2019-04-29 10:26:49

TCP網絡協議網絡通信

2023-10-12 19:37:50

通信協議HTTP

2022-06-18 09:02:00

I2C 子系統通信協議

2018-08-10 06:27:49

Thread物聯網通信協議

2024-02-20 19:53:57

網絡通信協議

2010-07-01 15:45:22

網絡通信協議
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产日韩欧美二区 | 成人午夜电影在线观看 | 久久国产欧美日韩精品 | 国产欧美日韩一区 | 九九久久精品视频 | 欧美在线二区 | 日本一区二区电影 | 亚洲综合视频 | a免费观看 | 久久亚洲国产精品 | 欧美寡妇偷汉性猛交 | 成人av网站在线观看 | 日韩视频在线观看一区二区 | 免费国产一区二区 | 二区在线视频 | 亚洲成人综合在线 | 免费在线观看av的网站 | 国产精品亚洲片在线播放 | 国产亚洲一区二区三区 | 国产精品a久久久久 | 国产一级免费在线观看 | 免费h在线 | 在线看av的网址 | 精品少妇一区二区三区在线播放 | 日韩国产免费观看 | 亚洲成人一区 | 久久精品视频亚洲 | 欧美一区永久视频免费观看 | 国产福利资源在线 | 亚洲欧美在线视频 | www.日本国产 | 欧美日韩一区二区三区在线观看 | 99久视频| 国产精品美女久久久久久免费 | 欧美一区视频 | 午夜网| 久久免费小视频 | 97人人干 | 国外成人在线视频 | 国产日韩亚洲欧美 | 免费一级欧美在线观看视频 |