|
일단 상황 설명부터 말씀드리자면..
하나의 예제 프로그램 소스가 있습니다..
장비를 써서 컴포트 통신을 하는 소스인데.. 시리얼 통신을 위해서 cport 컴퍼넌트를 사용했다고 합니다.
헌데 cport 컴퍼넌트 없이 api함수로 설정하여 똑같은 기능을 하고 싶습니다.
덧붙여 말씀 드리자면.. cport컴포넌트를 설치하지? 라는 의문을 갖으실수 있지만..
원론적으로 cport 컴포넌트 설치에서 자꾸 에러가 발생합니다..
조회해서 따라할만큼 했지만.. 설치 실패...
질문에 답변이 있었으면 합니다.
아래는 comport 설정 예문입니다.. 추가할부분과 설정할 부분을 고쳐 주시면 감사하겠습니다.
데이터 검출이나 이상유무 가 문제가 아니라.. 포트로 데이터값이 날라오는것만 확인 되면 됩니다..
//=======================================================================================
HANDLE hFile;
DCB dcb;
DWORD dwWritten;
DWORD nBytesRead;
OVERLAPPED ol;
bool bResult;
COMMTIMEOUTS to;
COMMPROP cp;
char inBuffer;
int cnt,idx,flag,i;
char BUF3[2],BUF2[256]={""},BUF[256]={""};
char LRC = 0x00,ch = 0x00;
//======================================================================
// 핸들 오픈 하기.
//======================================================================
hFile = CreateFile ("COM1",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL);
dcb.DCBlength = sizeof (DCB);
GetCommState (hFile,&dcb);
dcb.BaudRate =CBR_9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.fBinary = TRUE;
dcb.fParity = TRUE;
if(!SetCommState(hFile, &dcb ))
{
CloseHandle(hFile);
MSG->Caption = "단말기를 체크하시고 다시 시작하십시요.";
return;
}
//======================================================================
// 컴포트를 지연 시간 등을 설정하는 부분
//======================================================================
cp.wPacketLength = sizeof(COMMPROP);
GetCommProperties(hFile,&cp);
if(!(cp.dwProvCapabilities & PCF_INTTIMEOUTS)) return;
memset(&to , 0 ,sizeof(to));
//to.ReadTotalTimeoutConstant = 20000;
//to.ReadIntervalTimeout = 20000;
SetCommTimeouts(hFile,&to);
SetCommState(hFile,&dcb);
|