PySerial非阻塞写?

时间:2014-08-21 10:30:49

标签: python serial-port pyserial

我正在使用PySerial库进行项目,它运行正常。虽然,现在我的要求已经改变,我需要实现非阻塞串行写入选项。我浏览了PySerial官方文档以及几个例子,但是找不到合适的选项。现在我的问题是:PySerial可以进行非阻塞写入吗?如果有,怎么样?

提前致谢。

3 个答案:

答案 0 :(得分:3)

来自pySerial Documentation

  

-timeout =无:永远等待

     

-timeout = 0:非阻塞模式(在读取时立即返回)

     

-timeout = x:将超时设置为x秒(允许浮动)

     

默认情况下写入是阻塞的,除非设置了writeTimeout。有关可能的值,请参阅上面的超时列表

所以我猜你打开串口时可以设置:

ser = serial.Serial(port='/dev/ttyXXX', writeTimeout = 0)

答案 1 :(得分:0)

事实证明。为了物理地排出串行输出,我们有serial.drainOutput()函数。它可以工作,但如果您正在寻找实时操作,那么如果您期望实时性能,则python不是一种非常好的语言可能无济于事。

希望它有所帮助。

答案 2 :(得分: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))