#include "uart.h" FILE *stream; #define TIMEOUT 60000L int iComPort,iChksum,ADDRESS; long int lBaudRate; float ok_count[256],err_count[256]; char cmd[80],result[80]; /* ---- main ------------------------------------------------------------- */ main() { char cChar; load_addr(); iComPort=1; iChksum=0; lBaudRate=9600L; OPEN_COM(iComPort,lBaudRate); /* default */ if (ADDRESS==0) printf("\nThis is a Master_PC"); else printf("\nThis is a Remote PC, Address=%d\n",ADDRESS); if (ADDRESS==0) is_master(); else is_remote(); } /* --------------------------------------------------------------------- */ load_addr() { FILE *stream; int wRetVal; /* ADDRESS = 0 --> Master PC 1 --> Remote PC-1 2 --> Remote PC-2 n --> Remote PC-n */ stream=fopen("ADDR.DAT","r"); if (stream) { fscanf(stream,"%d",&ADDRESS); fclose(stream); printf("\nLOAD ADDR.DAT OK"); printf("\nADDRESS=%d",ADDRESS); } else printf("\nOPEN ISODA.DAT ERROR"); } /* --------------------------------------------------------------------- */ is_master() { int iRet; for (;;) { printf("\nCommand="); scanf("%s",cmd); SEND_CMD(iComPort,cmd,TIMEOUT,iChksum); if ((cmd[0]=='q') || (cmd[0]=='Q')) return; iRet=RECEIVE_CMD(iComPort, result, TIMEOUT,iChksum); if (iRet==0) printf("Receive=%s",result); else if (iRet==1) printf("Receive=com value error (must 1/2/3/4)"); else if (iRet==2) printf("Receive=Timeout"); else if (iRet==3) printf("Receive=chksum error"); } } /* --------------------------------------------------------------------- */ is_remote() { int iRet,addr,i,j,k; for (;;) { iRet=IS_DATA(iComPort); if (iRet!=0) { iRet=RECEIVE_CMD(iComPort, result, TIMEOUT,iChksum); if (iRet==0) printf("Receive=%s",result); else if (iRet==1) printf("Receive=com value error (must 1/2/3/4)"); else if (iRet==2) printf("Receive=Timeout"); else if (iRet==3) printf("Receive=chksum error"); if (result[0] != '&') { printf(" --> Receive a Error Comand\n"); } else { i=convert_addr(result[1]); j=convert_addr(result[2]); k=convert_addr(result[3]); addr=i*256+j*16+k; if (ADDRESS == addr) { printf(" --> this is my command\n"); sprintf(cmd,"Echo from remote_PC_%d",ADDRESS); SEND_CMD(iComPort,cmd,TIMEOUT,iChksum); } } } if (kbhit()!=0) {getch(); exit(0);} } } convert_addr(char c) { switch(c) { case '0' : return(0); case '1' : return(1); case '2' : return(2); case '3' : return(3); case '4' : return(4); case '5' : return(5); case '6' : return(6); case '7' : return(7); case '8' : return(8); case '9' : return(9); case 'A' : return(10); case 'B' : return(11); case 'C' : return(12); case 'D' : return(13); case 'E' : return(14); case 'F' : return(15); } }