2017년 2월 8일

MSCOMM32.ocx 를 이용한 시리얼 통신 방법

C++ 기반의 프로그램 개발중 시리얼통신(RS-232 등) 이 필요한 경우 다양한 컴포넌트를 사용하기도 하지만, 이번에는 MS 에서 오래전에 개발하여 제공하는 OCX(COM 컴포넌트) 를 사용하는 방법에 대해 알아보겠습니다.

1. 우선 MSCOMM32.ocx 를 인터넷 검색등을 통해 구해야 합니다.

다음과 같이 OCX를 레지스트리에 등록합니다.

c:\ ... > copy mscomm32.ocx c:\windows\system32\mscomm32.ocx
c:\ ... > regsvr32 /s c:\windows\system32\mscomm32.ocx




해당 ocx 를 사용하려면 활성화( MS 사의 프로그램 개발툴이 미설치되어 있으면 사용이 불가하다고 합니다?)를 시켜주어야 하는데, 인터넷을 검색하여 보니 특정한 레지스트리 키를 만들어 생성시키면 가능하다고 합니다.

REGEDIT4
[HKEY_CLASSES_ROOT\Licenses\4250E830-6AC2-11cf-8ADB-00AA00C00905]
@ = "kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun"


위 내용을 a.reg 라는 파일로 만들고

c:\...> regedit /s a.reg

콘솔 명령을 통해 활성화가 가능합니다.


2. ocx 에서 type library 를 추출한다.

C++ 빌더 개발환경에서 typelib 등을 추출합니다. (implib.exe 유틸을 사용해도 가능)
그렇게 하면, MSCommLib_OCX.cpp / MSCommLib_TLB.cpp 등의 파일이 추출됩니다.


3. 마지막으로는 통신이 필요한 곳에서 다음과 같이 COM 오브젝트를 생성하여 사용합니다.

TMSComm* pSerial = NULL;
pSerial = new TMSComm(this);

pSerial->CommPort = 1;
pSerial->Settings = "9600,N,8,1";
pSerial->OnComm = this->OnCommEvent;
pSerial->PortOpen = true;
pSerial->Output = "YourSendMessage\r";

위에서 OnCommEvent 이벤트 핸들러는 데이타 수신시 Notify 되는 콜백함수이므로 미리 구현해 놓고 pSerial->Input 으로 수신데이타를 처리합니다.




댓글 없음:

댓글 쓰기

시리우스 라이브러리 홈페이지 오픈

현재 시리우스(Sirius) 라이브러리라는 제품을 개발하고 이를 소개하는 홈페이지를 오픈 하였습니다. 관심있는 분들의 많은 방문 요청드립니다. 앞으로 업데이트 소식및 변경사항은 스파이럴랩 홈페이지를 통해 진행할 예정입니다. 스파이럴랩 홈페이지 :  h...