我有一个应用程序。通过蓝牙从设备接收一些传输。这个应用程序旨在托管在Win上。 Server 2008或Win。 7,在C#.NET 4.5上开发。通过使用设备SDK进行集成,因此我只需要知道从哪个COM端口接收数据。当我从蓝牙设置手动创建虚拟COM端口时,这不是问题。
此集成应该部署在许多设备中,并且要求用户手动创建虚拟COM端口不是一种选择......有没有办法从.NET代码创建它?我需要创建虚拟COM端口(监听蓝牙传输)并知道其端口名称。
编辑:我开始采用新方法(C ++,power shell脚本,CMD,bat文件......总是在Windows技术中使用我已经尝试了一些COM集成(like this one),但它似乎仅限于.NetCF(我没有coredll.dll,因为它在Windows Server或Windows 7上运行,其中其他缺失的东西......已经试图强行加载那个DLL而没有运气。类似但有效的东西将是理想的解决方案
答案 0 :(得分:3)
我找到了与您的问题有关的这个有趣的小故事
在Win32上,要创建一个可以使用的蓝牙虚拟串口 BluetoothDeviceInfo.SetServiceState,传入服务类 串行端口。不幸的是,创建的COM端口的名称不是 返回 - 那是因为本机API没有说明!一种方法 找到创建的端口的名称就是调用 System.IO.Ports.SerialPort.GetPortNames方法之前和之后 SetServiceState调用并查看哪个名称是新的。
来源:https://github.com/inthehand/32feet/wiki/Bluetooth-Serial-Ports
无论如何......在注册表中,所有蓝牙设备都列在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\BTHENUM
下。
您可以枚举该密钥下的条目,以找到您的设备PNP ID。
我的注册表中的一个关键名称,例如:
{00001103-0000-1000-8000-00805f9b34fb}_VID&0001001d_PID&1200
您设备的串行端口存储在以下位置:
.\{unique subkey name}\Device Parameters\SerialPort
其中{unique subkey name}是内部MS ID。它是该级别唯一的子键。
获取PnPID的一种方法是在设备管理器中右键单击 - >设备上的属性。转到"细节"选项卡,然后选择"兼容ID"在组合框中。