Отправить данные через Bluetooth на высокой частоте - PullRequest
0 голосов
/ 10 января 2019

Я занимаюсь разработкой приложения, которое состоит из двух компонентов. Одним из них является Android-приложение, созданное в MonoAndroid с C #, а другим - приложение для Windows, созданное в WPF с C #.

Приложение Android должно отправлять пакет из 3 байтов со скоростью около 250 пакетов в секунду. Приложение Windows должно получить все пакеты и обработать их.

То, как я общаюсь между ними, выглядит следующим образом:

На Android для подключения я делаю:

BluetoothDevice pcBluetoothDevice= ... device discovered with BluetoothManager... ;
UUID securedUUID=... my secured uuid ...;
var socket = pcBluetoothDevice.CreateInsecureRfcommSocketToServiceRecord(securedUUID);
socket.Connect();
var outputStream=socket.OutputStream;

Для отправки с Android я делаю:

byte[] dataToSend = new byte[3] { 1, 0, 0 };
outputStream.Write(dataToSend, 0, dataToSend.Length);
outputStream.Flush();

В Windows для подключения я использую 32feet.NET Nuget, как указано ниже:

var serviceClass = BluetoothService.SdpProtocol;
BluetoothListenerlistener = new BluetoothListener(serviceClass);
listener.Start();
BluetoothClient client = _listener.AcceptBluetoothClient();
NetworkStream peerStream = client.GetStream();

// On A different thread:
while(connected)
{
   byte[] dataBuffer = new byte[3];
   var readSize = _connectionStream.Read(dataBuffer, 0, dataBuffer.Length);
   // put dataBuffer in a queue on a different thread for processing.
}

Это работает, большую часть времени. Единственная проблема заключается в том, что после нескольких секунд отправки данных у меня время от времени возникают странные задержки. Я не уверен, вызвано ли это приемником Bluetooth (USB-портом, полученным на ПК), телефоном Bluetooth или тем, как я общаюсь через Bluetooth RFCOMM.

Количество отправляемых данных низкое. Я едва посылаю 1 Кбайт / с. Но, как я уже сказал, частота высокая (100-250 пакетов в секунду).

Должен ли я использовать соединение Bluetooth другим способом? Любое предложение очень ценится.

Хорошего дня.

...