Интерфейс Android Nexus One с Arduino + BlueSmirf - PullRequest
11 голосов
/ 10 апреля 2010

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

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

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

void loop () {Serial.print ("Привет, Bluetooth!"); Задержка (1000); }

В одном терминале моего компьютера я вижу сообщение и без проблем подключаюсь. Беда с моим кодом Android. Я могу подключиться к устройству с Android, но когда я смотрю на журнал, он не отображает «Привет 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: ОШИБКА / 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");
                }
            }

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

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

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

Ответы [ 2 ]

1 голос
/ 02 мая 2010

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

bytes = inStream.read(buffer);

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

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

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

1 голос
/ 11 апреля 2010

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

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...