我利用Windows API函数进行串口通讯,请问如何判断串口已接收到数据,谢谢。函数与变量如下:
(*关闭指定串口*)
Function CloseComm(Const Com:integer;const CloseAll:boolean=False):boolean;
(*打开指定串口*)
function OpenComm(Const COM:integer;
Const My_BandRate:DWORD=4800;
Const My_ByteSize:byte=8;
Const My_Parity:byte=NoParity;
Const My_StopBits:byte=0):Boolean;
//读串口函数集
Function ReadComm_string(Const Com:integer;var revcStr:string;const len:DWORD=0):boolean;//读取串口string
Function ReadComm_ByteArray(const Com:integer;var revcArray:array of byte;const len:DWORD=0):boolean;
Function ReadComm_Byte(Const Com:integer;var OneByte:byte):boolean;
//写串口口函数集
Function WriteComm_String(Const Com:integer;Const SendString:string):boolean;
Function WriteComm_ByteArray(Const Com:integer;const SendByte:array of byte;Buflong:DWORD):boolean;
Function WriteComm_Byte(Const Com:integer;const SendByte:byte):boolean;
//--------------
Function GetRXDsize(com:integer):integer; //得到RXD缓冲区数据长度
Function GetModemState(com:integer):DWord;//得到状态口的状态
procedure SetReadOFFByte(offByte:byte=$13);//设置接收停止结束符
Function IsReadOFFByte(RByte:byte):boolean;//判断接收的是不是停止结束符
procedure ClearRXD(com:integer);//清空RXD缓冲区内容
procedure ClearTXD(com:integer);//清空TXD缓冲区内容
procedure ClearComBuf(com:integer);//清空所有缓冲区
end;
(*关闭指定串口*)
Function CloseComm(Const Com:integer;const CloseAll:boolean=False):boolean;
(*打开指定串口*)
function OpenComm(Const COM:integer;
Const My_BandRate:DWORD=4800;
Const My_ByteSize:byte=8;
Const My_Parity:byte=NoParity;
Const My_StopBits:byte=0):Boolean;
//读串口函数集
Function ReadComm_string(Const Com:integer;var revcStr:string;const len:DWORD=0):boolean;//读取串口string
Function ReadComm_ByteArray(const Com:integer;var revcArray:array of byte;const len:DWORD=0):boolean;
Function ReadComm_Byte(Const Com:integer;var OneByte:byte):boolean;
//写串口口函数集
Function WriteComm_String(Const Com:integer;Const SendString:string):boolean;
Function WriteComm_ByteArray(Const Com:integer;const SendByte:array of byte;Buflong:DWORD):boolean;
Function WriteComm_Byte(Const Com:integer;const SendByte:byte):boolean;
//--------------
Function GetRXDsize(com:integer):integer; //得到RXD缓冲区数据长度
Function GetModemState(com:integer):DWord;//得到状态口的状态
procedure SetReadOFFByte(offByte:byte=$13);//设置接收停止结束符
Function IsReadOFFByte(RByte:byte):boolean;//判断接收的是不是停止结束符
procedure ClearRXD(com:integer);//清空RXD缓冲区内容
procedure ClearTXD(com:integer);//清空TXD缓冲区内容
procedure ClearComBuf(com:integer);//清空所有缓冲区
end;
WaitForMultipleObjects