|
우선 통신오픈시 에러가 발생했을때 GetLastError() 함수로 에러발생 원인을 진단해보시기 바랍니다.
박민호 님이 쓰신 글 :
: 안녕하세요~~~
:
: 혼자서 고민하고 또 고민하다 이렇게 도움을 요청해 봅니다....
:
: 다름이 아니라 제가 시리얼 통신 프로그램을 만들고 있는데 아무 문제 없이 잘됩니다...
:
: 다만 컴퓨터를 껏다가 킨다던지, 재부팅, 대기모드 등.... 컴퓨터를 다시 시작 했을 때는
:
: 항상 통신 연결이 안된다는 것입니다....
:
: 그럼 어떻게 통신이 되느냐... 그건 인터넷에서 떠돌고 있는 시리얼 통신 프로그램을 받아서
:
: 통신 연결을 한번 하고 나면 그 다음부터는 컴퓨터를 끄기 전까진 아무 이상 없이 통신이 잘됩니다...
:
: 기기 전원을 꺼도, USB선을 빼도.... 아무 이상 없이 에러처리 하며 잘 돌아 갑니다....
:
: 컴퓨터를 처음 키고 디버깅 해본 결과 핸들, 스레드 값 모두 할당되고 있는 상황입니다.... 에러가 있는 것도 아닌데...
:
: 책보고 따라 친 소스라서 틀린 부분이 있거나 부족한 부분이 있으면 수정좀 해주세요 ㅠㅠ
:
: //---------------------------------------------------------------------------------------
: void __fastcall TForm1::Button_ConnectClick(TObject *Sender)
: {
: if((hComm = CreateFile("COM5", GENERIC_READ | GENERIC_WRITE, 0, NULL,
: OPEN_EXISTING, 0, NULL)) == INVALID_HANDLE_VALUE)
: {
: ShowMessage("Error opening COM port");
: return;
: }
:
: GetCommState(hComm, &dcb);
:
: dcb.BaudRate = StrToInt(ComboBox_Rate->Text);
: dcb.ByteSize = 8;
: dcb.Parity = NOPARITY;
: dcb.StopBits = ONE5STOPBITS;
:
: SetCommState(hComm, &dcb);
:
: COMMTIMEOUTS ct;
: GetCommTimeouts(hComm, &ct);
: ct.ReadIntervalTimeout = 100;
: SetCommTimeouts(hComm, &ct);
:
: Reading = TRUE;
: if((hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ReadThread,
: NULL, 0, &id)) == INVALID_HANDLE_VALUE)
: {
: ShowMessage("Error creating READ thread");
: CloseHandle(hComm);
: return;
: }
: }
: //---------------------------------------------------------------------------------------
|