Matlab中同一终止符下如何配置多回调或实现单回调调用多函数
MATLAB TCP/IP回调配置问题解答
针对你使用configureCallback配置TCP/IP终止符触发回调的两个问题,结论如下:
单个回调函数中调用多个函数:完全支持
你当前写的@(varargin)myfunc()本质是回调触发后的执行入口,MATLAB对入口内部调用的函数数量没有限制。如果逻辑简单,你可以直接在匿名函数内按顺序写多个函数调用;如果处理逻辑复杂,更推荐单独定义一个回调入口函数,在内部按你需要的顺序调用所有处理逻辑。
参考实现:% 配置回调,按规范传入通信对象和事件参数,比空varargin兼容性更好 configureCallback(t1,"terminator",@tcpProcessEntry); % 回调入口函数,内部可调用任意数量的处理函数 function tcpProcessEntry(src,~) rawData = readline(src); % 读取到终止符分割的TCP数据 dataParse(rawData); % 第一个函数:协议解析 uiRefresh(rawData); % 第二个函数:界面更新 logWrite(rawData); % 第三个函数:日志落盘 end注意:不要在回调里写执行时间过长的阻塞逻辑,否则会丢TCP缓存数据。
同一通信对象、同一终止符配置多个回调函数:原生不支持
对同一个TCP通信对象的同一种触发规则(即当前的terminator终止符触发),重复调用configureCallback设置新回调时,新配置的回调会直接覆盖之前的旧回调,不会出现多个回调同时触发的效果。如果需要触发时执行多段独立逻辑,直接用上面说的「单回调入口内调用多个函数」的方案实现即可,既可以自由控制逻辑执行顺序,也方便后续维护。
内容的提问来源于stack exchange,提问作者Sugandh
相关产品推荐
相关产品推荐

