#include #include #include "..\lib\7188.h" char cHI,cLO; void compute_chksum(char cBuf[]); int chk_chksum(char cBuf[]); char HexToAscii(int iHex); /* ----------------------------------------------------------------------- */ /* return : 0 --> OK 1 --> port value error 2 --> timeout */ int SendCmdToHitech(int iPort, char cCmd[], int iChksum) { int i,ret; long t; switch(iPort) { case 1 : case 3 : case 4 : break; default: return -1; /* port must 1/3/4 */ } if (iChksum!=0) compute_chksum(cCmd); /* compute chksum */ i=0; while (cCmd[i]!=NULL) { ToCom(iPort,cCmd[i]); i++; } if (iChksum!=0) { ToCom(iPort,cHI); ToCom(iPort,cLO); } ToCom(iPort,0x0d); /* send out 0x0D */ return(0); } /* ----------------------------------------------------------------------- */ /* return : 0 --> OK 1 --> port value error 2 --> timeout 3 --> chksum error */ int ReceiveResponseFromHitech(int iPort, char cCmd[], long lTimeout, int iChksum) { int i; char c; long t; switch(iPort) { case 1 : case 3 : case 4 : break; default: return -1; /* port must 1/3/4 */ } i=0; t=0; for(;;) { while(IsCom(iPort)==0) /* wait response */ { t++; if (t>lTimeout) return -2; /* time_out */ } c=ReadCom(iPort); /* receive next char */ if (c==0x0d) break; /* receive 0x0d --> end of command */ else cCmd[i]=c; /* store the command */ i++; /* next char */ if (i>79) { cCmd[i]=0; /* string must terminate with 0 */ break; } t=0; /* reset timer */ } cCmd[i]=0; /* string must terminate with 0 */ if (iChksum!=0) return chk_chksum(cCmd); else return 0; } /* ----------------------------------------------------------------------- */ void compute_chksum(char cBuf[]) { unsigned int i,j,len,sum; len=strlen(cBuf); j=len; sum=0; for (i=0; i chksum error 0 --> OK */ int chk_chksum(char cBuf[]) { unsigned int i,len,sum; char h,l; len=strlen(cBuf); sum=0; for (i=0; i