Note that there are some explanatory texts on larger screens.

plurals
  1. POI am getting one or more seconds delay while sending and receiving data to and from Android to Arduino. How to reduce that delay?
    primarykey
    data
    text
    <p>I am developing one application for reading sensor data from an Android device through an Arduino. I am able to setup communication and read that data. That data is coming from Arduino in a byte array via a USB cable. </p> <p>From that array of bytes, I am reading it into a bytes and displaying on an Android device and when I received all data from Arduino I am sending output to the Arduino. It blinks an <a href="http://en.wikipedia.org/wiki/Light-emitting_diode" rel="nofollow">LED</a>. Between this communication I am getting a one second delay. How do I reduce that delay in communication?</p> <p>My Code for receiving data from arduino to android is:</p> <pre><code> public void run() { int ret = 0; //byte[] buffer = new byte[16384]; byte[] buffer = new byte[65536]; int i; i = 0; while(i&lt;1){ try { startSendHandshakeDataExecTime = System.currentTimeMillis(); ret = mInputStream.read(buffer); for(int a=0;a&lt;noOfFlowSensors;a++){ intListFlowBytes.add((int)buffer[a]); } for(int b=0;b&lt;noOfAnalogSensors;b++){ intListAnalogBytes.add((int)buffer[noOfFlowSensors+b]); } for(int c=0;c&lt;noOfSwitches;c++){ intListSwitchesBytes.add((int)buffer[noOfFlowSensors+noOfAnalogSensors+c]); } /*for (int n = 0; n &lt;noOfFlowSensors + noOfAnalogSensors + noOfSwitches; n++) {*/ endSendHandshakeDataExecTime = System.currentTimeMillis(); Message m = Message.obtain(mHandlerHandShake); //m.obj = new TelemetryPacket(composeInt(buffer[i + 1],buffer[i + 2])); //m.obj = new ValueMsg('f',ret,buffer[0],composeInt(buffer[1],buffer[2]),buffer[3],composeInt(buffer[4],buffer[5]),buffer[6],composeInt(buffer[7],buffer[8]),buffer[9],composeInt(buffer[10],buffer[11]),buffer[12],buffer[13],buffer[14],buffer[15]); // m.obj = new ValueMsg('f',ret,buffer[0],buffer[1],buffer[2],composeInt(buffer[4],buffer[5]),buffer[6],composeInt(buffer[7],buffer[8]),buffer[9],composeInt(buffer[10],buffer[11]),buffer[12],buffer[13],buffer[14],buffer[15]); m.obj = new ValueMsgHandShake(""+(endSendHandshakeDataExecTime-startSendHandshakeDataExecTime),ret,intListFlowBytes,intListAnalogBytes,intListSwitchesBytes,1); mHandlerHandShake.sendMessage(m); // } mInputStream.close(); break; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } while (true) { // read data try { startTime = System.currentTimeMillis(); startReceiveDataExecTime = System.currentTimeMillis(); ret = mInputStream.read(buffer); for(int p=0;p&lt;noOfFlowSensors;p++){ intListFlowValues.add((int)buffer[p]); //intPulseValues = (int)buffer[p]; } Message mPulse = Message.obtain(mHandlerPulseSensors); //m.obj = new TelemetryPacket(composeInt(buffer[i + 1],buffer[i + 2])); //m.obj = new ValueMsg('f',ret,buffer[0],composeInt(buffer[1],buffer[2]),buffer[3],composeInt(buffer[4],buffer[5]),buffer[6],composeInt(buffer[7],buffer[8]),buffer[9],composeInt(buffer[10],buffer[11]),buffer[12],buffer[13],buffer[14],buffer[15]); // m.obj = new ValueMsg('f',ret,buffer[0],buffer[1],buffer[2],composeInt(buffer[4],buffer[5]),buffer[6],composeInt(buffer[7],buffer[8]),buffer[9],composeInt(buffer[10],buffer[11]),buffer[12],buffer[13],buffer[14],buffer[15]); mPulse.obj = new ValueMsgPulseSensors("f",ret,intListFlowValues); mHandlerPulseSensors.sendMessage(mPulse); for(int a=0;a&lt;2*noOfAnalogSensors;a=a+2){ intListAnalogValues.add((int)(composeInt(buffer[noOfFlowSensors+a],buffer[noOfFlowSensors+a+1]))); // intAnalogValues = (int)buffer[composeInt(buffer[noOfFlowSensors+a],buffer[noOfFlowSensors+a+1])]; } Message mAnalog = Message.obtain(mHandlerAnalogSensors); //m.obj = new TelemetryPacket(composeInt(buffer[i + 1],buffer[i + 2])); //m.obj = new ValueMsg('f',ret,buffer[0],composeInt(buffer[1],buffer[2]),buffer[3],composeInt(buffer[4],buffer[5]),buffer[6],composeInt(buffer[7],buffer[8]),buffer[9],composeInt(buffer[10],buffer[11]),buffer[12],buffer[13],buffer[14],buffer[15]); // m.obj = new ValueMsg('f',ret,buffer[0],buffer[1],buffer[2],composeInt(buffer[4],buffer[5]),buffer[6],composeInt(buffer[7],buffer[8]),buffer[9],composeInt(buffer[10],buffer[11]),buffer[12],buffer[13],buffer[14],buffer[15]); mAnalog.obj = new ValueMsgAnalogSensors("f",ret,intListAnalogValues); mHandlerAnalogSensors.sendMessage(mAnalog); for(int l=0;l&lt;noOfSwitches;l++){ intListSwitchesValues.add( (int)buffer[noOfFlowSensors+2*noOfAnalogSensors+l]); //intSwitchValues = (int)buffer[noOfFlowSensors*intListFlowBytes.size()+intListAnalogBytes.size()*noOfAnalogSensors+l]; } Message mSwitch = Message.obtain(mHandlerSwitchSensors); //m.obj = new TelemetryPacket(composeInt(buffer[i + 1],buffer[i + 2])); //m.obj = new ValueMsg('f',ret,buffer[0],composeInt(buffer[1],buffer[2]),buffer[3],composeInt(buffer[4],buffer[5]),buffer[6],composeInt(buffer[7],buffer[8]),buffer[9],composeInt(buffer[10],buffer[11]),buffer[12],buffer[13],buffer[14],buffer[15]); // m.obj = new ValueMsg('f',ret,buffer[0],buffer[1],buffer[2],composeInt(buffer[4],buffer[5]),buffer[6],composeInt(buffer[7],buffer[8]),buffer[9],composeInt(buffer[10],buffer[11]),buffer[12],buffer[13],buffer[14],buffer[15]); mSwitch.obj = new ValueMsgSwitchSensors("f",ret,intListSwitchesValues); mHandlerSwitchSensors.sendMessage(mSwitch); /* int intEnd=(int)buffer[noOfFlowSensors+noOfAnalogSensors+noOfSwitches+1]; for (int n = 0; n &lt;noOfFlowSensors + noOfAnalogSensors + noOfSwitches; n++) { Message m = Message.obtain(mHandler); //m.obj = new TelemetryPacket(composeInt(buffer[i + 1],buffer[i + 2])); //m.obj = new ValueMsg('f',ret,buffer[0],composeInt(buffer[1],buffer[2]),buffer[3],composeInt(buffer[4],buffer[5]),buffer[6],composeInt(buffer[7],buffer[8]),buffer[9],composeInt(buffer[10],buffer[11]),buffer[12],buffer[13],buffer[14],buffer[15]); // m.obj = new ValueMsg('f',ret,buffer[0],buffer[1],buffer[2],composeInt(buffer[4],buffer[5]),buffer[6],composeInt(buffer[7],buffer[8]),buffer[9],composeInt(buffer[10],buffer[11]),buffer[12],buffer[13],buffer[14],buffer[15]); m.obj = new ValueMsg1('f',ret,intListFlowValues,intListAnalogValues,intListSwitchesValues,intEnd); mHandler.sendMessage(m); // } */ i += 1; endReceiveDataExecTime = System.currentTimeMillis(); Message mReceivedDataDelay = Message.obtain(mHandlerReceiveDataDelay); mReceivedDataDelay.obj = new ValueMsgReceivedDataDelay(""+ (endReceiveDataExecTime-startReceiveDataExecTime)); mHandlerReceiveDataDelay.sendMessage(mReceivedDataDelay); mInputStream.close(); OutputDataAfterDataReceived(); } catch (IOException e) { break; } } //sendOutputData(); } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload