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