使用Windows Compact 2013虚拟电脑打开COM端口

3
HANDLE hCom = INVALID_HANDLE_VALUE;

hCom = CreateFileW(
    L"COM1:",
    GENERIC_READ | GENERIC_WRITE,
    0,
    NULL,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    NULL
);

我正在尝试在虚拟PC(Windows Embedded Compact)上打开计算机的COM端口。 CreateFileW函数提供了INVALID_HANDLE_VALUE。在win32上它运行得很完美。

你能展示一些代码吗? - bitcell
检查GetLastError()函数返回的值。这很可能会给你一个提示,为什么无法打开COM端口。 - Jabberwocky
在 WinCE 下,端口的命名方式是否相同?我预计没有任何 DosDevices 别名。 - Ben Voigt
2个回答

3

检查HKLM\ Drivers \ Active下的端口名称。 您可以使用远程注册表编辑器来完成此操作。 您将找到一些带有数字名称的键列表,但在每个子键内部,您可以找到设备名称,例如COM1:(这是CE上有效的设备名称)。 通常BSP会使用串行端口进行调试输出,这会防止操作系统使用它。你可能需要通过向你的引导程序传递正确的参数(LOADCEPC具有命令行开关,biosloader可以使用.ini文件配置)来禁用串行调试输出,从而允许系统将该端口作为常规串行端口使用。


0

你应该使用 GetLastError() 来检查错误代码。

打开 GPS COM 端口的代码如下(它适用于各种版本的 WinCE 和桌面 Windows):

if ( port > 9 )      
  sport.Format(_T("\\\\.\\COM%d"), port);
else
  sport.Format(_T("COM%d:"), port);

HANDLE hFile = ::CreateFile(sport.GetString(),
    GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接