在C#.NET中为蓝牙创建虚拟COM端口

nni*_*mis 6 .net c# windows serial-port bluetooth

我有一个应用程序.通过蓝牙从设备接收一些传输.这个应用程序旨在托管在Win上.Server 2008或Win.7,在C#.NET 4.5上开发.通过使用设备SDK进行集成,因此我只需要知道从哪个COM端口接收数据.当我从蓝牙设置手动创建虚拟COM端口时,这不是问题.

虚拟COM端口 .

这种集成应该部署在很多设备中,要求用户手动创建虚拟COM端口不是一种选择......有没有办法从.NET代码创建它?我需要创建虚拟COM端口(监听蓝牙传输)并知道其端口名称.

编辑:我愿意接受新的方法(C++,power shell脚本,CMD,bat文件......总是在Windows技术中

我已经尝试过一些COM集成(就像这个),但它似乎仅限于.NetCF(我没有coredll.dll,因为它在Windows Server或Windows 7上运行,其他缺少的东西......已经试图'强迫'加载DLL而没有运气).类似但有效的东西将是理想的解决方案

Mic*_*Roy 3

我发现这个有趣的花絮与您的问题相关

\n\n
\n

在 Win32 上,要创建蓝牙虚拟串行端口,可以使用\n BluetoothDeviceInfo.SetServiceState,传入服务类\n SerialPort。不幸的是,所创建的 COM 端口的名称未返回 \xe2\x80\x94 that\xe2\x80\x99s,因为本机 API 无法告知!查找创建的端口名称的一种方法是在 SetServiceState 调用之前和之后调用 System.IO.Ports.SerialPort.GetPortNames 方法,并查看哪个名称是新的。

\n
\n\n

来源: https: //github.com/inthehand/32feet/wiki/Bluetooth-Serial-Ports

\n\n

无论如何...在注册表中,所有蓝牙设备都列在 下HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\BTHENUM

\n\n

您可以枚举该项下的条目来查找您的设备 PNP ID。\n我的注册表中的项名称,例如:\n{00001103-0000-1000-8000-00805f9b34fb}_VID&0001001d_PID&1200

\n\n

您设备的串行端口存储在该端口下方的位置:\n.\\{unique subkey name}\\Device Parameters\\SerialPort

\n\n

其中 {unique subkey name} 是内部 MS ID。这是该级别唯一的子项。

\n\n

获取 PnPID 的一种方法是在设备管理器中右键单击设备 -> 属性。转到“详细信息”选项卡,然后在组合框中选择“兼容 ID”。

\n