4,90 → 4,246 |
#include <stdio.h> |
#include <windows.h> |
#include <visa.h> |
//#include <K2231A.h> |
|
|
static int debug = 0; |
static ViStatus istat; |
static ViSession RedPHandle,RMHandle; |
int K2231A_DeviceId=0; |
|
static ViSession DeviceHandle,RMHandle; |
|
|
|
char response[0xFF]= {0}; |
|
int K2231A_Initialize() |
|
|
int K2231A_Write(const char *format, ... ) |
{ |
char cmd[0xFF]; |
va_list aptr; |
va_start(aptr, format); |
vsprintf(cmd, format, aptr); |
va_end(aptr); |
|
char str[0xFF]; |
sprintf(str, "%s\r\n",cmd); |
int istat = viPrintf (DeviceHandle, str); |
if (debug) printf("K2231A_Write %s\n", cmd); |
return istat; |
} |
|
const char * K2231A_Read(const char *format, ... ) |
{ |
|
return 0; |
char cmd[0xFF]; |
va_list aptr; |
va_start(aptr, format); |
vsprintf(cmd, format, aptr); |
va_end(aptr); |
|
char str[0xFF]; |
int istat=0; |
|
sprintf(str, "%s\n",cmd); |
istat = viPrintf (DeviceHandle, str); |
|
int nb=0; |
istat = viRead (DeviceHandle, response, 0xFF, &nb); |
|
if (nb>0) response[nb-1]=0; |
if (debug) printf("K2231A_Read %s : %s\n", cmd, response); |
if (istat) return NULL; |
|
return response; |
} |
|
int K2231A_QueryInt(const char *format, ... ) |
{ |
char cmd[0xFF]; |
va_list aptr; |
va_start(aptr, format); |
vsprintf(cmd, format, aptr); |
va_end(aptr); |
return atoi(K2231A_Read(cmd )); |
} |
|
|
|
double K2231A_QueryDouble(const char *format, ...) { |
char cmd[0xFF]; |
va_list aptr; |
va_start(aptr, format); |
vsprintf(cmd, format, aptr); |
va_end(aptr); |
return atof(K2231A_Read(cmd )); |
} |
|
int K2231A_Initialize() |
{ |
|
istat = viOpenDefaultRM (&RMHandle); |
if (RMHandle) istat = viOpen (RMHandle, "ASRL5::INSTR", VI_NULL, VI_NULL, &DeviceHandle); |
if (DeviceHandle) |
{ |
|
istat = viSetAttribute (DeviceHandle, VI_ATTR_TERMCHAR, '\n'); |
istat = viSetAttribute (DeviceHandle, VI_ATTR_TERMCHAR_EN, VI_TRUE); |
istat = viSetAttribute (DeviceHandle, VI_ATTR_TMO_VALUE, 5000); |
|
|
printf("\n"); |
} |
else |
{ |
MessagePopup("Error","Cannot open handle"); |
} |
|
|
return 0; |
} |
|
|
|
|
int K2231A_Test() |
{ |
char str[0xFF]; |
printf("K2231A_ModelNameQ %s\n",str); |
char response[0xFF]= {0}; |
int i; |
for ( i=0; i<255; i++) response[i]=0; |
|
K2231A_Read("*IDN?"); |
K2231A_Read("SYSTem:VERSion?"); |
K2231A_Read("VOLT?"); |
K2231A_Read("CURR?"); |
K2231A_Read("MEAS:VOLT?"); |
K2231A_Read("MEAS:CURR?"); |
K2231A_Read("FETC:VOLT?"); |
K2231A_Read("FETC:CURR?"); |
K2231A_Write("SYSTem:BEEPer"); |
return TRUE; |
} |
|
int K2231A_Close() |
{ |
|
|
K2231A_Write("syst:loc"); |
return 0; |
} |
|
int K2231A_Open() |
{ |
K2231A_Initialize(); |
K2231A_Initialize(); |
K2231A_Write("syst:rem"); |
return TRUE; |
} |
} |
|
int K2231A_OpenHandle(char * dev, char * usb ){ |
|
K2231A_DeviceId = 0; |
return K2231A_DeviceId; |
} |
int K2231A_RecallFromMemory(int preset){ |
return K2231A_Write("*rcl %d",preset); |
} |
|
double K2231A_GetSetCurrent(){ |
return K2231A_QueryDouble("CURR?"); |
} |
|
double K2231A_GetSetVoltage(){ |
return K2231A_QueryDouble("VOLT?"); |
} |
|
double K2231A_SetCurrent(double x){ |
return K2231A_QueryDouble("CURR %f", x); |
} |
|
/****************TOKOVI (potek, kako se spreminjajo tokovi s casom)****************/ |
double K2231A_SetVoltage(double x){ |
return K2231A_QueryDouble("VOLT %f", x); |
} |
|
void K2231A_ReadCurrent(double * I , double * V, unsigned char * mode, unsigned char *onoff){ |
int iRet; |
char ch=0; |
double Voltage; |
double Current; |
char cv_cc; |
|
|
//iRet = K2231A_TimeOut(K2231A_DeviceId, 1); |
//iRet = K2231A_Refresh(K2231A_DeviceId); |
double K2231A_GetCurrentMonitor(){ |
return K2231A_QueryDouble("MEAS:CURR?"); |
} |
|
|
//iRet = K2231A_MainOutput(K2231A_DeviceId, Output); |
//iRet = K2231A_MainOutputQ(K2231A_DeviceId, &Output); |
for (ch=0;ch<3;ch++){ |
|
|
//iRet = K2231A_MoniDataQ(K2231A_DeviceId, ch+1, &Voltage, &Current, &cv_cc); |
//if (debug) printf("[%d] %g V %g A CVCC %d\t",ch, Voltage, Current, cv_cc ); |
I[ch]= Current; //s tem definiras kaj sta I in V. |
V[ch]= Voltage; |
|
|
} |
//if (debug) printf("\n"); |
|
|
double K2231A_GetVoltageMonitor(){ |
return K2231A_QueryDouble("MEAS:VOLT?"); |
} |
|
|
int K2231A_SelectChannel(int ch){ |
return K2231A_Write( "INST CH%d",ch); |
} |
|
|
int K2231A_GetOperationMode(){ |
/* |
//cv_cc = K2231A_QueryInt("Stat:ques:inst?"); |
sprintf(cmd, "Stat:ques:inst:isum%d?",ch+1); |
*/ |
return K2231A_QueryInt("Stat:ques:inst?"); |
} |
|
|
int K2231A_SetSwitch(int state){ |
K2231A_Write("Outp:enab %d",state); |
K2231A_Write("Outp %d",state); |
return 0; |
} |
int K2231A_GetSwitch(){ |
return K2231A_QueryInt("CHAN:OUTP?"); |
} |
|
|
|
void K2231A_ReadMonitorValues(double * I , double * V, unsigned char * mode, unsigned char *onoff) |
{ |
int iRet; |
char ch=0; |
double Voltage; |
double Current; |
char cv_cc; |
|
for (ch=0; ch<3; ch++) |
{ |
|
|
K2231A_SelectChannel(ch+1); |
cv_cc = K2231A_GetOperationMode(); |
I[ch]= K2231A_GetCurrentMonitor(); |
V[ch]= K2231A_GetVoltageMonitor(); |
int onoff=K2231A_QueryInt("OUTP?"); |
if (debug) printf("[%d] %g V %g A CVCC %d ONOFF %d\t",ch, V[ch], I[ch], cv_cc, onoff ); |
|
|
|
} |
|
|
|
return; |
|
|
|
} |
|
void K2231A_ReadSetValues(double * I , double * V, unsigned char *onoff) |
{ |
int iRet; |
char ch=0; |
double Voltage; |
double Current; |
char cv_cc; |
|
#ifdef MAIN |
for (ch=0; ch<3; ch++) |
{ |
|
|
K2231A_SelectChannel(ch+1); |
cv_cc = K2231A_GetOperationMode(); |
I[ch]= K2231A_GetSetCurrent(); |
V[ch]= K2231A_GetSetVoltage(); |
int onoff=K2231A_GetSwitch(); |
if (debug) printf("[%d] %g V %g A CVCC %d ONOFF %d\t",ch, V[ch], I[ch], cv_cc, onoff ); |
|
} |
|
return; |
} |
|
|
#ifdef MAIN |
|
#include <ansi_c.h> |
#include <utility.h> |
|
96,14 → 252,14 |
#define SETREG(a,x) (a|=x) |
|
int gLogToFile; |
int vmon[3]={P1_VMON_1,P1_VMON_2,P1_VMON_3 }; |
int imon[3]={P1_IMON_1,P1_IMON_2,P1_IMON_3 }; |
int vset[3]={P1_U_1,P1_U_2,P1_U_3 }; |
int iset[3]={P1_I_1,P1_I_2,P1_I_3 }; |
int radiob[3]={P1_BOX_1,P1_BOX_2,P1_BOX_3 }; |
int vmon[3]= {P1_VMON_1,P1_VMON_2,P1_VMON_3 }; |
int imon[3]= {P1_IMON_1,P1_IMON_2,P1_IMON_3 }; |
int vset[3]= {P1_U_1,P1_U_2,P1_U_3 }; |
int iset[3]= {P1_I_1,P1_I_2,P1_I_3 }; |
int radiob[3]= {P1_BOX_1,P1_BOX_2,P1_BOX_3 }; |
|
int cvcc[3]={P1_CVCC_1,P1_CVCC_2,P1_CVCC_3 }; |
|
int cvcc[3]= {P1_CVCC_1,P1_CVCC_2,P1_CVCC_3 }; |
|
int gMask=0xF; |
|
int pnl; |
110,67 → 266,65 |
FILE *gFp; |
int main (int argc, char *argv[]) |
{ |
int DeviceId=0; |
unsigned char MainOutput, preset; |
double Voltage, Current, tinterval; |
char str[0xFF]; |
int DeviceId=0; |
unsigned char MainOutput=0, preset=0; |
double Voltage=0, Current=0, tinterval=1; |
char str[0xFF]; |
int i=0; |
char response[0xFF]; |
if (InitCVIRTE (0, argv, 0) == 0) |
return -1; /* out of memory */ |
SetStdioPort (CVI_STDIO_WINDOW); |
SetStdioWindowOptions (1000, 0, 0); |
SetStdioWindowSize (150, 600); |
SetStdioWindowPosition (825, 20); |
SetStdioPort (CVI_STDIO_WINDOW); |
SetStdioWindowOptions (1000, 1, 0); |
SetStdioWindowSize (150, 600); |
SetStdioWindowPosition (825, 20); |
|
istat = viOpenDefaultRM (&RMHandle); |
if (RMHandle) istat = viOpen (RMHandle, "TCPIP0::178.172.43.91::5000::SOCKET", VI_NULL, VI_NULL, &RedPHandle); |
if (RedPHandle){ |
istat = viSetAttribute (RedPHandle, VI_ATTR_TCPIP_KEEPALIVE, VI_TRUE); |
istat = viSetAttribute (RedPHandle, VI_ATTR_TCPIP_NODELAY, VI_TRUE); |
istat = viSetAttribute (RedPHandle, VI_ATTR_TERMCHAR, '\n'); |
istat = viSetAttribute (RedPHandle, VI_ATTR_TERMCHAR_EN, VI_TRUE); |
istat = viSetAttribute (RedPHandle, VI_ATTR_TMO_VALUE, 1000); |
} |
|
|
|
|
|
if ((pnl = LoadPanel (0, "K2231A-ctrl.uir", P1)) < 0) return -1; |
|
if (K2231A_Open()== 0) MessagePopup("Error","Cannot open USB device"); |
//DeviceId = K2231A_OpenHandle ("PW-A","USB:1:1"); |
if (K2231A_Test() == 0 )MessagePopup("DLL error","Dll Error"); |
if (DeviceId < 0) MessagePopup("Error","Not Connected"); |
printf("TMI device ID %d\n",K2231A_DeviceId); |
|
//K2231A_MainOutputQ(K2231A_DeviceId, &MainOutput); |
SetCtrlVal(pnl, P1_ONOFF, MainOutput); |
GetCtrlVal(pnl, P1_TINTERVAL, &tinterval); |
SetCtrlAttribute (pnl, P1_TIMER, ATTR_INTERVAL, tinterval); |
//K2231A_PresetQ(K2231A_DeviceId, &preset); |
SetCtrlVal(pnl, P1_PRESET, preset); |
SetTraceAttributeEx (pnl, P1_GRAPH_IMON, 1, ATTR_TRACE_LG_TEXT, "CH 30V"); |
if (K2231A_Open()== 0) MessagePopup("Error","Cannot open USB device"); |
|
if (K2231A_Test() == 0 )MessagePopup("DLL error","Dll Error"); |
|
|
|
SetCtrlVal(pnl, P1_ONOFF, MainOutput); |
GetCtrlVal(pnl, P1_TINTERVAL, &tinterval); |
SetCtrlAttribute (pnl, P1_TIMER, ATTR_INTERVAL, tinterval); |
|
SetCtrlVal(pnl, P1_PRESET, preset); |
SetTraceAttributeEx (pnl, P1_GRAPH_IMON, 1, ATTR_TRACE_LG_TEXT, "CH 30V"); |
SetTraceAttributeEx (pnl, P1_GRAPH_IMON, 2, ATTR_TRACE_LG_TEXT, "CH 30V"); |
SetTraceAttributeEx (pnl, P1_GRAPH_IMON, 3, ATTR_TRACE_LG_TEXT, "CH 5V"); |
|
SetTraceAttributeEx (pnl, P1_GRAPH_VMON, 1, ATTR_TRACE_LG_TEXT, "CH 30V"); |
|
SetTraceAttributeEx (pnl, P1_GRAPH_VMON, 1, ATTR_TRACE_LG_TEXT, "CH 30V"); |
SetTraceAttributeEx (pnl, P1_GRAPH_VMON, 2, ATTR_TRACE_LG_TEXT, "CH 30V"); |
SetTraceAttributeEx (pnl, P1_GRAPH_VMON, 3, ATTR_TRACE_LG_TEXT, "CH 5V"); |
for (unsigned char ch=0;ch<4;ch++){ |
int ison; |
//K2231A_VoltageQ(K2231A_DeviceId, ch+1, preset, &Voltage); |
//K2231A_CurrentQ(K2231A_DeviceId, ch+1, preset, &Current); |
SetCtrlVal(pnl, vset[ch], Voltage); |
SetCtrlVal(pnl, iset[ch], Current); |
GetCtrlVal(pnl, radiob[ch], &ison); |
if (ison) SETREG(gMask,(1<<ch)); else RSTREG(gMask,(1<<ch)); |
} |
|
DisplayPanel (pnl); |
int ison; |
for (unsigned char ch=0; ch<3; ch++) |
{ |
|
K2231A_SelectChannel(ch+1); |
|
Voltage =K2231A_GetSetVoltage(); |
Current =K2231A_GetSetCurrent(); |
ison =K2231A_GetSwitch(); |
|
|
|
SetCtrlVal(pnl, vset[ch], Voltage); |
SetCtrlVal(pnl, iset[ch], Current); |
SetCtrlVal(pnl, radiob[ch], ison); |
if (ison) SETREG(gMask,(1<<ch)); |
else RSTREG(gMask,(1<<ch)); |
} |
|
DisplayPanel (pnl); |
RunUserInterface (); |
DiscardPanel (pnl); |
K2231A_Close(); |
K2231A_Close(); |
|
if (gFp) fclose(gFp); |
if (gFp) fclose(gFp); |
return 0; |
} |
|
178,207 → 332,253 |
|
|
int CVICALLBACK SwitchOnOffCB (int panel, int control, int event, |
void *callbackData, int eventData1, int eventData2) |
void *callbackData, int eventData1, int eventData2) |
{ |
unsigned char state; |
switch (event) |
{ |
case EVENT_COMMIT: |
GetCtrlVal(panel, control, &state); |
//K2231A_MainOutput(K2231A_DeviceId, state); |
break; |
} |
return 0; |
unsigned char state; |
switch (event) |
{ |
case EVENT_COMMIT: |
GetCtrlVal(panel, control, &state); |
|
|
K2231A_SetSwitch(state); |
|
break; |
} |
return 0; |
} |
|
int CVICALLBACK SetCB (int panel, int control, int event, |
void *callbackData, int eventData1, int eventData2) |
void *callbackData, int eventData1, int eventData2) |
{ |
|
|
switch (event) |
{ |
case EVENT_COMMIT:{ |
unsigned char preset; |
//K2231A_PresetQ(K2231A_DeviceId, &preset); |
SetCtrlVal(pnl, P1_PRESET, preset); |
for (unsigned char ch = 0; ch<3;ch++){ |
//printf("ch %d %x\n", ch, gMask); |
if (gMask & (1<<ch)){ |
double Voltage; |
double Current; |
|
|
switch (event) |
{ |
case EVENT_COMMIT: |
{ |
unsigned char preset=0; |
|
SetCtrlVal(pnl, P1_PRESET, preset); |
for (unsigned char ch = 0; ch<3; ch++) |
{ |
//printf("ch %d %x\n", ch, gMask); |
if (gMask & (1<<ch)) |
{ |
double Voltage; |
double Current; |
|
GetCtrlVal(panel, vset[ch], &Voltage); |
GetCtrlVal(panel, iset[ch], &Current); |
|
GetCtrlVal(panel, vset[ch], &Voltage); |
GetCtrlVal(panel, iset[ch], &Current); |
//printf("->ch %d VSet %g Iset %g\n", ch, Voltage, Current); |
//K2231A_Voltage(K2231A_DeviceId, ch+1, preset, Voltage); |
//K2231A_VoltageQ(K2231A_DeviceId, ch+1, preset, &Voltage); |
//K2231A_Current(K2231A_DeviceId, ch+1, preset, Current); |
//K2231A_CurrentQ(K2231A_DeviceId, ch+1, preset, &Current); |
//printf("<-ch %d VSet %g Iset %g\n", ch, Voltage, Current); |
|
} |
} |
|
char cmd[0xFF]; |
|
K2231A_SelectChannel(ch+1); |
|
Voltage =K2231A_GetVoltageMonitor(); |
Current =K2231A_GetCurrentMonitor(); |
|
|
printf("<-ch %d VSet %g Iset %g\n", ch, Voltage, Current); |
|
} |
} |
} |
break; |
} |
return 0; |
break; |
} |
return 0; |
} |
|
int CVICALLBACK ReadCB (int panel, int control, int event, |
void *callbackData, int eventData1, int eventData2) |
void *callbackData, int eventData1, int eventData2) |
{ |
|
int iRet; |
char ch=0; |
double Voltage; |
double Current; |
char cv_cc; |
switch (event) |
{ |
case EVENT_COMMIT: |
for (ch = 0; ch<3;ch++){ |
if (gMask & (1<<ch)){ |
//iRet = K2231A_TimeOut(K2231A_DeviceId, 1); |
//iRet = K2231A_Refresh(K2231A_DeviceId); |
//iRet = K2231A_MoniDataQ(K2231A_DeviceId, ch+1, &Voltage, &Current, &cv_cc); |
//printf("ch %d VSet %g Iset %g\n", ch, Voltage, Current); |
SetCtrlVal(panel, vmon[ch], Voltage); |
SetCtrlVal(panel, imon[ch], Current); |
SetCtrlVal(panel, cvcc[ch], cv_cc); |
} |
} |
break; |
} |
return 0; |
|
int iRet; |
char ch=0; |
double Voltage=0; |
double Current=0; |
char cv_cc=0; |
switch (event) |
{ |
case EVENT_COMMIT: |
|
for (ch = 0; ch<3; ch++) |
{ |
if (gMask & (1<<ch)) |
{ |
K2231A_SelectChannel(ch+1); |
|
Voltage =K2231A_GetVoltageMonitor(); |
Current =K2231A_GetCurrentMonitor(); |
|
cv_cc = K2231A_GetOperationMode(); |
|
printf("ch %d VSet %g Iset %g\n", ch, Voltage, Current); |
SetCtrlVal(panel, vmon[ch], Voltage); |
SetCtrlVal(panel, imon[ch], Current); |
SetCtrlVal(panel, cvcc[ch], cv_cc); |
} |
} |
break; |
} |
return 0; |
} |
|
int CVICALLBACK SetIntervalCB (int panel, int control, int event, |
void *callbackData, int eventData1, int eventData2) { |
double tinterval; |
switch (event) { |
case EVENT_COMMIT: |
GetCtrlVal(panel, control, &tinterval); |
SetCtrlAttribute (panel, P1_TIMER, ATTR_INTERVAL, tinterval); |
break; |
} |
return 0; |
void *callbackData, int eventData1, int eventData2) |
{ |
double tinterval; |
switch (event) |
{ |
case EVENT_COMMIT: |
GetCtrlVal(panel, control, &tinterval); |
SetCtrlAttribute (panel, P1_TIMER, ATTR_INTERVAL, tinterval); |
break; |
} |
return 0; |
} |
|
int CVICALLBACK TimerOnOffCB (int panel, int control, int event, |
void *callbackData, int eventData1, int eventData2) |
void *callbackData, int eventData1, int eventData2) |
{ |
int state; |
switch (event) |
{ |
case EVENT_COMMIT: |
GetCtrlVal(panel, control, &state); |
if (state){ |
ResumeTimerCallbacks(); |
} else { |
SuspendTimerCallbacks (); |
printf ("Disabling timer....\n"); |
} |
break; |
} |
return 0; |
int state; |
switch (event) |
{ |
case EVENT_COMMIT: |
GetCtrlVal(panel, control, &state); |
if (state) |
{ |
SetCtrlAttribute (panel, P1_TIMER, ATTR_ENABLED, 1); |
ResumeTimerCallbacks(); |
} |
else |
{ |
SuspendTimerCallbacks (); |
printf ("Disabling timer....\n"); |
} |
break; |
} |
return 0; |
} |
|
int CVICALLBACK ExitCB (int panel, int control, int event, |
void *callbackData, int eventData1, int eventData2) |
void *callbackData, int eventData1, int eventData2) |
{ |
switch (event) |
{ |
case EVENT_COMMIT: |
QuitUserInterface(0); |
break; |
} |
return 0; |
switch (event) |
{ |
case EVENT_COMMIT: |
QuitUserInterface(0); |
break; |
} |
return 0; |
} |
|
int CVICALLBACK SetMaskCB (int panel, int control, int event, |
void *callbackData, int eventData1, int eventData2) |
{ int ison; |
switch (event) |
{ |
int i=0; |
case EVENT_COMMIT: |
GetCtrlVal(panel, control, &ison); |
for (i=0;i<3;i++) if (control == radiob[i]) break; |
if (ison) SETREG(gMask,(1<<i)); else RSTREG(gMask,(1<<i)); |
break; |
} |
return 0; |
void *callbackData, int eventData1, int eventData2) |
{ |
int ison; |
switch (event) |
{ |
int i=0; |
case EVENT_COMMIT: |
GetCtrlVal(panel, control, &ison); |
for (i=0; i<3; i++) if (control == radiob[i]) break; |
if (ison) SETREG(gMask,(1<<i)); |
else RSTREG(gMask,(1<<i)); |
break; |
} |
return 0; |
} |
|
int CVICALLBACK LogToFileCB (int panel, int control, int event, |
void *callbackData, int eventData1, int eventData2) |
void *callbackData, int eventData1, int eventData2) |
{ |
|
switch (event) |
{ |
case EVENT_COMMIT: |
GetCtrlVal(panel, control, &gLogToFile); |
|
break; |
} |
return 0; |
|
switch (event) |
{ |
case EVENT_COMMIT: |
GetCtrlVal(panel, control, &gLogToFile); |
|
break; |
} |
return 0; |
} |
|
int CVICALLBACK TimerCB (int panel, int control, int event, |
void *callbackData, int eventData1, int eventData2) |
void *callbackData, int eventData1, int eventData2) |
{ |
switch (event) |
{ |
|
unsigned char ch; |
double current[3]; |
double voltage[3]; |
char cv_cc; |
case EVENT_TIMER_TICK: |
for (ch = 0; ch<3;ch++){ |
if (gMask & (1<<ch)){ |
//K2231A_TimeOut(K2231A_DeviceId, 1); |
//K2231A_Refresh(K2231A_DeviceId); |
//K2231A_MoniDataQ(K2231A_DeviceId, ch+1, &voltage[ch], ¤t[ch], &cv_cc); |
SetCtrlVal(panel, vmon[ch], voltage[ch]); |
SetCtrlVal(panel, imon[ch], current[ch]); |
SetCtrlVal(panel, cvcc[ch], cv_cc); |
if (gLogToFile){ |
if (!gFp) { |
gFp= fopen("pw18-1.8aq.log","w"); |
fprintf(gFp,"#time\tch\tU\tI\tCV_CC\n"); |
} |
fprintf(gFp,"%ul\t%d\t%g\t%g\t%d\n", time(NULL), ch+1, voltage[ch], current[ch], cv_cc); |
} |
} |
} |
PlotStripChart (panel, P1_GRAPH_IMON, current, 3, 0, 0, VAL_DOUBLE); |
PlotStripChart (panel, P1_GRAPH_VMON, voltage, 3, 0, 0, VAL_DOUBLE); |
break; |
} |
return 0; |
switch (event) |
{ |
|
unsigned char ch; |
double current[3]= {0,0,0}; |
double voltage[3]= {0,0,0}; |
char cv_cc=0; |
case EVENT_TIMER_TICK: |
for (ch = 0; ch<3; ch++) |
{ |
if (gMask & (1<<ch)) |
{ |
|
K2231A_SelectChannel(ch+1); |
|
voltage[ch] =K2231A_GetVoltageMonitor(); |
current[ch] =K2231A_GetCurrentMonitor(); |
cv_cc = K2231A_GetOperationMode(); |
int onoff=K2231A_GetSwitch(); |
|
|
|
SetCtrlVal(panel, vmon[ch], voltage[ch]); |
SetCtrlVal(panel, imon[ch], current[ch]); |
SetCtrlVal(panel, cvcc[ch], cv_cc); |
SetCtrlVal(panel, P1_ONOFFLED, onoff); |
if (gLogToFile) |
{ |
if (!gFp) |
{ |
gFp= fopen("pw18-1.8aq.log","w"); |
fprintf(gFp,"#time\tch\tU\tI\tCV_CC\n"); |
} |
fprintf(gFp,"%ul\t%d\t%g\t%g\t%d\n", time(NULL), ch+1, voltage[ch], current[ch], cv_cc); |
} |
} |
} |
PlotStripChart (panel, P1_GRAPH_IMON, current, 3, 0, 0, VAL_DOUBLE); |
PlotStripChart (panel, P1_GRAPH_VMON, voltage, 3, 0, 0, VAL_DOUBLE); |
break; |
} |
return 0; |
} |
|
int CVICALLBACK SetPresetCB (int panel, int control, int event, |
void *callbackData, int eventData1, int eventData2) { |
|
switch (event) { |
case EVENT_COMMIT:{ |
void *callbackData, int eventData1, int eventData2) |
{ |
char cmd[0xFF]; |
switch (event) |
{ |
case EVENT_COMMIT: |
{ |
unsigned char preset; |
double Voltage, Current; |
GetCtrlVal(panel, control, &preset); |
//K2231A_Preset(K2231A_DeviceId, preset); |
GetCtrlVal(panel, control, &preset); |
|
for (unsigned char ch=0;ch<3;ch++){ |
int ison; |
//K2231A_VoltageQ(K2231A_DeviceId, ch+1, preset, &Voltage); |
//K2231A_CurrentQ(K2231A_DeviceId, ch+1, preset, &Current); |
SetCtrlVal(pnl, vset[ch], Voltage); |
SetCtrlVal(pnl, iset[ch], Current); |
GetCtrlVal(pnl, radiob[ch], &ison); |
if (ison) SETREG(gMask,(1<<ch)); else RSTREG(gMask,(1<<ch)); |
} |
K2231A_RecallFromMemory(preset); |
for (unsigned char ch=0; ch<3; ch++) |
{ |
int ison; |
K2231A_SelectChannel(ch+1); |
Voltage =K2231A_GetSetVoltage(); |
Current =K2231A_GetSetCurrent(); |
ison =K2231A_GetSwitch(); |
|
SetCtrlVal(pnl, vset[ch], Voltage); |
SetCtrlVal(pnl, iset[ch], Current); |
GetCtrlVal(pnl, radiob[ch], &ison); |
if (ison) SETREG(gMask,(1<<ch)); |
else RSTREG(gMask,(1<<ch)); |
} |
break; |
} |
} |
385,6 → 585,18 |
return 0; |
} |
|
int CVICALLBACK DebugCB (int panel, int control, int event, |
void *callbackData, int eventData1, int eventData2) |
{ |
switch (event) |
{ |
case EVENT_COMMIT: |
GetCtrlVal(panel, control, &debug); |
break; |
} |
return 0; |
} |
|
#endif MAIN |
|
#endif MAIN |
|