Tôi có Arduino kết nối với một mô-đun bluetooth HC-06.
Tôi sẽ không gửi dữ liệu từ một số Ứng dụng Android mà tôi đã viết cho Arduino và để Arduino thực hiện công việc tùy thuộc vào dữ liệu nhận được. Cho đến nay tôi đang gửi các giá trị Integer trong khoảng từ 0 đến 1024.
Thật không may mySerial.read () sẽ không kết thúc ở đây. Nó đọc dữ liệu dưới dạng một chuỗi lớn.
Chân mô-đun RX và TX của tôi được kết nối với chân Arduinos RX- và TX. (Bảng điều khiển không hiển thị bất kỳ dữ liệu nào khi tôi kết nối chúng với Cổng 10 và 11, vì vậy tôi nghĩ đây là cách SoftwareSerial định nghĩa Cổng RX và TX của Arduino ...)
Phác thảo của tôi:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
char character;
void setup()
{
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
}
void loop() // run over and over
{
String Data = "";
while(mySerial.available()) {
character = mySerial.read();
Data.concat(character);
// Serial.println(Data);
Serial.println("foo");
}
Điều này sẽ xuất ra:
154888143201270341421501588671750825906975101110241005969922864792711629540451369290213140600
Tôi không thể đọc dữ liệu này đúng cách và tôi không thể phân tích dữ liệu sang một số chức năng để xử lý nó, bởi vì mySerial.read () sẽ không kết thúc. Phải có một cách tốt hơn để nhận hoặc gửi Dữ liệu này.
Nguồn phát Bluetooth của tôi Nguồn:
public void sendPWM(int progress) {
OutputStream tmpOut = null;
try {
tmpOut = mmSocket.getOutputStream();
} catch (IOException e) {
// TODO Auto-generated catch block
Log.e("error", "NO OUTPUT STREAM", e);
e.printStackTrace();
return;
}
try {
// byte[] buffer = stringToBytesUTFCustom("1");
byte[] buffer = String.valueOf(progress).getBytes();
tmpOut.write(buffer);
// tmpOut.flush(); /*I have turned this ON and OFF, to see if it
// makes any difference*/
} catch (IOException e) {
// TODO Auto-generated catch block
Log.e("error", "EXCEPTION DURING WRITE", e);
e.printStackTrace();
}
}
Tôi không đóng outputStream, vì điều này cũng sẽ hủy kết nối với HC-06 và tôi phải gửi rất nhiều dữ liệu. Tôi không thể để người dùng kết nối lại với mô-đun mỗi lần anh ta gửi dữ liệu. Bạn có thể giúp tôi ra ở đây?
+"\r\n"
chuỗi của tôi. Điều này sẽ chỉ thêm một lần nghỉ và sẽ không dừng lạimySerial.read();