我已经通过串口将手机连接到计算机,我正在使用 matlab 来控制它(手机)。
s = serial('COM8');
s.BytesAvailable %this returns 0
使用某些fwrite
AT 命令后s.BytesAvailable
返回大于 0 的数字(在我的情况下它返回 54,但数字在这里无关紧要)。
那么我可以将 s.BytesAvailable 重置为 0 吗?我试过fopen(s)
了,但没有(似乎)发生。
我已经通过串口将手机连接到计算机,我正在使用 matlab 来控制它(手机)。
s = serial('COM8');
s.BytesAvailable %this returns 0
使用某些fwrite
AT 命令后s.BytesAvailable
返回大于 0 的数字(在我的情况下它返回 54,但数字在这里无关紧要)。
那么我可以将 s.BytesAvailable 重置为 0 吗?我试过fopen(s)
了,但没有(似乎)发生。
您可以在 matlab 中尝试flushinput(Serial_Port_obj)函数。此函数清除存储在输入缓冲区中的所有数据。
否则,您可以使用fread(Serial_Port_obj,Serial_Port_obj.BytesAvailable)。后者只是立即读取再次存储在输入缓冲区中的所有数据。
但是一旦缓冲区被清除,来自手机的数据将再次开始流入计算机缓冲区。简单地认为它是这样的:
PhoneDataToTransmitOnThePhone -> SoftwareBufferOnThePhone -> HardwareBufferOnThePhone -> HardwareBufferOnThePC -> SoftwareBufferOnThePC -> PhoneDataToTransmitOnThePC
如果您还想删除存储在手机缓冲区中的数据,我无法帮助您。
请注意,所有缓冲区都是 FIFO(先进先出)。