#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(); int X87017(); int X87064(); int X87054(); 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 KEY_F2: X87017();break;//set file name for auto download case KEY_F3: X87064();break;//Send command "RUN", for run the last file in flash case KEY_F4: X87054();break;//auto RUN 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"); LCDPrintf("\n\rF2"); LCDPrintf("\n\rRead A/D value"); LCDPrintf("\n\rF3"); LCDPrintf("\n\rSend Realy DO"); LCDPrintf("\n\rF4"); LCDPrintf("\n\rSnd DO & Red DI"); } 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"); wait232(3); LCDPrintf("...Press any key to continue..."); Getch(); menu(); return 0; } int X87064() { static char command[]="@01700"; char temp[20]; char digit[3]; char value; int i; int quit=0; astart: for(i=0;i<3;i++) digit[i]=0; for(i=0;i<20;i++) temp[i]=0; clrLCD(); LCDPrintf("Send DO data:XX"); LCDPrintf("\n\r->"); 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 'A': case 'B': case 'C': case 'D': case 'E': case 'F': if(i<=1) { digit[i++]=key; LCDPrintf("%c",key); } else//i>=2 { digit[2]=0; } break; case 13: // asciitoHEX(digit[0])*16+asciitoHEX(digit[1]); for(i=0;i"); 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 'A': case 'B': case 'C': case 'D': case 'E': case 'F': if(i<=1) { digit[i++]=key; LCDPrintf("%c",key); } else//i>=2 { digit[2]=0; } break; case 13: // asciitoHEX(digit[0])*16+asciitoHEX(digit[1]); for(i=0;i"); Print("\n\r"); RS232putstr("@01701");RS232putch(13); //DelayMs(10); //////////////// readdi(); /////////////// //wait232(3); LCDPrintf("\n\r...Press any key to continue..."); Getch(); menu(); return 0; } void readdi() { unsigned long LatestClick;//record the two sucessive key-in time int data=0; int i; char de[10]; Print("="); DelayMs(100); // LatestClick=*timetick; asd: for(i=0;;)//wait for module response complete { if(Is232()) { data=RS232getch(); if(i>=1) { i++; if(i>3)LCDPrintf("%c",data); } if(data=='>')i=1; LatestClick=*timetick; } if((*timetick-LatestClick)>(2000L))break; } end: /* de[i]=0; Print("\n\ri=%d",i); for(i=0;de[i]!=0;i++) Print("\n\r%c",de); Print("\n\r%s",de); */ }