0

シリアル接続から不正な値を受け取るという奇妙なバグを実行しています。以前に投稿を作成しましたが、まだ誰も返信していません。【その他の問題】:Bluetooth SPP(シリアル)グリッチ(Android)

このプロジェクトをすぐに終了したいので、すべての値をフィルタリングする「パッチ」を実装する必要があると思います。新しい値が以前の値の約+/-15%である場合はそれを保持し、このカットオフ範囲を超える場合は破棄します。これが私が値を受け取るコードです:

hBluetooth = new Handler() {
    public void handleMessage(android.os.Message msg) {
        switch (msg.what) {
        case RECEIVE_MESSAGE:                                                   // If we receive a message
            byte[] readBuf = (byte[]) msg.obj;
            String stringIncome = new String(readBuf, 0, msg.arg1);             // Create string from byte array
            stringBuilder.append(stringIncome);                                             
            int endOfLineIndex = stringBuilder.indexOf("\r\n");                 // Determine the end-of-line
            Log.e(TAG, "Line"+endOfLineIndex);
            if (endOfLineIndex > 0) {                                           // If we are at the end-of-line we parsed all the data that was sent
                rmsgBluetooth = stringBuilder.substring(0, endOfLineIndex);     // The string is extracted in a string object rmsgBluetooth
                stringBuilder.setLength(0);

保持された値を文字列で出力するフィルターを実装するのに役立つ人はいますか?ありがとう。

4

1 に答える 1

0

ここに私の解決策があります:

    sensorReading = Float.parseFloat(rmsgBluetooth);
                        if(Math.abs(sensorReadingOld - sensorReading)<10 || sensorReadingOld == 0 ){
                            sensorReadingOld = sensorReading;       

                        }
                        else {
                            sensorReading = sensorReadingOld;
                        }
于 2013-03-22T03:03:19.993 に答える