2013-10-01 5 views
2

Я пытаюсь управлять сервоприводами из кода C++ на Odroid-U2. У меня есть сервопривод SSC-32 от LynxMotion, подключенный к Odroid, используя USB-последовательный шнур.Проблемы с интерфейсом USB для последовательной связи для UBUNTU C

Простые последовательные команды управляют сервоприводами, такими как «#n Puuu», за которым следует возврат каретки, где n = номер штыря для сервопривода и uuu = ширина импульса. Я могу контролировать сервомашины при использовании PUTTY от Odroid, но у меня возникли проблемы с использованием кода C++ для управления сервомоторами. Например, в моем коде я делаю следующее:

fstream f; 
f.open("/dev/ttyUSB0"); 
f << "#0 P600\r"; 
f.close(); 

В свое время я был в состоянии запустить этот код и он пошевелил сервопривод надлежащим образом, но теперь терминал застревает и висит до сих пор, когда я пытаюсь запустить этот код. Я сузил проблему до строки f.open ("/ dev/ttyUSB0"), которая предотвращает запуск кода. Я предполагаю, что мне нужно каким-то образом настроить порт USB. Я знаю, что мне нужна скорость 115200, и установите ее соответствующим образом, но я вроде как Ubuntu n00b, поэтому я не уверен, какие другие типы конфигураций мне нужны.

Моей версией Linux является Linaro 12.11.

Когда я тип Запущенного, конфигурации не по умолчанию набора кажется:

speed 115200 baud; line = 0; 
-brkint ixoff -imaxbel 
-iexten 

ответ

1

Вы не можете полагаться на настройках по умолчанию последовательного порта (и вы не должны пытаться использовать Запущенный установить их вне вашей программы). Вы должны написать код в свою программу, которая правильно устанавливает ваш последовательный порт. Для этого вам нужно использовать такие функции, как tcsetattr/tcgetattr, cfsetspeed и т. Д., См. Man termios.

Кроме того, fstream может не предоставлять доступ к соответствующим функциям функции open() для использования, поскольку открытие последовательного порта в UNIX должно выполняться с помощью флага O_NOCTTY.

+0

Это право, и вы можете получить дополнительную информацию об этом API, просмотрев Руководство по серийному программированию для операционных систем Posix: http://www.cmrr.umn.edu/~strupp/serial.html – Preston

+0

Итак, я думаю, мой код на C++ должен работать раньше, так как PUTTY был открыт одновременно и, вероятно, настроил порт USB. Похоже, у меня есть еще несколько исследований. –

+0

Он работает! Благодаря! –