2016-05-15 37 views
0

我的android程序需要通過usb從arduino模擬傳感器接收int值並在實時圖形上打印它們,我從回調函數收到byte[]未知的輸入字節長度轉換爲int

我試過很多方法可以從byte[]轉換爲字符串或INT包括new Stringnew IntegerBigIntegerparseInt和一些代碼的方法,我在其他主題尋找,但沒有工作,我只接受正確的值的一半,其他值多少開溜或小。

字節[]長度從1變到4,他們是一些空字節,它看起來像這樣(日誌):

enter image description here

我怎樣才能將其轉換爲正確的值?問題在哪裏?

在理想情況下,我需要從傳感器接收230到300之間的int值。

回答

0

Arduino代碼段? 猜測不好:int是一個16位的值,字節是8位。 Int_8是-128到127。 uint8_t 0-255不被java支持據我所知,但你可以使用char類型的無符號16位(需要強制轉換)。

1

看來你的傳感器正在使用文本協議。如果我將您的字節ASCII字符,這將是:

.. 
10-LF 
50-2 
53-5 
56-8 
.. 
13-CR 
10-LF 
50-2 
53-5 
.. 
54-6 
13-CR 
10-LF 
etc. 

解釋爲

258 
256 

所以,我的事情最好的解決方案是累積接收字節字符,當CRLF被收訖,讀整個字符串(帶有剝離的CRLF)作爲int - 可能通過parseInt。