fix some bug
This commit is contained in:
@@ -13,7 +13,7 @@
|
|||||||
"isBoard": false,
|
"isBoard": false,
|
||||||
"id": "makergen",
|
"id": "makergen",
|
||||||
"platform": ["win","mac","web","linux"],
|
"platform": ["win","mac","web","linux"],
|
||||||
"version": "0.0.1",
|
"version": "0.0.2",
|
||||||
"asset": {
|
"asset": {
|
||||||
"python": {
|
"python": {
|
||||||
"dir": "python/",
|
"dir": "python/",
|
||||||
|
|||||||
BIN
python/libraries/makergen/__pycache__/__init__.cpython-38.pyc
Normal file
BIN
python/libraries/makergen/__pycache__/__init__.cpython-38.pyc
Normal file
Binary file not shown.
BIN
python/libraries/makergen/__pycache__/core.cpython-38.pyc
Normal file
BIN
python/libraries/makergen/__pycache__/core.cpython-38.pyc
Normal file
Binary file not shown.
@@ -24,7 +24,7 @@ class Device:
|
|||||||
:param on_error_callback: 当遇到错误时的回调。接收一个参数,为错误对象;若遇到服务器或页面发送的消息不合规,传入ServerException对象
|
:param on_error_callback: 当遇到错误时的回调。接收一个参数,为错误对象;若遇到服务器或页面发送的消息不合规,传入ServerException对象
|
||||||
:param base_url: makergen的基础URL,通常为wss://api.makergen.cn
|
: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)
|
print(url)
|
||||||
self.ws = websocket.WebSocketApp(
|
self.ws = websocket.WebSocketApp(
|
||||||
url,
|
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_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.on_error_callback = on_error_callback if on_error_callback is not None else lambda _ : None
|
||||||
self.is_connected = False
|
self.is_connected = False
|
||||||
|
self._connect_event = threading.Event()
|
||||||
|
|
||||||
def _on_open(self, ws):
|
def _on_open(self, ws):
|
||||||
self.is_connected = True
|
self.is_connected = True
|
||||||
|
self._connect_event.set()
|
||||||
|
|
||||||
def _on_close(self, ws, close_status_code, close_msg):
|
def _on_close(self, ws, close_status_code, close_msg):
|
||||||
self.is_connected = False
|
self.is_connected = False
|
||||||
|
self._connect_event.clear()
|
||||||
|
|
||||||
def _on_message(self, ws, message):
|
def _on_message(self, ws, message):
|
||||||
try:
|
try:
|
||||||
@@ -68,15 +72,13 @@ class Device:
|
|||||||
"""
|
"""
|
||||||
在新线程中运行客户端循环(推荐)
|
在新线程中运行客户端循环(推荐)
|
||||||
"""
|
"""
|
||||||
|
self._connect_event.clear()
|
||||||
wst = threading.Thread(target=self.ws.run_forever)
|
wst = threading.Thread(target=self.ws.run_forever)
|
||||||
wst.daemon = True
|
wst.daemon = True
|
||||||
wst.start()
|
wst.start()
|
||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
while not self.is_connected:
|
if not self._connect_event.wait(timeout=timeout):
|
||||||
if time.time() - start_time > timeout:
|
|
||||||
if not self.is_connected:
|
|
||||||
self.on_error_callback(TimeoutError(f"WebSocket connection timed out after {timeout} seconds"))
|
self.on_error_callback(TimeoutError(f"WebSocket connection timed out after {timeout} seconds"))
|
||||||
time.sleep(0.05)
|
|
||||||
|
|
||||||
def main_loop(self):
|
def main_loop(self):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ namespace makergen{
|
|||||||
let id=parameter.ID.code;
|
let id=parameter.ID.code;
|
||||||
let key=parameter.KEY.code;
|
let key=parameter.KEY.code;
|
||||||
let baseurl=parameter.BASEURL.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.addImport(`\nimport makergen\n`);
|
||||||
Generator.addCode(`makergen_device.connect()\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"
|
//% block="向数据点 [POINT] 发送数据 [VALUE]" blockType="command"
|
||||||
@@ -21,7 +21,7 @@ namespace makergen{
|
|||||||
export function send_msg(parameter: any, block: any) {
|
export function send_msg(parameter: any, block: any) {
|
||||||
let point=parameter.POINT.code;
|
let point=parameter.POINT.code;
|
||||||
let value=parameter.VALUE.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"
|
//% block="当接收到消息时" blockType="hat"
|
||||||
|
|||||||
Reference in New Issue
Block a user