版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保险风控模型的算法优化方向
- 大数据支持下的银行营销策略
- 开源大模型在银行客户画像构建中的技术探索-第1篇
- 保险风控模型优化-第312篇
- 2026-2030中国聚合支付行业前景预测及发展战略建议研究报告
- 2026-2030麻绳调谐器行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 人体反射技能考试题及答案
- 生物联考试题及答案甘肃
- 济钢高二考试题及答案大全
- 烹饪考试题及答案
- 浙江省建筑工程资料表格大全A表(施工单位用表)
- ISO14064-1 2018温室气体第1部组织层面上温室气体排放与清除量化及报告规范
- 2022年工业和信息化部工业文化发展中心社会招聘考试试题及答案
- DZ∕T 0227-2010 地质岩心钻探规程(正式版)
- ISO9001质量管理体系培训教材
- 背负式风力灭火机的操作与使用
- GB/T 10095.2-2023圆柱齿轮ISO齿面公差分级制第2部分:径向综合偏差的定义和允许值
- 办公室卫生值日表
- GB/T 4798.3-2023环境条件分类环境参数组分类及其严酷程度分级第3部分:有气候防护场所固定使用
- 连云港市东海县招聘事业单位人员考试真题及答案2022
- GB/T 32508-2016绝缘油中腐蚀性硫(二苄基二硫醚)定量检测方法
评论
0/150
提交评论