2014-09-30 89 views
0
hCom = CreateFile(
    "COM1", 
    GENERIC_READ | GENERIC_WRITE, 
    0, 
    NULL, 
    OPEN_EXISTING, 
    0, 
    NULL 
); 

我有我的電腦上只有一個COM口,但該函數返回COM1,COM3,COM4,COM5,COM6,COM7除非 「INVALID_HANDLE_VALUE」 的值。這是爲什麼?COM端口與開放的CreateFile(..)

+0

如果您使用多字節字符支持進行編譯,則使用「L」前綴「字符串」文字,就像這個「L」COM1「'。 – alk 2014-09-30 09:04:17

+0

如果我正確地做了這些,你似乎可以打開不存在的串口?奇怪。它在'設備管理器'中說了什麼 – 2014-09-30 09:04:25

+0

@alk這是錯誤的方式。代碼使用MBCS。它是在編譯Unicode時使用「L」前綴。但是,這顯然不是這種情況,因爲代碼編譯。 – 2014-09-30 09:13:23

回答

0

您正在調用該功能。除非它返回INVALID_HANDLE_VALUE,否則應該有一個可用的端口。請注意,這可能包括USB端口!

另請注意,對於COM端口10及以上版本,您需要使用命令\\.\\COMn(對應於C字符串\\\\.\\COMn(其中n是指定COM端口號的1或2位數))打開它們。見http://support2.microsoft.com/kb/115831

+0

相關:http://stackoverflow.com/q/11775185/694576 – alk 2014-09-30 09:06:32