Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用PySerial从usb weatherboard获取数据_Python_Serial Port_Embedded_Sensors_Pyserial - Fatal编程技术网

Python 使用PySerial从usb weatherboard获取数据

Python 使用PySerial从usb weatherboard获取数据,python,serial-port,embedded,sensors,pyserial,Python,Serial Port,Embedded,Sensors,Pyserial,我现在正在使用USB Weatherboard V3 每隔1秒从/dev/ttyUSB*…连续发送一次数据。。。我试图用PySerial获取数据,但还是失败了 我只能在输出控制台中进行“重置”。我拿不到数据 我想要的是这样的输出: SHT15 temperature: 2.5 75.1 deg F SHT15 humidity: 65% SHT15 dewpoint:

我现在正在使用USB Weatherboard V3

每隔1秒从/dev/ttyUSB*…连续发送一次数据。。。我试图用PySerial获取数据,但还是失败了

我只能在输出控制台中进行“重置”。我拿不到数据

我想要的是这样的输出:

SHT15 temperature: 2.5          75.1 deg F          
SHT15 humidity:                 65%                 
SHT15 dewpoint:                 62.7 deg F 
BMP085 pressure: 2 2011, 10:05:235.967 in Hg    FAIL
BMP085 temperature:             75.3 deg F          
TEMT6000 light:                 0.1%                
Weather meters wind speed: speci0.0 MPH         FAIL 
Weather meters wind direction:  -1 degrees      FAIL 
Weather meters rainfall:        0.00 inches     FAIL 
External power:                 0.00 Volts      FAIL 
^它来自minicom(unix串行程序)

有人能帮我吗

顺便说一句,这是我目前的代码:

import serial;
import io;
import time;
import os;

# Weather board script #    

if __name__ == '__main__' :
    try :
        print '===================================\n'
        print 'USB Weatherboard V3 - Python Script'
        print 'Connection datasheet : '
        print '(+) Port : /dev/ttyUSB0'
        print '(+) Baud rate : 9600'
        print '(+) Type : 8N1'
        print '===================================\n'
        ser = serial.Serial(port='/dev/ttyUSB0', baudrate=9600, timeout=1, xonxoff=False, rtscts=False, dsrdtr=True)

        while True :
            arr = ser.readlines()
            for strarr in arr :
                s = strarr.decode('cp1252').replace('\00','')
                #s2 = s.encode('ascii');
                s2 = s
                if s2[1:3] != '[H' :
                    print s2
                    pass
                pass
            pass
    except :
        print 'Program exit !'
        pass
    finally :
        ser.close()

    pass
请帮助我更正它,或者如果有人在我之前编写过代码,请与我共享:)

Weatherboard v3数据表:

Weatherboard v3产品:

从串行设备读取所有行,然后返回。由于您的设备正在无限量地发送数据,因此在写入数据时,您只需对其进行迭代即可获得数据行,如下所示:

import serial
if __name__ == '__main__':
    with serial.Serial(port='/dev/ttyUSB0', baudrate=9600, timeout=1,
                       xonxoff=False, rtscts=False, dsrdtr=True) as s:
        for line in s:
            print(s)

我提供了更多信息:)。。。实际上,它没有给出错误,但我无法获得与minicom相同的输出。在源代码中,您提到了
问题:未知字符字节
。这应该是许多错误输出行的最后/第一行。哦,不,这是以前的错误。。。现在这不是错误,但我的脚本没有像minicom给我的那样给我度量值…我很好奇,当我在serial.serial(…)构造函数中设置参数时,我犯了一些错误。。。我不太了解硬件:(我已经试过了,但有时挡雨板仍然无法连接。我必须重新安装,直到绿灯变暗。@psuedobot我是否理解您的评论,因为此回答在大多数情况下解决了您原来的问题,但存在一些连接错误?如果是,请在确保它确实是您的程序后打开一个新问题。)这是错误的(如果你不运行程序,你仍然看到相同的行为吗?),但我认为你的解决方案是正确的(对于连接参数串行)…我将标记为正确答案
import serial
if __name__ == '__main__':
    with serial.Serial(port='/dev/ttyUSB0', baudrate=9600, timeout=1,
                       xonxoff=False, rtscts=False, dsrdtr=True) as s:
        for line in s:
            print(s)