Может быть, немного слишком поздно, но код выше выглядит как ошибочный. Оператор присваивания имеет более низкий приоритет, чем оператор сравнения, поэтому вы должны написать такой код:
if((f = open("/tyCo/1", O_RDWR, 0)) == ERROR)
{
printf("error opening serial port; exiting...");
return 1;
}
if((status = ioctl(f, FIOBAUDRATE, 2400)) == ERROR)
{
printf("ioctl error; exiting...");
return 1;
}
Таким образом, он отлично работает в VxWorks.
То, как вы написали код, состояло в том, чтобы назначить f либо 0, либо 1 (в данном случае 0, потому что вы могли бы открыть последовательный порт), а затем попытаться установить скорость передачи для дескриптора файла 0 (я думаю, это идентификатор stdout). То же самое вы присвоили статус 0 или 1 (1 в данном случае, потому что вы не могли установить скорость передачи данных, поэтому ioctl вернул -1)