Я пытаюсь отправить массив байтов из устройства 6.0.1 android в модуль Bluetooth RN4020. До сих пор я смог обнаружить, связать и подключиться к модулю. Я пытаюсь отправить массив байтов, используя 16-битный UUID для записи без ответа. Когда я использую свой код, я не получаю никаких ошибок, массив байтов просто не отправляется. Что я делаю не так?Как отправить байт [] на устройство BLE без пользовательского UUID
Вот мой код:
namespace Remote
{
[Activity(Label = "Remote", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
int count = 1;
const string UniversalUUID = "00001101-0000-1000-8000-00805F9B34FB";
const string MAC = "00:1E:C0:22:3D:0E";
ICollection<BluetoothDevice> pairedDevices;
BluetoothAdapter adapter;
BluetoothDevice device;
BluetoothGatt gatt;
BluetoothGattCallback callBack;
BluetoothManager manager;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
Button test = FindViewById<Button>(Resource.Id.Test);
EditText MACs = FindViewById<EditText>(Resource.Id.MACs);
pairedDevices = getAllPairedDevices();
test.Click += delegate
{
connected();
byte[] buffer = new byte [] { 124, 079, 044, 048, 052, 044, 048, 052, 013, 010};//stringToByteArray("|O,04,04\r");
BluetoothGattCharacteristic characteristic = new BluetoothGattCharacteristic(UUID.NameUUIDFromBytes(new byte[] { 0, 4}), GattProperty.Write, GattPermission.Write);
characteristic.SetValue(buffer);
gatt.WriteCharacteristic(characteristic);
};
private ICollection<BluetoothDevice> getAllPairedDevices()
{
BluetoothAdapter btAdapter = BluetoothAdapter.DefaultAdapter;
return btAdapter.BondedDevices;
}
private async Task<bool> connected()
{
manager = (BluetoothManager)GetSystemService(Context.BluetoothService);
adapter = manager.Adapter;
device = adapter.GetRemoteDevice(MAC);
gatt = device.ConnectGatt(this, false, callBack);
return true;
}
}
}
1 Я не знаю, как получить обратный вызов, чтобы начать выполнение метода при успешном событии - пример будет высоко оценен. 2 Кажется, у меня отсутствует gatt.GetServices() метод у меня есть gatt.getService (UUID) –
Я довольно новичок в bluetooth и xamarin в целом и прочесываю интернет в течение недели, t нашел какие-либо примеры xamarin, как это сделать. На данный момент я довольно отчаянный. Так может кто-то, пожалуйста, дайте пример кода, как отправить массив байтов в UUID, включая процедуру подключения. –
Любой пример Java будет работать. Это те же API-интерфейсы на диалекте Хамарин. Например, проверьте https://android.googlesource.com/platform/development/+/cefd49aae65dc85161d08419494071d74ffb982f/samples/BluetoothLeGatt/src/com/example/bluetooth/le/BluetoothLeService.java. – Emil