Bluetooth 在PC上聚合多个蓝牙数据流

Bluetooth 在PC上聚合多个蓝牙数据流,bluetooth,serial-port,platform,Bluetooth,Serial Port,Platform,我对蓝牙编程非常陌生,因此,如果这个问题看起来很幼稚,我很抱歉 也就是说,我的一个潜在客户有一个定制的硬件设备,通过蓝牙将数据传输到Windows PC。PC软件通过打开一个虚拟COM端口并从中读取数据连接到该设备;然后,它实时可视化这些数据 他们想做的是同时将其中三个设备(或者更确切地说,连接到不同传感器的三个非常相似的设备)连接到PC。他们希望重写软件,以聚合来自所有三个来源的数据,并实时可视化所有数据;这意味着产生数据的每个设备与屏幕上显示的数据之间的延迟,最坏情况下可能为数十毫秒 我的问

我对蓝牙编程非常陌生,因此,如果这个问题看起来很幼稚,我很抱歉

也就是说,我的一个潜在客户有一个定制的硬件设备,通过蓝牙将数据传输到Windows PC。PC软件通过打开一个虚拟COM端口并从中读取数据连接到该设备;然后,它实时可视化这些数据

他们想做的是同时将其中三个设备(或者更确切地说,连接到不同传感器的三个非常相似的设备)连接到PC。他们希望重写软件,以聚合来自所有三个来源的数据,并实时可视化所有数据;这意味着产生数据的每个设备与屏幕上显示的数据之间的延迟,最坏情况下可能为数十毫秒

我的问题有两方面

1) 。这能做到吗?PC上的软件是否可以同时连接到三个支持蓝牙的虚拟COM端口?(我猜答案是肯定的,但肯定是值得的)

2) 。这样做的最佳平台是什么?最初的软件是用C++/MFC编写的,但我个人更喜欢更现代的软件,可以使用更简单的图形和GUI API

首先,不要使用虚拟COM端口,它们很难设置,在使用中不透明,并且很难维护。只需使用我们的
BluetoothClient.Connect
操作(或
BluetoothListener
,如果设备连接到电脑)。然后您将有三个套接字,实际上是
NetworkStream
s,您可以异步或同步地读取这三个套接字。见例

您的设备将使用串行端口配置文件,因此请使用UUID/GuidBluetoothService.SerialPort。这三个设备需要的是每个设备的设备地址。通过发现(参见文档)获取它们,或者设备地址写在设备的标签或电路板上,您可以在代码中将它们定义为常量。e、 g

static readonly BluetoothAddress DeviceAddr1
    = BluetoothAddress.Parse("002233445566");

至于延迟,这应该是可以的,我认为其他的方法会更慢。NET是现代的,并且UI具有WinForms、WPF和Silverlight选项。

我明白了,所以如果我正确阅读了您的文档,即使服务类设置为SerialPort,我也可以使用“Stream peerStream=cli.GetStream();”是否正确?在本例中,我只需要知道每个设备的UUID,然后我就可以为每个设备打开一个单独的流。那将是相当整洁的;如果是这样的话,我一定会查看库。答案更新:BluetoothClient(Connect+GetStream)适用于任何RFCOMM服务,您的设备使用RFCOMM服务SPP。因此,您只需要这三个设备的设备地址。