【发布时间】:2014-03-03 03:52:47
【问题描述】:
我是 Python 2.7 的新手,需要一些帮助。 我想编写一个脚本,该脚本将使用串行端口从传感器读取数据,并将所有这些数据保存在一个文件中,以及一个时间戳。传感器定期发送数据。我希望应用程序完成它的循环或简单地接收数据,并在接收到预定义数量的数据或按下键盘上的键时关闭文件和端口。 (目前任何键都足够了)。
问题在于它以正确的方式将数据保存在文件中,但我无法通过按键来转义和关闭文件。我猜外壳可能被阻塞了。我不明白为什么它不起作用。任何帮助将不胜感激。我使用的是 Windows 7。
这是我的代码:
import serial
import io
from time import gmtime, strftime
import msvcrt
medidas= 10
continuar=1
n_medidas=0
ser=serial.Serial(3,115200)
data_file=open ('data.txt','w')
fecha=strftime("(UTC) %a %d %b %Y %Hh:%Mm:%Ss",gmtime())
data_file.write('Datos enviados '+fecha+' por AP:\n')
data_file.write('Time_stamp' +'\t'+ 'EDx' +'\t'+ 'V(ADC)'+'\t'+'I(ADC)\n')
while continuar:
tiempo=strftime("%Hh:%Mm:%Ss",gmtime())
x=ser.readline()
data=tiempo+'\t' +x
print (data)
data_file.write(data)
n_medidas += 1
if msvcrt.kbhit():
continuar=0
if n_medidas == medidas :
break
data_file.close()
ser.close()
谢谢。
【问题讨论】:
-
你总是可以在 bash 中尝试 ctrl+c 来杀死一个进程,即使我不确定这是实现它的正确方法。
-
Ctrl+c 终止进程,但直到那一刻它才关闭接收到数据的文件。目的是保存所有读取的数据,直到密钥被预置在文件中。谢谢!
标签: python python-2.7 keyboard serial-port escaping