我正在尝试在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程序,与我试图连接的同一台设备进行交换。所以我知道这不是那种情况。
有谁知道发生了什么以及如何解决?
答案 0 :(得分:3)
B115200
是一个宏,并展开为0x1002
。这是两位的组合:0x1000表示它是非标准速率(如您所发现的),而0x2是第二个非标准速率(B57600
是0x1001
,第一个非标准速率)