这是我第一次编程蓝牙插座,甚至是开发Windows / Android Apps。最重要的是,我已经阅读了InTheHand32 Wiki上的常规蓝牙数据连接(RFCOMM),但是我必须遗漏了这一点或只是眼前的问题的方向错误。
我假装要做的事情: 一个简单的Windows App(它将仅在Windows桌面上运行),因此,我使用的是Windows Forms和标准.NET框架,它们可以与以KotLin编写的在手机上运行的Android App通信。
我使用了InTheHand32 NuGet,并实现了以下代码,但是每当我尝试在手机上使用测试应用程序(从App Store下载)时,都会出现连接失败的错误。
遵循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应用程序通过蓝牙与KotLin Android应用程序通信并返回时会出现问题吗?
我想念有关如何创建可发现的Windows BT Server的知识,谁一直在等待设备连接到它?
在此先感谢您的帮助。