📄 pressure.c
字号:
#include "toolbox.h"
#include <ansi_c.h>
#include <tcpsupp.h>
#include <cvirte.h>
#include <userint.h>
#include "pressure.h"
#include "dask.h"
#pragma comment(lib,"pci-dask.lib")
static int panelHandle;
int cardID=0;
unsigned short temp1,temp2;
float pressure,temperature;
float tempSet;
float temp_array[2];
int up=0;
int down=0;
int ac=0;
float pressure_add=0;
float temp_add=0;
float press_out=0;
float temp_out=0;
int index1=0;
int index2=0;
int is_run=0;
struct sever_data
{
char tag[12];
float value;
}transTemp;
float trans[3]={0};
///sever////
static int g_hconversation=0;
int sever_stat=0;
int CVICALLBACK ServerTCP( unsigned handle, int event, int error,void *callbackData);
int transData(void* data);
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, "pressure.uir", PANEL)) < 0)
return -1;
cardID=Register_Card(PCI_9112,0);
//SetCtrlVal (panelHandle,PANEL_NUMERIC,cardID);
//SetCtrlVal (panelHandle,PANEL_NUMERICTHERM,30.0);
GetCtrlVal (panelHandle,PANEL_NUMERICTHERM,&tempSet);
DisplayPanel (panelHandle);
RunUserInterface();
DiscardPanel (panelHandle);
return 0;
}
int CVICALLBACK start (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
if(cardID>=0)
{
Release_Card(cardID);
cardID=Register_Card(PCI_9112,0);
SetCtrlAttribute(panelHandle,PANEL_START,ATTR_CMD_BUTTON_COLOR,VAL_BLUE);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_3,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
is_run=1;
}
else
{
SetCtrlAttribute(panelHandle,PANEL_START,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
MessagePopup("warning","Register card fail");
}
break;
}
return 0;
}
int CVICALLBACK quit (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
if(cardID>=0)
{
Release_Card(cardID);
}
QuitUserInterface (0);
break;
}
return 0;
}
int CVICALLBACK stop (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
if(is_run)
{
up=0;
down=0;
ac=0;
is_run=0;
DO_WritePort(cardID,0,0x0003);
SetCtrlAttribute(panelHandle,PANEL_START,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_3,ATTR_CMD_BUTTON_COLOR,VAL_BLUE);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_2,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_4,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
}
break;
}
return 0;
}
int CVICALLBACK setTemp (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
break;
case EVENT_VAL_CHANGED:
GetCtrlVal (panelHandle,PANEL_NUMERICTHERM,&tempSet);
/*strcpy(transTemp.tag,"serSetTemp");
transTemp.value=tempSet;
if(sever_stat==1)
{
if (ClientTCPWrite (g_hconversation,&transTemp,sizeof(struct sever_data), 100) < 0)
SetCtrlVal(panelHandle,PANEL_TEXTMSG,"发送数据失败");
else
{
// SetCtrlVal(panelHandle,PANEL_TEXTMSG,"发送数据:停止");
SetCtrlVal(panelHandle,PANEL_TEXTMSG,transTemp.tag);
}
//NUMERIC
} */
break;
}
return 0;
}
int CVICALLBACK upTemp (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
if(is_run)
{
up=1;
down=0;
ac=0;
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON,ATTR_CMD_BUTTON_COLOR,VAL_BLUE);
DO_WritePort(cardID,0,0x0002);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_3,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON,ATTR_CMD_BUTTON_COLOR,VAL_BLUE);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_2,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_4,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
}
break;
}
return 0;
}
int CVICALLBACK downTemp (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
if(is_run)
{
up=0;
down=1;
ac=0;
DO_WritePort(cardID,0,0x0001);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_3,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_2,ATTR_CMD_BUTTON_COLOR,VAL_BLUE);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_4,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
}
break;
}
return 0;
}
int CVICALLBACK autoControl (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
if(is_run)
{
up=0;
down=0;
ac=1;
// DO_WritePort(cardID,0,0x0001);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_3,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_2,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_4,ATTR_CMD_BUTTON_COLOR,VAL_BLUE);
}
break;
}
return 0;
}
int CVICALLBACK timer (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
//tempSet=35;
//press_out=(float)Random(200.0,400.0);
//temp_out=(float)Random(40,50);
//trans[0]=tempSet;
//trans[1]=temp_out;
//trans[2]=press_out;
// transData(&trans);
switch (event)
{
case EVENT_TIMER_TICK:
// transData(temp_out);
// transData(&trans);
//SetCtrlVal(panelHandle,PANEL_NUMERIC,press_out);
// SetCtrlVal(panelHandle, PANEL_PRESSURE, press_out);
if(is_run)
{
//for(i=0;i<500;i++)
if(index1<10)
{
AI_ReadChannel(cardID, 0, AD_U_5_V, &temp1); //pressure
// temp1=(unsigned short int)Random(10000,30000); //test
temp1 = (temp1>>4)&0x0fff;
pressure = temp1*5.0/4095.0*500/4.88;
pressure_add+=pressure;
index1++;
}
if(index1==10)
{
press_out=pressure_add/10;
index1=0;
pressure_add=0;
}
SetCtrlVal(panelHandle, PANEL_PRESSURE, press_out);
PlotStripChart (panelHandle, PANEL_STRIPCHART_2, &press_out, 1, 0, 0, VAL_FLOAT);
if (press_out>500)
SetCtrlVal (panelHandle, PANEL_LED, 1);
else
SetCtrlVal (panelHandle, PANEL_LED, 0);
//temperture
//for(i=0;i<500;i++)
if(index2<10)
{
AI_ReadChannel(cardID, 1, AD_U_5_V, &temp2); //pressure
// temp2=(unsigned short int)Random(10000,30000);
temp2 = (temp2>>4)&0x0fff;
temperature = temp2*5.0/4095.0*76.5/4.88;
temp_add+=temperature;
index2++;
}
if(index2==10)
{
temp_out=temp_add/10;
index2=0;
temp_add=0;
}
SetCtrlVal(panelHandle, PANEL_NUMERICTHERM_2, temp_out);
if (temp_out>76.8)
SetCtrlVal (panelHandle, PANEL_LED_2, 1);
else
SetCtrlVal (panelHandle, PANEL_LED_2, 0);
//transData
trans[0]=tempSet;
trans[1]=temp_out;
trans[2]=press_out;
transData(&trans);
temp_array[0]=tempSet;
temp_array[1]=temp_out;
PlotStripChart (panelHandle, PANEL_STRIPCHART, temp_array, 2, 0, 0, VAL_FLOAT);
/* if(ac==1)
{
if(tempSet-temp_out>=0.5)
{
//升温
DO_WritePort(cardID, 0, 0x0002);
}
else if(tempSet-temp_out<=-0.5)
{
//降温
DO_WritePort(cardID, 0, 0x0001);
}
else
{
//既不升温度也不降温
DO_WritePort(cardID, 0, 0x0003);
}
}
if(up==1)
{ DO_WritePort(cardID, 0, 0x0002); //sheng wen
}
if(down==1)
{
DO_WritePort(cardID, 0, 0x0001);
}
*/
}
break;
}
return 0;
}
////////////////sever part/////////////////
int CVICALLBACK startSever (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
if(is_run)
{
if(sever_stat==0)
{
if( RegisterTCPServer (6060, ServerTCP, 0) < 0)
{
MessagePopup("TCP server","register TCP failed");
}
else
{
sever_stat=1;
SetCtrlVal (panelHandle, PANEL_TEXTMSG_3, "服务器已启动");
SetCtrlAttribute(panelHandle,PANEL_SEVER,ATTR_LABEL_TEXT,"停止服务器");
}
}
else
{
SetCtrlAttribute(panelHandle,PANEL_SEVER,ATTR_LABEL_TEXT,"启动服务器");
UnregisterTCPServer(6060);
sever_stat=0;
g_hconversation=0;
SetCtrlVal(panelHandle,PANEL_TEXTMSG_3,"服务器已停止");
}
}
break;
}
return 0;
}
int transData(void* data)
{
//float* temp=&data;
if(sever_stat && g_hconversation)
{
if (ServerTCPWrite (g_hconversation, data,3*sizeof(float), 100) < 0)
{
SetCtrlVal(panelHandle,PANEL_TEXTMSG,"发送数据失败");
return 0;
}
else
{
return 1;
}
}
return 0;
}
int CVICALLBACK ServerTCP( unsigned handle, int event, int error,void *callbackData)
{
char recBuf[256]={0};
int dataSize=sizeof(recBuf)-1;
//int command=0;
char addrBuf[31];
void* tempData=NULL;
//enum data{STOP=5,DOWN,UP};
switch(event)
{
case TCP_CONNECT:
if(g_hconversation)
{
GetTCPPeerAddr (handle, addrBuf, 31);
SetCtrlVal (panelHandle, PANEL_TEXTMSG_3, addrBuf);
DisconnectTCPClient (handle);
}
else
{
g_hconversation = handle;
GetTCPPeerAddr (g_hconversation, addrBuf, 31);
GetTCPPeerName (g_hconversation, recBuf, 256);
SetCtrlVal (panelHandle, PANEL_TEXTMSG_3, "客户端已连接");
SetCtrlVal (panelHandle, PANEL_TEXTMSG_4, addrBuf);
SetTCPDisconnectMode (g_hconversation, TCP_DISCONNECT_AUTO);
}
break;
case TCP_DATAREADY:
//dataSize = ServerTCPRead (g_hconversation, recBuf,dataSize, 1000);
if ((dataSize = ServerTCPRead (g_hconversation, recBuf,
dataSize, 1000))
< 0)
{
// SetCtrlVal (g_hmainPanel, MAINPNL_RECEIVE, "Receive Error\n");
MessagePopup("error","receive error");
}
else
{
recBuf[dataSize] = '\0';
// command=atoi(recBuf);
//SetCtrlVal (panelHandle, PANEL_TEXTMSG_4, recBuf);
if(!strcmp("stop",recBuf)) //stop
{
up=0;
down=0;
ac=0;
DO_WritePort(cardID,0,0x0003);
SetCtrlAttribute(panelHandle,PANEL_START,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_3,ATTR_CMD_BUTTON_COLOR,VAL_BLUE);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_2,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_4,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlVal (panelHandle, PANEL_TEXTMSG_3, "客户端已经连接:停止");
}
else if(!strcmp("up",recBuf)) //heat
{
up=1;
down=0;
ac=0;
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON,ATTR_CMD_BUTTON_COLOR,VAL_BLUE);
DO_WritePort(cardID,0,0x0002);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_3,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON,ATTR_CMD_BUTTON_COLOR,VAL_BLUE);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_2,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_4,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlVal (panelHandle, PANEL_TEXTMSG_3, "客户端已经连接:加热");
}
else if(!strcmp("down",recBuf)) //cool
{
up=0;
down=1;
ac=0;
DO_WritePort(cardID,0,0x0001);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_3,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_2,ATTR_CMD_BUTTON_COLOR,VAL_BLUE);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_4,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlVal (panelHandle, PANEL_TEXTMSG_3, "客户端已经连接:冷却");
}
else if(!strcmp("ac",recBuf))
{
up=0;
down=0;
ac=1;
// DO_WritePort(cardID,0,0x0001);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_3,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_2,ATTR_CMD_BUTTON_COLOR,VAL_LT_GRAY);
SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON_4,ATTR_CMD_BUTTON_COLOR,VAL_BLUE);
SetCtrlVal (panelHandle, PANEL_TEXTMSG_3, "客户端已经连接:自动");
}
else if(!strcmp("setTemp",recBuf))
{
// MessagePopup("haah","setTemp");
tempData=&recBuf[12];
tempSet= *(float*)tempData;
SetCtrlVal(panelHandle,PANEL_NUMERICTHERM ,tempSet);
SetCtrlVal (panelHandle, PANEL_TEXTMSG_3, "客户端已经连接:设置温度");
}
}
break;
case TCP_DISCONNECT:
if (handle == g_hconversation)
{
g_hconversation = 0;
SetCtrlVal (panelHandle, PANEL_TEXTMSG_3, "客户端已断开");
}
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -