jacksuperlan 2021-08-20 11:50 采纳率: 0%
浏览 16
已结题

同样的代码,不涉及tk界面,在桌面下终端正常运行,但在远程puTTy下却是报错,就我遇到这种问题吗?有没有人帮助解答下

root@Sensor:/home/pi/Desktop/kepo# ./DHTxx.py
press ctrl+c to stop!
Traceback (most recent call last):
File "./DHTxx.py", line 22, in
humidity, temperature = getDHT()
File "./DHTxx.py", line 14, in getDHT
return Adafruit_DHT.read_retry(sensor, pin)
File "/usr/local/lib/python3.7/dist-packages/Adafruit_DHT-1.4.0-py3.7-linux-armv7l.egg/Adafruit_DHT/common.py", line 94, in read_retry
humidity, temperature = read(sensor, pin, platform)
File "/usr/local/lib/python3.7/dist-packages/Adafruit_DHT-1.4.0-py3.7-linux-armv7l.egg/Adafruit_DHT/common.py", line 81, in read
return platform.read(sensor, pin)
File "/usr/local/lib/python3.7/dist-packages/Adafruit_DHT-1.4.0-py3.7-linux-armv7l.egg/Adafruit_DHT/Beaglebone_Black.py", line 202, in read
match = re.match('GPIO([0123])_(\d+)', pin, re.IGNORECASE)
File "/usr/lib/python3.7/re.py", line 173, in match
return _compile(pattern, flags).match(string)
TypeError: expected string or bytes-like object

原代码报上:

#!/usr/bin/python3


# -*- coding: UTF-8 -*-

import Adafruit_DHT
import time

sensor = Adafruit_DHT.DHT22   #DHT21/DHT22 the same driver

pin = 17  #GPIO4

def getDHT():
    return Adafruit_DHT.read_retry(sensor, pin)


if __name__ == "__main__":
    print('press ctrl+c to stop!')
    n=1;
    while True:
        t1=time.time()
        humidity, temperature = getDHT()
        t2=time.time()
        if humidity is not None and temperature is not None:
            print('No {3:0d}  Temp={0:0.1f}*C  Humidity={1:0.1f}% ,cost time {2:0.1f} sec'.format(temperature, humidity,t2-t1,n))
            n+=1
        else:
            print('Failed to get reading. Try again!')

  • 写回答

1条回答 默认 最新

  • jacksuperlan 2021-08-20 14:45
    关注

    自己找到答案了,原来是与用户有关系,登陆的是树莓派直接进入的桌面,使用的是pi的用户权限环境,而我自己使用root,所以环境不一样造成的.
    我用远程登陆, su pi 切换后,就可以正常的运行了.

    评论

报告相同问题?

问题事件

  • 系统已结题 8月28日
  • 创建了问题 8月20日