我正在尝试使用 Broadcomm 的 Widcomm 蓝牙堆栈,它应该可以工作,但有一件事我仍然无法理解:当我需要通信时,如何自动打开虚拟 COM?
我正在尝试使用 SPP(串行端口配置文件),但 SDK 的文档并不是那么详尽。
拜托,我就是不能使用 32 英尺!
我封装了 API 的 SPP 服务器部分:
[DllImport("wcbts.dll", SetLastError = false, CharSet = CharSet.Unicode)]
internal static extern IntPtr CreateSppServer(IntPtr pStack);
[DllImport("wcbts.dll", SetLastError = false, CharSet = CharSet.Unicode)]
internal static extern void DeleteSppServer(IntPtr pServer);
[DllImport("wcbts.dll", SetLastError = false, CharSet = CharSet.Unicode)]
internal static extern bool SppServerStart(IntPtr pServer, IntPtr pszServiceName);
[DllImport("wcbts.dll", SetLastError = false, CharSet = CharSet.Unicode)]
internal static extern bool SppServerStop(IntPtr pServer);
[DllImport("wcbts.dll", SetLastError = false, CharSet = CharSet.Unicode)]
internal static extern IntPtr SppServerNotifyWindow(IntPtr pServer, IntPtr hWnd, int nMsg);
pszServiceName 是什么?我在哪里可以找到它?
还有 hWnd 和 nMsg ???
Thanks
我之前对此做出了回应,但似乎从未出现过! :-(
不管怎样,我是 32feet.NET 库的维护者和 Widcomm 支持的作者。首先,据我所知,许可证对于商业发行来说应该不成问题。请参阅 Peter Foot 的评论http://32feet.net/forums/t/2289.aspx http://32feet.net/forums/t/2289.aspx:
“32feet.NET 可免费用于商业或非商业用途。如果您使用二进制文件,则可以按原样使用该库,如果您对源代码进行修改,则需要包含 32feet.NET License.txt 文档并确保文件头未被修改/删除。”
我看看彼得是否可以在这里发表评论以提供确定性。
不管怎样,我们还没有实现对 Widcomm 虚拟 COM 端口功能的支持(这当然是可能的,尽管没有人要求它——除了你自己)。我不太喜欢虚拟 COM 端口。使用直接“套接字”连接似乎总是容易得多,而不是尝试设置 COM 端口,并尝试查找它创建的名称[1],然后必须打开 SerialPort 才能使用它,然后如果连接丢失,人们不知道,只需继续重试...只需执行以下操作就容易多了:
Dim addr As BluetoothAddress _
= BluetoothAddress.Parse("001122334455")
'
Dim ep As New BluetoothEndPoint(addr, BluetoothService.SerialPort)
Dim cli As New BluetoothClient
cli.Connect(ep)
Dim peerStream As Stream = cli.GetStream()
peerStream.Write/Read ...
更多信息请访问http://www.alanjmcf.me.uk/comms/bluetooth/32feet.NET%20--%20User%20Guide.html http://www.alanjmcf.me.uk/comms/bluetooth/32feet.NET%20--%20User%20Guide.html
回答您的具体 Widcomm 问题。可以创建蓝牙服务的多个实例,即多个 SPP 服务(每个使用 SPP 服务类 ID),每个服务都可以提供服务名称属性以允许客户端在它们之间进行选择。在大多数情况下,这不是必需的,因此只需传递 null 或零长度字符串即可 - Widcomm SDK 文档没有说明允许的内容。至于窗口句柄,Widcomm 使用 C++ 虚拟方法(yuk——这使得directP/Invoking 几乎不可能)来实现事件/回调,大概 Figueira 先生的代码将这些回调转换为 Window 消息。
[1] 创建蓝牙虚拟 COM 端口并不简单。在 MSFT+Win32 上,不知道为 COM 端口选择了什么名称!在 MSFT+WM 上,官方 API 在许多设备类型上运行不佳。我们的非官方方法需要重新启动 IIRC。 :-(
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)