我试图从我的Arduino UNO R3向Android平板电脑发送数据形式的数据。我正在以字节的形式发送该数字,并且正如Arduino IDE中的串行监视器所证实的那样,正在从Arduino一侧正确发送数据。但在接收端,数据类型使其不兼容以支持大量数据和数据溢出。字节数据类型的范围从-128到127.所以当我尝试发送一个大于127的数字时,比如说200,显示屏会显示-56。实际上,它以256个字符的周期显示更大的数字。首先它正确地显示到127,然后它到-127否定,继续增加到0并继续从0增加。试图从Arduino发送到Android时大量数据溢出
class MyThread extends Thread
{
@Override
public void run()
{
int x;
String btstring;
final ByteBuffer buffer = ByteBuffer.allocate(2); //LINE1
UsbRequest request = new UsbRequest();
request.initialize(usbDeviceConnection, endpointIn);
while (true)
{
request.queue(buffer, 1); //LINE2
if (usbDeviceConnection.requestWait() == request && DRD==true)
{
try
{
x=buffer.get(0);
btstring = Integer.toString(x);
handler.post(new newthread(btstring));
//Thread.sleep(100);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}
}
class newthread implements Runnable
{
String str0;
public newthread(String STR0)
{
str0 = STR0;
}
@Override
public void run()
{
if(str0!="0") //to avoid blinking to zero value.
{
DoseRateDisplay.setText(str0);
}
}
}
下面是Arduino的代码仅供参考:
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.write(200);
delay(500);
}
我相信的是,两条线标记为LINE1和LINE2代码可能是造成这种短缺的空间传入的数据。我甚至试图改变他们的价值观,但无济于事。可以做些什么来合并大于127的数据?任何不同风格的数据处理也将做到。
把你能解释一下这条线实际上是这样做的:mHandler.obtainMessage(MESSAGE_FROM_SERIAL_PORT,数据).sendToTarget(); – archity
看看我链接的github项目。该行处理收到的数据,将其解析为字符串并通过BroadcasrReciever发送。在你的情况下,这个消息处理将使用handler.post(new newthread(btstring)); – muminers
嘿所以你通过GitHub链接的代码已经被我试过了,而且这个方法有一个不同的问题。它正确显示文本,但连续闪烁。检查此:http://stackoverflow.com/questions/38203558/settext-causing-text-to-flicker-irratically – archity