2014-10-22 66 views
0
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上它完美无缺。使用Windows Compact 2013虚拟PC打开COM端口

+0

你能表现出一定的代码? – bitcell 2014-10-22 09:56:56

+0

检查'GetLastError()'函数返回的值。这很可能会给你一个暗示com端口无法打开的提示。 – 2014-10-22 11:52:13

+0

在WinCE下命名端口是否相同?我预计没有任何DosDevices别名。 – 2014-10-22 12:42:49

回答

1

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

0

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

为了打开GPS COM端口我有这样的代码(它的工作原理上都WINCE的版本的范围和桌面窗口太):

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);