#include //for atof() //#include //for isdigit() #include #include #define RS232putch ToCom2 #define RS232getch ReadCom2 #define Is232 IsCom2 #define RS232putstr ToCom2Str #define Install232 InstallCom2 #define Restore232 RestoreCom2 #define KEY_BS 8 #define KEY_ESC 27 unsigned long far * timetick=(unsigned long far *)0x0040006CL; int X8024(); void menu(); int main() { int quit=0; if(initLCD()>0) Print("\nLCD wrong"); else { clrLCD(); LCDPrintf("\n\r\n\r ICPDAS"); } menu(); Install232(9600L,8,0); while(!quit) { if(Kbhit()) { int key=Getch(); switch(key) { case KEY_F1: X8024();break;//dir case '#' : //quit 7188xlite case '=' : LCDPrintf("\n\rquit");quit=1;break; }//switch }//kbhit }//while loop closeLCD(); Restore232(); return 0; } void wait232(int sec) { unsigned long LatestClick;//record the two sucessive key-in time long s=sec*1000; LatestClick=*timetick; Print("\n\r"); for(;;)//wait for module response complete { if(Is232()) { int data=RS232getch(); if((data!='>')&&(data!=13)) { LCDPrintf("%c",data); Print("%c",data); } LatestClick=*timetick; } if((*timetick-LatestClick)>(s))break; } } int asciitoHEX(char a) { if(a>='A') return (a-'A'+10); else return (a-'0'); } void menu() { clrLCD(); LCDPrintf("F1"); LCDPrintf("\n\rSend D/A value"); } int X8024() { static char command[]="#01S0C0"; char temp[20]; char digit[10]; int i; int quit=0; int j; double value; start: clrLCD(); LCDPrintf("Input D/A Value:"); LCDPrintf("XX.XXX"); LCDPrintf("\n\r->"); for(i=0;i<10;i++) digit[i]=0; for(i=0;i<20;i++) temp[i]=0; i=0; while(!quit) { if(Kbhit()) { char key=Getch(); switch (key) { case KEY_ESC:quit=1;break;//reset case KEY_BS:if(i>0) { backspace(); digit[--i]=0; } break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '.': case '-':if(i<=6) { digit[i++]=key; LCDPrintf("%c",key); } else { digit[i]=0; quit=1; } break; case 13: value=atof(digit); if((value>10.0)||(value<-10.0)) goto start; else { for(i=0;i