我有一个定制设备,通过串口发送/接收数据。我想知道是否有任何函数可以用来获取等待从串口读取的字节数?
我只想要一个windows api解决方案,如果有的话。这似乎是一项微不足道的任务,我不想使用外部组件。
答案 0 :(得分:5)
ClearCommError
应填写COMSTAT
(TComStat记录),其中有一个'cbInQue'成员,指定端口上收到的未读字节数。
答案 1 :(得分:4)
我使用TComPort。虽然你可以使用WinAPi调用,但它们很棘手,TComPort会处理无聊的事情。它非常轻巧自由,您可以使用帮助中的TComport.InputCount函数:
Returns the number of bytes in input buffer.
function InputCount: Integer;
Description
Call InputCount function to get the number of bytes in input buffer.
答案 2 :(得分:1)
Win API ClearCommError 应返回在接收缓冲区中等待的字符数,其中 cHandle 当前使用/打开串行通信端口。
function TRS232Comm.InputCount: cardinal;
var
Errors: Cardinal;
CommStat: TComStat;
begin
if not ClearCommError(cHandle, Errors, @CommStat) then
begin
PurgeComm(cHandle, PURGE_RXCLEAR); //Just empty comm buffer on error and return 0
result := 0;
end else
result := CommStat.cbInQue;
end;