2016-05-15 35 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。