TypeError:function需要2个位置参数,但3个被赋予

时间:2017-04-30 21:57:38

标签: python mqtt micropython

我正在尝试为MQTT订阅创建一个单独的类,并为使用micropython编写的LoPy设备发布。

这是我的main.py代码:

import pycom
import time
import communicationmod

pycom.heartbeat(False)

if __name__ == '__main__':

    communication = communicationmod.Com()

    while True:

        communication.update()
        print (communication.getmessage())
        time.sleep(1.00)

这是communicationmod.py的代码:

import pycom
import time
from umqtt import MQTTClient
import machine
import ujson

class Com:

    mess = ""
    client = None

    def __init__(self):

        print ('init')

        self.client = MQTTClient("pycom", "192.168.123.50", port=1883, user="simon", password="****")
        self.client.settimeout = self.settimeout
        self.client.connect()

        self.client.set_callback(self._recv_msg_callback)
        print ('Callback setted!')
        self.client.subscribe("/Upload")
        print ('Subsribed!')

    def settimeout(duration):
        pass

    def _recv_msg_callback(topic, msg):
        print("{}".format(msg))

    def update(self):
        self.client.check_msg()
        self.client.publish("/Download", "this is a test string")

    def getmessage(self):
        return self.mess

但是我收到了一个错误:

  

文件" main.py",第44行,

     

文件" communicationmod.py",第32行,更新

     

文件" umqtt.py",第194行,在check_msg中

     

文件" umqtt.py",第181行,在wait_msg中

     

TypeError:函数需要2个位置参数,但是3个被赋予

     

2017年3月2日的MicroPython v1.8.6-489-g246ea51a; LoPy与ESP32

发布方法有效,当我将类Com的所有代码放在main.py文件中时(没有类),client.check_msg()也可以工作。 我不明白为什么我会收到这个错误以及为什么它没有它就可以在课堂上工作。

I use this library for MQTT

0 个答案:

没有答案