Последовательный порт не принимает скорость передачи - PullRequest
0 голосов
/ 04 октября 2011

Я пытаюсь настроить последовательный порт на Centos, но не могу заставить его работать. это код, с которым у меня проблемы.

tcgetattr(idComDev[i], &options); // get current settings

    printw("default baudrate is %d ", cfgetispeed(&options));

    cfsetispeed(&options, B115200); // set baud rate
    cfsetospeed(&options, B115200); // set baud rate

tcsetattr(idComDev[i], TCSANOW, &options);// save the settings

    printw("Seg %d = COM%hd at %d Baudrate",i,CommNo[i], cfgetispeed(&options));

Выход из этого: Default baud rate is 4098 Seg0 = COM1 at 4098 Baudrate.

Почему это на 4098? Я нигде не могу найти этот бодрейт.

Если я устанавливаю скорость передачи 1800, то это говорит о том, что она равна 10. Если я устанавливаю ее 9600, это говорит о том, что она равна 13.

Я провел некоторое исследование и обнаружил, что, возможно, аппаратное обеспечение не может поддерживать такую ​​высокую скорость передачи данных, но у меня есть программа Java на том же компьютере, коммутирующая с тем же устройством, к которому я пытаюсь подключиться. Так что я знаю, что этого не может быть.

Кто-нибудь знает, что происходит и как это исправить?

1 Ответ

3 голосов
/ 04 октября 2011

B115200 - это макрос, который расширяется до 0x1002.Это комбинация двух битов: 0x1000 сигнализирует, что это нестандартная скорость (как вы обнаружили), а 0x2 - вторая нестандартная скорость (B57600 равно 0x1001, первая нестандартная скорость).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...