2012-03-03 9 views
2

私のAndroid搭載端末から、外部のGPSデバイスから文字列を読み込む(Bluetoothを使用しています)ようにしています。私は主にBluetoothChatの例を追ってきましたが、これまでのところすべてがうまくいくようです。私の読書のスレッドが実行されると、私は次のコードでループするとき、可変バイトのパケットが着信見ることができます:私は、テキスト文字列(NMEA形式)です読みになってる私のBluetooth接続はゼロのみを読み取っています

Log.d(TAG, "BEGIN mConnectedThread"); 
byte[] buffer = new byte[1024]; 
int bytes; 
// Keep listening to the InputStream while connected 
while (true) 
{ 
    try 
    {     
     bytes = mmInStream.read(buffer); 

     // Test... 
     String strReadBuf = new String(buffer, 0, bytes); 

     // Send the obtained bytes to the UI Activity 
     mHandler.obtainMessage(BluetoothHandler.MessageType.READ, 
      bytes, buffer).sendToTarget(); 
    } catch (IOException e) { 
     Log.e(TAG, "disconnected", e); 
     sendErrorMessage(R.string.bt_connection_lost); 
     break; 
    } 
} 

弦をしかし、私は唯一の0を読んでいると、私のバッファ配列の-32バイト。なぜ私はこれを取得している任意のアイデア?

+0

GPSはどのブランド&モデルですか? – Jens

+0

これはu-blox LEA-4T GPSチップの統合です。私たちはこれを、BluetoothまたはUSBでログを出力できるボックスにマウントしました。私のボックスを私のPC(USBで)に接続すると、NMEAの文字列を完全に見ることができます。また、PDA上のWindows MobileプログラムからBluetooth接続を広範囲に使用しているため、ハードウェアの統合は問題ではありません。私は何をプログラムが0と-32バイトを読むことができるのだろう... – Danuc

答えて

0
Log.d(TAG, "BEGIN mConnectedThread"); 
byte[] buffer = new byte[1024]; 
int bytes; 
// Keep listening to the InputStream while connected 
while (true) 
{ 
    try 
    { 
     bytes = mmInStream.read(buffer); 

     // Test... 
     //String strReadBuf = new String(buffer, 0, bytes); 
     //I've changed for 
     String strReadBuf = new String(buffer); 


     // Send the obtained bytes to the UI Activity 
     mHandler.obtainMessage(BluetoothHandler.MessageType.READ, 
      bytes, buffer).sendToTarget(); 
    } catch (IOException e) { 
     Log.e(TAG, "disconnected", e); 
     sendErrorMessage(R.string.bt_connection_lost); 
     break; 
    } 
} 

私はbyte[]byte[]のサイズを廃止バッファであるStringコンストラクタString(byte[])を用います。私は何度も使用してきましたが、バッファサイズが時間の経過とともに変化しても、私にとってはうまくいきます。

+0

なぜそれが動作するか説明するためにケア?それは私にブードゥーなコーディングのソリューションのように見える... –

関連する問題