この例を使用して、arduino と android の間で通信していますが、うまく機能します。
問題は、出力する前にすべてのデータが受信されていることを確認することです。
今のところ、アンドロイドは受信時にすべてを出力するだけです。たとえば、別の文字列と比較できるように、受信したものをすべて収集する必要があります。
現在、このように動作します
UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() { //Defining a Callback which triggers whenever data is read.
@Override
public void onReceivedData(byte[] arg0) {
String data = null;
try {
data = new String(arg0, "UTF-8");
data.concat("/n");
tvAppend(textView, data);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
};
そしてarduino:
void setup()
{
Serial.begin(9600);
}
void loop()
{
char c;
if(Serial.available())
{
c = Serial.read();
Serial.print(c);
}
}
例:
arduino に送信: TEST
arduinoから受信: TEST
しかし、実際にはもっとこのように
arduino に送信: TEST
arduinoから受信: TE ST
したがって、受信した「TEST」は 1 バイトまたは 2 バイトで送信され、文字列にまとめる必要があります。
この理由は、データを取得するとすぐに出力されるように、受信バイトのレート/速度が原因であると想定しています。
入力データを処理できるように、出力する前にすべての入力データが受信されていることを確認したいと思います。
理論的にはAndroid のwhile(serial.available())...のようなものが必要です。
どんな助けでも大歓迎です