====== 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();
}
}