当BytesAvailableFcn到底运行吗?

14日视图(30天)
西奥Husby
西奥Husby 2023年6月16日21:00
我写一个GUI, MATLAB之间处理异步通信和串行设备,使用串口类的BytesAvailableFcn回调处理传入消息。我有一个基本的问题对其行为。
回调是配置为运行每次接收一个字节。如果Matlab接收一个字节时执行另一个函数或函数的堆栈,并回调立即运行(异步)和其他中断函数,还是BytesAvailableFcn调得到排队后运行其他功能已经完成了吗?
3评论
沃尔特·罗伯森
沃尔特·罗伯森 约17小时前
你是说BytesAvailableFcn只有当MATLAB返回命令行执行,要么是因为没有什么剩下要做还是因为断点或 键盘 命令被执行?或者你是说BytesAvailableFcn时才执行MATLAB返回到命令行,因为没有什么剩下要做(因为这是唯一条件当前执行堆栈的功能已完成)。

登录置评。

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 约16小时前
定时器函数(某地)记录执行下一行的开头的MATLAB代码执行。我不会感到惊讶如果BytesAvailableFcn是在同样的条件下执行。
澄清一下,如果你有喜欢的东西
();B ();C ();
D ();
和定时器B()执行时,计时器不会故意尽快服务B——规则是完成 当前的定时器执行结束时“声明”。为了讨论,第二个假设B是内置的或调用外部的东西不是在MATLAB内部编码。所以C将开始执行。如果C是内置/外就没有机会为中断服务结束前。但如果C是本身在MATLAB进行编码,然后在C会有多个代码行,和一开始执行的第一个,中断服务。的服务将开始第二次MATLAB在一行代码的开始 各级
怀疑 BytesAvailableFcn是在同样的条件下执行的。

s manbetx 845


释放

R2023a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!