1

我正在尝试在 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 程序与我试图连接的同一设备进行通信。所以我知道这不可能是那种情况。

有谁知道发生了什么以及如何解决它?

4

1 回答 1

3

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

于 2011-10-04T09:23:43.183 回答