Subversion Repositories f9daq

Rev

Blame | Last modification | View Log | RSS feed

#include <utility.h>
#include <rs232.h>
#include <ansi_c.h>
#include <cvirte.h>            
#include <userint.h>
#include <hm7044.h>          



/*
linuxs
root: trenutna konfiguracija

 setserial -G /dev/ttyS0
root: nastavitev konfiguracij
# setserial /dev/ttyS0  baud_base 9600 spd_normal skip_test
 stty 9600 cs8 -parenb -cstopb crtscts -echo -F /dev/ttyS0
*/



char gresult[MAX_CMD] ;
static int comport=1 ;
   


int HM7044_Open(int port){
 int rs232er;  

 comport=port;
 rs232er = OpenComConfig (comport, "", 9600, 0, 8, 1, 512, 512);
 return  rs232er;  
}

int HM7044_Close(void){
 int rs232er;  
 rs232er = CloseCom(comport);
 return  rs232er;  
}




static int com_send ( char* cmd ) {
  char str1[1024] ;
  int err;  
  sprintf ( str1, "%s\r", cmd ) ;
 
  err = ComWrt (comport, str1, strlen(str1));
  fprintf ( stdout, "Command: %s \t", cmd ) ;
  //printf("%d bytes written: %s\n",err,str1);
  return err;
 
}

static int com_read ( char* result ) {
  int err;
   int nbytes=1024;
   int maxsize=nbytes;
   result[0]=0;
   err = ComRdTerm (comport, result, nbytes,13);
   //CR=13
   if (err>0 && err>=maxsize) result[maxsize-1]=0;
   if (err>0 && err<maxsize) result[err]=0;
   //printf("%d bytes read=> #%s#\n\t",err,result);
   return err;
   
 
}


int HM7044_SendCmd ( char* cmd, char* result )
{
  com_send ( cmd ) ;
  if ( com_read ( result ) ) {
    printf ( "answer: %s\n", result ) ;
    return 0 ;
  }
  else {
    printf ( "\nanswer: error\n" ) ;
    return 1 ;
  }
}  


static int send_int( char* cmd,int val, char* result ) {
  char cmd1[MAX_CMD];
  sprintf(cmd1,"%s %d",cmd,val);
  return HM7044_SendCmd(cmd1,result);
}

static int send_float( char* cmd,float val, char* result ) {
  char cmd1[MAX_CMD];
  sprintf(cmd1,"%s %f",cmd,val);
  return HM7044_SendCmd(cmd1,result);
}

int HM7044_SetVoltage(int ch, float value){
 char cmd[MAX_CMD];
 send_int("SEL",ch, gresult);
 
 sprintf(cmd,"SET %4.2f V",value);
 HM7044_SendCmd(cmd, gresult);
 
 HM7044_SendCmd("SEL NONE", gresult);
 return 0;
 
}

int HM7044_SetCurrent(int ch, float value){
 char cmd[MAX_CMD];
 send_int("SEL",ch, gresult);
 
 sprintf(cmd,"SET %f A",value);
 HM7044_SendCmd(cmd, gresult);
 HM7044_SendCmd("SEL NONE", gresult);
 return 0;
}


int HM7044_Read( float *data){
   int nb,i;
   com_send("READ");
   printf ( "\n");
   for (i=0;i<3;i++){
     com_read ( gresult );
     printf ( "%d.answer: %s\n",i, gresult ) ;
   }
   
   nb = sscanf (gresult, "%fV%fV%fV%fV",
                                &data[0],&data[1],&data[2],&data[3]);
   for (i=0;i<nb;i++){
   
      //printf("%d. %f\n",i, data[i]);
   
   }
   return (nb==4);
   
}

int HM7044_Enable_Output(int ch){
   send_int("SEL",ch, gresult);  
   HM7044_SendCmd("EN", gresult);
   HM7044_SendCmd("SEL NONE", gresult);
   return 0;
}

int HM7044_Disable_Output(int ch){
   send_int("SEL",ch, gresult);
   HM7044_SendCmd("DIS", gresult);
   HM7044_SendCmd("SEL NONE", gresult);
   return 0;
}

int HM7044_SwitchOn(int ch){
   send_int("SEL",ch, gresult);  
   HM7044_SendCmd("ON", gresult);
   HM7044_SendCmd("SEL NONE", gresult);
   return 0;
}


int HM7044_SwitchOff(int ch){
   send_int("SEL",ch, gresult);  
   HM7044_SendCmd("ON", gresult);
   HM7044_SendCmd("SEL NONE", gresult);
   return 0;
}

int HM7044_FuseOff(int ch){
   send_int("SEL",ch, gresult);  
   HM7044_SendCmd("FUSE OFF", gresult);
   HM7044_SendCmd("SEL NONE", gresult);
   return 0;
}


int HM7044_FuseOn(int ch){
   send_int("SEL",ch, gresult);  
   HM7044_SendCmd("FUSE ON", gresult);
   HM7044_SendCmd("SEL NONE", gresult);
   return 0;
}