我遇到以下问题:我想从回调函数中发送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通道启动 - 但不发送消息。
有人可以帮忙吗?
答案 0 :(得分:0)
您的计时器功能可能无法访问message
对象(即它存在于不同的范围内)。在初始化message
的函数中,一个选项是nest your timer function。或者,您可以将message
传递给计时器功能。您可以通过将计时器创建行更改为:
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;