如何使用Matlab清除串口BytesAvailable?

时间:2013-06-09 13:11:27

标签: matlab matlab-guide

我已通过串口将手机连接到计算机,我正在使用matlab来控制它(手机)。

s = serial('COM8');
s.BytesAvailable %this returns 0

使用一些fwrite AT命令后s.BytesAvailable返回的数字大于0(在我的例子中它返回54,但这里的数字无关紧要)。

我可以重置s.BytesAvailable再次将其设为0吗?我试过了fopen(s),但没有(似乎有)发生过。

1 个答案:

答案 0 :(得分:0)

您可以在matlab中尝试 flushinput(Serial_Port_obj)功能。此函数清除存储在输入缓冲区中的所有数据。

否则您可以使用 fread(Serial_Port_obj,Serial_Port_obj.BytesAvailable)。后者只是立即读取输入缓冲区中再次存储的所有数据。

但是一旦缓冲区清除,手机中的数据将再次开始流入计算机缓冲区。简单地认为是这样的:

PhoneDataToTransmitOnThePhone - > SoftwareBufferOnThePhone - > HardwareBufferOnThePhone - > HardwareBufferOnThePC - > SoftwareBufferOnThePC - > PhoneDataToTransmitOnThePC

如果您还想删除存储在手机缓冲区中的数据,我无法帮助您。

请注意,所有缓冲区都是FIFO(先进先出 - 先出先出)。