?? sample10_1.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 + -