通过蓝牙Windows 10通用应用

时间:2016-01-20 20:35:41

标签: c# bluetooth windows-10 win-universal-app

我无法弄清楚如何使用蓝牙在运行适用于Windows 10的Windows通用应用程序的两台设备之间进行通信。我不确定我的研究是否有什么,但我在API上找不到任何东西。

有人可以使用C#快速指导我吗?

1 个答案:

答案 0 :(得分:2)

您可以参考此MSDN链接:
https://docs.microsoft.com/en-us/windows/uwp/devices-sensors/send-or-receive-files-with-rfcomm

此示例显示客户端和服务器模型的蓝牙通信。

对于设备枚举和配对,您可以使用此Windows示例:
https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/DeviceEnumerationAndPairing

此示例在旧的Windows SDK版本(10240)中无效。

对于文件传输,您必须像文档中那样实现IrOBEX协议连接,断开连接和数据包。

我认为步骤将是这样的:

  1. 使用Windows示例进行枚举和配对。
  2. 打开一个流套接字。
  3. 实施OBEX协议。
  4. 这样的事情:

    private static byte[] CreateConnectPacketOPP(int maxPacketSize)
    {
        int packetSize = 7;
        byte[] theConnectPacket = new byte[packetSize];
    
        int offset = 0;
        ConnectPacket[offset++] = 0x80;                                   // Connect
        ConnectPacket[offset++] = (byte)((packetSize & 0xFF00) >> 8);     // Packetlength Hi Byte
        ConnectPacket[offset++] = (byte)(packetSize & 0xFF);              // Packetlength Lo Byte
        ConnectPacket[offset++] = 0x10;                                   // Obex v1
        ConnectPacket[offset++] = 0x00;                                   // No flags
        ConnectPacket[offset++] = (byte) ((maxPacketSize & 0xFF00) >> 8); // 2048 byte client max packet size Hi Byte
        ConnectPacket[offset++] = (byte) (maxPacketSize & 0xFF);          // 2048 byte max packet size Lo Byte    
    
        return ConnectPacket;
    }