在Matlab浮點我想通過串行COM發送一個浮點數到Matlab和它解釋爲單精度浮點數。接收來自字節
我可以通過串口作爲字節的數據包發送數據。因此,在發送端
我轉向32位由8浮點數,掩蓋它,並把它
(byte)((number >> 8) & 0x000000FF)
(byte)((number >> 16) & 0x000000FF)
...
\r\n (line termination)
現在,Matlab的我連接到COM,並通過使用fscanf(s,'%f')
其中s是串行實例接收。它讀取字節直到終止線。現在
,問題是,MATLAB的輸出還不如我發出同樣的。我相信問題是不同的浮點表示法還是不同的發送順序。
例如。如果我發送十進制1.2 (0x3f99999a)
,Matlab打印1.5315e+010
我能做什麼錯?
編輯:
Matlab的的fscanf http://www.mathworks.co.uk/help/matlab/ref/fscanf.html
發送者的代碼破壞了,從而不好笑。你爲什麼移動四位? 'number'從哪裏來的,你甚至不能用浮點運算符>>?是什麼讓你認爲你可以使用'fscanf'作爲二進制數據?當其中一個數據字節碰巧是'\ r'或'\ n'時會發生什麼? – 2013-04-10 20:53:26
@Ben Voigt對不起。我的意思是轉移8位。創建線程時出現錯字。當Matlab收到\ r或\ n時,Matlab自行終止讀取。 Number是C中的一個浮點數。我已經添加了指向可以接收和格式化二進制數據的matlab函數的鏈接。 – 2013-04-10 20:55:02