diff --git a/ReadMe.txt b/ReadMe.txt index 35892d7..b8c3b87 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -98,3 +98,6 @@ updata 文件列表添加右键菜单,查看文件详情 2023.10.29 使用选项卡来选择两种升级方式 +2023.10.30 + prottcp 方案生成字节数据添加减少内存占用的转化函数,与此日期之前的MCU程序不兼容 + diff --git a/updata/prottcp.py b/updata/prottcp.py index f520b33..2196f7d 100644 --- a/updata/prottcp.py +++ b/updata/prottcp.py @@ -142,6 +142,19 @@ def scheme_to_byte(j:json): # int转数组 def arr_from_int(num:int): return bytearray([num&0xff,(num>>8)&0xff,(num>>16)&0xff,(num>>24)&0xff]) +# uchar转数组 +def arr_from_uchar(num:int): + return bytearray([num&0xff]) +# u16转数组 +def arr_from_u16(num:int): + return bytearray([num&0xff,(num>>8)&0xff]) +# 填充指定个数的byte +def arr_byte_copy(byte:int,num:int): + t=bytearray() + for i in range(num): + t.append(byte) + return t + # 提取方案中的范围数据, 先max后min @@ -168,14 +181,59 @@ def scheme_get_task_range(j:json): t+=arr_from_int(0) return t + + +# 提取方案中的范围数据, 先max后min +# 这个减少了存储空间占用 +def scheme_get_task_range_small(j:json): + t=bytearray() + t+=arr_from_uchar(j["TaskID"]) + t+=arr_from_uchar(j["TaskIndex"]) + t+=arr_from_uchar(j["ReturnCount"]) + t+=arr_from_uchar(j["ExecuteErrCode"]) + index=0 + for i in j["TestStandard"]: + t+=arr_from_u16(i["Max"]) + t+=arr_from_u16(i["Min"]) + if (index