Сериализация Android USB входящие данные
Я использую этот пример для связи между Arduino и Android, и он работает хорошо.
Проблема в том, что я должен убедиться, что все данные были получены, прежде чем выводить их. Как сейчас, 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();
}
}
};
И ардуино
void setup()
{
Serial.begin(9600);
}
void loop()
{
char c;
if(Serial.available())
{
c = Serial.read();
Serial.print(c);
}
}
Пример:
Отправлено в arduino: ТЕСТ
Получено от arduino: ТЕСТ
Однако на самом деле это больше похоже на это
Отправлено в arduino: ТЕСТ
Получено от arduino: TE ST
Таким образом, полученный "ТЕСТ" будет входить в байты из одного или двух, которые затем должны быть собраны в строку. Я предполагаю, что причина этого кроется в скорости / скорости ввода байтов, так что он просто выведет его, как только получит данные.
Поэтому я хотел бы убедиться, что все входящие данные получены до того, как я их выведу, чтобы я мог работать с входящими данными. В теории нужно что-то вроде while(serial.available())... для android.
Любая помощь приветствуется