11

私はこのすべてに少し慣れていないので、ご容赦ください - 助けていただければ幸いです。

BlueSmirf に接続されている arduino (Duemilanove) と Android Nexus One をリンクしようとしています。BlueSmirfが接続されているデバイスに「Hello Bluetooth」という文字列を単純に出力するプログラムがあります。Arduinoプログラムは次のとおりです。

ボイド セットアップ () { Serial.begin(115200); int i; }

void loop(){Serial.print("Hello Bluetooth!"); 遅延 (1000); }

私のコンピューターのBT端末の1つで、メッセージが表示され、問題なく接続できます。問題は私のアンドロイドコードにあります。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:エラー/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: 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: エラー/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(buffer) を読んでいます。バイトが整数であることはわかっているので、「バイト」は整数だったので、Bluetooth経由で整数を送信しようとしましたが、それでも意味がありませんでした。

が間違ったボーレートを送信しているようです。これは本当でしょうか?

どんな助けでも大歓迎です。どうもありがとうございました。

4

2 に答える 2

1

read()は、バッファに正常に読み込まれたバイト数を返します。したがって、このコード行では次のようになります。

bytes = inStream.read(buffer);

…あなたのメッセージはの最初のbytesバイトにありますbuffer(他のすべてが正しいと仮定して)。これらを次のように文字列に変換できます。

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

ここでは、いくつかのこと(エンコード、複数のバッファーの連結など)について詳しく説明していますが、これで始めることができます。

于 2010-05-01T20:07:24.973 に答える
1

このプロジェクトを見ましたか? http://code.google.com/p/android-arduino/

乾杯

于 2010-04-11T15:59:52.917 に答える