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