Javascript WebIOPi:我可以';t将参数从JS传递到Python 你好

Javascript WebIOPi:我可以';t将参数从JS传递到Python 你好,javascript,python,raspberry-pi,parameter-passing,webiopi,Javascript,Python,Raspberry Pi,Parameter Passing,Webiopi,我有一个小项目运行在一个树莓皮2 B+上。主要目标是通过I2C和WebIOPiwebinterface(0.7.1,包括Pi2的补丁)控制机电开关(单个地址,4个位置)。 我已经用一个小的C++程序成功地测试了I2C总线,并且我还能够通过Python宏控制WEBIPI接口的切换。但是基于我想在总线上使用超过十个开关的事实,我需要将参数传递给我的python宏(地址和位置)。问题来了。每次我试图传递参数时,就像教程中解释的那样,它都无法运行开关 Javascript摘录: var posButto

我有一个小项目运行在一个树莓皮2 B+上。主要目标是通过I2C和WebIOPiwebinterface(0.7.1,包括Pi2的补丁)控制机电开关(单个地址,4个位置)。 我已经用一个小的C++程序成功地测试了I2C总线,并且我还能够通过Python宏控制WEBIPI接口的切换。但是基于我想在总线上使用超过十个开关的事实,我需要将参数传递给我的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摘录:

    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()的回调与“[]”隔开,或者将参数作为字符串或不带“[]”的参数,甚至不使用像Position这样的单个参数。 此外,我尝试使用createMacroButton(),但得到了相同的负面结果

我希望这些信息足以正确描述问题

致意 惠普

注:我在JS和Python方面的经验非常有限,因为这是我第一个使用这些语言的项目。

找到了解决方案! 我通过在Python脚本中使用typecast(int())找到了一个解决方案:

 @webiopi.macro
 def sendI2C2(SWITCH, POS):
     i2c.write_byte(address_list1[int(SWITCH)], POSITION[int(POS)])