//****************************************************************** // MSTEP2 test program // Chi-Mou Chao 3/15/98 //****************************************************************** #include #include #include #include #include #include #include #include "mstep2.h" #define CARD1 0 //-------------define display color for color #define COM_BACK BLUE #define COM_TEXT WHITE #define COM_UP_BACK WHITE #define COM_UP_TEXT BLACK+BLINK #define COM_ON_BACK RED #define COM_ON_TEXT WHITE #define SYS_ON_BACK MAGENTA #define SYS_ON_TEXT WHITE #define SYS_OFF_BACK CYAN #define SYS_OFF_TEXT WHITE #define SCREEN WHITE #define SCREEN_BACK BLUE //-----type definition -------------------------- typedef char string30[30]; typedef struct { int max; string30 name[30]; int x[30],y[30]; } menutype; //-----variable definition----------------------- menutype menu; char screen_buffer[4096]; unsigned char DDA,AD; unsigned int LSP,HSP; unsigned char xmode,ymode; unsigned char xdir,ydir; unsigned char xson,yson; int i,j; //#################################################################### //#################################################################### void unpressed_text(unsigned char x, unsigned char y, string30 show_text) { textbackground(COM_BACK); textcolor(COM_TEXT); gotoxy(x,y); cprintf(show_text); gotoxy(x,y); } //---------------------------------------------------------- void pressed_text(unsigned char x, unsigned char y, string30 show_text) { textbackground(COM_UP_BACK); textcolor(COM_UP_TEXT); gotoxy(x,y); cprintf(show_text); gotoxy(x,y); } //---------------------------------------------------------- void work_text(unsigned char x, unsigned char y, string30 show_text) { textbackground(COM_ON_BACK); textcolor(COM_ON_TEXT); gotoxy(x,y); cprintf(show_text); gotoxy(x,y); } //--------------------------------------------------------- void init_system_display() { //---- print title ------ textbackground(SYS_ON_BACK); textcolor(SYS_ON_TEXT); gotoxy(1,1); cprintf( " 2 Axes Stepping Motor Control Card version 0.9 C.C.M.3/15/98"); window(1,2,27,25); textbackground(SYS_OFF_BACK); textcolor(SYS_OFF_TEXT); clrscr(); //-------- show pannel window(1,1,80,25); textbackground(SYS_ON_BACK); textcolor(SYS_ON_TEXT); gotoxy(1,2); cprintf(" Limit Switch "); gotoxy(1,11); cprintf(" Motion Parameter "); menu.max=23; for (i=0; i<12; i++) { menu.x[i]=30; menu.y[i]=2+i*2; } for (i=12; i<24; i++) { menu.x[i]=55; menu.y[i]=2+(i-12)*2; } strcpy(menu.name[0], " MSTEP2_SET_VAR "); strcpy(menu.name[1], " MSTEP2_SET_MODE "); strcpy(menu.name[2], " MSTEP2_SET_DIRDEF "); strcpy(menu.name[3], " MSTEP2_SET_SERVO_ON "); strcpy(menu.name[4], " MSTEP2_STOP_ALL "); strcpy(menu.name[5], " MSTEP2_RESET_SYSTEM "); strcpy(menu.name[6], " MSTEP2_LSP_ORG "); strcpy(menu.name[7], " MSTEP2_HSP_ORG "); strcpy(menu.name[8], " MSTEP2_HSD_ORG "); strcpy(menu.name[9], " MSTEP2_CSP_MOVE "); strcpy(menu.name[10]," MSTEP2_SLOW_DOWN "); strcpy(menu.name[11]," MSTEP2_SLOW_STOP "); strcpy(menu.name[12]," MSTEP2_LSP_PULSE_MOVE "); strcpy(menu.name[13]," MSTEP2_HSP_PULSE_MOVE "); strcpy(menu.name[14]," MSTEP2_INTP_PULSE "); strcpy(menu.name[15]," MSTEP2_INTP_LINE "); strcpy(menu.name[16]," MSTEP2_INTP_LONG_LINE "); strcpy(menu.name[17]," MSTEP2_INTP_CIRCLE "); strcpy(menu.name[18]," MSTEP2_INTP_ARC "); strcpy(menu.name[19]," MSTEP2_INTP_LINE02 "); strcpy(menu.name[20]," MSTEP2_INTP_CIRCLE02 "); strcpy(menu.name[21]," MSTEP2_INTP_ARC02 "); strcpy(menu.name[22]," User Define Testing "); for (i=0; i=max) c=max-1; ch=fch; textbackground(WHITE); textcolor(BLACK); gotoxy(x,y); for (j=0; jl) c=l; /* right */ if (c>max-1) c=max-1; break; case 0x5300: if (l>0) /* del */ { for (j=c; j12)&(ch1<122)) { if ( c>=strlen(istr)) { istr[c]=ch1; istr[c+1]='\0'; c++; } else { istr[c]=ch1; c++;}; if (c>max-1) c=max-1; } break; } l=strlen(istr); textbackground(7); textcolor(0); gotoxy(x,y); for (j=0; j=menu.max) c -=12; // right break; case 0x4b00 : c -=12; if (c<0) c +=12; // left break; case 0x5000 : c++; if ( c>=menu.max ) c=0; // down break; case 0x4800 : c--; if ( c<0 ) c=menu.max-1; // up break; case 0x1c0d : work_text(menu.x[c], menu.y[c], menu.name[c]); operate_MSTEP2(c); // enter pressed_text(menu.x[c], menu.y[c], menu.name[c]); break; case 0x4100 : //F7 MSTEP2_STOP_ALL(CARD1); break; //******************************************************* default: MSTEP2_STOP_ALL(CARD1); break; } if (c!=oldc) { unpressed_text(menu.x[oldc], menu.y[oldc], menu.name[oldc]); pressed_text(menu.x[c], menu.y[c], menu.name[c]); oldc=c; }; } while (chkey!=0x011b); // ESC MSTEP2_RESET_SYSTEM(CARD1); textbackground(BLACK); clrscr(); gotoxy(1,25); }