ELM327投掷STOPPED按摩没有某些设备

时间:2017-01-02 18:38:43

标签: java android

我有一个奇怪的问题! 我正在创建一个Android应用程序来运行ELM327蓝牙适配器。它在某些设备上运行正常,没有任何问题,也不适用于其他设备。 例如,该应用程序适用于三星galaxy S6,不适用于Galaxy TAB A6。

当我说它不起作用时,它实际上有效,但是ELM327会在响应中抛出STOPPED消息......

 It's either one STOPPED >
        or with the answer..
      50 92 STOPPED >

这不是因为ELM327而发生的。为什么?因为我测试它们都像3个不同的适配器,它们都做同样的事情...... 它发生非常不稳定,就像一旦它没有问题,下一次你看到STOPPED按摩。 `

void write(String income) {
        try {
            mmOutStream.write(income.getBytes());
            mmOutStream.write(13);
            mmOutStream.write(10);
            mmOutStream.flush();
            mHandler.obtainMessage(MESSAGE_WRITE, -1, -1, income).sendToTarget();
        } catch (IOException e) {
            Log.getStackTraceString(e);
        }
}

因此,当ELM做某事时,ELM手册ELM会发送此按钮。我挑衅地不知道我在等待promt char“>”在我的代码..     所以这是Galaxy Tab蓝牙发送一些有点可能是一个ping或什么的东西它打破了我的头。但我发现的是:      如果我把延迟作为回应然后它更稳定..我看到停止的按摩更少...     如果我喜欢那样:

mmOutStream.write(income.getBytes());
SystemClock.sleep(50);
mmOutStream.write(13);
mmOutStream.write(10);
mmOutStream.flush();

如果我喜欢,我会更多地看到停止按摩:

mmOutStream.write(income.getBytes());
SystemClock.sleep(25);
mmOutStream.write(13);
SystemClock.sleep(25);
mmOutStream.write(10);
mmOutStream.flush();`

所以这一切都可能不是因为我不等待promt char,而是因为按摩发送到设备的方式。按摩中的字符可能有不同的延迟。好吧,这一切都很奇怪。

The ELM manual saying abot STOPPED

1 个答案:

答案 0 :(得分:0)

看起来三星Galaxy TAB A6的蓝牙模块存在问题,或者它的工作非常不稳定且不可预测...没有逻辑解释它如何传输数据。 在这里输入代码

void write(String income) {
        byte Tray [] = income.getBytes();
        try {

            for(int i= 0; i< Tray.length; i++ ){
                mmOutStream.write(Tra[i]);
                SystemClock.sleep(10);
            }
            SystemClock.sleep(10);
            mmOutStream.write(13);
           // SystemClock.sleep(5);
            mmOutStream.write(10);
            mmOutStream.flush();

            mHandler.obtainMessage(MESSAGE_WRITE, -1, -1, income).sendToTarget();
        } catch (IOException e) {
            Log.getStackTraceString(e);
        }
}

如果我这样做会变得更稳定,有时你会得到满意的结果。但不是100%。