我对这一切有点陌生,所以请耐心等待 - 我非常感谢您的帮助。
我正在尝试将 Android Nexus One 与连接到 BlueSmirf 的 arduino (Duemilanove) 链接。我有一个程序,它只是将字符串“Hello Bluetooth”输出到 BlueSmirf 连接的任何设备。这是Arduino程序:
无效设置(){ Serial.begin(115200);诠释我; }
void loop(){Serial.print("你好蓝牙!"); 延迟(1000);}
一台我的电脑BT终端我可以看到消息并且连接没问题。问题出在我的android代码上。我可以使用 android 连接到设备,但是当我查看日志时,它没有显示“Hello Bluetooth”。这是调试日志:
04-09 16:27:49.022:错误/BTArduino(17288):FireFly-2583 已连接
04-09 16:27:49.022:错误/BTArduino(17288):开始连接套接字
04-09 16:27:55.705:错误/BTArduino(17288):收到:16
04-09 16:27:56.702:错误/BTArduino(17288):收到:1
04-09 16:27:56.712:错误/BTArduino(17288):收到:15
04- 09 16:27:57.702:错误/BTArduino(17288):收到:1
04-09 16:27:57.702:错误/BTArduino(17288):收到:15
04-09 16:27:58.704:错误/BTArduino(17288) ): 收到: 1
04-09 16:27:58.704: ERROR/BTArduino(17288): 收到: 15
等等...
这是代码,我试图只放相关代码,但如果您需要更多,请告诉我:
private class ConnectThread extends Thread {
private final BluetoothSocket mySocket;
private final BluetoothDevice myDevice;
public ConnectThread(BluetoothDevice device) {
myDevice = device;
BluetoothSocket tmp = null;
try {
tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
} catch (IOException e) {
Log.e(TAG, "CONNECTION IN THREAD DIDNT WORK");
}
mySocket = tmp;
}
public void run() {
Log.e(TAG, "STARTING TO CONNECT THE SOCKET");
InputStream inStream = null;
boolean run = false;
//...More Connection code here...
更相关的代码在这里:
byte[] buffer = new byte[1024];
int bytes;
// handle Connection
try {
inStream = mySocket.getInputStream();
while (run) {
try {
bytes = inStream.read(buffer);
Log.e(TAG, "Received: " + bytes);
} catch (IOException e3) {
Log.e(TAG, "disconnected");
}
}
我正在读取字节 = inStream.read(buffer)。我知道字节是一个整数,所以我尝试通过蓝牙发送整数,因为“字节”是一个整数,但它仍然没有意义。
几乎看起来发送的波特率不正确。这可能是真的吗?
任何帮助,将不胜感激。非常感谢。