Взаимодействие через интерфейс с Nexus One Android с Ардуино + BlueSmirf

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

Я пытаюсь связать 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, потому что "байты" были целым числом, но он все еще не имел смысла.

Почти кажется, что это отправляет неправильную скорость в бодах. Это могло быть верно?

Любая справка ценилась бы.Большое спасибо.

11
задан efgomez 9 April 2010 в 20:44
поделиться

2 ответа

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

Cheers

1
ответ дан 3 December 2019 в 12:17
поделиться

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

bytes = inStream.read(buffer);

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

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

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

1
ответ дан 3 December 2019 в 12:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: