版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华泰证券网络金融服务模式创新研究报告
- 苏宁易购商品经理岗位职责及面试技巧
- 美团网电商部门业务规划及执行方案
- 采购部工作流程优化方案
- 副行长的核心领导能力分析
- 2026年防灾减灾救灾中心下属事业单位选聘考试试题(附答案)
- 汽车公司办公室主任职位面试全解
- 京东物流部经理的每日工作安排与优化策略
- 游戏产业的电子游戏硬件的供应链规划
- 农业产品销售经理市场开拓方案
- 国际运输协议英文合同
- 果汁饮料加工项目可行性研究报告
- 2026年内蒙古建筑职业技术学院单招职业技能测试题库新版
- 豆制品厂车间主任职责细则
- 2025年及未来5年中国废旧纺织品回收行业市场前景预测及投资战略研究报告
- 《TCAGHP012-2018采空塌陷防治工程设计规范(试行)》
- 汽车底盘构造与检修 -课件 任务二 手动变速器检修
- 种植花卉企业计划方案(3篇)
- 儿童舞蹈创编培训
- 质量月学习质量知识培训课件
- 修脚店铺转让合同协议书
评论
0/150
提交评论