2013-08-03 51 views
0

我新在C使用串行端口++。我發現有很多例子用於此目的,其中之一是在 Configuring a Communications ResourceGetLastError函數()= 2

不過,我已經幾乎得到錯誤編號2,根據System Error Codes這意味着ERROR_FILE_NOT_FOUND,但我無法弄清楚。我正在使用visual C++ 2010 Express。毫無疑問,OPEN_EXISTING命令引發了這個問題:

TCHAR *pcCommPort = TEXT("COM1"); // Most systems have a COM1 port 
hCom = CreateFile(pcCommPort, 
        GENERIC_READ | GENERIC_WRITE, 
        0,  // must be opened with exclusive-access 
        NULL, // default security attributes 
        OPEN_EXISTING, // must use OPEN_EXISTING 
        0,  // not overlapped I/O 
        NULL); // hTemplate must be NULL for comm devices 

但是爲什麼呢?

+0

如果你沒有任何的硬件解決方案(實COM口或USB仿真),試試這個軟件仿真:http://com0com.sourceforge.net/ –

+0

特別感謝,但我得到了一個。 –

回答

1
// Most systems have a COM1 port 

那是20年前。 USB主板製造商在十多年前停止了將COM端口放置在主板上,USB完全取代了它作爲與設備對話的主要優勢。

你永遠只能一個COM1端口的機器,如果你購買的是PCI板與真正的串行端口。今天,更爲常見的情況是,模擬串行端口藍牙或USB驅動程序。對於他們的驅動程序的工作方式沒有真正的標準,但他們通常開始在COM3或COM5上對模擬端口進行編號。您還應該爲這些端口提供本地設備名稱,以避免不模擬該端口的DOS命名空間名稱的驅動程序出現問題。例如,使用"\\\\.\\COM3"

使用控制面板+設備管理器找到正確的端口號。

+0

實際上知道它,並且正確的COM端口恰好是COM1,但問題與您所說的名稱一致。坦! –

+0

另一個有趣的事情是,我提到的文件是在2013年建立的! –

+1

令人驚歎的是這些驅動程序如何從根本上打破。添加DOS命名空間名稱是很簡單的。我想,截至目前的硬件業務並沒有留下任何金錢支付程序員一筆體面的工資。 –

相關問題