某物聯網系統,有一個中心機,多個終端機。終端機型別有甲,乙,丙,丁,戊共5種型別,將來還會添加其它型別中端(平均每月新增一種)。他們分別搭載A,B,C,D,E,F,G,H共8類傳感器,將來也會增加傳感器型別(半年會新增一種傳感器)。另外客戶數量多,分布全中國,但是不同客戶采購終端機數量,最少的只有不到10件,最多的采購數量在1000件。
物聯網芯片硬體自帶幀打包功能,包括調制解調,頻率選定,幀頭,地址,校驗。
其中終端機搭載傳感器的如下
甲: 1*A
乙: 1*A + 1*B
丙: 2*B + 1*C + 1*D
丁: 2*D + 1*E + 1*F
戊: 2*F + 2*G + 2*H
各個傳感器的精度如下
A - uint32
B - uint16
C - uint16
D - uint32
E - float32
F - float16
G - uint8
H - uint8
終端機與中心機的通信協議設計如下:
因為統計甲,乙,丙,丁,戊,累計的傳感器A為1個,B為2個,C為1個,D為2個,E為1個,F為2個,G為2個,H為2個。因此采用統一的通信協議幀格式。
每個[]表示一個位元組,uint32用 [i3] [i2] [i1] [i0]表示,uint16用[ih]和[il]表示,float32用[f3] [f2] [f1] [f0]表示,float16用[fh]和[fl]表示
[A i3] [A i2] [A i1] [A i0] [B1 ih] [B1 il] [B2 ih] [B2 il] [C ih] [C il] [D1 i3] [D1 i2] [D1 i1] [D1 i0] [D2 i3] [D2 i2] [D2 i1] [D2 i0] [e f3] [e f2] [e f1] [e f0] [f1 fh] [f1 fl] [f2 fh] [f2 fl] [g1 i ] [g2 i ] [h1 i ] [h2 i ]
一幀傳感器資料,共30位元組。不支持的傳感器型別,對應資料填0。
問題:
1,這種通信協議存在什么缺陷?考慮到產品成本不能用OTA
2,如果你來維護這種系統,請分別站在老板,部門經理,單片機程式員,Web程式員的立場上,如何保證自己利益最大化?
uj5u.com熱心網友回復:
全部轉為浮點數或int32處理uj5u.com熱心網友回復:
物聯網芯片通常一幀長度受限的,全部轉成浮點或int32不可取。
uj5u.com熱心網友回復:
想太多了,即使你支持100個設備,也就是400個位元組
當然你也可以使用分組,將不同長度的傳感器組成一組,加上控制欄位,進行發送,但是,資料轉換相同格式,還是必須的
uj5u.com熱心網友回復:
全部轉為浮點數或int32處理
物聯網芯片通常一幀長度受限的,全部轉成浮點或int32不可取。
想太多了,即使你支持100個設備,也就是400個位元組
當然你也可以使用分組,將不同長度的傳感器組成一組,加上控制欄位,進行發送,但是,資料轉換相同格式,還是必須的
你沒有找到這個的關鍵點。首先要能預測未來幾年產品經理會提出哪些傳感器的排列組合。在設計現有的通信協議時必須要能預測未來產品經理的想法。
uj5u.com熱心網友回復:
deviceType + (sensorType1 + dataType + dataLen + data) +(sensorType2 + dataType + dataLen + data)+。。。+(sensorTypeN + dataType + dataLen + data)設備型別和傳感器型別都可以按需分配,資料型別直接列舉出來對應的長度,再加資料,最后新產品出來直接更新客戶端程式決議回應資料就行了,決議器都可以分包之后直接發送到對應的模塊去操作,
uj5u.com熱心網友回復:
deviceType + (sensorType1 + dataType + dataLen + data) +(sensorType2 + dataType + dataLen + data)+。。。+(sensorTypeN + dataType + dataLen + data)
設備型別和傳感器型別都可以按需分配,資料型別直接列舉出來對應的長度,再加資料,最后新產品出來直接更新客戶端程式決議回應資料就行了,決議器都可以分包之后直接發送到對應的模塊去操作,
正解
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/37490.html
標籤:無線
上一篇:VXlan深入解讀
下一篇:C++基礎(五)結構體
