LabWindows中TCPip函数分析与实例_第1页
LabWindows中TCPip函数分析与实例_第2页
LabWindows中TCPip函数分析与实例_第3页
LabWindows中TCPip函数分析与实例_第4页
LabWindows中TCPip函数分析与实例_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上LabWindows CVI TCP程序说明1 本系统框图如下:终端Client服务器sever路由交换机2 TCP函数说明2.1 Client Functions客户端ClientTCPRead (unsigned int conversationHandle, void *dataBuffer, size_t dataSize, unsigned int timeOut);参量1:操作柄、参量2:读入数据、参量3:读入数据长度、参量4:溢出时间。Return:读出数据的字节长度(可用来校验数据)。ClientTCPWrite (unsigned int conve

2、rsationHandle, void *dataPointer, size_t dataSize, unsigned int timeOut);参量1:操作柄、参量2:输出数据、参量3:读入数据长度、参量4:溢出时间。Return:写入数据的字节长度(可用来校验数据)。ConnectToTCPServer (unsigned int *conversationHandle, unsigned int portNumber, char serverHostName, tcpFuncPtr callbackFunction, void *callbackData, unsigned int ti

3、meOut);参量1:操作柄、参量2:当前端口、参量3:服务器地址、参量4:回调函数、参量5:溢出时间Return:写入数据的字节长度(可用来校验数据)。DisconnectFromTCPServer (unsigned int conversationHandle);参量:操作柄2.2 Sever Functions服务器端DisconnectTCPClient (unsigned int conversationHandle);参量:操作柄RegisterTCPServer (unsigned int portNumber, tcpFuncPtr callbackFunction, voi

4、d *callbackData);参量1:当前端口、参量2:回调函数、参量3:返回数据(NULL)ServerTCPRead (unsigned int conversationHandle, void *dataBuffer, size_t dataSize, unsigned int timeOut);参量1:操作柄、参量2:读入数据、参量3:读入数据长度、参量4:溢出时间。Return:读出数据的字节长度(可用来校验数据)。ServerTCPWrite (unsigned int conversationHandle, void *dataPointer, size_t dataSize

5、, unsigned int timeOut);参量1:操作柄、参量2:输出数据、参量3:读入数据长度、参量4:溢出时间。Return:写入数据的字节长度(可用来校验数据)。UnregisterTCPServer (unsigned int portNumber);UnregisterTCPServerEx (unsigned int portNumber, const char localhostAddress);2.3 Support Functions 支持函数GetAllTCPHostAddresses (char *addresses, int *numberOfAddresses)

6、;参量1:network interface address、参量2:number of addressGetHostTCPSocketHandle (unsigned int connectionHandle, intptr_t *socketHandle);获取当前操作柄GetTCPHostAddr (char buffer, size_t bufferSize);获取本机的IP AddressGetTCPHostConnectionAddr (unsigned int connectionHandle, char buffer, size_t bufferSize);参量1:操作柄、参量

7、2:输出地址、参量3:数据长度。GetTCPHostName (char buffer, size_t bufferSize);获取主机(本机)用户名。GetTCPPeerAddr (unsigned int connectionHandle, char buffer, size_t bufferSize);参量1:操作柄、参量2:输出地址、参量3:数据长度。获取对方的IP地址GetTCPPeerName (unsigned int connectionHandle, char buffer, size_t bufferSize);参量1:操作柄、参量2:输出地址、参量3:数据长度。获取对方的

8、用户名SetTCPDisconnectMode (unsigned int conversationHandle, int disconnectMode);参量1:操作柄、参量2:模式选择。2.4 Other 其它函数*GetTCPErrorString (int errorNumber);根据当前错误代码,调出当前错误类型。char *GetTCPSystemErrorString (void);获取当前错误代码。int ProcessTCPEvents (void);获取当前TCP处理事件。TCPFreeMemory (void *pointerToMemory);释放内存。3 例程说明3

9、.1 服务器sever/*>>>function :TcpConnect连接 TcpDisconnect断开>>>intput:N/A >>>output:Tcpip.tcp_Port(600) TCP端口>>>*/int CVICALLBACK TcpConnect (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)int status=0;char tcp_Port10;switch (event)

10、case EVENT_COMMIT:GetCtrlVal (panelHandle, PANEL_STRING_SERVER_PORT, tcp_Port);/ 获得TCP服务器端口号sscanf(tcp_Port, "%u", &Tcpip.tcp_Port);status = RegisterTCPServer (Tcpip.tcp_Port, TcpServerCall, 0);if(!status) /注册成功 得到主机信息 Tcpip.tcp_Using=1;SetCtrlAttribute (panelHandle, PANEL_BUTTON_CONNE

11、CT, ATTR_DIMMED, 1);SetCtrlAttribute (panelHandle, PANEL_BUTTON_DISCONNECT, ATTR_DIMMED, 0);GetHostInfo();/获取主机信息break;return 0;/*>>>function :TcpServerCall TCP接收数据处理部分(主机)>>>intput:Tcpip.client_Handle操作柄>>>output:>>>*/int CVICALLBACK TcpServerCall(unsigned handle

12、, int event, int error, void *callbackData) int i;char client_Ip50;char rev_Data200;char Rev_Length50;switch (event) case TCP_CONNECT: Tcpip.client_Handle = handle;/ 获得客户端句柄,赋给全局变量GetTCPPeerAddr (Tcpip.client_Handle, client_Ip, 50);/ 获得客户端 IP 地址 SetCtrlVal (panelHandle, PANEL_STRING_CLIENT_IP, clien

13、t_Ip); / Client led亮为绿色SetCtrlAttribute (panelHandle, PANEL_LED_CLIENT, ATTR_ON_COLOR, VAL_GREEN);SetCtrlVal (panelHandle, PANEL_LED_CLIENT, 1); / Client led亮 / 设置 TCP 断开方式为自动SetTCPDisconnectMode (Tcpip.client_Handle, TCP_DISCONNECT_AUTO); break; case TCP_DATAREADY:memset (rev_Data, '0', 200

14、); / 数组清0Tcpip.tcp_Rev_Length = ServerTCPRead (Tcpip.client_Handle, rev_Data, 200, 1000);/ 从TCP服务器读数据/de_protocol(data, read_len, ret_data, &ret_len);/ 协议解析for(i=0;i<strlen(rev_Data);i+)/取出数据Tcpip.tcp_Rev_Datai=rev_Datai;SetCtrlVal (panelHandle, PANEL_TEXTBOX_TCP_ASCII, "n接收到数据:");S

15、etCtrlVal (panelHandle, PANEL_TEXTBOX_TCP_ASCII, rev_Data);SetCtrlVal (panelHandle, PANEL_TEXTBOX_TCP_ASCII, "n");SetCtrlVal (panelHandle, PANEL_TEXTBOX_TCP_ASCII, "*");SetCtrlVal (panelHandle, PANEL_TEXTBOX_TCP_ASCII, "n");sprintf(Rev_Length, "Read from TCP Client

16、: %d Bytes", Tcpip.tcp_Rev_Length); SetCtrlVal (panelHandle, PANEL_TEXTBOX_TCP_ASCII, Rev_Length); / 显示接收数据长度 break; case TCP_DISCONNECT: if(handle=Tcpip.client_Handle) / 因为断开方式被设置为自动,所以这里不需要调用DisconnectTCPClient Tcpip.client_Handle = 0;/ Disconnect时不需要再断了 SetCtrlVal (panelHandle, PANEL_LED_CLI

17、ENT, 0); / Client led灭 SetCtrlVal (panelHandle, PANEL_STRING_CLIENT_IP, ""); / 清空 IP 栏 break; return 0;注:发送数据、获取信息都是一些很简单的调用,不再介绍。3.2 客户端Clientint CVICALLBACK connect (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)char sever_Addr20;char sever_Name20;

18、char sever_Port10;char message_Buffer255;int status=0;switch (event)case EVENT_COMMIT:GetCtrlVal (panelHandle, PANEL_STRING_ADDRESS, sever_Addr);GetCtrlVal (panelHandle, PANEL_STRING_PORTNUMBER, sever_Port);sscanf(sever_Port, "%u", &Tcpip.tcp_Port);DisableBreakOnLibraryErrors ();status

19、=ConnectToTCPServer (&Tcpip.client_Handle, Tcpip.tcp_Port, sever_Addr, tcpCallback, 0, 0);EnableBreakOnLibraryErrors ();if(!status)Tcpip.tcp_Using=1;/链接标识位GetTCPPeerName (Tcpip.client_Handle, sever_Name, 20);SetCtrlVal (panelHandle, PANEL_STRING_SERVERIP, sever_Addr);SetCtrlVal (panelHandle, PAN

20、EL_STRING_SERVERNAME, sever_Name);SetCtrlAttribute (panelHandle, PANEL_LED_SERVER, ATTR_ON_COLOR, VAL_RED);SetCtrlVal (panelHandle, PANEL_LED_SERVER, 1);SetCtrlAttribute (panelHandle, PANEL_CMD_CONNECT, ATTR_DIMMED, 1);SetCtrlAttribute (panelHandle, PANEL_CMD_DISCONNECT, ATTR_DIMMED, 0); else/超时溢出sp

21、rintf(message_Buffer, "TCP library error message: %snSystem error message: %s", GetTCPErrorString (status), GetTCPSystemErrorString(); MessagePopup ("Error", message_Buffer); break;return 0;/*>>>function :tcpCallback tcp连接回调函数>>>input:handle操作柄 >>>ouput:DATA传送到textbox上*/int tcpCallback(unsigned handle, int x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论