home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_200 / 214_01 / chronor.c < prev    next >
Text File  |  1979-12-31  |  5KB  |  236 lines

  1. /* CHRONOR.C    VERS:- 01.00  DATE:- 09/26/86  TIME:- 09:36:16 PM */
  2. /*
  3. %CC1 $1.C -X 
  4. %CLINK $1 -S
  5. %DELETE $1.CRL 
  6. */
  7. /* 
  8. Description:  
  9.  
  10. Read Hayes Chronograph, as device PUN:/RDR:; return strings
  11. for time, date, day of week, month, and displayable summary of these data.
  12. Also, a logon header message.  
  13.  
  14. See arrays defined as externals below.
  15.  
  16. This program tests functions that might be incorporated into other programs.
  17.  
  18. By J. A. Rupley, Tucson, Arizona
  19. Coded for the BDS C Compiler, version 1.50a
  20. */
  21.  
  22. #include "jario.h"
  23. #include "bdscio.h"
  24.  
  25. #define PUNCH 6
  26. #define READER 7
  27. #define CR 0x0d
  28.  
  29. char time[12];
  30. char date[9];
  31. char day[10];
  32. char month[20];
  33. char date_mes[80];
  34. char log_mes[80];
  35.  
  36. char weekday[8][10];
  37. char year_month[13][10];
  38.  
  39.  
  40. /* Fill time and date strings        */
  41. main(argc, argv)
  42. int argc;
  43. char **argv;
  44. {
  45.     strcpy(time, "hh:mm:ss XM");
  46.     strcpy(date, "mm/dd/yy");
  47.     strcpy(day, "Wednesday");
  48.     strcpy(month, "September");
  49.  
  50.     strcpy(weekday[0], "Monday");
  51.     strcpy(weekday[1], "Tuesday");
  52.     strcpy(weekday[2], "Wednesday");
  53.     strcpy(weekday[3], "Thursday");
  54.     strcpy(weekday[4], "Friday");
  55.     strcpy(weekday[5], "Saturday");
  56.     strcpy(weekday[6], "Sunday");
  57.     strcpy(weekday[7], "Illegal");
  58.  
  59.     strcpy(year_month[0], "Illegal");
  60.     strcpy(year_month[1], "January");
  61.     strcpy(year_month[2], "February");
  62.     strcpy(year_month[3], "March");
  63.     strcpy(year_month[4], "April");
  64.     strcpy(year_month[5], "May");
  65.     strcpy(year_month[6], "June");
  66.     strcpy(year_month[7], "July");
  67.     strcpy(year_month[8], "August");
  68.     strcpy(year_month[9], "September");
  69.     strcpy(year_month[10], "October");
  70.     strcpy(year_month[11], "November");
  71.     strcpy(year_month[12], "December");
  72.  
  73.     set_time();
  74.     printf("\ntime = %s\n", time);
  75.  
  76.     date_set();
  77.     printf("\ndate = %s\n", date);
  78.  
  79.     day_set();
  80.     printf("\nday = %s\n", day);
  81.  
  82.     set_month();
  83.     printf("\nmonth = %s\n", month);
  84.  
  85.     mes_set();
  86.     printf("\nmessage = %s\n", date_mes);
  87.  
  88.     set_log();
  89.     printf("\nlog message = %s\n", log_mes);
  90.  
  91. }
  92. /* END OF MAIN                */
  93.  
  94.  
  95. /* Fill time string            */
  96. int set_time()
  97. {
  98.     char clock_in[12];
  99.     int i, j;
  100.  
  101.     hayes_chrono("RT\r", clock_in);
  102.     /* Clock_in gives hhmmss x    */
  103.     /* Convert to     hh:mm:ss: xm    */
  104.     for (j = 0, i = 0; clock_in[i] != NULL; j++, i++)
  105.     {
  106.         if (i == 2 || i == 4 || i == 6)
  107.             j++;
  108.         time[j] = clock_in[i];
  109.     }
  110.     return;
  111. }
  112. /*END OF SET_TIME            */
  113.  
  114.  
  115. /* Fill date string            */
  116. int date_set()
  117. {
  118.     char clock_in[12];
  119.     int i, j;
  120.  
  121.     hayes_chrono("RD\r", clock_in);
  122.     /* Clock_in gives yymmdd    */
  123.     /* Convert to     mm/dd/yy    */
  124.     for (j = 6, i = 0; clock_in[i] != NULL; j++, i++)
  125.     {
  126.         if (j == 8)
  127.             j = 0;
  128.         if (i == 4)
  129.             j++;
  130.         date[j] = clock_in[i];
  131.     }
  132.  
  133.     return;
  134. }
  135. /*END OF DATE_SET            */
  136.  
  137.  
  138. /* Fill day string            */
  139. int day_set()
  140. {
  141.     /* Clock_in gives  d = acsii #    */
  142.     /* Convert to int ptr to string    */
  143.     /* Monday is  d = '0'        */
  144.     char clock_in[12];
  145.     int i;
  146.  
  147.     hayes_chrono("RW\r", clock_in);
  148.     i = atoi(clock_in);
  149.     if (i < 0 || i > 6)
  150.         i = 7;
  151.     strcpy(day, weekday[i]);
  152.     return;
  153. }
  154. /*END OF DAY_SET            */
  155.  
  156.  
  157. /* Fill month string            */
  158. int set_month()
  159. {
  160.     char c[20];
  161.     int i;
  162.  
  163.     strcpy(c, date);
  164.     c[3] = '\0';
  165.     i = atoi(c);
  166.     if (i < 1 || i > 12)
  167.         i = 0;
  168.     strcpy(month, year_month[i]);
  169.     return;
  170. }
  171. /*END OF SET_MONTH            */
  172.  
  173.  
  174. /* Fill message string            */
  175. int mes_set()
  176. {
  177.     char c[20];
  178.  
  179.     strcpy(date_mes, time);
  180.     strcat(date_mes, "  on ");
  181.     strcat(date_mes, day);
  182.     strcat(date_mes, " ");
  183.     strcat(date_mes, month);
  184.     strcat(date_mes, " ");
  185.     strcpy(c, &date[3]);
  186.     c[2] = '\0';
  187.     strcat(date_mes, c);
  188.     strcat(date_mes, ", 19");
  189.     strcpy(c, &date[6]);
  190.     c[2] = '\0';
  191.     strcat(date_mes, c);
  192.     return;
  193. }
  194. /*END OF SET_MES            */
  195.  
  196.  
  197. /* Fill logon string            */
  198. int set_log()
  199. {
  200.     strcpy(log_mes, "LOGON     DATE:- ");
  201.     strcat(log_mes, date);
  202.     strcat(log_mes, "  TIME:- ");
  203.     strcat(log_mes, time);
  204.     return;
  205. }
  206. /*END OF SET_LOG            */
  207.  
  208.  
  209. /* Send command to clock 
  210.                     and return with string        */
  211. int hayes_chrono(command, buffer)
  212. char *command, *buffer;
  213. {
  214.     char temp[12];
  215.     int i;
  216.  
  217.     strcpy(temp, "AT");
  218.     strcat(temp, command);        /* Form command            */
  219.  
  220.     for (i = 0; temp[i] != NULL; i++)
  221.         bios(PUNCH, temp[i]);        /* Use direct bios call        */
  222.  
  223.     for (i = 0; i <= 11; i++)
  224.     {
  225.         temp[i] = bios(READER, 0);
  226.         if (temp[i] == CR)
  227.             break;
  228.     }
  229.     temp[i] = '\0';
  230.  
  231.     strcpy(buffer, temp);
  232.     printf("\nbuffer = %s", buffer);
  233.     return;
  234. }
  235. /* END OF HAYES_CHRONO            */
  236.