Я пытаюсь установить полнодуплексную последовательную связь между портом RS485 контроллера шагового двигателя и COM-портом моего ноутбука. Используемый мной кабель подключается к порту RS485 на контроллере и к порту USB на моем ноутбуке. Я использую сценарий Matlab для отправки и получения команд контроллеру для перемещения блока сцены по линейной шкале. Хотя я могу открыть последовательное соединение с устройством и отправить команды для продвижения блока сцены по линейной шкале, я не могу получить какое-либо ответное сообщение от контроллера. У меня есть следующий код в Matlab:
stage = serial('COM4', 'baudrate', 9600, 'terminator', 'CR');
fopen(stage)
%part below does not work and timeout happens
fprintf(stage,'@00VER')
pause(10)
out = fscanf(stage)
%part below works and I am able to move the block for 5 secs.
fprintf(stage, '@00HSPD=5000');
fprintf(stage, '@00J+');
pause(5);
fprintf(stage, '@00STOP');
pause(5);
fclose(stage)
delete(stage)
clear stage
Тайм-аут происходит, пока скрипт ожидает сообщения, как показано ниже:
Warning: Unsuccessful read: A timeout occurred before the Terminator was
reached..
out =
0×0 empty char array
Было бы полезно, если бы кто-нибудь мог указать, как получить любое сообщение от контроллера, либо простое OK
, либо версию, как я пытаюсь сделать в приведенном выше коде.
Я должен отметить, что я ссылался на следующие вопросы, но либо они не помогли, либо я не смог связать свою проблему с данным решением -