我正在尝试让蓝牙打印机在WinCE手持设备上运行。该设备已在Control Panel\Bluetooth Device Property
中设置为受信任,已通过身份验证。
RegisterDevice
调用返回设备句柄,没有错误,但是当我尝试使用OPEN_EXISTING通过CreateFileW
打开端口时,我得到INVALID_HANDLE_VALUE
,系统错误代码为55 {{ 1}}。
我是WinCE API的新手,也是C ++的新手。我无法确定问题所在。
我的设置有什么问题?在通过此bt-vcom与打印机通信之前,还有其他额外步骤吗?
我的设备是WM5 HTC Diamond手机。在ERROR_DEV_NOT_EXIST
> Communication Manager
> Bluetooth
部分中,我无法看到我创建的任何端口(但它们似乎确实已创建:在第三方应用中列出,例如{ {1}},并在尝试使用这些端口在系统GUI中创建虚拟COM端口时报告为已占用。)。如果我在这里在系统GUI中创建了不同的COM Port
,Python可以通过新端口以编程方式与打印机通信。
毕竟我不是在使用相同的API ...为什么我的工作不起作用?
我的代码改编自https://msdn.microsoft.com/en-us/library/ms881004.aspx,如下所示:
TerminalCE
答案 0 :(得分:0)
在Windows Mobile上,库中存在两种创建端口的方法, 第一个是类BluetoothSerialPort,这会创建一个连接 立即 _但它使用的底层API相当不可靠,并且 它似乎根本不适用于各种设备类型._ 第二个是 BluetoothDeviceInfo.SetServiceState和Win32一样,这是手动的 配置必要的注册表设置,但可靠 在端口可用之前需要重新启动,并再次使用名称 不返回新端口。
https://github.com/inthehand/32feet/wiki/Bluetooth-Serial-Ports
完全浪费时间......
PS:要控制蓝牙打印机,将winsock功能包装在ctypes中,并通过蓝牙套接字与打印机通信,经过一些试验和错误后可以正常工作。