《labwindowscvi6第七章 串行口通信和网络数据传输》由会员分享,可在线阅读,更多相关《labwindowscvi6第七章 串行口通信和网络数据传输(11页珍藏版)》请在金锄头文库上搜索。
1、自动化测试与控制研究所LabWindowsLabWindows/CVI/CVI教程教程(6)(6)串行口和网络通讯串行口和网络通讯主讲:乔立岩主讲:乔立岩Email: Email: ( (交作业)交作业)交作业)交作业) MSN: MSN: (在线交流)(在线交流)(在线交流)(在线交流)Tel: 86413532 ext. 8611 Tel: 86413532 ext. 8611 (逸夫楼(逸夫楼(逸夫楼(逸夫楼611611)2/111.串行口通讯RS-232端口定义载波检测载波检测接收数据接收数据发送数据发送数据数据终端就绪数据终端就绪信号地信号地数据装置就绪数据装置就绪请求发送请求发送
2、清除发送清除发送振铃指示振铃指示1234567899/13/20249/13/20243/11 数据传输格式电气特性负逻辑:1-5V-15V, 0=+5V+15V最高速率:20kbit/s最远距离:15m起始位起始位奇偶奇偶校验位校验位停止位停止位ASCII码码9/13/20249/13/20244/11打开配置和关闭int OpenComConfig (int COM_Port, char Device_Name, long Baud_Rate, int Parity, int Data_Bits, int Stop_Bits, int Input_Queue_Size, int Outpu
3、t_Queue_Size);i = OpenComConfig (1, “”, 14400, 0, 7, 1, 512, 512);int CloseCom (int COM_Port);i = CloseCom (1);读写int ComRd (int COM_Port, char Buffer, int Count);i = ComRd (1, buf, 128);int ComWrt (int COM_Port, char Buffer, int Count);i = ComWrt (1, buf, 128);int ComRdByte (int COM_Port);int ComWrt
4、Byte (int COM_Port, int Byte);控制int FlushInQ (int COM_Port);int FlushOutQ (int COM_Port);9/13/20249/13/20245/11状态查询int GetInQLen (int COM_Port);i = GetInQLen (1);int GetOutQLen (int COM_Port);i = GetOutQLen (1);事件处理int InstallComCallback (int COM_Port, int Event_Mask, int Notify_Count, int Event_Cha
5、racter, ComCallbackPtr Callback_Function, void *Callback_Data); notifyCount = 50; / Wait for at least 50 bytes in queue eventChar = 13; / Wait for LF eventMask = LWRS_RXFLAG | LWRS_RECEIVE; InstallComCallback (comport, eventMask, notifyCount, eventChar, ComCallbackFunction, NULL);9/13/20249/13/20246
6、/11网络通讯2.TCP协议(Transmission Control Protocol传输控制协议 )使用TCP进行网络通信时每个连接包括一个服务器和一个客户。TCP服务器能通过网络向客户应用程序发送数据或从客户应用程序接收数据,客户应用程序也可以向服务器应用程序发送数据或从服务器应用程序接收数据;TCP服务器应用程序一旦向系统注册,就等待客户应用程序的连接请求;而客户应用程序只能向已经存在的服务器应用程序请求连接。 每个TCP服务器需要主机名(如:aaa.bbb.ccc)或主机IP地址(如:123.456.78.90)和这个主机的唯一端口号9/13/20249/13/20247/11服务器
7、函数int RegisterTCPServer (unsigned int Port_Number, tcpFuncPtr Callback_Function, void *Callback_Data);i=RegisterTCPServer (200, ServerTCPCB, 0) ;回调函数:int (*tcpFuncPtr) (unsigned handle, int xType, int errCode, void *callbackData); TCP_CONNECT TCP_DISCONNECT TCP_DATAREADYint CVICALLBACK ServerTCPCB (
8、unsigned handle, int event, int error, void *callbackData);int UnregisterTCPServer (unsigned int Port_Number);int ServerTCPRead (unsigned int Conversation_Handle, void *Data_Buffer, unsigned int Data_Size, unsigned int Time_Out);dataSize = ServerTCPRead (g_hconversation, receiveBuf, dataSize, 1000);
9、9/13/20249/13/20248/11int ServerTCPWrite (unsigned int Conversation_Handle, void *Data_Pointer, unsigned int Data_Size, unsigned int Time_Out);i=ServerTCPWrite (g_hconversation, transmitBuf, strlen (transmitBuf) + 1, 1000) ;int DisconnectTCPClient (unsigned int Conversation_Handle);客户机函数int ConnectT
10、oTCPServer (unsigned int *Conversation_Handle, unsigned int Port_Number, char Server_Host_Name, tcpFuncPtr Callback_Function, void *Callback_Data, unsigned int Time_Out);i=ConnectToTCPServer (&g_hconversation, 200, tempBuf, ClientTCPCB, NULL, 5000);回调函数:int (*tcpFuncPtr) (unsigned handle, int xType,
11、 int errCode, void *callbackData);int CVICALLBACK ClientTCPCB (unsigned handle, int event, int error, void *callbackData); TCP_DISCONNECT TCP_DATAREADY9/13/20249/13/20249/11int DisconnectFromTCPServer (unsigned int Conversation_Handle); int ClientTCPRead (unsigned int Conversation_Handle, void *Data
12、_Buffer, unsigned int Data_Size, unsigned int Time_Out);i = ClientTCPRead (g_hconversation, receiveBuf, dataSize, 1000) ;int ClientTCPWrite (unsigned int Conversation_Handle, void *Data_Pointer, unsigned int Data_Size, unsigned int Time_Out);ClientTCPWrite (g_hconversation, transmitBuf, strlen (tran
13、smitBuf) + 1, 1000);支持函数int GetTCPHostAddr (char Buffer, int Buffer_Size);int GetTCPHostName (char Buffer, int Buffer_Size);int GetTCPPeerAddr (unsigned int Connection_Handle, char Buffer, int Buffer_Size);int GetTCPPeerName (unsigned int Connection_Handle, char Buffer, int Buffer_Size);9/13/20249/1
14、3/202410/113.DataSocketNI公司定义的网络数据 通讯协议DataSocket库为NI的DataSocket编程提供了支持,也简化了应用程序之间动态数据交换 适用于大批量实时数据传递,简化用户编程9/13/20249/13/202411/11上机作业(3选1)1.将上次上机作业产生的波形数据存储到文件中,并能够从文件中回读显示(要求用ANSI C库stdio.h中的文件打开和读写函数)2.编写一个自发自收的RS-232串口通讯程序(电缆连接2-3)3.编写网络通讯程序(可以两位同学合作,一人编写服务器程序,另一人编写客户机程序)电缆连接:1-3,2-6,其它一对一9/13/20249/13/2024