Я немного плохо знаком для все это, так терпите меня - я был бы очень признателен за Вашу справку.
Я пытаюсь связать Nexus One Android с arduino (Duemilanove), который подключен к BlueSmirf. У меня есть программа, которая просто производит строку "Привет Bluetooth" к любому устройству, с которым подключен BlueSmirf. Вот программа Ардуино:
освободите установку () {Serial.begin (115200); интервал i;}
пустой цикл () {Serial.print ("Привет Bluetooth!"); задержка (1000);}
Один мой компьютер терминал I BT видит сообщение и не соединяет проблемы. Проблема с моим кодом Android. Я могу соединиться с устройством с андроидом, но когда я смотрю на журнал, это не отображает "Привет Bluetooth". Вот журнал отладки:
04-09 16:27:49.022: ERROR/BTArduino (17288): светлячок 2 583 соединенных
04-09 16:27:49.022: ERROR/BTArduino (17288): ТО, ЧТОБЫ НАЧИНАТЬ ПОДКЛЮЧИТЬ СОКЕТ
04-09 16:27:55.705: ERROR/BTArduino (17288): Полученный: 16
04-09 16:27:56.702: ERROR/BTArduino (17288): Полученный: 1
04-09 16:27:56.712: ERROR/BTArduino (17288): Полученный: 15
04-09 16:27:57.702: ERROR/BTArduino (17288): Полученный: 1
04-09 16:27:57.702: ERROR/BTArduino (17288): Полученный: 15
04-09 16:27:58.704: ERROR/BTArduino (17288): Полученный: 1
04-09 16:27:58.704: ERROR/BTArduino (17288): Полученный: 15
ect...
Вот код, я пытаюсь поместить только относительный код, но если Вам нужно больше сообщенное мне:
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 (буфер). Я знаю, что байты являются целым числом, таким образом, я пытался отправить целые числа по Bluetooth, потому что "байты" были целым числом, но он все еще не имел смысла.
Почти кажется, что это отправляет неправильную скорость в бодах. Это могло быть верно?
Любая справка ценилась бы.Большое спасибо.
Вы видели этот проект? http://code.google.com/p/android-arduino/
Cheers
read() возвращает количество байт, которые она успешно прочитала в буфер. Поэтому в этой строке кода:
bytes = inStream.read(buffer);
... ваше сообщение будет найдено в первых байтах
байтов буфера
(при условии, что все остальное правильно). Вы можете преобразовать их в строку следующим образом:
String message = new String(buffer, 0, bytes);
Здесь я упускаю ряд моментов (кодирование, объединение нескольких буферов и т.д.), но это должно помочь вам начать.