/* ========================================================================== */ /* */ /* ts7065d3.c */ /* (c) 2006 Eva Li */ /* */ /* Description */ /* */ /* ========================================================================== */ #include #include void main() { int port=2; int x, y,i,j=0,n,c,check,color=1,coloro=0; int quit=0,Dotemp; int DiCT[4] = {1, 2, 4, 8}; int DoCT[5]= {1,2,4,8,16},doON[5]={0,0,0,0,0}; char diR[6], tt; char doT[7]="@0100\r"; InitLib(); InitLCD(); //draw manu Line(12,28,118,28,1); Box( 12,12,118,44,1); SetCursorLine(2); SetCursorAt(7, 5); GetCursorAt(&x, &y); TextOutAt(1,1, "i-7065D q:quit"); TextOutAt(3,3, "Di:"); TextOutAt(3,5, "Do:"); TextOutAt(1,7, " >:right ^:on"); TextOutAt(1,8, " <:left v:off"); for (i=0;i<4;i++) lamp(7+i,3,color); for(i=0;i<5;i++) lamp(7+i,5,coloro); InstallCom(port,115200L,8,0,1); ClearCom(port); SendCmdTo7000(port, "@0100",0); //send Do all off command ClearCom(port); SendCmdTo7000(port, "@01",0); //send Di read command //show Di while(!quit) { while (IsCom(port) ) { tt=ReadCom(port); if(tt == '>' || diR[0] =='>' ) { if(tt=='>') j=0; diR[j]=tt; j++; if (tt == 0x0D && j==6) { n=ascii_to_hex(diR[4]); for(i=0;i<4;i++) { check=n & DiCT[i]; if (check==0) color=0; else color=1; lamp(7+i,3,color); }//end Di lamp draw ClearCom(port); SendCmdTo7000(port, "@01",0); }//end if 0xd }//end if Di right else { ClearCom(port); Print("Di wrong rspns '%c' or too long(%d rspns)\r\n",tt,j); Print("Do you want to quit"); Getch(); quit=1; } }//end (IsCom()) //control Do if(Kbhit()) { c=Getch(); if(c=='Q'||c=='q') quit=1; else { Print("c=%d \r\n",c); if(c==137 && x<11) {x++; SetCursorAt(x,y);} //right key if(c==138 && x>7) {x--; SetCursorAt(x,y);} //left key if(c==140||c==139) //Up key or down key, Do ON/OFF { if(c==140) coloro=1; else coloro=0; lamp(x,y,coloro); doON[4-(x-7)]=coloro; Dotemp=0; for(i=0;i<5;i++) Dotemp=DoCT[i]*doON[4-i]+Dotemp; Print("Dotemp=%d \r\n",Dotemp); if (Dotemp<16) { doT[3]='0'; doT[4]=hex_to_ascii[Dotemp]; } else { doT[3]='1'; doT[4]=hex_to_ascii[Dotemp-16]; } ClearCom(port); for (i=0;i<6;i++) { ToCom(port,doT[i]); Print("do= %c \r\n", doT[i]); } ClearCom(port); SendCmdTo7000(port, "@01",0); }//end if up & down Key }// if quit!=1 }//end if Kbhit() }//while loop ClrScrn(); CloseLCD(); }