首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebIOPi:我不能把参数从JS传递到Python

WebIOPi:我不能把参数从JS传递到Python
EN

Stack Overflow用户
提问于 2017-01-31 10:22:12
回答 1查看 160关注 0票数 0

你好,

我有一个小项目运行在一个覆盆子PI 2 B+上。主要目标是在I2C和WebIOPi网络接口(0.7.1Inl)上控制机电开关(个人地址,4个位置)。(用于Pi2的补丁)。我已经用我编写的一个小型c++程序成功地测试了c++总线,我还可以通过Python控制WebIOPi接口上的开关。但是,基于我想在总线上使用超过10个开关的事实,我需要将参数传递给python宏(地址和位置)。问题来了。每次我试图传递参数,就像在教程中解释的那样,它都无法运行开关。

抄本节录:

代码语言:javascript
复制
var posButton1 = webiopi().createButton("posB11", "Pos 1", function(){
    webiopi().callMacro("sendI2C");
    });
$("#posB11").append(posButton1);
                
var posButton2 = webiopi().createButton("posB21", "Pos 2", function(){
    var args = [0,1];
    webiopi().callMacro("sendI2C2",args,[]);
    });

Python摘录:

代码语言:javascript
复制
    import webiopi
    import smbus
    ...  
    @webiopi.macro
    def sendI2C():
        i2c.write_byte(address_list1[0], POSITION[0])
                
    @webiopi.macro
    def sendI2C2(SWITCH, POS):
        i2c.write_byte(address_list1[SWITCH], POSITION[POS])

在这种情况下,posButton1工作正常并驱动开关。但是第二个选项在点击开关时不会做任何事情。我尝试了不同的语法,比如不用"[]“分隔callMacro()的回调,或者将参数作为字符串或不使用"[]”,甚至不使用单个参数(比如位置)。此外,我试着使用createMacroButton(),但是我得到了同样的负面结果。

我希望这是足够的信息来描述问题的正确。

向惠普问好

P.S.:基于以下事实,我在JS和Python方面的经验是有限的,这是我使用这些语言的第一个项目。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-02 08:51:15

找到解决办法了!

我通过在Python中使用类型广播(int())找到了一个解决方案:

代码语言:javascript
复制
 @webiopi.macro
 def sendI2C2(SWITCH, POS):
     i2c.write_byte(address_list1[int(SWITCH)], POSITION[int(POS)])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41955034

复制
相关文章

相似问题

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