#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]; char cCmd1[100],cCmd2[100],cCmd3[100]; /* ---- main ------------------------------------------------------------- */ main() { char cChar; iComPort=1; iChksum=0; lBaudRate=9600L; OPEN_COM(iComPort,lBaudRate); /* default COM1, baud rate=9600 */ printf("\nSend Power-on Initialization Command to All PLC\n"); strcpy(cCmd1,"@**"); send_command(cCmd1,cCmd2,0); for(;;) { printf("\n************** PLC Networking ***********************"); show_status(); printf("\n* 0 : init *"); printf("\n* 1 : send command test *"); printf("\n* 2 : to plc1 test *"); printf("\n* 3 : to plc2 test *"); printf("\n* 4 : to plc3 test *"); printf("\n* Q : quit *"); printf("\n*************** Press Keyword ***********************"); printf("\n"); cChar=getche(); switch (cChar) { case '0': init(); break; case '1': printf(" --> (2):send_command\n"); printf("cmd="); scanf("%s",cCmd1); send_command(cCmd1,cCmd2,1); break; case '2': to_plc1(); break; case '3': to_plc2(); break; case '4': to_plc3(); break; case 'q': case 'Q': goto ret_label; default : printf(" --> Error Keyword"); break; } } ret_label: printf("\n************** PLC Networking ***********************"); } /* ---- show status ------------------------------------------------------ */ show_status() { printf("\n* STATUS : COM=%d,",iComPort); printf("Baud_Rate=%5ld ",lBaudRate); printf(" *"); printf("\n*---------------------------------------------------*"); } /* ---- function 0 ------------------------------------------------------- */ init() { int iRet,iPort; printf(" --> (0):init\n"); printf("port (1/2/3/4)="); scanf("%d",&iPort); printf("baud rate(1200/2400/4800/9600/19200/38400/57600/115200)="); scanf("%ld",&lBaudRate); printf("chksum (0=DISABLE,others=ENABLE)="); scanf("%d",&iChksum); iRet=OPEN_COM(iPort,lBaudRate); if (iRet==0) {printf("--> OK"); iComPort=iPort;} else if (iRet==1) printf("--> port error"); else if (iRet==2) printf("--> baudrate error"); } /* ---- function 1 ------------------------------------------------------- */ /* chksum=0 --> no add FCS =1 --> add FCS */ send_command(char cmd[], char result[], int chksum) { int iRet, iLen; if (chksum==1) add_FCS(cmd); SEND_CMD(iComPort,cmd,TIMEOUT,0); iRet=RECEIVE_CMD(iComPort, result, TIMEOUT,0); iLen=strlen(cmd); cmd[iLen-1]=0; printf("Send=%s",cmd); if (chksum==1) { 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"); } printf("\n"); } add_FCS(char *td) { int len, i; char aa[3]; unsigned int a; len = strlen(td); a = td[0]; for (i=1; i