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