Доступ к последовательному порту в vxworks не работает

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

int f;

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

write(f,"hello",5);

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

Спасибо в друзьях Лихину.

3 ответа

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

if (iocl(m_fd, FIOBAUDRATE, rate )) == ERROR )
{
    //throw error
}

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

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

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

Другие вопросы по тегам