- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试创建一个简单的 android 应用程序来连接到我的 ELM327 设备以获取一些汽车诊断数据。但是我无法通过我的安卓手机和我的 ELM327 设备设置蓝牙连接。
我的代码很简单如下:
公共(public)类蓝牙{ protected 蓝牙适配器 mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 私有(private)连接线程 mConnectThread = null; 私有(private) AcceptThread mAcceptThread = null; 私有(private) WorkerThread mWorkerThread = null; 私有(private)蓝牙设备 mOBDDevice = null; 私有(private)蓝牙套接字 mSocket = null; 私有(private)字符串 uuid;
Bluetooth() {
mBluetoothAdapter= BluetoothAdapter.getDefaultAdapter();
Set<BluetoothDevice> pairedDevices;
if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled())
return;
pairedDevices = mBluetoothAdapter.getBondedDevices();
if (pairedDevices.size() > 0) {
// There are paired devices. Get the name and address of each paired device.
for (BluetoothDevice device : pairedDevices) {
String deviceName = device.getName();
String deviceHardwareAddress = device.getAddress(); // MAC address
//TODO: check whether this is OBD and whether it is connected
//by sending a command and check response
if (deviceName.contains("OBD")) {
mOBDDevice = device;
uuid = device.getUuids()[0].toString();
break;
}
}
}
mBluetoothAdapter.cancelDiscovery();
}
/**
* Start the chat service. Specifically start AcceptThread to begin a session
* in listening (server) mode. Called by the Activity onResume()
*/
public synchronized void connect()
{
try {
// Get a BluetoothSocket to connect with the given BluetoothDevice.
// MY_UUID is the app's UUID string, also used in the server code.
mSocket = mOBDDevice.createRfcommSocketToServiceRecord(UUID.fromString(uuid));
} catch (IOException e) {
Log.e(TAG, "Socket's create() method failed", e);
}
try {
// Connect to the remote device through the socket. This call blocks
// until it succeeds or throws an exception.
mSocket.connect();
} catch (IOException connectException) {
// Unable to connect; close the socket and return.
try {
mSocket.close();
} catch (IOException closeException) {
Log.e(TAG, "Could not close the client socket", closeException);
}
return;
}
}
在主 Activity 中,我将首先新建一个蓝牙类,然后调用 bluetooth.connect():
mBluetooth = 新蓝牙(); mBluetooth.connect();
当我调试程序时,我能够通过查询所有名称为“OBD”的绑定(bind)设备来获取我的 ELM327 蓝牙设备。我还能够获取设备的 uuid 并使用 createRfcommSocketToServiceRecord 创建套接字。但是在connect函数中,mSocket.connect()总是失败,返回值为-1并得到IOexception。
我的问题是:
最佳答案
问题解决了。请参阅下面的源代码:
public synchronized void connect() throws IOException {
try {
// Get a BluetoothSocket to connect with the given BluetoothDevice.
// MY_UUID is the app's UUID string, also used in the server code.
mSocket = mOBDDevice.createRfcommSocketToServiceRecord(UUID.fromString(uuid));
} catch (IOException e) {
Log.e(TAG, "Socket's create() method failed", e);
}
try {
// Connect to the remote device through the socket. This call blocks
// until it succeeds or throws an exception.
mSocket.connect();
} catch (IOException e1) {
Log.e(TAG, "There was an error while establishing Bluetooth connection. Falling back..", e1);
Class<?> clazz = mSocket.getRemoteDevice().getClass();
Class<?>[] paramTypes = new Class<?>[]{Integer.TYPE};
try {
Method m = clazz.getMethod("createRfcommSocket", paramTypes);
Object[] params = new Object[]{Integer.valueOf(1)};
mFallbackSocket = (BluetoothSocket) m.invoke(mSocket.getRemoteDevice(), params);
mFallbackSocket.connect();
mSocket.close();
mSocket = mFallbackSocket;
} catch (Exception e2) {
Log.e(TAG, "Couldn't fallback while establishing Bluetooth connection.", e2);
mSocket.close();
//throw new IOException();
}
}
inputStream = mSocket.getInputStream();
outputStream = mSocket.getOutputStream();
}
关于Android 蓝牙连接到 ELM327/OBD2 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57504532/
我知道OBD-II端口可以用来监测汽车的不同参数以进行诊断。但是是否可以使用 OBD-II 端口驾驶汽车,无需黑客攻击或对汽车的计算机系统进行重新编程?听说OBD-II系统是对客户开放的,没有这样的安
我将 elm327 mini(蓝牙)插入我的汽车(标致 3008) 当我测试一些命令时,我发现不是普通的响应。 ATZ ELM327 v2.1 ATSP0 OK ATDP0 ISO 15765-4 (
当我尝试运行 Eric Smekens node-bluetooth-obd test.js 时,我收到以下错误 ReferenceError: require is not Defined in b
我正在开发一个 Android 应用程序,每当我的客户用他的汽车测试该应用程序时,他都会收到不同长度的响应并且失败。在我的代码中,我需要处理消息的长度才能继续进行。 知道为什么 OBD II 设备会收
我正在尝试获取用户从上次清除代码时经过的距离 “代码清除后行驶的距离” http://en.wikipedia.org/wiki/OBD-II_PIDs 但是我没有得到任何数据。我正在使用这个开源库。
我正在创建一个 java 程序来与蓝牙 ELM 327 进行通信。我希望该程序在设备搜索后为用户提供该区域的 obd 适配器列表,并排除其他设备(例如手机等)。我相信这可以通过使用蓝牙设备类将 obd
我正在开发连接 OBD2 适配器并获取实时数据(如速度、转速、 throttle 位置等)的应用程序。当我一次读取一个命令时,它工作正常,就像发送命令“010C\r”一样, 我得到当前的 RPM。 我
我正在尝试开发与 OBD 2 加密狗和安卓手机的蓝牙连接。但我不适合我。我认为错误发生在错误的 UUID 中。我正在使用这个 Dongle我正在使用这个 UUID00001101-0000-1000-
目前,我正在使用 OBD 设备开发 iOS 应用程序。如何在不使用车辆的情况下测试它。 最佳答案 您需要购买一个模拟器,其价格可能高达 300-400 美元,或者您可以设置一个台式 ECU。 您应该能
我正在使用 OBD2 设备从不同的车辆获取数据。应用程序和 OBD2 之间的通信是使用蓝牙 LE 完成的。当我使用 OBD2 设备时,我得到服务 UUID = FFE0 和特征 UUID = FFE1
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我正在开发一个应用程序,我需要计算从 A 点到 B 点(开车)的距离。 我问了Elm Electronics (芯片组制造商),他们说没有标准的 OBD-II PID 可以从里程表返回里程,尽管汽车制
有OBD-II 设备,如http://www.rczd.com/c/2015/Car_Diagnostic_Tools_0223/41193.html该设备提供商没有其网页或文档来源。我们在盒子里有简
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在尝试解析来自 OBD 设备的模式 07 消息,但我遇到了困难。以下是我从设备得到的响应。 00 10 08 10 0A 47 04 01 07 02 07 00 10 08 21 03 07 4
我想从 OBD2 设备访问汽车数据,以便访问汽车速度、RPM 速度、油耗、实时数据、错误代码等。如何在 iOS 中连接和读取 OBD2 设备? 最佳答案 这取决于您要使用的 OBD 设备。 WiFi上
我正在尝试编写一个通过 WiFi 连接到 OBD-II 接口(interface)的 iOS 应用程序(特别是 OBDLink MX WiFi 扫描工具)。我已经编写了一些基本的套接字代码,并且能够打
我想创建一个 iOS 应用程序来将我的 Wifi OBD 2 连接到 iPhone。但我不知道如何与 swift 2 进行对等连接。我有 OBD 文档与之通信(https://www.elmelect
我刚刚开始与 Carista 设备通信。我得到了所有的服务和特征。但是当我写命令“ATZ”时,它会给出答案“ATZ”。 我期望从设备获得的实际结果是“ATZELM327 v1.5” 这里我附上了我的代
我目前正在开发一款旨在通过 OBD 从 ECU 读取数据的应用程序,我想使用 USB 适配器连接到我的手机。问题是我到处都能看到基于蓝牙的库。有没有人愿意帮助我?我打算使用这个库:https://gi
我是一名优秀的程序员,十分优秀!