From aac3ad689881436da31fb04e4864ff17ec776256 Mon Sep 17 00:00:00 2001 From: momom Date: Sat, 4 Apr 2026 14:17:29 +0800 Subject: [PATCH] fix some bug --- config.json | 2 +- .../makergen/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 331 bytes .../makergen/__pycache__/core.cpython-38.pyc | Bin 0 -> 4245 bytes python/libraries/makergen/core.py | 14 ++++++++------ python/main.ts | 6 +++--- 5 files changed, 12 insertions(+), 10 deletions(-) create mode 100644 python/libraries/makergen/__pycache__/__init__.cpython-38.pyc create mode 100644 python/libraries/makergen/__pycache__/core.cpython-38.pyc diff --git a/config.json b/config.json index 53e2e13..37082e0 100644 --- a/config.json +++ b/config.json @@ -13,7 +13,7 @@ "isBoard": false, "id": "makergen", "platform": ["win","mac","web","linux"], - "version": "0.0.1", + "version": "0.0.2", "asset": { "python": { "dir": "python/", diff --git a/python/libraries/makergen/__pycache__/__init__.cpython-38.pyc b/python/libraries/makergen/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c362cb56e60b3cc8c06dde0582f6fcaacada294 GIT binary patch literal 331 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 literal 0 HcmV?d00001 diff --git a/python/libraries/makergen/core.py b/python/libraries/makergen/core.py index 5b88bfd..c66898f 100644 --- a/python/libraries/makergen/core.py +++ b/python/libraries/makergen/core.py @@ -24,7 +24,7 @@ class Device: :param on_error_callback: 当遇到错误时的回调。接收一个参数,为错误对象;若遇到服务器或页面发送的消息不合规,传入ServerException对象 :param base_url: makergen的基础URL,通常为wss://api.makergen.cn """ - url = f"{base_url if base_url[-1] == '/' else base_url + "/"}ws/device/{device_id}?key={device_key}" + url = f"{base_url if base_url[-1] == '/' else base_url + '/'}ws/device/{device_id}?key={device_key}" print(url) self.ws = websocket.WebSocketApp( url, @@ -36,11 +36,15 @@ class Device: self.on_msg_callback = on_msg_callback if on_msg_callback is not None else lambda _, __ : None self.on_error_callback = on_error_callback if on_error_callback is not None else lambda _ : None self.is_connected = False + self._connect_event = threading.Event() def _on_open(self, ws): self.is_connected = True + self._connect_event.set() + def _on_close(self, ws, close_status_code, close_msg): self.is_connected = False + self._connect_event.clear() def _on_message(self, ws, message): try: @@ -68,15 +72,13 @@ class Device: """ 在新线程中运行客户端循环(推荐) """ + self._connect_event.clear() wst = threading.Thread(target=self.ws.run_forever) wst.daemon = True wst.start() start_time = time.time() - while not self.is_connected: - if time.time() - start_time > timeout: - if not self.is_connected: - self.on_error_callback(TimeoutError(f"WebSocket connection timed out after {timeout} seconds")) - time.sleep(0.05) + if not self._connect_event.wait(timeout=timeout): + self.on_error_callback(TimeoutError(f"WebSocket connection timed out after {timeout} seconds")) def main_loop(self): """ diff --git a/python/main.ts b/python/main.ts index b9cbf27..60560e0 100644 --- a/python/main.ts +++ b/python/main.ts @@ -11,8 +11,8 @@ namespace makergen{ let id=parameter.ID.code; let key=parameter.KEY.code; let baseurl=parameter.BASEURL.code; - Generator.addImport(`\nimport makergen\nmakergen_device = makergen.Device(${id},${key},on_msg_callback=makergen_callback, base_url=${baseurl})\n`); - Generator.addCode(`makergen_device.connect()\n`); + Generator.addImport(`\nimport makergen\n`); + Generator.addCode(`makergen_device = makergen.Device(${id},${key},on_msg_callback=(makergen_callback if "makergen_callback" in dir() else None), base_url=${baseurl})\nmakergen_device.connect()\n`); } //% block="向数据点 [POINT] 发送数据 [VALUE]" blockType="command" @@ -21,7 +21,7 @@ namespace makergen{ export function send_msg(parameter: any, block: any) { let point=parameter.POINT.code; let value=parameter.VALUE.code; - Generator.addCode(`makergen_device.send_data(${point},str(${value}))\n`); + Generator.addCode(`makergen_device.send_data(${point},${value})\n`); } //% block="当接收到消息时" blockType="hat"