Matlab 是否可以通过回调函数发送CAN消息?

Matlab 是否可以通过回调函数发送CAN消息?,matlab,timer,callback,simulink,can-bus,Matlab,Timer,Callback,Simulink,Can Bus,我有以下问题:我想通过回调函数发送CAN消息。此回调函数由timerobject调用。每次执行回调函数时,它都应发送CAN消息 我编码: canch = canChannel('PEAK-System', 'PCAN_USBBUS1'); configBusSpeed(canch, 1000000) start(canch) canch.Database = canDatabase('\\psf\Home\Desktop\02 CAN DBC\CAN4.dbc'); message

我有以下问题:我想通过回调函数发送CAN消息。此回调函数由timerobject调用。每次执行回调函数时,它都应发送CAN消息

我编码:

canch = canChannel('PEAK-System', 'PCAN_USBBUS1'); 
configBusSpeed(canch, 1000000)  
start(canch) 

canch.Database = canDatabase('\\psf\Home\Desktop\02 CAN DBC\CAN4.dbc'); 

message = canMessage (canch.Database,'IPSS_RX_1_1ms'); 

transmitPeriodic(canch,message, 'On', 0.01); 

T= timer('ExecutionMode','fixedrate','Period',0.2,...
         'TimerFcn',@TEST_timer_callback_fcn,'StopFcn','disp(''Timer has stopped'')');

start(T) 
回调函数:

function TEST_timer_callback_fcn(src,event)

message.Signals.In_ti= 39;
CAN通道启动-但消息未发送


有人能帮忙吗?

很可能您的计时器功能根本无法访问
消息
对象(即,它存在于不同的范围内)。一个选项是在您初始化
消息的函数中进行初始化。或者,您可以将
消息
传递给计时器功能。您可以通过将计时器创建行更改为:

T = timer('ExecutionMode','fixedrate','Period',0.2,...
          'TimerFcn',@(~,~) TEST_timer_callback_fcn(message),...
          'StopFcn','disp(''Timer has stopped'')');
以及此函数的回调函数:

function TEST_timer_callback_fcn(message)

  message.Signals.In_ti= 39;

很可能您的计时器函数根本无法访问
消息
对象(即,它存在于不同的范围内)。一个选项是在您初始化
消息的函数中进行初始化。或者,您可以将
消息
传递给计时器功能。您可以通过将计时器创建行更改为:

T = timer('ExecutionMode','fixedrate','Period',0.2,...
          'TimerFcn',@(~,~) TEST_timer_callback_fcn(message),...
          'StopFcn','disp(''Timer has stopped'')');
以及此函数的回调函数:

function TEST_timer_callback_fcn(message)

  message.Signals.In_ti= 39;

您在哪个函数中定义了回调函数?它是主脚本的子函数吗?在哪个函数中定义了回调函数?这是你的主脚本的一个子函数吗?我刚刚把消息传递给我的计时器函数,它就像你说的那样工作。@R.Scott:太好了!鉴于您对该网站相对较新,我只是想让您知道,在解决问题时,您可以将答案标记为已接受。可以找到更多关于该站点的有用信息。我刚刚将消息传递给我的计时器功能,它的工作原理与您所说的一样。@R.Scott:太好了!鉴于您对该网站相对较新,我只是想让您知道,在解决问题时,您可以将答案标记为已接受。可以找到更多关于该网站的有用信息。