====== AN41005 - UIF5K와 연결 ====== (MOACON 사용설명서에 있는 내용입니다.) UIF-5K 는 LCD 디스플레이와 5 개의 버튼을 갖춘 유저인터페이스용 패널입니다. UIF-5K 는 RS232C 로 통신하도록 되어 있습니다. 모아콘의 RS232C 채널 0 을 통해서 UIF-5K 와 연결하실 수 있습니다. {{ :cublocapp:an41005:uif5k.png?nolink |}} 다음과 같이 UIF-5K 와 MSB 시리즈를 연결하여 주십시오. UIF-5K 에는 9V~24VDC 전원을 별도로 연결해야 합니다. {{ :cublocapp:an41005:uif5k_moacon.png?nolink |}} 다음 소스를 실행시키면, UIF-5K 의 LCD 화면에 Comfile 이라는 문자가 표시됩니다. 그리고 버튼을 누르면 해당 버튼의 스캔코드가 LCD 화면에 표시됩니다. #include "moacon500.h" void cmain(void) { clcdUartInit(0); // clcd 를 RS232 0 번채널로 할당 openCom(0,115200,C8N1); // RS232 포트 0 번 오픈 (송신은 표시, 수신은 키입력) clcdPrint(0,0,"Comfile"); // Comfile 이라는 문자를 LCD 상에 표시합니다. while(1){ if (comLen(0)) { // UIF5k 의 아무키나 누르면 한바이트가 수신됩니다. clcdPrint(0,1,"%03d",comGet(0)); //입력된 키 스캔코드값을 화면에 표시합니다. } statusLed(1); // STATUS LED 를 깜박거리게 합니다. (동작유무 확인용) delay(100); statusLed(0); delay(100); } } {{ :cublocapp:an41005:moacon_uif_1.png?nolink |}} 위 소스는 메인루프안에서 항상 키입력이 발생했는지를 검사하는 방식이기 때문에 다소 불편합니다. 다음 소스는 키입력이 발생했을때만 keyInProc( )함수를 수행하도록 한 것입니다. 타이머이벤트를 이용해서 0.5 초마다 키입력 유무를 검사하도록 한 것입니다. #include "moacon500.h" u8 keyPushed=0; void cmain(void) { clcdUartInit(0); // clcd 를 RS232 0 번채널로 할당 delay(500); openCom(0,115200,C8N1); // RS232 포트 0 번 오픈 (송신은 표시, 수신은 키입력) comPut(0,27); // beep sound on comPut(0,90); comPut(0,1); clcdPrint(0,0,"Comfile"); // Comfile 이라는 문자를 LCD 상에 표시합니다. startTimerEvent(500); // 타이머 이벤트의 시작 while(1) { // 무한루프 statusLed(1); // STATUS LED 를 깜박거리게 합니다. (동작유무 확인용) delay(100); statusLed(0); delay(100); } } // 키입력 있을때만 이곳을 실행 void keyInProc(void) { switch(keyPushed) { case 1: clcdPrint(0,1,"Key F1 pushed"); break; case 2: clcdPrint(0,1,"Key F2 pushed"); break; case 3: clcdPrint(0,1,"Key F3 pushed"); break; case 4: clcdPrint(0,1,"Key F4 pushed"); break; case 5: clcdPrint(0,1,"Key F5 pushed"); } } // 0.5 초마다 이곳으로 옵니다. void timerEvent(void) { if (comLen(0)) { // UIF5k 의 아무키나 누르면 한바이트가 수신됩니다. keyPushed = comGet(0); keyInProc(); } }