2014-09-19 134 views
0

我正在使用Windows 8.1 Pro計算機。好吧,我試圖打開我的串行設備的COM端口連接。我的代碼如下:在C/C++中用COM端口打開連接時出錯

#include<stdio.h> 
#include<windows.h> 

int main(void) 
{ 
    HANDLE hcomm; 
    char *comPort = "COM6"; 
    hcomm = CreateFile(comPort, GENERIC_READ | GENERIC_WRITE, 0, 0, 
         OPEN_EXISTING, 0, NULL); 
    if(hcomm = INVALID_HANDLE_VALUE) 
    { 
      printf("Connection Failed...\n"); 
    } 
    else 
      printf("Connection Succeded....\n"); 
     //return hcomm; 
    } 
} 

但是這段代碼並不適用於我。請給出一些建議,我錯了。

+0

你是什麼意思「沒有工作」? – Jarod42 2014-09-19 07:30:22

+0

謝謝Jarod重播,我真的不明白我在這裏得到錯誤..我的語法和程序是正確的..它是窗口的版本問題..?它返回無效的句柄值.. – user1234 2014-09-19 07:32:55

+0

順便說一句,它應該是'const char * comPort =「COM6」;' – Jarod42 2014-09-19 07:33:16

回答

0

檢查GetLastError()的值。 GetLastError()== 0是成功的。

此外,您的if條件正在將hcomm重新初始化爲無效句柄。請注意0​​條件中從分配到比較運算符的更改。請將您的代碼更改爲下面的內容,看看它是否能解決您的問題:

if(hcomm == INVALID_HANDLE_VALUE) { 
    printf("Handle creation failed with error %d", GetLastError()); 
} 
else { 
    printf("Handle creation successful"); 
} 
+0

是的mbaxi,我用GetLastError()檢查它,我一直在得到0錯誤代碼。 – user1234 2014-09-19 07:45:52

+0

Jarod42 - 我沒有足夠的聲望對問題發表評論,但我似乎可以在評論中添加評論。 – mbaxi 2014-09-19 07:53:13

+0

@mbaxi:你的第二句話應該是OP的錯誤:'='vs'=='。我建議編輯你的答案,清楚說明OP的錯誤並刪除問題部分。 – Jarod42 2014-09-19 17:22:46