Окончательное редактирование «Решение моей собственной проблемы»:
- Панель управления> Настройки Bluetooth> COM-порты> Добавить / разрешить поступающие COM-соединения
Оригинальный пост:
Я впервые программирую разъемы Bluetooth или даже разрабатываю приложения для Windows / Android.Суть в том, что я прочитал Общие Bluetooth-соединения для передачи данных (RFCOMM) на InTheHand32 Wiki, но я, должно быть, упускаю суть или смотрю в неправильном направлении рассматриваемой проблемы.
Возобновите то, что я притворяюсьсделать: простое приложение Windows (оно будет работать только на рабочем столе Windows), поэтому я использую Windows Forms и стандартную среду .NET, которые могут общаться с приложением Android, работающим на мобильном телефоне, написанном на KotLin.
Я использовал InTheHand32 NuGet и реализовал приведенный ниже код, но всякий раз, когда я пытаюсь использовать тестовое приложение на своем телефоне (загруженное из App Store), я получаю ошибку неудачного соединения.
Связь осуществляется через Bluetooth, следуя протоколу Rfcomm, поэтому язык, на котором написан код, не должен быть проблемой.
Мой C # ниже:
private void StartServer()
{
Thread btServerThread = new Thread(new ThreadStart(Listen));
btServerThread.Start();
}
private void Listen()
{
Guid serviceId = BluetoothService.SerialPort;
Utils.Print(serviceId.ToString());
ServiceRecordBuilder recordBuilder = new ServiceRecordBuilder();
recordBuilder.AddServiceClass(serviceId);
recordBuilder.ProtocolType = BluetoothProtocolDescriptorType.Rfcomm;
recordBuilder.ProviderName = "propstring";
recordBuilder.ServiceDescription = "propstring";
recordBuilder.ServiceName = "BP-Authenticator";
ServiceRecord record = recordBuilder.ServiceRecord;
BluetoothListener btListener = new BluetoothListener(serviceId, record);
btListener.Start();
BluetoothClient connection = btListener.AcceptBluetoothClient();
Stream stream = connection.GetStream();
byte[] recievedDataBuffer;
byte[] sendDataBuffer;
while (true)
{
recievedDataBuffer = new byte[CHANNEL_SIZE];
sendDataBuffer = new byte[CHANNEL_SIZE];
try
{
stream.Read(recievedDataBuffer, 0, CHANNEL_SIZE);
Utils.Print($"{Encoding.ASCII.GetString(recievedDataBuffer)}");
sendDataBuffer = Encoding.ASCII.GetBytes("Hello from the other side");
stream.Write(sendDataBuffer, 0, CHANNEL_SIZE);
}
catch (IOException)
{
;
}
}
}
Будет Windows.Связь NET через Bluetooth с Android-приложением KotLin и обратно, проблема?
Мне не хватает понимания того, как создать дискработоспособный сервер Windows BT, кто постоянно ждет подключения устройства к нему?
Заранее благодарен за любую помощь.