В настоящее время я пытаюсь получить данные от Arduino до Android с помощью модуля Bluesmirf.Android Bluetooth Arduino
Вот мой код для Arduino.
void setup() {
Serial.begin(115200);
}
void loop() {
if(Serial.available()){
char val = Serial.read();
if(val == '.'){
Serial.println("t1|x1|x2|x3|x4");
}
}
}
Как вы можете видеть, я просто пишу длинную строку. В конце концов строка будет содержать значения. Если я напишу период ардуину, он вернет эти значения. Вот мой код Bluetooth, очень похожий на тот, который показан в примере Bluetooth Chat:
private class ConnectedThread extends Thread{
private BluetoothSocket mmSocket;
private InputStream mmInStream;
private OutputStream mmOutStream;
public ConnectedThread(BluetoothSocket socket) {
// TODO Auto-generated constructor stub
mmSocket = socket;
InputStream tmpIn = null;
OutputStream tmpOut = null;
try {
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (Exception e) {
// TODO: handle exception
}
mmInStream = tmpIn;
mmOutStream = tmpOut;
}
public void run(){
byte[] buffer = new byte[1024];
int bytes;
while(true){
try {
// Garbage collector necessary to prevent data loss
System.gc();
bytes = mmInStream.read(buffer);
Log.d("Value of Output", new String(buffer, 0, bytes))
} catch (IOException e) {
e.printStackTrace();
connectionLost();
}
}
}
public void write(byte[] buffer){
try{
mmOutStream.write(buffer);
} catch(IOException e){
Log.d("Write", "failed");
}
}
public void cancel(){
if (mmInStream != null) {
try{mmInStream.close();}catch(Exception e){}
mmInStream = null;
}
if (mmOutStream != null) {
try{mmOutStream.close();} catch(Exception e){}
mmOutStream = null;
}
if (mmSocket != null) {
try{mmSocket.close();}catch(Exception e){}
mmSocket = null;
}
}
}
Несколько вещей, которые я хочу упомянуть. System.gc() есть, потому что, если я его не помещаю, я иногда получаю ошибочные данные. Иногда данные теряются, иногда они повторяются.
Проблема, с которой я столкнулась, заключается в том, что выход возвращается в более чем одной строке. Так что в моем журнале я получу что-то вроде
Значение выходного t1 | x1 | х
значение Выход 2 | x3 | x4
Вместо него все в одной строке. Когда я подключаю arduino к компьютеру через Bluetooth (bluetooth dongle), данные возвращаются в одну строку. Как я могу обеспечить, чтобы данные возвращались в одну строку.
У меня было подобные проблемы, используя BluetoothChat пример, Arduino и модуль Bluegiga WT32. У меня такое чувство, что это проблема на стороне Android. – user2461391