Знатоки ioctl'ов USART'а!
Как можно установить произвольную скорость? В интернете нашел только такой вариант:
struct serial_struct nuts, old_extra_term; int RB;
ioctl(comfd, TIOCGSERIAL, &old_extra_term);
nuts = old_extra_term;
nuts.baud_base = Baudrate; // вариант 1
nuts.custom_divisor = 1; // вариант 1
// вариант 2:
// nuts.custom_divisor = nuts.baud_base / Baudrate;
//if (!(nuts.custom_divisor)) nuts.custom_divisor = 1;
nuts.flags &= ~ASYNC_SPD_MASK;
nuts.flags |= ASYNC_SPD_CUST;
ioctl(comfd, TIOCSSERIAL, &nuts);
ioctl(comfd, TIOCGSERIAL, &nuts);
RB = nuts.baud_base / nuts.custom_divisor;
printf("Target baudrate=%d, real baudrate=%d\n", Baudrate, RB);
P.S. Кажется мне, в офтопике можно было задавать произвольный бодрейт, так что проблема не аппаратная.