【问题标题】:Opening a COM Port using a Windows Compact 2013 Virtual PC使用 Windows Compact 2013 Virtual PC 打开 COM 端口
【发布时间】:2014-10-22 09:37:20
【问题描述】:
HANDLE hCom = INVALID_HANDLE_VALUE;

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

我正在尝试使用虚拟电脑(Windows Embedded Compact)打开我电脑的 COM 端口。 函数 CreateFileW 提供一个 INVALID_HANDLE_VALUE。在 win32 上运行完美。

【问题讨论】:

  • 你能显示一些代码吗?
  • 检查GetLastError()函数返回的值。这很可能会提示您为什么无法打开 com 端口。
  • WinCE下端口名称一样吗?我希望没有任何 DosDevices 别名。

标签: windows com embedded windows-ce


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您应该使用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);
    

    【讨论】:

      猜你喜欢
      • 2011-07-17
      • 1970-01-01
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      • 2013-10-19
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      相关资源
      最近更新 更多