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;
}