【发布时间】:2010-11-28 22:18:40
【问题描述】:
我有以下 python 代码,它期望来自串行端口的数据,并将其写入文件。
import time
import serial
def write_log ( text ):
f = open('logger.log', 'a')
f.write( text )
f.close()
ser = serial.Serial()
ser.port = "/dev/ttyS0"
ser.baudrate = 4800
ser.open()
if ser.isOpen():
while 1:
while ser.inWaiting() <= 0:
time.sleep(1)
response = ser.read(ser.inWaiting())
if len ( response ):
write_log( response )
print response
它在一定程度上起作用,因为一段时间后,它开始挂起,使 CPU 一直处于上升状态,并且不向 .log 文件写入任何内容(或有时只写入文本片段)。
这里的过程非常密集,因为我的串口每秒会写入一个 8 字节的字符串,然后这个 python 脚本应该会接收它,并将其内容写入日志文件。
我认为这里的问题是我打开和关闭文件的次数过多,这在某种程度上使整个过程变慢了。我不是 python wizz,所以任何关于改进此代码的帮助或建议将不胜感激。
提前致谢,
【问题讨论】:
-
每秒 8 字节不是很密集; 8 MiB/s 可能很密集,但大多数 CPU 甚至可以应付。即使是运行在 4 MHz 的 Z80 也不会发现每秒 8 字节的密集型。
-
我确实意识到这不是很密集,但不知何故,这段代码在一段时间后停止响应,并停止存储任何东西。我说密集,因为它会继续尝试将内容写入串行,即使 python 脚本没有将任何内容写入文本文件
-
代码看起来是从串口设备读取,而不是写入。
-
"我有以下 python 代码,它期望来自串行端口的数据,并将其写入文件。"从串口读取并将其内容写入文件
标签: python io serial-port