LabWindows/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为整型变量,用于指定串口号,有效范围为1~1000;
Device_Name[]为字符型数组,是用ASCⅡ码字符串表示的串口名。
2)OpenComConfig函数
功能:用来打开一个串行口并进行相关的参数设置。该函数原型为:
int OpenComConfig(int COM_Port,char Device_Name[],long Baud_Rate,int Data_Bits,int Stop_Bits,int Input_Queue_Size,int Output_Queue_Size)
1
Parity,int
其中,参数COM_Port为整型变量,用于指定串口号,有效范围为1~1000;
Device_Name[]为字符型数组,是用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.5或2;
Input_Queue_Size为整型变量,用来指定串行口输入队列的大小;
Output_Queue_Size为整型变量,用来指定串行口输出队列的大小。
3)CloseCom函数
功能:用来关闭一个串行口。该函数原型为:
int CloseCom(int COM_Port)
2
其中,参数COM_Port用于指定端口号。
2.串行口输入/输出函数
1)ComRd函数
功能:用来从指定端口读取字符并存放到缓冲区中。该函数原型为:
int ComRd(int COM_Port,char Buffer[ ],int Count)
其中,参数COM_Port用于指定端口号;
Buffer[ ]为字符型数组,用来存放读取出的字符串;
Count为整型,表示要读取的字符串的长度。
2)ComRdByte函数
功能:用来从指定串行口的输出队列读取一个字节的信息。该函数原型为:
int ComRdByte(int COM_Port)
其中,参数COM_Port用于指定端口号。
3
3)ComWrt函数
功能:用来向指定串行口的输出队列写入若干字节的信息。该函数原型为:
int ComWrt (int COM_Port,char Buffer[ ],int Count)
其中,参数Buffer[ ]为字符型数组,用来存放要发送的字符串;
Count为整型,表示要发送的字符串的长度。
4)ComWrtByte函数
功能:用来向指定串行口的输出队列写一个字节的信息。该函数原型为:
int ComWrtByte(int COM_Port,int Byte)
其中,参数Byte为整型,表示要发送的低位字节。
5)ComToFile函数
功能:用来从串口的输入队列读取数据,并将数据写入一个文件中,返回成功写入文件的字节数。该函数原型为:
4
int ComToFile(int COM_Port,int File_Handle,int Count,int Termination_Byte)
其中,参数File_Handle表示从Open_File得到的文件句柄;
Count表示写入文件终止的条件之一,写入count个字节数;
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函数
功能:用来从串行口读取数据,直到遇到终止条件为止。该函数原型为:
5
int 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函数
功能:用来设置串行口输入/输出操作的时间,超过设定时间,提示出错信息,终止当前操作。该函数原型为:
6
int SetComTime(int 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_Handshanking)
其中,参数Hardware_Handshanking为硬件握手模式。有三种模式,0为禁止硬件握手,忽略CTS信号,RTS和DTR信号高电平有效;2为允许硬件握手,CTS控制发送,RTS为握手信号,DTR为高电平。
7
6)ComBreak函数
功能:生成中断信号。函数原型为:
int ComBreak(int COM_Port,int Break_Time_msec);
其中,参数Break_Time_msec表示中断信号持续的时间。
7)ComSetEscape函数
功能:设置串口扩展命令。函数原型为:
int ComSetEscape(int COM_Port,int Escape_Code);
其中,参数Escape_Code表示扩展函数代码。
4.串行口状态查询函数
1)GetInQLen函数:
功能:用来获取指定串行口输入队列内的字符数。该函数原型为:
int GetInQLen (int COM_Port)
8
2)GetOutQLen函数
功能:用来获取指定串行口输出队列内的字符数。该函数原型为:
int GetOutQLen (int COM_Port)
3)GetComStat函数
功能:用来返回串行口的状态信息,如果小于0,则表明串行口工作不正常。
该函数原型为:
int GetComStat (int COM_Port)
4)ReturnRS232Err函数
功能:返回错误代码。该函数原型为:
int ReturnRS232Err (int COM_Port)
5.串行口事件处理函数
InstallComCallback函数:
9
功能:用来为指定串行口设置一个回调函数。该函数原型为:
int InstallComCallback (int COM_Port,int Event_Mask,int Notify_Count,int Event_Character , ComCallbackPtr callback_Function, void *callback_Data)
其中,参数Event_Mask为整型,设置回调函数可以响应的事件,如果是0,则不触发回调函数;
Notify_Count为整型,指定触发回调函数接收数据的输入缓冲区的最小字节数,可以是0到整个输入队列的大小;
Event_Character为整型,指定触发LWRS_RXFLAG事件的字节值,可以是0~255;
Callback_Function为ComCallbackPtr类型,定义回调函数;
*callback_Data为空类型,表示回调数据。
6.调制解调文件传输函数
1)XmodemReceive函数
功能:表示接收端口的数据包,并将数据写入文件中。函数原型为:
int XmodemReceive(int COM_Port,char File_Name[]);
10
2)XmodemSend函数
功能:表示读取文件数据,并将数据以包的形式发送到端口缓冲区。函数原型为:
int XmodemSend (int COM_Port,char File_Name[]);
函数以二进制形式发送数据文件,对于文件中回车和换行符不作特殊处理。在数据包很大且波特率较低的情况下,应设置一个较大的超时时限start_Delay.
3)GetComConnectionState函数
功能:返回指定端口的连接状态。函数原型为:
int GetComConnectionState (int COM_Port)
11