From: azao <821478748@qq.com> Date: Fri, 9 Jan 2026 10:46:32 +0000 (+0800) Subject: 金三iot3已经同步链接 X-Git-Url: http://git.snicker.com.cn/sitemap.xml?a=commitdiff_plain;h=456af93fd4fc0e11acd67f77e5dcbb7dceafd940;p=mirrors%2FASR1603_G5.git 金三iot3已经同步链接 --- diff --git a/2.sdk/project/K8/sdk/services/microPython/ports/quectel/core/protocol.py b/2.sdk/project/K8/sdk/services/microPython/ports/quectel/core/protocol.py index a3fc3382..3cffbec6 100644 --- a/2.sdk/project/K8/sdk/services/microPython/ports/quectel/core/protocol.py +++ b/2.sdk/project/K8/sdk/services/microPython/ports/quectel/core/protocol.py @@ -703,10 +703,6 @@ class SockMangager(Abstract): print("connect_iot_websocket error") def heart_IOt(self,event,msg): print("heart_IOT.....") - #Header - header = ustruct.pack('>H', 0xFFFE) # 使用大端模式 - #Type - packet_type = ustruct.pack('B', 0x02) #心跳帧 json_str = { "cmd":"post_heart_beat", @@ -721,7 +717,7 @@ class SockMangager(Abstract): payload = json_str.encode('utf-8') payloadLen = ustruct.pack('H', len(payload)) #拼接 - heart_packet = header + packet_type + payloadLen + payload#+ crc + heart_packet = b"\xff\xfe" + b"\x01"+ b"\x03" + b"\x00" * 3+ payloadLen + payload#+ crc EventMesh.publish("CHANNEL_IOT_SEND", heart_packet) # print("心跳发送数据包:{}".format(heart_packet)) @@ -733,31 +729,19 @@ class SockMangager(Abstract): print("iot不在线") EventMesh.publish("publish_AI_btnInfo",{"func":self.connect_iot_websocket}) return - #Header - header = ustruct.pack('>H', 0xFFFE) # 使用大端模式 - #Type - packet_type = ustruct.pack('B', 0x03) - #字典转为json字符串 - json_str = EventMesh.publish("GET_IOT_SEND_CMD", data) - json_str = ujson.dumps(json_str) - #字符串转为二进制数据Payload - payload = json_str.encode('utf-8') - #PayloadLen - payloadLen = ustruct.pack('H', len(payload)) - #CRC16(2字节,基于pay字段计算) - crc = self.crc16(payload) - print("crc的长度为{}".format(len(crc))) - #拼接 - full_packet = header + packet_type + payloadLen + payload#+ crc - EventMesh.publish("CHANNEL_IOT_SEND", full_packet) - print("发送更新数据包:{}".format(full_packet)) + MAGIC = (0xfffe).to_bytes(2,"big") + VERSION = (0x01).to_bytes(1,"big")#"03".encode('utf-8') + TYPE = (0x03).to_bytes(1,"big") + HR_JSON = ujson.dumps(EventMesh.publish("GET_IOT_SEND_CMD", data)) + GPS_JSON_b = HR_JSON.encode('utf-8') + DATA_LEN = (len(HR_JSON)).to_bytes(4,"big") + heards_infor = b'' + heards_infor = MAGIC+VERSION+TYPE+DATA_LEN+GPS_JSON_b + EventMesh.publish("CHANNEL_IOT_SEND", heards_infor) + print("发送更新数据包:{}".format(heards_infor)) def login_IOT(self,event,msg): print("登录中") - #Header - header = ustruct.pack('>H', 0xFFFE) # 使用大端模式 - #Type - packet_type = ustruct.pack('B', 0x00) #设备ID device_id_bytes = modem.getDevImei().encode('utf-8')[:20] # 转为字节并截断到20字节 device_id = bytes_ljust(device_id_bytes, 20, b'\x00') @@ -765,7 +749,7 @@ class SockMangager(Abstract): token_bytes = EventMesh.publish("get_dev_token").encode('utf-8')[:36] # 转为字节并截断 token_padded = bytes_ljust(token_bytes, 36, b'\x00') #拼接 - body = header + packet_type + device_id + token_padded + body = b"\xff\xfe" + b"\x01"+ b"\x03" + device_id + token_padded #CRC16(2字节,基于上述所有字段计算) crc = self.crc16(body) # 完整数据åŒ