|
안녕하세요~~~
혼자서 고민하고 또 고민하다 이렇게 도움을 요청해 봅니다....
다름이 아니라 제가 시리얼 통신 프로그램을 만들고 있는데 아무 문제 없이 잘됩니다...
다만 컴퓨터를 껏다가 킨다던지, 재부팅, 대기모드 등.... 컴퓨터를 다시 시작 했을 때는
항상 통신 연결이 안된다는 것입니다....
그럼 어떻게 통신이 되느냐... 그건 인터넷에서 떠돌고 있는 시리얼 통신 프로그램을 받아서
통신 연결을 한번 하고 나면 그 다음부터는 컴퓨터를 끄기 전까진 아무 이상 없이 통신이 잘됩니다...
기기 전원을 꺼도, 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;
}
}
//---------------------------------------------------------------------------------------
|