我正在编写一个程序,通过串口与一台利用XON的硬件进行通信。为了在代码执行之前使其工作,我必须在命令行(debian)上执行它
stty ixon -F /dev/ttyUSB0 sane raw pass8 -echo -hupcl clocal 115200
如何在c ++中执行等效操作,以便我不必手动执行命令?
这是我到目前为止所得到的内容。写似乎工作正常。读取大多数都很好,但是这里有一些乱码,加上数据似乎被镜像到有时会导致硬件出现可怕的循环。
//fd is a file descriptor pointing to /dev/ttyUSB0
struct termios terminalAttributes;
memset(&terminalAttributes, 0, sizeof(struct termios));
if(tcgetattr(fd, &terminalAttributes) != 0) cout << "ERROR: Error getting terminalAttributes\n";
terminalAttributes.c_cflag = B115200 | CS8 | CREAD;
terminalAttributes.c_iflag = IGNPAR | ONLCR | IXON | IXOFF | IXANY;
terminalAttributes.c_oflag = OPOST;
terminalAttributes.c_cc[VTIME] = 0;
terminalAttributes.c_cc[VMIN] = 1;
tcsetattr(fd, TCSANOW, &terminalAttributes);