Matlab 是否可以通过回调函数发送CAN消息?
我有以下问题:我想通过回调函数发送CAN消息。此回调函数由timerobject调用。每次执行回调函数时,它都应发送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
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:太好了!鉴于您对该网站相对较新,我只是想让您知道,在解决问题时,您可以将答案标记为已接受。可以找到更多关于该网站的有用信息。