




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 conversationHandle, 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 timeOut);参量1:操作柄、参量2:当前端口、参量3:服务器地址、参量4:回调函数、参量5:溢出时间Return:写入数据的字节长度(可用来校验数据)。DisconnectFromTCPServer (unsigned int conversationHandle);参量:操作柄2.2 Sever Functions服务器端DisconnectTCPClient (unsigned int conversationHandle);参量:操作柄RegisterTCPServer (unsigned int portNumber, tcpFuncPtr callbackFunction, void *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, 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);参量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:操作柄、参量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:数据长度。获取对方的用户名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.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)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_CONNECT, 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, 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, client_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); / 数组清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;ifunction :tcpCallback tcp连接回调函数input:handle操作柄 ouput:DATA传送到textbox上*/int tcpCallback(unsigned handle, int xType, int errCode, void *callbackData)char data256;char Rev_Length50;int tcp_Rev_Length;switch(xType)case TCP_DISCONNECT:SetCtrlVal (panelHandle, PANEL_LED_SERVER, 0);SetCtrlVal (panelHandle, PANEL_STRING_SERVERIP, );SetCtrlVal (panelHandle, PANEL_STRING_SERVERNAME, );break;case TCP_DATAREADY:ClientTCPRead (handle, data, 200, 1);datastrlen(data)+1=0;SetCtrlVal (panelHandle, PANEL_TEXTBOX, data
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JJF(石化)059-2023环氧乙烷气体检测报警器校准规范
- 2025新版部编人教版小学三年级数学上册全册教案
- 重庆直播红娘培训课件
- 暑假新课专项重点预习练:解答题(含解析)-2024-2025学年人教版一年级数学下学期
- 人教版八年级英语上册Unit7达标测试卷(含答案)
- 新解读《GB-T 5671-2014汽车通 用锂基润滑脂》
- 人教版Unit 3 Same or Different Section B -2025年新八年级英语暑期提升讲义(含答案)
- 重大手术知识培训课件
- 高空作业车、汽车起重机风险识别与安全使用管控要点
- 老年人讲文明课件
- 大学生劳动教育通论知到智慧树章节测试课后答案2024年秋大连海洋大学
- 2024版农业公司与个人农产品种植合作合同范本3篇
- 亲子家庭购房合同协议
- 红军过草地课件
- 妇科进修汇报课件
- 直播选品策略与规划
- 资金主管岗位工作计划
- 电动车交通安全培训
- 2022-2023人教部编版6六年级上册《道德与法治》全册教案设计
- 2024届广东省高三三模数学试题(解析版)
- 幼儿园大班科学课件:日月地
评论
0/150
提交评论