#include <cvirte.h>
#include <userint.h>
#include "fourier.h"
#include <utility.h>
#include <ansi_c.h>
#include <rs232.h>
int read_term_index;
int read_term;
int read_cnt;
int bytes_read;
int pCOM1;
int pCOM2;
#define TEXT_LENGTH 2000
char read_data[TEXT_LENGTH];
char read_data2[TEXT_LENGTH];
static int panel;
#define MAX_THREADS 10
static CmtThreadPoolHandle poolHandle = 0;
void SetDimming(int state) {
SetCtrlAttribute (panel, p1_START, ATTR_DIMMED, state);
SetCtrlAttribute (panel, p1_EXIT, ATTR_DIMMED, state);
SetCtrlAttribute (panel, p1_STOP, ATTR_DIMMED, state);
}
int main (int argc, char *argv[])
{
SetStdioPort (CVI_STDIO_WINDOW);
SetStdioWindowOptions (10000, 0, 0);
SetStdioWindowVisibility(1);
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if ((panel= LoadPanel (0, "fourier.uir", p1)) < 0)
return -1;
//CmtNewThreadPool (MAX_THREADS, &poolHandle);
DisplayPanel (panel);
SetDimming(0);
//StartCB(panel, 0, EVENT_COMMIT, NULL, 0 ,0);
RunUserInterface ();
DiscardPanel (panel);
return 0;
}
int CVICALLBACK ExitCB (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
QuitUserInterface (0);
break;
}
return 0;
}
int CVICALLBACK StopCB (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
CloseCom(pCOM1);
CloseCom(pCOM2);
break;
}
return 0;
}
/* Callback Function */
void ComCallback1(int portNumber, int eventMask, void *callbackdata) {
if (eventMask & LWRS_RXFLAG) {
//printf("Received specified character\n");
int strLen = GetInQLen (pCOM1);
bytes_read = ComRd (pCOM1, read_data, strLen);
float voltage;
sscanf(read_data
,"%f",&voltage
);
//printf("%f %d %d#%s#", temp,state[0], state[1], read_data);
int RS232Error = ReturnRS232Err ();
if (ReturnRS232Err ()) {
sprintf(read_data
,"#%s\n", GetRS232ErrorString
(RS232Error
));
MessagePopup("RS232Err",read_data);
} else {
//float ohm;
//double tset;
//char onoff;
//double Voltage, Current;
//char cres[200];
//int i=0;
//int onoff1 = 0;
SetCtrlVal(panel, p1_VMON, voltage);
//Voltage =K617_vsource_get();
//Current =K617_get(cres,&i);
//K617_vsource_set(vset);
//K617_vsource_operate(onoff1);
//SetCtrlVal(pa,PA_VOLTAGE,Voltage);
//SetCtrlVal(pa,PA_CURRENT,Current);
PlotStripChart (panel, p1_GRAPH, &voltage, 1, 0, 0, VAL_FLOAT);
}
}
if (eventMask
& LWRS_TXEMPTY
) printf("Transmit queue now empty\n");
if (eventMask & LWRS_RECEIVE) {
printf("50 or more bytes in input queue\n");
}
}
int pozicija = 0;
int SetPosition(int pos){
int nb=0;
char str[20];
nb = ComWrt (pCOM2, str, len);
return nb;
}
float vx = 100.0;
int SetSpeed(float v){
int nb = 0;
char vxset[20];
nb = ComWrt (pCOM2, vxset, len1);
return nb;
}
int first = 1;
/* Callback Function */
void ComCallback2(int portNumber, int eventMask, void *callbackdata) {
if (eventMask & LWRS_RXFLAG) {
//printf("Received specified character\n");
int strLen = GetInQLen (pCOM2);
bytes_read = ComRd (pCOM2, read_data2, strLen);
if(first){
SetSpeed(100.00);
first = 0;
}
GetCtrlVal(panel,p1_POZICIJA, &pozicija);
SetPosition(pozicija);
//printf("%f %d %d#%s#", temp,state[0], state[1], read_data);
int RS232Error = ReturnRS232Err ();
if (ReturnRS232Err ()) {
sprintf(read_data2
,"#%s\n", GetRS232ErrorString
(RS232Error
));
MessagePopup("RS232Err",read_data2);
} else {
//float ohm;
//double tset;
//char onoff;
//double Voltage, Current;
//char cres[200];
//int i=0;
//int onoff1 = 0;
//SetCtrlVal(panel, p1_VMON, voltage);
//Voltage =K617_vsource_get();
//Current =K617_get(cres,&i);
//K617_vsource_set(vset);
//K617_vsource_operate(onoff1);
//SetCtrlVal(pa,PA_VOLTAGE,Voltage);
//SetCtrlVal(pa,PA_CURRENT,Current);
//PlotStripChart (panel, p1_GRAPH, &voltage, 1, 0, 0, VAL_FLOAT);
}
}
//if (eventMask & LWRS_TXEMPTY) printf("Transmit queue now empty\n");
if (eventMask & LWRS_RECEIVE) {
printf("50 or more bytes in input queue\n");
}
}
int CVICALLBACK StartCB (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int ierr;
int ierr2;
switch (event) {
case EVENT_COMMIT:
first = 1;
GetCtrlVal(panel,p1_COM1,&pCOM1);
GetCtrlVal(panel,p1_COM2,&pCOM2);
//printf("%d %d\n", pCOM1, pCOM2);
ierr = OpenComConfig (pCOM1, "", 115200, 0, 8, 1, 512, 512);
/* Turn off Hardware handshaking (loopback test will not function with it on) */
SetCTSMode (pCOM1, LWRS_HWHANDSHAKE_OFF);
/* Make sure Serial buffers are empty */
FlushInQ (pCOM1);
FlushOutQ (pCOM1);
int notifyCount1 = 50; /* Wait for at least 50 bytes in queue. */
int eventChar1 = 10; /* Wait for LF. */
int eventMask1 = LWRS_RXFLAG | LWRS_TXEMPTY | LWRS_RECEIVE;
ierr2 = OpenComConfig (pCOM2, "", 115200, 0, 8, 1, 512, 512);
/* Turn off Hardware handshaking (loopback test will not function with it on) */
SetCTSMode (pCOM2, LWRS_HWHANDSHAKE_OFF);
printf("ierr %d %d\n", ierr
, ierr2
);
/* Make sure Serial buffers are empty */
FlushInQ (pCOM2);
FlushOutQ (pCOM2);
int notifyCount2 = 50; /* Wait for at least 50 bytes in queue. */
int eventChar2 = 10; /* Wait for LF. */
int eventMask2 = LWRS_RXFLAG | LWRS_TXEMPTY | LWRS_RECEIVE;
//InstallComCallback (pCOM1, eventMask1, notifyCount1, eventChar1, ComCallback1, NULL);
InstallComCallback (pCOM2, eventMask2, notifyCount2, eventChar2, ComCallback2, NULL);
break;
}
return 0;
}
int CVICALLBACK GoToEndCB (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
break;
}
return 0;
}
int CVICALLBACK GoToZeroCB (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
int nb = 0;
nb = ComWrt (pCOM2, "X0\n", 4);
return nb;
break;
}
return 0;
}
int CVICALLBACK ResetCB (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
break;
}
return 0;
}