我试图在Linux中串口组织诺布阻断读写功能。 这里是我的代码: http://pastebin.com/RSPw7HAi这一切工作正常,但它是缓冲。 这意味着,如果我通过控制台+ CR符号做输入序列,选择检测到新的输入,否则,如果我通过简单的Python脚本做输入时,它缓存所有的符号,并等待,直到我把它回车符号。 所以用这个输入(如下),它只是缓冲符号的地方。 我不得不通过USB2Serial转换器连接的PC
#!/usr/bin/env python3
import serial
cmd1_state = b'\x3E\x01\x00\x01'
#Selecting serial port for commands to be sent --> /dev/ttyUSB0
serial_0 = serial.Serial('/dev/ttyUSB2');
print("Using serial port ", serial_0.portstr);
serial_0.write(cmd1_state)
# closing serial port
serial_0.close()
所以,有谁能够告诉我在这里做什么? 我是否需要更改端口开口中的东西在我的C文件或者它已经被用python脚本做了什么? 我在以后的使用flush()方法,但它也没有帮助。 顺便说一句,我GOOGLE了约F_NOCACHE精氨酸了fcntl()函数。 但! 这是所有关于BSD和达尔文OS的,有没有这样的事情(F_NOACHE ARG了fcntl)在Linux中,据我可以看到。
UPD:看起来我找到了解决方案。
/* set input mode (non-canonical, no echo,...) */
newtio.c_lflag = 0;
newtio.c_cc[VTIME] = 0; /* inter-character timer unused */
newtio.c_cc[VMIN] = 1; /* blocking read until 1 char received */
tcflush(fd, TCIFLUSH);
:来自http://tldp.org/HOWTO/Serial-Programming-HOWTO/x115.html