线程1发出信号,线程2进行判断(判断有没有收到包),然后解码(10进制转16进制含浮点数),写数据库,需要代码
import copy
import threading
from PyQt5.QtCore import pyqtSignal, QObject
from Sql import sql
import time
import traceback
from FormatConvert import FormatConvert
class myThread2 (QObject,threading.Thread):
DataReady_recv = pyqtSignal(list)
def __init__(self, name):
QObject.__init__(self)
threading.Thread.__init__(self)
self.name = name
#数据库
self.sql=sql()
self.FormatCon = FormatConvert()
def data_decoding(self,data1):
write_data=[]
print("接收到数据:"+data1)
table_name='device_info'+data1[0:1]
disu = self.FormatCon.int64_to_float(int(data1[2:10],16))
write_data.append(disu)
yuliang = self.FormatCon.int64_to_float(int(data1[11:19], 16))
write_data.append(yuliang)
if data1[-2:] == '01':
status = "正常"
else:
status = "异常"
write_data.append(status)
self.sql.insert_device_info_table(table_name,write_data)
#self.data2=[{'node': '2', 'lon': 114.4198, 'lat': 30.5186}, {'node': '2', 'lon': 114.4198, 'lat': 30.5186}]
def run(self):
while True :
#收到数据了
print()
#这里进行判断
if __name__ == "__main__":
#这里进行解码,写数据库(类似下面这个)
thread1=myThread2("thrad2")
print(".....1")
# thread1.creatable(s)
s2={'node_name': 'lora_node3', 'data': 'AAAA0312013BD1E442BC34F441CDCC4C3DDA5555'}
s={'node_name': 'lora_node18', 'data': '"/a14FBbBQKgS/lora_node18/user/update"\r\nAAAA03250214021B1021101327E1BFD78D7ABE952BF64003B9FB430550A23FD792FC43641EA141E4BD75403F3BD1E442BC34F4414C5555'}
s3 = {'node_name': 'lora_node18',
'data': '"/a14FBbBQKgS/lora_node18/user/update"\r\nAAAA03020215030C0E2001410BBE3E752F85BEC2DC87C2FC8A3DC10000000000000000073B8D4133698640BA5555'}
s4={'data': 'AAAA03020215030C0E1F345960BD3E76CC00BF4E5B75C2DA0745C10000000000000000073B8D41997486403F55',
'node_name': 'lora_gateway'}
s5={'data': 'AAAA03020215030C0E1F36E0FEBB3ECA6E00BF289684C212FD42C10000000000000000073B8D41A46B8640AB55',
'node_name': 'lora_gateway'}
thread1.data_check(s5)
thread1.data_decoding(s3)