2014-09-05 9 views
-2

PC와 PC MCU PIC간에 RS-232 통신을하려고합니다. 그래서 저는 C++로 PC 프로그램을 만들기 시작했고, 오류가 없었습니다. 그리고 cout에 따르면, 나는 그것이 작동해야하는 상태를 출력하기 위해 만들었지 만, 저는 확신하고 싶었습니다. 그래서 하이퍼 터미널을 다운로드하고 직렬 COM 포트의 Rx 핀에 Tx를 연결했습니다.하지만 하이퍼 터미널을 연결할 때마다 내 C++ 프로그램을 실행하려고 할 때 access denied (error 5)이라고 말하면서 오류가 발생합니다. 문제가 실제로 어디 있는지 이해할 수 없습니다. 문제는 코드의, 그냥 확인했다 경우 여기에 전체 코드는 다음과 같습니다하이퍼 터미널 연결시 C++ 포트를 통해 데이터를 전송할 수 없습니다.

을 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 포트를 사용할 수 있으면 테스트를 수행 할 수 있습니다.