/* 24.7.1999 Der Rückgabe-String des DMM wird nicht mehr mit sscanf bearbeitet, weil 
             der String bei manchen Geräten (M-4650 CR) nicht mehr aufsplittbar war.
             Jetzt wird nur noch der Meßwert extrahiert (3.-10. Stelle) und dieser 
             so wie er ist in das Outputfile geschrieben.

             Wichtig: Geräte mit einer Übertragungsgeschwindigkeit von 600 Baud oder
                      kleiner, vertragen nur alle 2 oder mehr Sekunden eine Abfrage!

             Programm ist mit folgenden VOLTCRAFT Geräten getestet: M-3850D
                                                                    ME-32
                                                                    M-4650 CR (Thanks to Robert JÖrdens)

             Feedback und Verbesserungsvoschläge an andreas@abluecher.de

             Download: www.abluecher.de */

#include <stdio.h>
#include <time.h>
#include "messlib.h"


void main(int argc, char *argv[])
{
  char dmm_string[14];
  int dmm_fd;
  FILE *out_fd;
  int zaehler=0;
  time_t anfang,jetzt;
  char * wert;

  if(argc!=6){
    fprintf(stdout,"usage: messung  port baudrate delta_time number output_filename\n");
    fprintf(stdout,"\n\n");
    fprintf(stdout,"	port           =/dev/ttySX\n");
    fprintf(stdout,"	baudrate       =Übertragungsgeschwindigkeit\n");    
    fprintf(stdout,"	delta_time     =Zeit zwischen zwei Messungen\n");
    fprintf(stdout,"	number         =Anzahl der Messungen\n");
    fprintf(stdout,"	output_filename=Name des Output-Files\n");
    fprintf(stdout,"\n\n");
    fprintf(stdout,"EXAMPLE: messung /dev/ttyS2 1200 10 20 messung.out\n");
    exit();
  }  
 
  fprintf(stdout,"Öffne DMM-Port %s mit Übertragungsgeschwindigkeit %s .\n",argv[1],argv[2]);
  if((dmm_fd=init_dmm(argv[1],atoi(argv[2])))<1){
    fprintf(stderr,"Fehler beim Initialisieren von %s !\n",argv[1]);
    exit();
  }
  time(&anfang);
  while(zaehler++<atoi(argv[4])){
    if(read_dmm(dmm_fd,dmm_string)==1){
      time(&jetzt);
      dmm_string[9]='\0';
      wert=&dmm_string[2];
      if(!(out_fd=fopen(argv[5],"a+"))){
        fprintf(stdout,"Outputfile  %s kann nicht geöffnet werden! \n",argv[5]);
        exit();
      }
      fprintf(out_fd,"%4d %s\n",jetzt-anfang,wert);
      fclose(out_fd);
      fprintf(stdout,"%4d %s\n",jetzt-anfang,wert);
      sleep(atoi(argv[3]));
    }
    else{
      fprintf(stderr,"Fehler beim Lesen von %s !\n",argv[1]);
    }
  }
  close_dmm(dmm_fd);
}
  
