我试图通过使用Broadcomm公司的是Widcomm蓝牙堆栈,它应该工作,但有一两件事,我仍然无法理解:我怎样才能自动打开虚拟COM当我需要沟通

我试图使用SPP(串行端口配置文件),但在文档与SDK不是那么exaustive。

请,我就是不能用32FEET!

我包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 ???

由于

有帮助吗?

解决方案

我张贴这种早期的回应,但它似乎从来就没有出现了! : - (

反正我是32feet.NET库的维护和支持的Widcomm的作者。首先,据我所知牌照不应该是商业流通的问题。见彼得脚的评论在 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

要回答你具体的Widcomm的问题。可以创建一个蓝牙服务的多个实例,即多个SPP服务(每次使用SPP服务类ID),每个人都可以提供一个服务名称属性,它允许客户在它们之间进行选择。在大多数情况下,它不会是必要的,所以只要传递null或零长度字符串 - 的是Widcomm SDK文档不说什么是允许的。至于窗口句柄,是Widcomm使用C ++虚拟方法。(育 - 这使得直接 P /调用大多不可能)来实现事件/回调,想必菲盖拉先生的代码那些回调转换成窗口消息

[1]创建蓝牙虚拟COM端口并不简单。在MSFT + Win32中,一个没有被告知选择什么名字COM端口!在MSFT + WM官方API不上许多设备类型很好地工作。而我们做的非官方方法需要重新启动IIRC。 : - (

其他提示

所以,首先你说你不能使用 32feet.net 。为什么?你显然使用若昂·保罗费圭的蓝牙堆栈库,因为这是什么wcbts.dll是,所以它不能反对使用一些第三方库的一些任务(与32英尺是免费的,开源的)。

这使我质疑#2。如果你使用他的图书馆,你看着他如何使用该库样本?它从同一个地方你必须有DLL下载。

至于什么的hWnd和NMSG是,正是基于这样的事实,这是Windows程序和API,我会说hWnd为窗口,将获得通知时一些在图书馆和NMSG发生的手柄的名字无论是自定义消息常量你想传递给窗口,这样你就可以去寻找这些消息。再次,我打赌他提供了样品显示了所有这

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top