Python只阅读Arduino串口一次

时间:2013-07-01 23:47:51

标签: python-2.7 arduino pyserial

当我的Arduino中的A0值发生变化时,我正在阅读。 Arduino中的代码似乎没问题,因为当我使用串行监视器时,值会按预期更改。但是,当我运行我的Python代码时,它只读取Arduino的初始值。如果值更改,它仍会显示初始值。下面是我的Python代码:

#!/usr/bin/python

import os
import sys
import serial
import time
import datetime
import ast

#--- open up the serial port to get data transmitted to arduino
ser = serial.Serial('COM3', \
                    baudrate = 9600, timeout = 1)


#main
while True :
    ser.readline()
    #--- Read in the data and split the line into words
    data = ser.readline()
    timestamp = datetime.datetime.now()
    hora = timestamp.strftime("%Y-%m-%d %H:%M:%S")

    #--- If at least nine fields exists then parse the data
    if (ast.literal_eval(data) > 800) :
        time.sleep(1)   
        print "Alarme!!!, %s" % ast.literal_eval(data)
        time.sleep(150)
        ser.readline()
    else :
        print "ok, %s" % (data)
        time.sleep(1)
        ser.readline()

2 个答案:

答案 0 :(得分:0)

你的循环丢掉了很多行。它会[丢弃,读取,丢弃],重复。这是故意的吗?

答案 1 :(得分:0)

我通过将ser.flush()ser.flushInput()ser.flushOutput()添加到循环的末尾来解决了这个问题。  刷新输入和输出缓冲区。