删除huffman相关,分析工具不过滤异常数据
This commit is contained in:
@@ -118,5 +118,7 @@
|
|||||||
2023.11.21
|
2023.11.21
|
||||||
分析工具修改上下限时自动重绘
|
分析工具修改上下限时自动重绘
|
||||||
添加huffman压缩编码,已完成编码,未验证
|
添加huffman压缩编码,已完成编码,未验证
|
||||||
|
2023.12.9
|
||||||
|
删除huffman相关,分析工具不过滤异常数据
|
||||||
|
|
||||||
|
|
||||||
|
@@ -258,10 +258,11 @@ class sch_data(object):
|
|||||||
cur.execute(cmd,(self.date_start,self.date_end,scheme_id))
|
cur.execute(cmd,(self.date_start,self.date_end,scheme_id))
|
||||||
check_data=cur.fetchall()
|
check_data=cur.fetchall()
|
||||||
for row in check_data:
|
for row in check_data:
|
||||||
if(row[3]==0):
|
# 这里过滤检测异常的结果
|
||||||
s=row[5].split(',')
|
# if(row[3]==0):
|
||||||
for i in range(len(s)):
|
s=row[5].split(',')
|
||||||
data_list[i].append(int(s[i]))
|
for i in range(len(s)):
|
||||||
|
data_list[i].append(int(s[i]))
|
||||||
self._check_data=check_data
|
self._check_data=check_data
|
||||||
self._titles=title
|
self._titles=title
|
||||||
return title,data_list,len(check_data)
|
return title,data_list,len(check_data)
|
||||||
|
@@ -469,18 +469,18 @@ class protu(QObject):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
# if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# u=protu()
|
u=protu()
|
||||||
# u.init("utcp:7777")
|
# u.init("utcp:7777")
|
||||||
# u.send_file(0xee,"file/JQ_JCXB_V54.bin")
|
# u.send_file(0xee,"file/JQ_JCXB_V54.bin")
|
||||||
# u.send_file(0xed,"../Objects/checker_gen1_app_20230602.bin")
|
# u.send_file(0xed,"../Objects/checker_gen1_app_20230602.bin")
|
||||||
|
|
||||||
# 设置电阻 矫正值
|
# 设置电阻 矫正值
|
||||||
# u.cmd=0x41
|
# u.cmd=0x41
|
||||||
# data=bytearray([1,0,0x00,2,0,0x00,3,0,0x00,4,0,0x00,5,0,0x00,6,0,0x00,7,0,0x00,8,0,0x00,9,0,0x00,10,0,0x00,11,0,0x00,12,0,0x00,13,0,0x00,14,0,0x00,15,0,0x00,16,0,0x00,17,0,0x00,18,0,0x00,19,0,0x00,20,0,0x00])
|
# data=bytearray([1,100,0x00,2,0,0x00,3,0,0x00,4,0,0x00,5,0,0x00,6,0,0x00,7,0,0x00,8,0,0x00,9,0,0x00,10,0,0x00,11,0,0x00,12,0,0x00,13,0,0x00,14,0,0x00,15,0,0x00,16,0,0x00,17,0,0x00,18,0,0x00,19,0,0x00,20,0,0x00])
|
||||||
# 测量电阻
|
# 测量电阻
|
||||||
# u.cmd=0x42
|
u.cmd=0x42
|
||||||
# data=bytearray([0])
|
data=bytearray([5])
|
||||||
# 设置硬件版本号
|
# 设置硬件版本号
|
||||||
# u.cmd=0x43
|
# u.cmd=0x43
|
||||||
# data=bytearray([1,50,0x00,2,51,0x00,3,52,0x00,4,53,0x00,5,54,0x00,6,55,0x00,7,56,0x00,8,57,0x00,9,58,0x00,10,59,0x00,11,60,0x00,12,61,0x00,13,62,0x00,14,63,0x00,15,64,0x00,16,65,0x00,17,66,0x00,18,67,0x00,19,68,0x00,20,69,0x00])
|
# data=bytearray([1,50,0x00,2,51,0x00,3,52,0x00,4,53,0x00,5,54,0x00,6,55,0x00,7,56,0x00,8,57,0x00,9,58,0x00,10,59,0x00,11,60,0x00,12,61,0x00,13,62,0x00,14,63,0x00,15,64,0x00,16,65,0x00,17,66,0x00,18,67,0x00,19,68,0x00,20,69,0x00])
|
||||||
@@ -490,7 +490,7 @@ class protu(QObject):
|
|||||||
# data=bytearray([0x02]) # 上升
|
# data=bytearray([0x02]) # 上升
|
||||||
# data=bytearray([0x03]) # 下降
|
# data=bytearray([0x03]) # 下降
|
||||||
|
|
||||||
# print(u.encode(data).hex(' '))
|
print(u.encode(data).hex(' '))
|
||||||
# with open("file/EX_Coder_Test_2023-07-6.json","rb") as f:
|
# with open("file/EX_Coder_Test_2023-07-6.json","rb") as f:
|
||||||
# json_obj=json.loads(f.read())
|
# json_obj=json.loads(f.read())
|
||||||
# d=scheme_to_byte(json_obj)
|
# d=scheme_to_byte(json_obj)
|
||||||
@@ -513,147 +513,3 @@ class protu(QObject):
|
|||||||
# 59 6D 03 00 31 00 00 31 CF
|
# 59 6D 03 00 31 00 00 31 CF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def sort_table(index_table):
|
|
||||||
for i in range(len(index_table)):
|
|
||||||
item=index_table[i]
|
|
||||||
for j in range(i+1,len(index_table)):
|
|
||||||
if(index_table[j][1]>item[1]):
|
|
||||||
index_table[i]=index_table[j]
|
|
||||||
index_table[j]=item
|
|
||||||
item=index_table[i]
|
|
||||||
|
|
||||||
|
|
||||||
def exp(num:int,e:int):
|
|
||||||
res=1
|
|
||||||
for i in range(e):
|
|
||||||
res*=num
|
|
||||||
return res
|
|
||||||
|
|
||||||
def clac_zl_table(num:int):
|
|
||||||
count=1
|
|
||||||
while(num>exp(2,count)):
|
|
||||||
count+=1
|
|
||||||
# 使用短编码的个数
|
|
||||||
diff=exp(2,count)-num
|
|
||||||
zl_table=[]
|
|
||||||
for i in range(diff):
|
|
||||||
zl_table.append(i)
|
|
||||||
# 使用长编码的个数
|
|
||||||
diff2=num-exp(2,count-1)
|
|
||||||
for i in range(diff,diff+diff2):
|
|
||||||
zl_table.append(i*2)
|
|
||||||
zl_table.append(i*2+1)
|
|
||||||
print(zl_table)
|
|
||||||
return zl_table,count,diff
|
|
||||||
|
|
||||||
def huffman(data:bytearray):
|
|
||||||
count_table=bytearray(256)
|
|
||||||
for i in data:
|
|
||||||
count_table[int(i)]+=1
|
|
||||||
index_table=[]
|
|
||||||
for i in range(len(count_table)):
|
|
||||||
if(int(count_table[i])>0):
|
|
||||||
index_table.append((i,count_table[i]))
|
|
||||||
# print(index_table)
|
|
||||||
sort_table(index_table)
|
|
||||||
print("index_table",index_table)
|
|
||||||
num=len(index_table)
|
|
||||||
# clac_zl_table(num)
|
|
||||||
ret=bytearray()
|
|
||||||
for i in index_table:
|
|
||||||
ret.append(i[0])
|
|
||||||
ret.append(i[1])
|
|
||||||
return index_table
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 获取树的值
|
|
||||||
def calc_sum_of_tree(tree:list):
|
|
||||||
sum=0
|
|
||||||
if(len(tree)==2):
|
|
||||||
sum=calc_sum_of_tree(tree[0])+calc_sum_of_tree(tree[1])
|
|
||||||
elif(len(tree)==1):
|
|
||||||
sum=tree[0][1]
|
|
||||||
return sum
|
|
||||||
|
|
||||||
# 获取树的深度
|
|
||||||
def calc_deep_of_tree(tree:list):
|
|
||||||
deep=1
|
|
||||||
if(len(tree)==2):
|
|
||||||
sum1=calc_deep_of_tree(tree[0])
|
|
||||||
sum2=calc_deep_of_tree(tree[1])
|
|
||||||
if(sum1>sum2):
|
|
||||||
deep+=sum1
|
|
||||||
else:
|
|
||||||
deep+=sum2
|
|
||||||
elif(len(tree)==1):
|
|
||||||
deep=1
|
|
||||||
return deep
|
|
||||||
|
|
||||||
# 在树中找到指定字符的编码
|
|
||||||
def calc_code_of_char(tree:list,code:int):
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 根据index_table生成huffman树
|
|
||||||
def creat_huffman_tree(index_table:bytearray):
|
|
||||||
index_list=[]
|
|
||||||
for i in range(len(index_table)//2):
|
|
||||||
index_list.append(index_table[i*2:i*2+2])
|
|
||||||
print("index_list",index_list)
|
|
||||||
tree=[index_list[-1]]
|
|
||||||
index_list=index_list[:-1]
|
|
||||||
while len(index_list)>0:
|
|
||||||
sub=[index_list[-1]]
|
|
||||||
index_list=index_list[:-1]
|
|
||||||
# 大在左,小在右
|
|
||||||
if(calc_sum_of_tree(sub)>calc_sum_of_tree(tree)):
|
|
||||||
tree=[sub,tree]
|
|
||||||
else:
|
|
||||||
tree=[tree,sub]
|
|
||||||
print("tree deep:",calc_deep_of_tree(tree))
|
|
||||||
print(tree)
|
|
||||||
return tree
|
|
||||||
|
|
||||||
# 根据值获取其序号
|
|
||||||
def value_to_index(index_table:list,value):
|
|
||||||
for i in range(len(index_table)):
|
|
||||||
if(value==index_table[i]):
|
|
||||||
return i
|
|
||||||
return -1
|
|
||||||
|
|
||||||
|
|
||||||
# 生成指定位数的mask
|
|
||||||
def calc_mask(num:int):
|
|
||||||
ret=0
|
|
||||||
for i in range(num):
|
|
||||||
ret<<=1
|
|
||||||
ret|=1
|
|
||||||
return ret
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def huffman_encode(data:bytearray):
|
|
||||||
ret=bytearray(1024)
|
|
||||||
index=0
|
|
||||||
index_table=huffman(data)
|
|
||||||
# print("index_table",index_table.hex(' '))
|
|
||||||
print("index_table",index_table)
|
|
||||||
creat_huffman_tree(index_table)
|
|
||||||
|
|
||||||
def huffman_decode(data:bytearray):
|
|
||||||
zl_table,count,diff=clac_zl_table(data[0])
|
|
||||||
index_table=data[1:data[0]+1]
|
|
||||||
data=data[data[0]+1:]
|
|
||||||
index_all=len(data[1:])*8-data[0]
|
|
||||||
ret=bytearray()
|
|
||||||
index=0
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
huffman_encode(b"1234567891234233434237873678378263738")
|
|
Reference in New Issue
Block a user