Доступ к последовательному порту в vxworks не работает - PullRequest
1 голос
/ 29 июня 2011

Мне нужно отправить данные через последовательный порт в vxworks. Я использую следующий код. Но это не работает. Кто-нибудь может указать, что пошло не так?

int f;

if(f=open("/tyCo/1",O_RDWR,0)<0)
{
    printf("Error opening serial port.");
    return 1;
}

write(f,"hello",5);

после запуска этого кода никакие данные не поступают через последовательный порт, а вместо этого поступают через терминал (снаряд Торнадо). Система имеет два последовательных устройства / tyCo / 1 и / tyCo / 0. Я попробовал их обоих, но проблема сохраняется.

Спасибо в поисках Likhin.

Ответы [ 3 ]

1 голос
/ 11 февраля 2012

Вы установили скорость передачи?

if (iocl(m_fd, FIOBAUDRATE, rate )) == ERROR )
{
    //throw error
}
0 голосов
/ 06 марта 2015

Третий параметр команды "open" - это, если я не ошибаюсь, режим. Я не очень понимаю, для чего это нужно в vxworks, за исключением сопоставимости кода с UNIX. Короче говоря, чтобы дать какое-то значение, например 0644 или 0666. Я думаю, это поможет.

0 голосов
/ 17 октября 2014

Возможно, вы используете неправильное имя для устройства, и для Tornado Shell установлено устройство по умолчанию. От vxdev.com :

Если не удается найти подходящее имя устройства, тогда направляется функция ввода / вывода на устройстве по умолчанию. Вы можете установить это устройство по умолчанию на любое устройство в система, в том числе без устройства вообще, в этом случае несоответствие устройства имя возвращает ошибку. Вы можете получить текущий путь по умолчанию, используя ioDefPathGet (). Вы можете установить путь по умолчанию с помощью ioDefPathSet ().

...