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

📄 sample10_1.c

📁 CVI教程,用于信号采集系统的多任务开发软件.学习简单,功能实用.
💻 C
字号:
#include <ansi_c.h>#include <tcpsupp.h>#include <cvirte.h>		/* Needed if linking in external compiler; harmless otherwise */#include <userint.h>#include "sample10_1.h"static int panel;int Type=1,ConnectedHandle;char Machine[100]={""};int CVICALLBACK ClientCallback(unsigned handle, int event, 		int error, void *callbackData);   int CVICALLBACK ServerCallback(unsigned handle, int event, 		int error, void *callbackData);  void Start(void);int main (int argc, char *argv[]){	if (InitCVIRTE (0, argv, 0) == 0)	/* Needed if linking in external compiler; harmless otherwise */		return -1;	/* out of memory */	if ((panel = LoadPanel (0, "sample10_1.uir", PANEL_2)) < 0)		return -1;	DisplayPanel (panel);	RunUserInterface ();	return 0;}int CVICALLBACK Send (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){	char buf[100][101];	int num,i;	if(event==EVENT_COMMIT){		GetNumTextBoxLines (panel, PANEL_SENDDATA, &num);		for(i=0;i<num;i++)			GetTextBoxLine (panel, PANEL_SENDDATA, i, buf[i]);		for(i=0;i<num;i++)			if(Type)  //server				ServerTCPWrite (ConnectedHandle, buf[i], 100, 0);			else	  //client				ClientTCPWrite (ConnectedHandle, buf[i], 100, 0);  	}	return 0;}  int  CVICALLBACK Clear(int panel, int control, int event, 		void *callbackData, int eventData1, int eventData2)         {	if(event==EVENT_COMMIT)    		ResetTextBox (panel, PANEL_RECEIVEDATA, "");	return 0;}  int CVICALLBACK quit (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){	if(event==EVENT_COMMIT)	{		QuitUserInterface (0);		if(Type)//server			UnregisterTCPServer (2001);		else 			if(ConnectedHandle)				DisconnectFromTCPServer (ConnectedHandle); 	}	return 0;   }int CVICALLBACK ok (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){	if(event==EVENT_COMMIT) {		if(Type==0)  //client			GetCtrlVal (panel, PANEL_2_STRING, Machine);		DiscardPanel( panel);		panel = LoadPanel (0, "sample10_1.uir", PANEL);		Start();		if(Type) //server			SetCtrlVal (panel, PANEL_TEXTMSG, "Run in Server Mode");		else 			SetCtrlVal (panel, PANEL_TEXTMSG, "Run in Client Mode"); 		DisplayPanel (panel); 	}	return 0;}int CVICALLBACK SelectType (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){	if(event==EVENT_COMMIT) {		 GetCtrlVal (panel, PANEL_2_BINARYSWITCH, &Type);   		if(Type==0) //client			SetCtrlAttribute (panel, PANEL_2_STRING, ATTR_DIMMED, 0);		else 		//server			SetCtrlAttribute (panel, PANEL_2_STRING, ATTR_DIMMED, 1); 	}	return 0;}int CVICALLBACK Timer (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){	char buf[100];	if(event==EVENT_TIMER_TICK)   //client		 if(!ConnectToTCPServer (&ConnectedHandle, 2001, Machine, ClientCallback, 0, 0))		 {  //no error			GetTCPPeerAddr (ConnectedHandle,buf, 50);			SetCtrlVal (panel, PANEL_CONNECTEDIP, buf);			GetTCPPeerName (ConnectedHandle,buf, 50);			SetCtrlVal (panel, PANEL_CONNECTEDNAME, buf); 		 	SetCtrlAttribute (panel, PANEL_TIMER, ATTR_ENABLED, 0); 			SetCtrlAttribute (panel, PANEL_SEND, ATTR_DIMMED, 0);			SetCtrlVal (panel, PANEL_CONNECTED, 1); 		 }	return 0;}int CVICALLBACK ClientCallback(unsigned handle, int event, 		int error, void *callbackData){ 	char buf[1000];      	switch(event){ 	case TCP_DISCONNECT: 		ConnectedHandle=0;   		SetCtrlVal (panel, PANEL_CONNECTEDIP, "");  		SetCtrlVal (panel, PANEL_CONNECTEDNAME, "");      		SetCtrlAttribute (panel, PANEL_SEND, ATTR_DIMMED, 1);		SetCtrlVal (panel, PANEL_CONNECTED, 0);		//if disconnected,then try		SetCtrlAttribute (panel, PANEL_TIMER, ATTR_ENABLED, 1);     		//if(error)  return 0; 		break; 	case TCP_DATAREADY:		if(ClientTCPRead (handle, buf, 900, 500)) ;		//	return 0;		InsertTextBoxLine (panel, PANEL_RECEIVEDATA, -1, buf); 		break; 	} 	return 0;}int CVICALLBACK ServerCallback(unsigned handle, int event, 		int error, void *callbackData){	char buf[1000]; 	switch(event){ 	case TCP_CONNECT:		GetTCPPeerAddr (handle,buf, 50);		SetCtrlVal (panel, PANEL_CONNECTEDIP, buf);		GetTCPPeerName (handle,buf, 50);		SetCtrlVal (panel, PANEL_CONNECTEDNAME, buf); 		 		ConnectedHandle=handle;		SetCtrlAttribute (panel, PANEL_SEND, ATTR_DIMMED, 0);		SetCtrlVal (panel, PANEL_CONNECTED, 1);  		break; 	case TCP_DISCONNECT: 		ConnectedHandle=0; 		SetCtrlVal (panel, PANEL_CONNECTEDIP, "");  		SetCtrlVal (panel, PANEL_CONNECTEDNAME, "");      		SetCtrlAttribute (panel, PANEL_SEND, ATTR_DIMMED, 1);		SetCtrlVal (panel, PANEL_CONNECTED, 0); 		//if(error)  return 0;      		break; 	case TCP_DATAREADY:		if(ServerTCPRead (handle, buf, 999, 500));		//	return 0;		InsertTextBoxLine (panel, PANEL_RECEIVEDATA, -1, buf);  		break; 	} 	return 0;}void Start(){	char buf[100]; 	if(Type)//Server		RegisterTCPServer (2001, ServerCallback, 0); 	else//client		 if(!ConnectToTCPServer (&ConnectedHandle, 2001, Machine, ClientCallback, 0, 0))		 {  //no error			GetTCPPeerAddr (ConnectedHandle,buf, 50);			SetCtrlVal (panel, PANEL_CONNECTEDIP, buf);			GetTCPPeerName (ConnectedHandle,buf, 50);			SetCtrlVal (panel, PANEL_CONNECTEDNAME, buf);		 	SetCtrlAttribute (panel, PANEL_TIMER, ATTR_ENABLED, 0); 			SetCtrlAttribute (panel, PANEL_SEND, ATTR_DIMMED, 0);			SetCtrlVal (panel, PANEL_CONNECTED, 1); 		 }		 else			SetCtrlAttribute (panel, PANEL_TIMER, ATTR_ENABLED, 1);}

⌨️ 快捷键说明

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