0

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

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

使用某些fwriteAT 命令后s.BytesAvailable返回大于 0 的数字(在我的情况下它返回 54,但数字在这里无关紧要)。

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

4

1 回答 1

0

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

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

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

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

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

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

于 2015-06-02T16:01:54.460 回答