簡體   English   中英

CreateFile返回錯誤INVALID_HANDLE_VALUE(對於COM端口),並且GetLastError返回“找不到指定的文件”

[英]CreateFile returns error INVALID_HANDLE_VALUE (for COM port), and GetLastError returns “can't find file specified”

我打開一個端口與設備通信並控制設備,但CreateFile()函數返回INVALID_HANDLE_VALUE

GetLastError()返回2 ,這意味着它找不到指定的文件。

我的代碼如下所示:

wsprintf( szPort, "COM%d", nPort );
m_hIDComDev = CreateFile(szPort,
                         GENERIC_READ | GENERIC_WRITE, 
                         0, 
                         NULL, 
                         OPEN_EXISTING, 
                         FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, 
                         NULL);
if (m_hIDComDev == INVALID_HANDLE_VALUE)
{
    DWORD err=GetLastError();
}

為什么會出現這個問題?

問題是您沒有為串行端口指定lpFileName的正確值。 你應該使用這種格式:

"\\\\.\\COM%d"

這將導致字符串看起來像\\\\.\\COM1 ,這是正確的格式。

嘗試使用

char *szPort = _T("COM1"); // Change port number to your unused existing port

_T強制將szPort保存為ASCII。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM