在我的树莓Pi 2中,我的DAC MCP4922有一些问题。
我使用WebIOPi是因为这个DAC支持设备,但是当写入Configuration (命令:sudo nano /etc/webiopi/config )行时:
dac = MCP4922在[DEVICES]部分中,当我尝试启动服务器时,我看到如下所示:
2015-08-01 14:21:55 - WebIOPi - ERROR - __init__() takes exactly 4 arguments (3 given)
Traceback (most recent call last):
File "/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.1-py3.2-linux-armv7l.egg/webiopi/__main__.py", line 75, in <module>
main(sys.argv)
File "/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.1-py3.2-linux-armv7l.egg/webiopi/__main__.py", line 69, in main
server = Server(port=port, configfile=configfile, scriptfile=scriptfile)
File "/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.1-py3.2-linux-armv7l.egg/webiopi/server/__init__.py", line 66, in __init__
manager.addDevice(name, driver, args)
File "/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.1-py3.2-linux-armv7l.egg/webiopi/devices/manager.py", line 28, in addDevice
dev = devClass()
File "/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.1-py3.2-linux-armv7l.egg/webiopi/devices/analog/mcp492X.py", line 52, in __init__
MCP492X.__init__(self, chip, 2)
TypeError: __init__() takes exactly 4 arguments (3 given)我不知道该怎么办。
发布于 2015-08-01 12:43:28
这是WebIOPi项目中的一个bug。
在模块中,MCP492X接受3个参数(除了默认的self参数之外):
class MCP492X(SPI, DAC):
def __init__(self, chip, channelCount, vref):但是该文件中的两个子类不传递vref参数:
class MCP4921(MCP492X):
def __init__(self, chip=0, vref=3.3):
MCP492X.__init__(self, chip, 1)
class MCP4922(MCP492X):
def __init__(self, chip=0, vref=3.3):
MCP492X.__init__(self, chip, 2)您可以通过自己传递vref参数来解决这个问题:
class MCP4921(MCP492X):
def __init__(self, chip=0, vref=3.3):
MCP492X.__init__(self, chip, 1, vref)
class MCP4922(MCP492X):
def __init__(self, chip=0, vref=3.3):
MCP492X.__init__(self, chip, 2, vref)您可以通过直接编辑/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.1-py3.2-linux-armv7l.egg/webiopi/devices/analog/mcp492X.py来做到这一点。
添加vref参数是为了修复第48期,但是开发人员只将它添加到方法签名中,而忘记在子类中传递参数。
我已经提交了第159期来修复这个项目。
https://stackoverflow.com/questions/31761906
复制相似问题