首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Micropython继承失败

Micropython继承失败
EN

Stack Overflow用户
提问于 2019-04-14 00:31:07
回答 1查看 142关注 0票数 1

我正在尝试将PyBoard (我不确定硬件版本,但它运行的是uPython 1.9.3)通过I2C连接到基于SSD1306的发光二极管显示器。

物理连接工作正常,我可以建立I2C连接,查看设备,并验证它在I2C连接上是否可读。

但是,我无法使用uPython Github中的ssd1306模块。我可以很好地导入模块,但是SSD1306类不会初始化。失败的代码如下:

代码语言:javascript
复制
class SSD1306(framebuf.FrameBuffer):
    def __init__(self, width, height, external_vcc):
        self.width = width
        self.height = height
        self.external_vcc = external_vcc
        self.pages = self.height // 8
        self.buffer = bytearray(self.pages * self.width)
        super().__init__(self.buffer, self.width, self.height, framebuf.MONO_VLSB)
        self.init_display()

错误消息始终是

代码语言:javascript
复制
TypeError: function missing 1 required positional arguments

这似乎是假的(我肯定传入了所需的widthheightexternal_vcc。我非常确定问题出在super()调用中--但它是uPython,所以在初始化器中进行打印调试似乎不起作用。

我在几个地方读到过,uPython倾向于在调用闭包时发出关于缺少参数的错误消息,但这只是略微类似。为了以防万一,我尝试将一个显式的self添加到super().__init__()调用中,但也不起作用。所以我有点卡住了,希望得到关于下一步调试的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-14 00:59:39

问题似乎是版本不匹配。至少,在uPython github上此文件的早期版本中,该类不是从FrameBuffer继承的,而是维护一个内部类。在代码中有一条关于这方面的注释:

代码语言:javascript
复制
    # Provide methods for accessing FrameBuffer graphics primitives. This is a
    # workround because inheritance from a native class is currently unsupported.
    # http://docs.micropython.org/en/latest/pyboard/library/framebuf.html

所以,我认为这个问题是1.9.3主板和1.9.4版本的驱动程序之间的版本不匹配。将其回滚到1.9.3代码是可行的。

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

https://stackoverflow.com/questions/55667614

复制
相关文章

相似问题

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