394浏览
查看: 394|回复: 2

[求助问答] maix dock m1w mqtt时如何修改底层check_msg():使得在没有消息pass

[复制链接]
本帖最后由 DFBJMRK9gEd 于 2021-3-28 11:36 编辑

大佬看看 能不能救一下

底层描述

底层描述

这是底层

这是底层

DFBJMRK9gEd  见习技师
 楼主|

发表于 2021-3-28 11:48:24

  1. def wait_msg(self):
  2.         res = self.sock.read(1)
  3.         self.sock.setblocking(True)
  4.         if res is None:
  5.             return None
  6.         if res == b"":
  7.             raise OSError(-1)
  8.         if res == b"\xd0":  # PINGRESP
  9.             sz = self.sock.read(1)[0]
  10.             assert sz == 0
  11.             return None
  12.         op = res[0]
  13.         if op & 0xf0 != 0x30:
  14.             return op
  15.         sz = self._recv_len()
  16.         topic_len = self.sock.read(2)
  17.         topic_len = (topic_len[0] << 8) | topic_len[1]
  18.         topic = self.sock.read(topic_len)
  19.         sz -= topic_len + 2
  20.         if op & 6:
  21.             pid = self.sock.read(2)
  22.             pid = pid[0] << 8 | pid[1]
  23.             sz -= 2
  24.         msg = self.sock.read(sz)
  25.         self.cb(topic, msg)
  26.         if op & 6 == 2:
  27.             pkt = bytearray(b"\x40\x02\0\0")
  28.             struct.pack_into("!H", pkt, 2, pid)
  29.             self.sock.write(pkt)
  30.         elif op & 6 == 4:
  31.             assert 0
  32.     # Checks whether a pending message from server is available.
  33.     # If not, returns immediately with None. Otherwise, does
  34.     # the same processing as wait_msg.
  35.     def check_msg(self):
  36.         self.sock.setblocking(False)
  37.         return self.wait_msg()
复制代码
回复

使用道具 举报

DFBJMRK9gEd  见习技师
 楼主|

发表于 2021-3-28 11:56:50

        if res == b"":
            return None
修改这两句
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail