我目前正在试图构建一个库,用于在通用应用程序上使用串行端口配置文件(SPP)。
据我所知,SPP运行在RFCOMM之上。MSDN概述了RFCOMM的基础知识,这是很好的。我还能“找到”我的设备,并“连接”到它。我还为RFCOMM创建了一个StreamReader和StreamWriter。
现在麻烦来了。据我所知,RFCOMM为各种功能/任务提供了一些通道,其中之一可能是SPP (我知道设备特性SPP,甚至在通过“正常”串行连接完成时也能工作)。
我想知道是否有一个例子,我必须通过该通道发送哪些字节才能在另一边获得单个字节输出。是否需要某种连接设置(双向交换)?这些数据包是否有示例,它们的名称是什么,是否有特定的规范。我想我会很高兴,即使有一些正确的条件来寻找。
发布于 2015-06-18 18:39:42
好吧,我以为基本上是错的。以下是非常简单的极简代码(没有错误处理,没有任务,.)沟通。
这将进入Package.appxmanifest:
<Capabilities>
<m2:DeviceCapability Name="bluetooth.rfcomm">
<m2:Device Id="any">
<m2:Function Type="name:serialPort" />
</m2:Device>
</m2:DeviceCapability>
</Capabilities>这是你选择的方法(确保你的蓝牙设备已经配对,我的设备的名字是"HC-06")。
// Find the device
var bluetoothDevicesSpp = await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort));
var bluetoothDeviceHc06 = bluetoothDevicesSpp.SingleOrDefault(d => d.Name == "HC-06");
var serviceRfcomm = await RfcommDeviceService.FromIdAsync(bluetoothDeviceHc06.Id);
StreamSocket socket = new StreamSocket();
await socket.ConnectAsync(serviceRfcomm.ConnectionHostName, serviceRfcomm.ConnectionServiceName, SocketProtectionLevel.BluetoothEncryptionAllowNullAuthentication);
DataWriter writer = new DataWriter(socket.OutputStream);
DataReader reader = new DataReader(socket.InputStream);若要阅读,请使用以下内容:
await reader.LoadAsync(1);
byte b = reader.ReadByte();
Debug.WriteLine((char)b);要编写,请使用以下内容:
writer.WriteString("MaM\r\n");
writer.StoreAsync();字节将按原样传输,不需要附加协议或类似的协议。好好享受吧。
https://stackoverflow.com/questions/30892154
复制相似问题