![]() |
發布時間: 2022-7-23 15:27
正文摘要:各位大佬們好,最近在學習modbus通信協議,廢了老大勁終于把數據從傳感器里面讀出來了,但是卡在數據處理這一步了處理方法說明書上寫的很詳細,可是這部分代碼實在是不會寫,希望有大佬指點一二。 比如這個例子,讀 ... |
Hephaestus 發表于 2022-7-25 17:57 主要是樓主把 66 66 7b 42 寫成 66 66 42 7B 造成還原錯誤,數據正常后還原也正常了,62.85。 ![]() |
xuyaqi 發表于 2022-7-23 19:52 樓主都說了“66 66 42 7B”是62.85的意思,你搞個2.7e23是來搞笑的嗎? |
愛馬達的小電動 發表于 2022-7-24 14:38 總要把代碼和報錯內容貼出來吧?你什么都不說別人也都不是算命的。 |
xuyaqi 發表于 2022-7-23 19:25 非常感謝解惑 |
Hephaestus 發表于 2022-7-23 18:48 謝謝指導,這樣確實可以一步到位了,還有個問題是怎么把接收到不斷變化的值放到ch【】里面處理啊,我自己寫的一直報錯,不知道該怎么修改了 |
xuyaqi 發表于 2022-7-23 19:52 人家都舉例“66 66 42 7B”的含義是62.85了,你還蒸熟的鴨子只剩下嘴硬了有意思嗎? |
Hephaestus 發表于 2022-7-23 19:32 這跟對方傳感器傳來的數據順序有關。 |
xuyaqi 發表于 2022-7-23 19:25 你把大小端弄反了。 |
4個字節 66 66 42 7B 轉為浮點數為 2.7184266e+23,參考程序:
![]() |
根本就不用算啊!上面f=ch一句話就轉過去了。以上代碼用MinGW驗證通過。 不過要注意的是x86本身是小端,C51編譯器按大端保存超過1字節的數據,所以ch[4]里面的數據順序要反過來。 |