1

この例を使用して、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())...のようなものが必要です。

どんな助けでも大歓迎です

4

0 に答える 0