/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .COPYRIGHT (c) 1994 European Southern Observatory .IDENT myclient.c .LANGUAGE C .AUTHOR K. Banse ESO - Garching .KEYWORDS Midas client, communication .PURPOSE Communicate with a Midas server (background Midas) which is running on the same or different host .VERSION 1.00 941020: First version ---------------------------------------------------------------------*/ main() { int id, stat, n; int noelm, retstat[2], kk, jj, iwa[3], ibuf[80]; int felem, maxvals, actvals, unit, nullo, kstat; register int nr; float rwa[3], rbuf[80]; double dwa[3], dbuf[80]; char metho, munit[4], kline[120], cbuf[80], remo[64]; id = -1; input_loop: if (id == -1) { printf("Options are:\n"); printf("os XY = open socket communication with Midas unit XY\n"); printf("of XY = open ASCII file based comm. with Midas unit XY\n"); printf("is XY = start Midas unit XY + open socket communication\n"); printf("if XY = start Midas unit XY + open ASCII file based comm.\n"); printf("h = display help text, q = quit the test program\n"); } printf("option > "); gets(kline); while (kline[0] == ' ') strcpy(kline,&kline[1]); if (kline[0] == '\0') /* empty line */ goto input_loop; else if (kline[0] == 'q') return(0); else if (kline[0] == 'h') { printf("Options are:\n"); printf("h = display help text, q = quit the test program\n"); printf("c `secs' = send Midas command + wait for `secs'\n"); printf("w = wait for last command, s = get status\n"); printf ("x = close client connection, xx = as `x' but also terminate Midas server\n"); } else if (kline[0] == 'i') { munit[0] = kline[3]; munit[1] = kline[4]; if (kline[1] == 's') /* sockets */ { metho = 'X'; stat = XCXINI(munit,"",10,&id); /* wait max. 10 seconds */ } else /* files */ { metho = 'Z'; stat = XCZINI(munit,"QX","",10,&id); } printf("XC%cINI, status = %d\n",metho,stat); } else if (kline[0] == 'o') /* test XCXOPN or XCZOPN */ { munit[0] = kline[3]; munit[1] = kline[4]; if (kline[1] == 's') /* sockets */ { metho = 'X'; stat = XCXOPN(munit,"",&id); } else /* files */ { metho = 'Z'; stat = XCZOPN(munit,"QX","",&id); } printf("XC%cOPN, status = %d\n",metho,stat); } else if (kline[0] == 'x') /* test XCXCLO or XCXSTP */ { if (kline[1] == 'x') /* also shut down server */ { stat = XCXSTP(id); printf("XCXSTP, status = %d\n",stat); } else { stat = XCXCLO(id); printf("XCXCLO, status = %d\n",stat); } id = -1; } else if (kline[0] == 'c') /* test XCCSND */ { n = CGN_CNVT(&kline[2],1,1,iwa,rwa,dwa); /* Midas conv. routine */ if (n<1) iwa[0] = -1; /* that means No Wait */ printf("Enter Midas command: "); gets(kline); stat = XCCSND(id,kline,iwa[0],retstat); if (stat != 0) printf("XCCSND, status = %d\n",stat); else printf("background Midas returned status = %d\n",retstat[0]); } else if (kline[0] == 'w') /* test XCCWAI */ { stat = XCCWAI(id,retstat); if (stat != 0) printf("XCCWAI, status = %d\n",stat); else printf("background Midas returned status = %d\n",retstat[0]); } else if (kline[0] == 's') /* test XCXSTA */ { stat = XCXSTA(id); if (stat == 0) printf("background Midas %c%c idle\n",munit[0],munit[1]); else if (stat == 1) printf("background Midas %c%c busy\n",munit[0],munit[1]); else printf("XCXSTA, status = %d\n",stat); } else printf("unknown command...\n"); goto input_loop; /* get next input */ }
=1 =11 =1992