|
검색을 먼저해보세요.
시리얼 직접제어부분에 대한건 자료가 많이 공개되어 있습니다.
자료실에만 찾아봐도 쓸만한 것들이 몇가지 있고요.
책으로는.. 이상엽의 Visual C++ 6.0 Bible(?)을 참고하셔도 됩니다.
물론 Visual C++ 책이긴 하지만..거의 대부분이 API이므로 빌더에서도
크게 다르지 않습니다.
수빈 님이 쓰신 글 :
: 일단 상황 설명부터 말씀드리자면..
: 하나의 예제 프로그램 소스가 있습니다..
: 장비를 써서 컴포트 통신을 하는 소스인데.. 시리얼 통신을 위해서 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);
|