Python Arduino串行保存到文件

时间:2015-08-31 14:32:02

标签: python arduino pyserial

抱歉我的英语。 我的Arduino序列给出了3个这样的值,频率为300 Hz:



-346	54	-191
-299	12	-123
-497	-214	77
-407	-55	-19
45	129	46
297	123	-197
393	71	-331
544	115	-273
515	-355	-89
510	-183	-47



 Whit这个python代码我读取和写入正确的序列到文件但是在while循环后没有终止,并且shell保持打开状态,并且不打印停止:



...
ard=serial.Serial(portname,baudrate)
print"start"

while True:
    x = ard.readline()
    #print x
    a=open(filename,'ab')
    a.write(x)
    a.close
    
print "stop"
...




我是一个重要的程序员,你能告诉我一个解决方案,编写序列到文件并继续前进。 罐

2 个答案:

答案 0 :(得分:0)

你永远不会打破while循环。你应该:

  1. 向序列阅读器添加超时
  2. 如果没有收到字节,请中断循环
  3. 以您的代码为基础,尝试这样的事情:

    
    
    ...
    ard=serial.Serial(addr,baud)
    ard.timeout = 1 # in seconds
    print"start"
    
    while True:
        x = ard.readline()
        if len(x) == 0:
            break
        a=open(fname,'ab')
        a.write(x)
        a.close
        
    print "stop"
    ...
    
    
    

答案 1 :(得分:0)

有效! 我已经使用ard.timeout和if条件(仅仅条件不起作用)。

另一个问题, 我的arduino串口开始和终止如下:

Start
-663	-175	76
361	47	157
425	-229	-174
531	-283	-288
518	-40	-28
538	-228	206
581	188	174
445	5	176
end

可以在“开始”字符串后启动写入文件并在“结束”字符串之前终止吗? 我尝试过类似的东西但不起作用:

while True:
    x = ard.readline()
    if x=="end":
        break
    #print x
    a=open(fname,'ab')
    a.write(x)
    a.close

  

块引用

enter code here