我不确定,但HM-10不支持rfcom。这意味着您必须使用GATT功能进行通信。 BLE的实体尽可能使用最小数据包,因此BLE不会始终保持连接并使用状态[属性]之类的东西。 所以,几行代码,例如,如何与BLE工作:
1.
BluetoothAdapter mBluetoothAdapter = mBluetoothManager.getAdapter();
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(DEVICE_ADDR);
这是设备发起,同样喜欢用简单的蓝牙,其中DEVICE_ADDR是您的BLE的MAC(如何找到这个地址,你可以找到在谷歌或堆栈溢出,它的琐碎)
2.
BluetoothGattService mBluetoothGattService;
BluetoothGatt mBluetoothGatt = device.connectGatt(this, false, mGattCallback);
BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
if (newState == BluetoothProfile.STATE_CONNECTED) {
mBluetoothGatt.discoverServices();
}
}
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
List<BluetoothGattService> gattServices = mBluetoothGatt.getServices();
for(BluetoothGattService gattService : gattServices) {
if("0000ffe0-0000-1000-8000-00805f9b34fb".equals(gattService.getUuid().toString()))
{
mBluetoothGattService = gattService;
}
}
} else {
Log.d(TAG, "onServicesDiscovered received: " + status);
}
}
};
那么,这是什么意思代码:如果u可以这部分代码看,我描述了如何GATT服务的发现。这项服务需要“属性”通信。 gattService.getUuid()几乎没有用于通信的uid(我的模块中有4个),其中一些用于RX,一些用于TX等。“0000ffe0-0000-1000-8000-00805f9b34fb”是用于通信的uuid之一为什么我检查它。 代码的最后一部分是消息发送:
BluetoothGattCharacteristic gattCharacteristic = mBluetoothGattService.getCharacteristic(UUID.fromString("0000ffe1-0000-1000-8000-00805f9b34fb"));
String msg = "HELLO BLE =)";
byte b = 0x00;
byte[] temp = msg.getBytes();
byte[] tx = new byte[temp.length + 1];
tx[0] = b;
for(int i = 0; i < temp.length; i++)
tx[i+1] = temp[i];
gattCharacteristic.setValue(tx);
mBluetoothGatt.writeCharacteristic(gattCharacteristic);
发送消息后含有坚持下去,你可以再发送消息,也可以关闭连接。 更多信息,你可以找到https://developer.android.com/guide/topics/connectivity/bluetooth-le.html。 PS:您的模块的MAC地址可以找到带有扫描器代码或AT cmd: 在我的固件AT + ADDR或AT + LADDR 关于UUIDs用法:不确定,但在我的情况下,我发现它与下一个AT + UUID [获取/设置系统SERVER_UUID] - >响应+ UUID = 0xFFE0,AT + CHAR [获取/设置系统CHAR_UUID] - 响应+ CHAR = 0xFFE1。这就是为什么我得出UUID,我必须使用fe“0000 [ffe0 /是从AT响应0xFFE0] -0000-1000-8000-00805f9b34fb”
我也有问题与BLE模块。我尝试将它配对。放入PIN码..终端回馈+ CONNECTED(我认为它的另一个固件)。比它不在列表中连接的设备。但在Android它说配对...(不在有界设备:() –
什么是你的Android版本? –
嗨Johan,即时通讯使用安卓4.0.4 – codex10