串口不接受波特率

时间:2011-10-04 08:54:22

标签: c++ linux serial-port centos baud-rate

我正在尝试在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 个答案:

答案 0 :(得分:3)

B115200是一个宏,并展开为0x1002。这是两位的组合:0x1000表示它是非标准速率(如您所发现的),而0x2是第二个非标准速率(B576000x1001,第一个非标准速率)