首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python,if语句不工作- Blynk Raspberry Pi

Python,if语句不工作- Blynk Raspberry Pi
EN

Stack Overflow用户
提问于 2017-09-15 15:08:22
回答 1查看 293关注 0票数 2

我有一些使用Blynk库和pyblynk库的代码。但是,在底部使用if语句时,当我更改任何变量时,它似乎不会在运行脚本时进行更新。它仍然将其输出为默认值。

这是我的剧本:

代码语言:javascript
复制
import sys
import os
sys.path.append(
    os.path.join(
        os.path.dirname(__file__),
        '..'
    )
)
import pigpio
from gpiozero import Button, OutputDevice

auth_token = 'b3e6cf1a32c54bdd87018f91cfb71e85'
addr = '127.0.0.1'
import lib.hw as blynk_hw
import lib.client as blynk_client

class myHardware(blynk_hw.Hardware):
    """
        you'll probably have to overload the On* calls,
        see lib/hw.py
    """
    pass

cConnection=blynk_client.TCP_Client(addr)
if not cConnection.connect():
    print('Unable to connect')
    sys.exit(-1)

if not cConnection.auth(auth_token):
    print('Unable to auth')

cHardware=myHardware(cConnection)

try:
    while True:
        cHardware.manage()
except KeyboardInterrupt:
    raise



def OnVirtualWrite(self,pin,val):
    if pin == 1:
        print('Lightbulb On')
    elif pin == 1 and val == '0':
        print('Lightbulb Off')             
    else:
        print('dawdawda',pin,val)

输出:

代码语言:javascript
复制
(20, 18, 6)
('OnVirtualWrite', 1, u'1')
(20, 19, 6)
('OnVirtualWrite', 1, u'0')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-15 15:31:37

Python方法需要在它们的类中。若要重写OnVirtualWrite方法,而不是将其放在文件末尾,您需要删除class myHardware下的pass语句,然后将其放在class下缩进

代码语言:javascript
复制
class myHardware(blynk_hw.Hardware):
    """
        you'll probably have to overload the On* calls,
        see lib/hw.py
    """
    def OnVirtualWrite(self,pin,val):
        if pin == 1 and val == u'1':
            print('Lightbulb On')
        elif pin == 1 and val == u'0':
            print('Lightbulb Off')             
        else:
            print('dawdawda',pin,val)

这告诉Python,OnVirtualWritemyHardware的一部分,而不是一个无关的函数。

我还将and val == u'1'添加到if语句的第一个分支中,因为否则即使val'0',灯泡也将始终处于打开状态,并且我将字符串文字更改为Unicode,因为这是作为输入提供的,您应该尝试将字节字符串和字符串保持为不同的概念。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46242668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档