Не уверен, но HM -10 не поддерживает rfcom. Это означает, что вы должны использовать функциональность GATT для связи. Сущность BLE - это использование минимального пакета данных, насколько это возможно, поэтому BLE не поддерживает соединение все время и использует что-то вроде статусов [атрибутов]. Итак, несколько строк кода, например, как работать с BLE:
1.
BluetoothAdapter mBluetoothAdapter = mBluetoothManager.getAdapter();
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(DEVICE_ADDR);
Это инициирование устройства, как и в случае с простым bluetooth, где DEVICE_ADDR - это MAC-адрес вашего BLE (как найти этот адрес, вы можете найти в Google или переполнении стека, это тривиально)
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);
}
}
};
Итак, что означает этот код: если вы можете видеть из этой части кода, я описываю, как служба GATT находит. Эта услуга необходима для "атрибутивной" связи. gattService.getUuid () имеет несколько uuid для связи (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-адрес вашего модуля можно найти с помощью кода сканера ble или AT cmd: на моей прошивке AT + ADDR или AT + LADDR Об использовании UUID: не уверен, но в моем случае я нахожу его со следующим AT + UUID [Получить / Установить системный SERVER_UUID] -> Ответ + UUID = 0xFFE0, AT + CHAR [Получить / Установить системный CHAR_UUID] - Ответ + CHAR = 0xFFE1. Вот почему я делаю вывод, что UUID, который я должен использовать, например, "0000 [ffe0 / is 0xFFE0 из ответа AT] -0000-1000-8000-00805f9b34fb"
person
once2go
schedule
07.09.2015