Интерфейс 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); }

На одном терминале моего компьютера я вижу сообщение и подключаюсь без проблем. Беда с моим кодом 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 ответа

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

bytes = inStream.read(buffer);

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

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

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

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

ура

Другие вопросы по тегам