小编pun*_*ude的帖子

从串口读取原始字节

我正在尝试从IEC 870-5-101 win32协议模拟器发送的串行端口读取原始字节,并使用在Linux 32bit上运行的C编写的程序.

它适用于像0x00 - 0x7F这样的字节值.但是对于从0x80到0xAF开始的值,高位是错误的,例如:

0x7F -> 0x7F //correct
0x18 -> 0x18 //correct
0x79 -> 0x79 //correct
0x80 -> 0x00 //wrong
0xAF -> 0x2F //wrong
0xFF -> 0x7F //wrong
Run Code Online (Sandbox Code Playgroud)

经过两天的挖掘,我不知道是什么造成了这种情况.

这是我的串口配置:

    cfsetispeed(&config, B9600);
    cfsetospeed(&config, B9600);

    config.c_cflag |= (CLOCAL | CREAD);

    config.c_cflag &= ~CSIZE;                               /* Mask the character size bits */
    config.c_cflag |= (PARENB | CS8);                       /* Parity bit Select 8 data bits */

    config.c_cflag &= ~(PARODD | CSTOPB);                   /* even parity, 1 stop bit */


    config.c_cflag |= CRTSCTS; …
Run Code Online (Sandbox Code Playgroud)

c linux posix serial-port

11
推荐指数
1
解决办法
5549
查看次数

标签 统计

c ×1

linux ×1

posix ×1

serial-port ×1