1、1LabWindows/CVI 串口通信函数LabWindows/CVI 提供的 RS-232 函数库主要包括以下几类函数:串行口打开/关闭 (Open/Close)函数,串行口输入/ 输出(Input/Output)函数,串行口控制(Control)函数,串行口状态查询(Status)函数和串行口事件处理(Callbacks)函数。下面分别予以介绍。1串行口打开/关闭函数1)OpenCom 函数功能:表示以默认的参数设置方式打开一个串口。该函数原型为:int OpenCom (int COM_Port,char Device_Name )其中,参数 COM_Port 为整型变量,用于指定串口
2、号,有效范围为 11000;Device_Name为字符型数组,是用 ASC码字符串表示的串口名。2)OpenComConfig 函数功能:用来打开一个串行口并进行相关的参数设置。该函数原型为:int OpenComConfig(int COM_Port,char Device_Name,long Baud_Rate,int Parity,int Data_Bits,int Stop_Bits,int Input_Queue_Size,int Output_Queue_Size)其中,参数 COM_Port 为整型变量,用于指定串口号,有效范围为 11000;Device_Name为字符型数组
3、,是用 ASC码字符串表示的串口名。例如,以“COM1”来代替端口 1,如果输入值为 NULL 或一个空字符串,则以 COM_Port 号作为指定端口号。Baud_Rate 为长整型变量,用来设置串行口的传输速率,标准的传输速率有110、300、600、1200、2400、4800、9600、19200b/s 等;默认值为 9600。Parity 为整型变量,用来指定奇偶校验模式。0 表示无奇偶校验,1 表示奇校验,2 表示 偶校验;Data_Bits 为整型变量,用来指定每帧信息中数据位的个数,可选 5、6、7、8;Stop_Bits 为整型变量,用来指定每帧信息中停止位的个数,可选 1、1
4、.5 或 2;Input_Queue_Size 为整型变量,用来指定串行口输入队列的大小;Output_Queue_Size 为整型变量,用来指定串行口输出队列的大小。3)CloseCom 函数功能:用来关闭一个串行口。该函数原型为:int CloseCom(int COM_Port)其中,参数 COM_Port 用于指定端口号。2串行口输入/输出函数1)ComRd 函数功能:用来从指定端口读取字符并存放到缓冲区中。该函数原型为:int ComRd(int COM_Port,char Buffer ,int Count)其中,参数 COM_Port 用于指定端口号;Buffer 为字符型数组,
5、用来存放读取出的字符串;Count 为整型,表示要读取的字符串的长度。22)ComRdByte 函数功能:用来从指定串行口的输出队列读取一个字节的信息。该函数原型为:int ComRdByte(int COM_Port)其中,参数 COM_Port 用于指定端口号。3)ComWrt 函数功能:用来向指定串行口的输出队列写入若干字节的信息。该函数原型为:int ComWrt (int COM_Port,char Buffer ,int Count)其中,参数 Buffer 为字符型数组,用来存放要发送的字符串;Count 为整型,表示要发送的字符串的长度。4)ComWrtByte 函数功能:用来
6、向指定串行口的输出队列写一个字节的信息。该函数原型为:int ComWrtByte(int COM_Port,int Byte)其中,参数 Byte 为整型,表示要发送的低位字节。5)ComToFile 函数功能:用来从串口的输入队列读取数据,并将数据写入一个文件中,返回成功写入文件的字节数。该函数原型为:int ComToFile(int COM_Port, int File_Handle,int Count,int Termination_Byte)其中,参数 File_Handle 表示从 Open_File 得到的文件句柄;Count 表示写入文件终止的条件之一,写入 count 个字
7、节数;Termination_Byte 表示写入文件终止的条件之一,遇到终止字节。6)ComFromFile 函数功能:读取指定文件并写入 COM 端口的输出队列。该函数原型为:int ComFromFile(int COM_Port,int File_Handle,int Count,int Termination_Byte)其中,参数 File_Handle 表示文件句柄。Count 表示从指定端口所能读取的最大字节数;Termination_Byte 表示写入文件终止的条件之一,遇到终止字节。7)ComRdTerm 函数功能:用来从串行口读取数据,直到遇到终止条件为止。该函数原型为:in
8、t ComRdTerm (int COM_Port,char Buffer ,int Count,int Termination_Byte)参数说明同上。3串行口控制函数1)FlushInQ 函数功能:用来清空指定串行口的输入队列字符。该函数原型为:int FlushInQ(int COM_Port)2)FlushOutQ 函数功能:用来清空指定串行口的输出队列。该函数原型为:int FlushOutQ(int COMPort)3)SetComTime 函数3功能:用来设置串行口输入/输出操作的时间限制,超过设定时间,提示出错信息,终止当前操作。该函数原型为:int SetComTime(in
9、t COM_Port,double Timeout_Seconds)其中,参数 timeoutSeconds 表示限制时间。4)SetXMode 函数功能:表示是否允许软件握手。默认情况下为禁止软件握手。如果串口没有打开或者输入无效参数,则会返回一个错误。函数原型为:int SetXMode (int COM_Port,int Mode);其中,参数 Mode 的默认值为 0,禁止软件握手;1 表示允许软件握手。5)SetCTSMode 函数功能:表示是否允许硬件握手。默认情况为禁止硬件握手。函数原型为:int SetCTSMode(int COM_Port,int Hardware_Hand
10、shanking)其中,参数 Hardware_Handshanking 为硬件握手模式。有三种模式,0 为禁止硬件握手,忽略 CTS 信号, RTS 和 DTR 信号高电平有效;2 为允许硬件握手,CTS 控制发送,RTS为握手信号,DTR 为高电平。6)ComBreak 函数功能:生成中断信号。函数原型为:int ComBreak(int COM_Port,int Break_Time_msec);其中,参数 Break_Time_msec 表示中断信号持续的时间。7)ComSetEscape 函数功能:设置串口扩展命令。函数原型为:int ComSetEscape(int COM_Por
11、t,int Escape_Code);其中,参数 Escape_Code 表示扩展函数代码。4串行口状态查询函数1)GetInQLen 函数:功能:用来获取指定串行口输入队列内的字符数。该函数原型为:int GetInQLen (int COM_Port)2)GetOutQLen 函数功能:用来获取指定串行口输出队列内的字符数。该函数原型为:int GetOutQLen (int COM_Port)3)GetComStat 函数功能:用来返回串行口的状态信息,如果小于 0,则表明串行口工作不正常。该函数原型为:int GetComStat (int COM_Port)4)ReturnRS232
12、Err 函数功能:返回错误代码。该函数原型为:int ReturnRS232Err (int COM_Port)5串行口事件处理函数4InstallComCallback 函数:功能:用来为指定串行口设置一个回调函数。该函数原型为:int InstallComCallback (int COM_Port,int Event_Mask,int Notify_Count,int Event_Character , ComCallbackPtr callback_Function, void *callback_Data)其中,参数 Event_Mask 为整型,设置回调函数可以响应的事件,如果是
13、0,则不触发回调函数;Notify_Count 为整型,指定触发回调函数接收数据的输入缓冲区的最小字节数,可以是 0 到整个输入队列的大小;Event_Character 为整型,指定触发 LWRS_RXFLAG 事件的字节值,可以是 0255;Callback_Function 为 ComCallbackPtr 类型,定义回调函数;*callback_Data 为空类型,表示回调数据。6调制解调文件传输函数1)XmodemReceive 函数功能:表示接收端口的数据包,并将数据写入文件中。函数原型为:int XmodemReceive(int COM_Port,char File_Name);2)XmodemSend 函数功能:表示读取文件数据,并将数据以包的形式发送到端口缓冲区。函数原型为:int XmodemSend (int COM_Port,char File_Name);函数以二进制形式发送数据文件,对于文件中回车和换行符不作特殊处理。在数据包很大且波特率较低的情况下,应设置一个较大的超时时限 start_Delay.3)GetComConnectionState 函数功能:返回指定端口的连接状态。函数原型为:int GetComConnectionState (int COM_Port)