是否可以通过回调函数发送 CAN 消息?
Is it possible to send CAN messages out of a callback function?
我有以下问题:我想通过回调函数发送 CAN 消息。此回调函数由计时器对象调用。每次执行回调函数时,它应该发送 CAN 消息。
我编码:
canch = canChannel('PEAK-System', 'PCAN_USBBUS1');
configBusSpeed(canch, 1000000)
start(canch)
canch.Database = canDatabase('\psf\Home\Desktop 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 通道启动 - 但消息未发送。
有人可以帮忙吗?
很可能您的计时器函数根本无法访问 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;
我有以下问题:我想通过回调函数发送 CAN 消息。此回调函数由计时器对象调用。每次执行回调函数时,它应该发送 CAN 消息。
我编码:
canch = canChannel('PEAK-System', 'PCAN_USBBUS1');
configBusSpeed(canch, 1000000)
start(canch)
canch.Database = canDatabase('\psf\Home\Desktop 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 通道启动 - 但消息未发送。
有人可以帮忙吗?
很可能您的计时器函数根本无法访问 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;