Взаимодействие Android Nexus One с Arduino + BlueSmirf

Я немного новичок во всем этом, так что потерпите меня - я буду очень признателен за вашу помощь.

Я пытаюсь связать Android Nexus One с arduino (Duemilanove), подключенным к BlueSmirf. У меня есть программа, которая просто выводит строку «Hello Bluetooth» на любое устройство, к которому подключен BlueSmirf. Вот программа Arduino:

void setup () {Serial.begin (115200); int i; }

void loop () {Serial.print ("Привет, Bluetooth!"); задержка (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: 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");
                }
            }

Я читаю bytes = inStream.read (buffer). Я знаю, что байты - это целые числа, поэтому я попытался отправить целые числа по Bluetooth, потому что «байты» были целыми числами, но это все равно не имело смысла.

Кажется, что отправляется неверная скорость передачи. Может ли это быть правдой?

Любая помощь будет оценена по достоинству. Большое тебе спасибо.


person efgomez    schedule 09.04.2010    source источник
comment
Попробуйте вместо этого использовать комбинацию Writeln / Readln.   -  person Joe Internet    schedule 21.04.2010


Ответы (2)


Вы видели этот проект? http://code.google.com/p/android-arduino/

Ваше здоровье

person jabrena    schedule 11.04.2010

read () возвращает количество байтов, успешно прочитанных в буфер. Следовательно, в этой строке кода:

bytes = inStream.read(buffer);

… Ваше сообщение будет найдено в первых bytes байтах buffer (при условии, что все остальное правильно). Вы можете преобразовать их в строку следующим образом:

String message = new String(buffer, 0, bytes);

Я замалчиваю здесь ряд вещей (кодирование, объединение нескольких буферов и т. Д.), Но это должно помочь вам начать.

person dsandler    schedule 01.05.2010