0

我的 Raspberry Pi 2 中的 DAC MCP4922 有一些问题。

我使用 WebIOPi 因为这个 DAC 是受支持的设备,但是当写入配置文件(命令:)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)

我不知道该怎么做。

4

1 回答 1

0

这是 WebIOPi 项目中的一个错误。

mcp492X.py模块中,MCP492X接受 3 个参数(在默认参数之上self):

class MCP492X(SPI, DAC):
    def __init__(self, chip, channelCount, vref):

但该文件中的 2 个子类不传递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以让项目解决此问题。

于 2015-08-01T12:43:28.993 回答