Доступ к последовательному порту в 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. Я думаю, что это поможет.