Проблема с изменением скорости последовательного порта на BR300 или ниже в c ++ на Raspberry PI 3 - PullRequest
0 голосов
/ 12 декабря 2018

Я должен работать на последовательном порту со скоростью передачи данных, равной BR300.Однако команды cfsetspeed (&RSopt, (speed_t)B300); и tcsetattr (fd, TCSANOW, &RSopt); не изменяют скорость.Как я убедился, эти команды работают правильно для скоростей B0 и выше B300.

Как установить скорость передачи последовательного порта на B300.

См. Мой код ниже:

#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>

int main ()
{
    struct termios RSopt;
    int fd;

    fd = open( "/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY );    

    tcgetattr(fd, &RSopt);
    cfmakeraw(&RSopt);

    printf("Current speed:  ");
    printf("%d\n",RSopt.c_ispeed);
    printf("Change speed to 7 (B300)\n");
    cfsetspeed (&RSopt, (speed_t)B300);
    tcsetattr (fd, TCSANOW, &RSopt); 

    //-------------------------------------------------------
    tcgetattr(fd, &RSopt);
    printf("Current speed:  ");
    printf("%d",RSopt.c_ispeed);
    printf("  <--- speed not changed!\n");
    printf("Change speed to 9 (B1200)\n");
    cfsetspeed (&RSopt, (speed_t)B1200);
    tcsetattr (fd, TCSANOW, &RSopt);     

    //-------------------------------------------------------
    tcgetattr(fd, &RSopt);
    printf("Current speed:  ");
    printf("%d\n",RSopt.c_ispeed);
    printf("Change speed to 8 (B600)\n");
    cfsetspeed (&RSopt, (speed_t)B600);
    tcsetattr (fd, TCSANOW, &RSopt);     

    tcgetattr(fd, &RSopt);
    printf("Current spped:  ");
    printf("%d\n",RSopt.c_ispeed);      
    close(fd);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...