Python 使用PySerial从usb weatherboard获取数据
我现在正在使用USB Weatherboard V3 每隔1秒从/dev/ttyUSB*…连续发送一次数据。。。我试图用PySerial获取数据,但还是失败了 我只能在输出控制台中进行“重置”。我拿不到数据 我想要的是这样的输出: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:
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)