2016-12-08 4 views
1

다음과 같은 문제가 있습니다. 콜백 함수에서 CAN 메시지를 보내고 싶습니다. 이 콜백 함수는 timer 객체에 의해 호출됩니다. 콜백 함수가 실행될 때마다 CAN 메시지를 보내야합니다. 콜백 함수에서 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; 

캔 채널이 시작 -하지만 메시지가 전송되지 않습니다.

누군가 도울 수 있습니까?

+0

당신이 할이에

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

그리고 콜백 기능 : 당신은이에 타이머 생성 라인을 변경하여이 작업을 수행 할 수 있을까? 기본 스크립트의 하위 기능입니까? – Suever

답변

0

타이머 기능은 message 개체에 대한 액세스 권한이 없습니다 (즉, 다른 범위에 있음). 하나의 옵션은 message을 초기화하는 함수 내에서 nest your timer function입니다. 또는 message을 타이머 기능에 전달할 수 있습니다. 콜백 함수가 정의 된 어떤 함수에서

function TEST_timer_callback_fcn(message) 

    message.Signals.In_ti= 39; 
+0

방금 ​​타이머 기능에 메시지를 전달했으며 사용자가 말한 것처럼 작동합니다. –

+0

@ R.Scott : 좋습니다! 당신이 사이트를 처음 보게되면서, 문제를 해결할 때 답변을 승인으로 표시 할 수 있음을 알리고 싶습니다. 사이트에 대한 유용한 정보는 [여기] (http://stackoverflow.com/tour)에서 찾을 수 있습니다. – gnovice