使用adk模式通过usb进行Android arduino通信

使用adk模式通过usb进行Android arduino通信,android,arduino,adk,Android,Arduino,Adk,我正在使用adk模式通信的android和arduino应用程序上工作,我在我的主要活动和运行方法中实现了runnable,我正在读取值,当读取完成时,我正在向arduino板写入值,通信正在无限运行。我正在使用处理程序更新GUI,但应用程序停止运行沟通过了一段时间,我无法找出问题所在?处理程序中的GUI更新是否需要更多的时间,以使其发生或其他任何事情 以下代码用于接收和发送数据: while (true) { // read data try { int ret_read =

我正在使用adk模式通信的android和arduino应用程序上工作,我在我的主要活动和运行方法中实现了runnable,我正在读取值,当读取完成时,我正在向arduino板写入值,通信正在无限运行。我正在使用处理程序更新GUI,但应用程序停止运行沟通过了一段时间,我无法找出问题所在?处理程序中的GUI更新是否需要更多的时间,以使其发生或其他任何事情

以下代码用于接收和发送数据:

 while (true) { // read data
    try {
    int ret_read = 0;
    byte[] buffer_read = new byte[128];
    ret_read = mInputStream.read(buffer_read);

    for (int p = 0; p < 2 * (noOfFSensors); p = p + 2) {
    intListValues.add((int) composeInt(buffer_read[p],
                buffer_read[p + 1]));

    Log.d("Jankari", "Pu Value : "+String.valueOf((int) composeInt(buffer_read[p],
                buffer_read[p + 1])));

    }


      Message mPu = Message.obtain(mHandlerPuSensors);
      mPu.obj = new ValueMsgPuSensors("f", ret_read,intListFValues);
        mHandlerPuSensors.sendMessage(mPu);

    for (int a = 0; a < 2 * (noOfAnSensors); a = a + 2) {
    intListAnValues.add((int) (composeInt(buffer_read[2* (noOfFSensors) + a], 
                buffer_read[2* (noOfFSensors) + a + 1])));
    Log.d("Jankari", "An Value : "+String.valueOf(
         (int) (composeInt(buffer_read[2* (noOfFSensors) + a], 
    buffer_read[2* (noOfFSensors) + a + 1]))));

    }
    Message mAn = Message.obtain(mHandlerAnSensors);
    mAn.obj = new ValueMsgAnSensors("f", ret_read,
    intListAnValues);
    mHandlerAnSensors.sendMessage(mAn);

    for (int l = 0; l < noOfSw; l++) {
    intListSwValues.add((int) buffer_read[2* (noOfFSensors) +
        2 * (noOfAnSensors) + l]);
    Log.d("Jankari", "Sw : "+String.valueOf((int)
          buffer_read[2* (noOfFSensors) + 2 * (noOfAnSensors) + l]) );
    }
    Message mSw = Message.obtain(mHandlerSwSensors);
    mSw.obj = new ValueMsgSwSensors("f", ret_read,intListSwValues);
    mHandlerSwSensors.sendMessage(mSw);

        i += 1;


    mInputStream.close();

    // Send Output to arduino
    sendoutput();
       } catch (IOException e) {
      break;
    }

}
while(true){//读取数据
试一试{
int ret_read=0;
字节[]缓冲区读取=新字节[128];
ret_read=mInputStream.read(缓冲区读取);
对于(int p=0;p<2*(noOfFSensors);p=p+2){
add((int)composeInt(buffer_read[p],
缓冲区读取[p+1]);
Log.d(“Jankari”,“Pu Value:”+String.valueOf((int)composeInt(buffer_read[p]),和,
缓冲区读取[p+1]);
}
消息mPu=消息获取(mHandlerPuSensors);
mPu.obj=新值MsgPusensors(“f”,ret_read,intListFValues);
mHandlerPuSensors.sendMessage(mPu);
对于(int a=0;a<2*(传感器);a=a+2){
intListAnValues.add((int)(composeInt(buffer_read[2*(noOfFSensors)+a],
缓冲区读取[2*(noOfFSensors)+a+1]);
Log.d(“Jankari”,“一个值:”+String.valueOf(
(int)(组成(缓冲区读取[2*(noOfFSensors)+a],
缓冲区读取[2*(noOfFSensors)+a+1]);
}
消息人=消息获取(mHandlerAnSensors);
mAn.obj=新的价值观传感器(“f”,重新阅读,
intListAnValues);
mHandlerAnSensors.sendMessage(mAn);
对于(int l=0;l
我使用的处理器是

Handler mHandlerPuSensors = new Handler() {    
    @Override
    public void handleMessage(Message msg) {
        ValueMsgPuSensors msgPu = (ValueMsgPuSensors) msg.obj;
        txtReceivedBytes.setText("Received Bytes: " + msgPu.getRet());
        for (int i = 0; i < txtListFSensors.size(); i++) {
            txtListFSensors.get(i).setText(String.valueOf(msgPu.getFReadings().get(i)));
        }
        intListFValues.clear();         
    }
};
Handler mHandlerPuSensors=new Handler(){
@凌驾
公共无效handleMessage(消息消息消息){
ValueMsgPuSensors msgPu=(ValueMsgPuSensors)msg.obj;
setText(“接收字节:+msgPu.getRet());
对于(int i=0;i
共享您的Arduino代码,并在通信停止时重置您的Arduino板?没有Arduino板没有重置HI,Sudar我有21个传感器,我想在我使用handler更新数据时显示每个传感器的数据,但一段时间后,我的应用程序通信停止,日志中没有任何错误。这里有两种可能性。要么Arduino被重置,要么Android陷入死锁。Arduino板正在运行。我已经粘贴了Android应用程序的部分代码。