首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MCP4922 WebIOPi不工作,只提供一个类型错误

MCP4922 WebIOPi不工作,只提供一个类型错误
EN

Stack Overflow用户
提问于 2015-08-01 12:35:47
回答 1查看 555关注 0票数 0

在我的树莓Pi 2中,我的DAC MCP4922有一些问题。

我使用WebIOPi是因为这个DAC支持设备,但是当写入Configuration (命令:sudo nano /etc/webiopi/config )行时:

代码语言:javascript
复制
dac = MCP4922

[DEVICES]部分中,当我尝试启动服务器时,我看到如下所示:

代码语言:javascript
复制
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)

我不知道该怎么办。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-01 12:43:28

这是WebIOPi项目中的一个bug。

模块中,MCP492X接受3个参数(除了默认的self参数之外):

代码语言:javascript
复制
class MCP492X(SPI, DAC):
    def __init__(self, chip, channelCount, vref):

但是该文件中的两个子类不传递vref参数:

代码语言:javascript
复制
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参数来解决这个问题:

代码语言:javascript
复制
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期来修复这个项目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31761906

复制
相关文章

相似问题

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