2014-10-22 95 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);