PySerial非阻塞写入?
我在做一个项目时使用了PySerial库,一切运行得不错。不过,现在我的需求变了,我需要实现一个非阻塞的串口写入选项。我查阅了PySerial的官方文档和一些例子,但没有找到合适的方法。我的问题是:在PySerial中,非阻塞写入是可能的吗?如果可以的话,怎么做呢?
提前谢谢你。
3 个回答
0
试着把发送功能放到一个线程里运行。
import _thread as thread
def send_message(message, serial_interface)
serial_interface.write(message)
print("Done sending message!")
serial_interface = serial.Serial('COM1')
message = "hi"
thread.start_new_thread(send_message, (message, serial_interface))
4
来自 pySerial 文档:
-timeout = None: 一直等下去,不会超时
-timeout = 0: 非阻塞模式(读取时立即返回,不会等)
-timeout = x: 设置超时时间为 x 秒(可以是小数)
默认情况下,写入操作是阻塞的,也就是说它会等到写入完成才继续,除非你设置了 writeTimeout。关于可能的值,可以参考上面的超时列表。
所以我想,当你打开串口时,你可以设置:
ser = serial.Serial(port='/dev/ttyXXX', writeTimeout = 0)
0
原来如此。要清空串行输出,我们可以使用serial.drainOutput()这个函数。这个函数是有效的,但如果你想要实时操作,它可能帮不上忙,因为Python并不是一个特别适合实时性能的语言。
希望这对你有帮助。