⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.c

📁 labview开发的智能仪器试验
💻 C
字号:
#include <ansi_c.h>
#include <tcpsupp.h>
#include <cvirte.h>		
#include <userint.h>
#include "client.h"

static int panelHandle;
static unsigned int g_hconversation;
int is_link=0;
float tempSet;
float ser_temp;
struct info
{
	char tag[12];
	float value;
}transTemp;


int CVICALLBACK ClientTCPCB (unsigned handle, int event, int error,void *callbackData);

int main (int argc, char *argv[])
{   
	if (InitCVIRTE (0, argv, 0) == 0)
		return -1;	/* out of memory */
	if ((panelHandle = LoadPanel (0, "client.uir", PANEL)) < 0)
		return -1;
	DisplayPanel (panelHandle);
	RunUserInterface ();
    DiscardPanel (panelHandle);     
	return 0;
}

int CVICALLBACK start (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	int  portNum;
    char tempBuf[256] = {0};
	char portNumStr[32];

	switch (event)
	{   
		
		case EVENT_COMMIT:
		 GetCtrlVal(panelHandle,PANEL_IP,tempBuf);
		 GetCtrlVal(panelHandle,PANEL_PORT,portNumStr);
		 portNum=atoi(portNumStr);
		// SetCtrlVal(panelHandle,PANEL_TEXTMSG_2,portNumStr); 
		 if(is_link==0)
		 {
			  if (ConnectToTCPServer (&g_hconversation, portNum, tempBuf, ClientTCPCB,NULL, 1000) < 0)
				{
			       MessagePopup("TCP Client", "Connection to server failed !");
				   SetCtrlVal(panelHandle,PANEL_TEXTMSG,"连接失败"); 
	
				}
			  else
				{
				    SetCtrlVal(panelHandle,PANEL_TEXTMSG,"连接成功"); 
					is_link=1;
					SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON,ATTR_LABEL_TEXT,"断开");
				}
		 }
		 else
		 {
			SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON,ATTR_LABEL_TEXT,"连接");
			DisconnectFromTCPServer (g_hconversation);
			is_link=0;
			SetCtrlVal(panelHandle,PANEL_TEXTMSG,"连接断开");   
			
		 }
		 
			break;
	}
	return 0;
}

int CVICALLBACK up (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char* cmd="up";    
	switch (event)
	{  
		       
		case EVENT_COMMIT:
			   if(is_link==1)
			   {
				   if (ClientTCPWrite (g_hconversation, cmd,strlen (cmd), 1000) < 0)			
			       	SetCtrlVal(panelHandle,PANEL_TEXTMSG,"发送数据失败"); 
				   else
				   {
					  SetCtrlVal(panelHandle,PANEL_TEXTMSG,"发送数据:加热");
					  // SetCtrlVal(panelHandle,PANEL_TEXTMSG,cmd);
				   }
			   }
   
			break;
	}
	return 0;
}

int CVICALLBACK down (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char* cmd="down";
	switch (event)
	{
		case EVENT_COMMIT:
			if(is_link==1)
			{
				 if (ClientTCPWrite (g_hconversation, cmd,strlen (cmd), 100) < 0)			
				SetCtrlVal(panelHandle,PANEL_TEXTMSG,"发送数据失败");
				 else
				 {
				 SetCtrlVal(panelHandle,PANEL_TEXTMSG,"发送数据:降温");
			//	 SetCtrlVal(panelHandle,PANEL_TEXTMSG,cmd);
				 }
			}
			break;
	}
	return 0;
}

int CVICALLBACK ac (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char* cmd="ac"; 
	switch (event)
	{
		case EVENT_COMMIT:
			if(is_link==1)
			{
				if (ClientTCPWrite (g_hconversation, cmd,strlen (cmd), 100) < 0)			
				SetCtrlVal(panelHandle,PANEL_TEXTMSG,"发送数据失败");
				 else
				 {
				 SetCtrlVal(panelHandle,PANEL_TEXTMSG,"发送数据:自动");
				// SetCtrlVal(panelHandle,PANEL_TEXTMSG,cmd);
				 }
			}
			break;
	}
	return 0;
}

int CVICALLBACK stop (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char* cmd="stop";
	switch (event)
	{
		case EVENT_COMMIT:
			if(is_link==1)
			{
				 if (ClientTCPWrite (g_hconversation, cmd,strlen (cmd), 100) < 0)			
				SetCtrlVal(panelHandle,PANEL_TEXTMSG,"发送数据失败"); 
				 else
				 {
					SetCtrlVal(panelHandle,PANEL_TEXTMSG,"发送数据:停止"); 
				//	SetCtrlVal(panelHandle,PANEL_TEXTMSG,cmd);
				 }
			}
		   // DisconnectFromTCPServer (g_hconversation);   
			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,"setTemp");
	  		transTemp.value=tempSet;
			if(is_link==1)
			{
				if (ClientTCPWrite (g_hconversation,&transTemp,sizeof(struct info), 100) < 0)			
			    	SetCtrlVal(panelHandle,PANEL_TEXTMSG,"发送数据失败"); 
				 else
				 {
					SetCtrlVal(panelHandle,PANEL_TEXTMSG,"发送数据:设定温度"); 
				//	SetCtrlVal(panelHandle,PANEL_TEXTMSG,transTemp.tag);
				 }
				//NUMERIC
				
			}
				//SetCtrlVal(panelHandle,PANEL_NUMERIC,sizeof(struct info));  
			break;
	}
	return 0;
}


int CVICALLBACK quit (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_COMMIT:
			QuitUserInterface (0);
			break;
	}
	return 0;
}

int CVICALLBACK ClientTCPCB (unsigned handle, int event, int error,
                             void *callbackData)
{
    float receiveBuf[4] = {0};
  //  int  dataSize = sizeof (receiveBuf) - 1;

    switch (event)
        {
        case TCP_DATAREADY:
            if (ClientTCPRead (g_hconversation, receiveBuf,3*sizeof(float), 100)< 0)
              {
             	MessagePopup("error","receive error"); 
              }
            else
			{
			 ser_temp=receiveBuf[0];
			 PlotStripChart(panelHandle,PANEL_STRIPCHART,receiveBuf,2,0,0,VAL_FLOAT);
			 PlotStripChart(panelHandle,PANEL_STRIPCHART_2,&receiveBuf[2],1,0,0,VAL_FLOAT);
             //SetCtrlVal(panelHandle,PANEL_NUMERICTHERM,tempSet);
			 SetCtrlVal(panelHandle,PANEL_NUMERIC_3,receiveBuf[1]);
			 SetCtrlVal(panelHandle,PANEL_NUMERIC_4,receiveBuf[2]);
			 if(ser_temp!=tempSet)
			 {
				SetCtrlVal(panelHandle,PANEL_NUMERICTHERM,ser_temp); 	 
			 }
			}
            break;
        case TCP_DISCONNECT:
			 //DisconnectFromTCPServer (g_hconversation);
			SetCtrlAttribute(panelHandle,PANEL_COMMANDBUTTON,ATTR_LABEL_TEXT,"连接");
		//	DisconnectFromTCPServer (g_hconversation);
			is_link=0;
			SetCtrlVal(panelHandle,PANEL_TEXTMSG,"连接断开");  
             MessagePopup ("TCP Client", "Server has closed connection!");
         
           // g_connected = 0;
       
            break;
    }
    return 0;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -