2014-09-05 121 views
-2

我正試圖在PC和PC MCU PIC之間進行RS-232通信。所以我開始用C++編寫PC程序,但它沒有錯誤,根據我輸出的狀態cout它應該工作,但我想確定。所以我下載了超級終端,並通過串口將Tx連接到了Rx引腳,但每當我嘗試連接超級終端時都會出現錯誤,並說我試圖運行我的C++程序時會出現這種錯誤。我不明白這個問題究竟在哪裏。下面是完整的代碼,如果該問題是代碼的,只是爲了確保:當超級終端連接時,C++無法通過COM端口傳輸數據

的main.c:

 #include <windows.h> 
     #include <winbase.h> 
     #include <iostream> 

     PDWORD sent; 
     char buf; 

     int main(){ 

     DCB serial; 

     HANDLE hserial = CreateFile("\\\\.\\COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 

     serial.DCBlength = sizeof(DCB); 
     serial.BaudRate = CBR_9600; 
     serial.fBinary = true; 
     serial.fParity = false; 
     serial.ByteSize = 8; 
     serial.Parity = NOPARITY; 
     serial.StopBits = ONESTOPBIT; 

     char result = BuildCommDCB("baud=9600 parity=N data=8 stop=1", &serial); 

     if(result != 0){ 
      std::cout << "DCB Structure Successfully Created!" << std::endl; 
     }else{ 
      std::cout << "DCB Structure Creation Failed!" << std::endl; 
     } 

     if(hserial != INVALID_HANDLE_VALUE){ 
      std::cout << "COM Port Handle Successfully Created!" << std::endl; 

     }else{ 
      std::cout << "COM Port Handle Creation Failed!" << std::endl; 
      std::cout << GetLastError() << std::endl; 
     } 

     char res = WriteFile(hserial, "0xFF", 1, sent, NULL); 

     if(res != 0){ 
      std::cout << "Writing to COM Port Successfull!" << std::endl; 
     }else{ 
      std::cout << "Writing to COM Port Failed!" << std::endl; 
      std::cout << GetLastError() << std::endl; 
     } 

     CloseHandle(&hserial); 

     return 0; 

     } 

回答

0

一次只能有一個程序可以打開一個特定的COM端口。如果您有兩個COM端口可用,您可以進行測試。

相關問題