第一次提交
This commit is contained in:
commit
5de3c3cc90
3
.idea/.gitignore
generated
vendored
Normal file
3
.idea/.gitignore
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
6
.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
6
.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
||||
7
.idea/misc.xml
generated
Normal file
7
.idea/misc.xml
generated
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Black">
|
||||
<option name="sdkName" value="Python 3.10 (频响测试)" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (频响测试)" project-jdk-type="Python SDK" />
|
||||
</project>
|
||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/频响测试.iml" filepath="$PROJECT_DIR$/.idea/频响测试.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
10
.idea/频响测试.iml
generated
Normal file
10
.idea/频响测试.iml
generated
Normal file
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Python 3.10 (频响测试)" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
3
20231202/频响测试/.idea/.gitignore
generated
vendored
Normal file
3
20231202/频响测试/.idea/.gitignore
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
6
20231202/频响测试/.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
6
20231202/频响测试/.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
||||
4
20231202/频响测试/.idea/misc.xml
generated
Normal file
4
20231202/频响测试/.idea/misc.xml
generated
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9" project-jdk-type="Python SDK" />
|
||||
</project>
|
||||
8
20231202/频响测试/.idea/modules.xml
generated
Normal file
8
20231202/频响测试/.idea/modules.xml
generated
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/频响测试.iml" filepath="$PROJECT_DIR$/.idea/频响测试.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
10
20231202/频响测试/.idea/频响测试.iml
generated
Normal file
10
20231202/频响测试/.idea/频响测试.iml
generated
Normal file
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Python 3.9" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
9250
20231202/频响测试/2023-12-02.txt
Normal file
9250
20231202/频响测试/2023-12-02.txt
Normal file
File diff suppressed because it is too large
Load Diff
BIN
20231202/频响测试/2023-12-02/4845.png
Normal file
BIN
20231202/频响测试/2023-12-02/4845.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
70
20231202/频响测试/AFG3000.py
Normal file
70
20231202/频响测试/AFG3000.py
Normal file
@ -0,0 +1,70 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
import pyvisa
|
||||
import time
|
||||
from pyvisa.constants import *
|
||||
|
||||
|
||||
|
||||
class AFG3000():
|
||||
def __init__(self):
|
||||
self.rm = pyvisa.ResourceManager()
|
||||
|
||||
def init(self):
|
||||
#importlib.reload(sys)
|
||||
res = self.rm.list_resources()
|
||||
return res;
|
||||
# self.mydev = self.rm.open_resource(res[0])
|
||||
|
||||
# print(mydev.query("*OPT?"))
|
||||
|
||||
def SetAmpl(self, ampl):
|
||||
#self.mydev.write("VOLTAGE:AMPLITUDE {0}".format(ampl)) #AFG3000
|
||||
self.mydev.write(":SOUR1:VOLT {0}".format(ampl))
|
||||
#self.mydev.write("*SAV 1")
|
||||
#self.mydev.write("*RCL 1")
|
||||
|
||||
def SetFrequency(self, Fre):
|
||||
#self.mydev.write("FREQUENCY {0}".format(Fre)) #AFG3000
|
||||
#self.mydev.write("*SAV 1") #AFG3000
|
||||
self.mydev.write(":SOUR1:FREQ {0}".format(Fre)) # DG1002
|
||||
#self.mydev.write("*RCL 1")
|
||||
|
||||
def Open(self):
|
||||
#return self.mydev.write("OUTPut1:STATe ON") #AFG3000
|
||||
return self.mydev.write(":OUTP1 ON")
|
||||
|
||||
def Connect(self,dev):
|
||||
self.mydev = self.rm.open_resource(dev)
|
||||
|
||||
def ConnectMultimeter(self,dev):
|
||||
self.multimeterdev = self.rm.open_resource(dev)
|
||||
self.multimeterdev.timeout = 10000
|
||||
|
||||
def SetAC(self):
|
||||
#self.multimeterdev.write("CONF:VOLT:AC") # DG1002
|
||||
self.multimeterdev.write("*CLS")
|
||||
time.sleep(1)
|
||||
res = self.multimeterdev.query("MEAS:VOLT:AC? 1,2.0e-5") # DG1002
|
||||
#print(float(res))
|
||||
|
||||
|
||||
def measure(self):
|
||||
#print('==========measure=========')
|
||||
time.sleep(0.2)
|
||||
res = self.multimeterdev.query("MEAS:VOLT:AC? 1,2.0e-5")
|
||||
res = float(res)*1000
|
||||
#print(res)
|
||||
return float(res)
|
||||
|
||||
def Close(self):
|
||||
#self.mydev.write("OUTPut1:STATe OFF") #AFG3000
|
||||
self.mydev.write(":OUTP1 OFF") # DG1002
|
||||
|
||||
|
||||
def query(self, Param):
|
||||
res = self.mydev.query(str(Param))
|
||||
res = float(res)
|
||||
return res
|
||||
46
20231202/频响测试/AFG3000old.py
Normal file
46
20231202/频响测试/AFG3000old.py
Normal file
@ -0,0 +1,46 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import sys
|
||||
import pyvisa
|
||||
from pyvisa.constants import *
|
||||
|
||||
import importlib
|
||||
|
||||
|
||||
class AFG3000():
|
||||
def __init__(self):
|
||||
self.rm = pyvisa.ResourceManager()
|
||||
|
||||
def init(self):
|
||||
#importlib.reload(sys)
|
||||
res = self.rm.list_resources()
|
||||
return res;
|
||||
# self.mydev = self.rm.open_resource(res[0])
|
||||
|
||||
# print(mydev.query("*OPT?"))
|
||||
|
||||
def SetAmpl(self, ampl):
|
||||
self.mydev.write("VOLTAGE:AMPLITUDE {0}".format(ampl))
|
||||
#self.mydev.write("*SAV 1")
|
||||
#self.mydev.write("*RCL 1")
|
||||
|
||||
def SetFrequency(self, Fre):
|
||||
self.mydev.write("FREQUENCY {0}".format(Fre))
|
||||
self.mydev.write("*SAV 1")
|
||||
#self.mydev.write("*RCL 1")
|
||||
|
||||
def Open(self):
|
||||
return self.mydev.write("OUTPut1:STATe ON")
|
||||
|
||||
def Connect(self,dev):
|
||||
self.mydev = self.rm.open_resource(dev)
|
||||
|
||||
def Close(self):
|
||||
self.mydev.write("OUTPut1:STATe OFF")
|
||||
|
||||
|
||||
def query(self, Param):
|
||||
res = self.mydev.query(str(Param))
|
||||
res = float(res)
|
||||
return res
|
||||
561
20231202/频响测试/DN101_NFC.py
Normal file
561
20231202/频响测试/DN101_NFC.py
Normal file
@ -0,0 +1,561 @@
|
||||
from ctypes import *
|
||||
import time
|
||||
|
||||
class Nfc_Reader(object):
|
||||
def __init__(self, nfc_dev):
|
||||
self.nfc_reader = nfc_dev
|
||||
# self.nfc_reader = serial.Serial("com6")
|
||||
self.dev_info = NFC_INFO()
|
||||
self.dev_conf = NFC_CONF()
|
||||
self.init_nfc_message()
|
||||
|
||||
self.rfidm_c2_wpack = RFIDM_C2_WRITE_HEADER()
|
||||
self.rfidm_c2_rpack = RFIDM_C2_READ_HEADER()
|
||||
|
||||
self.nfc_uuid = None
|
||||
|
||||
def write_info(self, info_data):
|
||||
info_bytes = bytes(info_data) +b'\x00'
|
||||
|
||||
ret = self.rfidm_c2_multi_write(0, 10, info_bytes)
|
||||
|
||||
return ret
|
||||
|
||||
def write_conf(self, conf_data):
|
||||
conf_bytes = bytes(conf_data) + bytes([0, 0, 0])
|
||||
print("配置信息", conf_bytes)
|
||||
ret1 = self.rfidm_c2_multi_write(16, 15, conf_bytes[:60])
|
||||
ret2 = self.rfidm_c2_multi_write(31, 15, conf_bytes[60:])
|
||||
|
||||
return ret1&ret2
|
||||
|
||||
def read_info(self):
|
||||
# info_pack = NFC_INFO()
|
||||
|
||||
ret = self.rfidm_c2_multi_read(0, 10, timout=2)
|
||||
# print("nfc info:", str(ret))
|
||||
if ret:
|
||||
memmove(addressof(self.dev_info), ret, sizeof(self.dev_info))
|
||||
# self.dev_info_analysis()
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def read_conf(self):
|
||||
# conf_pack = NFC_CONF()
|
||||
|
||||
ret1 = self.rfidm_c2_multi_read(16, 15, timout=2)
|
||||
ret2 = self.rfidm_c2_multi_read(31, 15, timout=2)
|
||||
# print("nfc info:", str(ret1), str(ret2))
|
||||
if ret1:
|
||||
if ret2:
|
||||
ret = ret1+ret2
|
||||
memmove(addressof(self.dev_conf), ret, sizeof(self.dev_conf))
|
||||
print("测点名称:", list(self.dev_conf.node_name))
|
||||
# self.dev_conf_analysis()
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def close(self):
|
||||
self.nfc_reader.close()
|
||||
|
||||
def default(self):
|
||||
conf_file = open("conf.txt", 'r')
|
||||
|
||||
def rfidm_c2_single_write(self, cmd, data):
|
||||
pass
|
||||
|
||||
def rfidm_c2_multi_write(self, block_index, block_count, wdata, timeout=2):
|
||||
wpack = self.rfidm_c2_multi_write_pack(block_index, block_count, wdata)
|
||||
|
||||
self.nfc_reader.reset_input_buffer()
|
||||
self.nfc_reader.reset_output_buffer()
|
||||
|
||||
self.nfc_reader.write(wpack)
|
||||
|
||||
|
||||
#检查返回的信息,是否写入成功
|
||||
retpack = RFIDM_C2_RET_PACK()
|
||||
ret = self.nfc_reader.read(sizeof(retpack))
|
||||
memmove(addressof(retpack), ret, sizeof(retpack))
|
||||
|
||||
if retpack.sucess_flag == 0xE7:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
def rfidm_c2_multi_read(self, block_index, block_count, timout=0.5):
|
||||
read_info_cmd = self.rfidm_c2_multi_read_pack(block_index, block_count)
|
||||
|
||||
self.nfc_reader.reset_input_buffer()
|
||||
self.nfc_reader.reset_output_buffer()
|
||||
self.nfc_reader.write(read_info_cmd)
|
||||
print("read info cmd:", [hex(data) for data in list(read_info_cmd)])
|
||||
self.nfc_reader.timeout = timout
|
||||
|
||||
ret = self.nfc_reader.read(4*block_count+4)
|
||||
print(ret)
|
||||
if len(ret) == (4*block_count+4):
|
||||
return ret[3:-1]
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
def rfidm_c2_single_read(self, cmd, retlen, timout=0.5):
|
||||
cmdpack = RFIDM_C2_WRITE_HEADER()
|
||||
cmdpack.adress = 0
|
||||
cmdpack.dlen = 0x02
|
||||
cmdpack.cmd = cmd
|
||||
|
||||
crc = self.bcc_check(bytes(cmdpack)[2:-1])
|
||||
cmdpack.crc = crc
|
||||
|
||||
self.nfc_reader.reset_input_buffer()
|
||||
self.nfc_reader.reset_output_buffer()
|
||||
|
||||
self.nfc_reader.write(bytes(cmdpack))
|
||||
self.nfc_reader.timeout = 0.5
|
||||
ret = self.nfc_reader.read(retlen)
|
||||
|
||||
if len(ret)==retlen:
|
||||
return ret
|
||||
else:
|
||||
print(ret)
|
||||
return None
|
||||
|
||||
def get_uuid(self):
|
||||
tagpack = RFIDM_C2_TAG_INFO_PACK()
|
||||
|
||||
ret = self.rfidm_c2_single_read(0x11, sizeof(tagpack)) #获取标签命令
|
||||
|
||||
if ret:
|
||||
memmove(addressof(tagpack), ret, sizeof(tagpack))
|
||||
self.nfc_uuid = tagpack.uuid
|
||||
else:
|
||||
self.nfc_uuid = False
|
||||
|
||||
def rfidm_c2_multi_write_pack(self, start_block, block_count, data):
|
||||
"""
|
||||
写多个block 数据格式
|
||||
:param start_block: 起始块序号
|
||||
:param block_count: 一共要写的块
|
||||
:param data: 要写的数据
|
||||
:return: bytes格式数据包
|
||||
"""
|
||||
mwrite_pack = RFIDM_C2_MULTI_WRITE_PACK()
|
||||
wpack = RFIDM_C2_WRITE_HEADER()
|
||||
|
||||
wpack.address = 0
|
||||
wpack.dlen = sizeof(wpack) + sizeof(mwrite_pack) + len(data) - 3
|
||||
wpack.cmd = 0x24
|
||||
|
||||
# memmove(addressof(mwrite_pack.uuid), self.nfc_uuid, sizeof(mwrite_pack.uuid))
|
||||
mwrite_pack.uuid = self.nfc_uuid
|
||||
mwrite_pack.flag = 0x22
|
||||
mwrite_pack.start_block = start_block
|
||||
mwrite_pack.block_len = block_count
|
||||
|
||||
wdata = bytes(wpack)[:-1] + bytes(mwrite_pack)+data
|
||||
crc = self.bcc_check(wdata[2:])
|
||||
|
||||
wpack.crc = crc
|
||||
|
||||
wdata = bytes(wpack)[:-1] + bytes(mwrite_pack) + data + bytes(wpack)[-1:]
|
||||
|
||||
return wdata
|
||||
|
||||
def rfidm_c2_single_write_pack(self, block_index, data):
|
||||
"""
|
||||
写入单个数据块
|
||||
:param block_index: 块序号
|
||||
:param data: 要写入的数据
|
||||
:return: bytes数据包
|
||||
"""
|
||||
wpack = RFIDM_C2_SINGLE_WRITE_PACK()
|
||||
|
||||
wpack.address = 0
|
||||
wpack.dlen = 0x10
|
||||
wpack.cmd = 0x21
|
||||
|
||||
# memmove(addressof(wpack.uuid), self.nfc_uuid, sizeof(wpack.uuid))
|
||||
wpack.uuid = self.nfc_uuid
|
||||
wpack.flag = 0x22
|
||||
wpack.block_index = block_index
|
||||
memmove(addressof(wpack.data), data, sizeof(wpack.data))
|
||||
|
||||
crc = self.bcc_check(bytes(wpack[2:-1]))
|
||||
wpack.crc = crc
|
||||
|
||||
return bytes(wpack)
|
||||
|
||||
def rfidm_c2_multi_read_pack(self, block_index, block_count):
|
||||
rpack = RFIDM_C2_MULTI_READ_PACK()
|
||||
|
||||
rpack.address = 0
|
||||
rpack.dlen = 0x0C
|
||||
rpack.cmd = 0x23
|
||||
rpack.uuid = self.nfc_uuid
|
||||
|
||||
rpack.block_index = block_index
|
||||
rpack.block_count = block_count
|
||||
|
||||
crc = self.bcc_check(bytes(rpack)[2:-1])
|
||||
rpack.crc = crc
|
||||
|
||||
return bytes(rpack)
|
||||
|
||||
def rfidm_c2_single_read_pack(self, block_index):
|
||||
rpack = RFIDM_C2_SINGLE_READ_PACK()
|
||||
|
||||
rpack.address = 0
|
||||
rpack.dlen = 0x0B
|
||||
rpack.cmd = 0x20
|
||||
|
||||
memmove(addressof(rpack.uuid), self.nfc_uuid, sizeof(rpack.uuid))
|
||||
rpack.block_index = block_index
|
||||
|
||||
crc = self.bcc_check(bytes(rpack[2:-1]))
|
||||
rpack.crc = crc
|
||||
|
||||
return bytes(rpack)
|
||||
|
||||
|
||||
def bcc_check(self, data):
|
||||
bcc = 0
|
||||
for d in data:
|
||||
bcc = bcc^d
|
||||
|
||||
return bcc
|
||||
|
||||
def rfidm_c2_init(self):
|
||||
wpack = RFIDM_C2_CMD_PACK()
|
||||
wpack.address = 0
|
||||
wpack.dlen = 0x03
|
||||
wpack.cmd = 0x02
|
||||
wpack.conf = 0x01
|
||||
wpack.crc = 0x00
|
||||
|
||||
self.nfc_reader.reset_input_buffer()
|
||||
self.nfc_reader.reset_output_buffer()
|
||||
self.nfc_reader.write(bytes(wpack))
|
||||
time.sleep(0.2)
|
||||
|
||||
wpack.cmd = 0x0D
|
||||
wpack.conf = 0x01
|
||||
wpack.crc = 0x0F
|
||||
|
||||
self.nfc_reader.reset_input_buffer()
|
||||
self.nfc_reader.reset_output_buffer()
|
||||
self.nfc_reader.write(bytes(wpack))
|
||||
time.sleep(0.2)
|
||||
|
||||
wpack.cmd = 0x0E
|
||||
wpack.conf = 100
|
||||
wpack.crc = self.bcc_check(bytes(wpack)[2:-1])
|
||||
|
||||
self.nfc_reader.reset_input_buffer()
|
||||
self.nfc_reader.reset_output_buffer()
|
||||
self.nfc_reader.write(bytes(wpack))
|
||||
time.sleep(0.2)
|
||||
|
||||
|
||||
|
||||
|
||||
def dev_info_analysis(self):
|
||||
self.dev_info_msg["初始化标志"] = self.dev_info.uInitFlag
|
||||
self.dev_info_msg["加速度传感器状态"] = self.dev_info.uAccSta
|
||||
self.dev_info_msg["Zigbee模块状态"] = self.dev_info.uZigbeeSta
|
||||
self.dev_info_msg["设备温度传感器状态"] = self.dev_info.uLowerTempSta
|
||||
self.dev_info_msg["环境温度传感器状态"] = self.dev_info.uUpperTempSta
|
||||
self.dev_info_msg["设备运行状态"] = self.dev_info.uRunningFlag
|
||||
self.dev_info_msg["MAC地址"] = hex(self.dev_info.zigbeeMac)[2:]
|
||||
self.dev_info_msg["硬件版本"] = self.dev_info.hwVersion/10
|
||||
self.dev_info_msg["软件版本"] = self.dev_info.sfVersion/10
|
||||
self.dev_info_msg["生产批号"] = self.dev_info.pn
|
||||
self.dev_info_msg["生产序列号"] = self.dev_info.sn
|
||||
self.dev_info_msg["首次上电日期"] = self.dev_info.sTime
|
||||
self.dev_info_msg["唤醒次数"] = self.dev_info.wakeupTimes
|
||||
self.dev_info_msg["特征值发送次数"] = self.dev_info.tzTimes
|
||||
self.dev_info_msg["原始波形发送次数"] = self.dev_info.wvTimes
|
||||
self.dev_info_msg["电池电压"] = self.dev_info.batVol
|
||||
self.dev_info_msg["产品型号"] = self.dev_info.productType
|
||||
self.dev_info_msg["无线信号强度"] = self.dev_info.rss
|
||||
print(bytes(self.dev_conf.node_name))
|
||||
|
||||
try:
|
||||
self.dev_info_msg["测点名称"] = bytes(self.dev_conf.node_name).decode('GB18030')
|
||||
except:
|
||||
self.dev_info_msg["测点名称"] = "解析错误"
|
||||
|
||||
def dev_conf_analysis(self):
|
||||
self.dev_conf_msg["配置标志"] = self.dev_conf.active_flag
|
||||
self.dev_conf_msg["唤醒周期"] = self.dev_conf.wakeup_period
|
||||
self.dev_conf_msg["原始波形发送周期"] = self.dev_conf.wave_period
|
||||
self.dev_conf_msg["Zigbee PID"] = hex(self.dev_conf.zig_panid)[2:]
|
||||
self.dev_conf_msg["Zigbee 信道"] = self.dev_conf.zig_channel
|
||||
self.dev_conf_msg["Zigbee 本地地址"] = hex(self.dev_conf.zig_local_addr)[2:]
|
||||
self.dev_conf_msg["Zigbee 目标地址"] = hex(self.dev_conf.zig_dst_addr)[2:]
|
||||
self.dev_conf_msg["Zigbee 发射功率"] = self.dev_conf.zig_power_level
|
||||
self.dev_conf_msg["Zigbee 重试次数"] = self.dev_conf.zig_retry_num
|
||||
self.dev_conf_msg["Zigbee 重试间隔"] = self.dev_conf.zig_retry_time
|
||||
self.dev_conf_msg["ACC采样率"] = self.acc_freq_cal(self.dev_conf.acc_acq_freq)
|
||||
self.dev_conf_msg["ACC量程"] = self.acc_range_cal(self.dev_conf.acc_acq_range)
|
||||
self.dev_conf_msg["ACC采样率时间"] = self.dev_conf.acc_acq_time
|
||||
self.dev_conf_msg["频带能量参数1 START"] = self.dev_conf.freq_power1_start
|
||||
self.dev_conf_msg["频带能量参数1 END"] = self.dev_conf.freq_power1_stop
|
||||
self.dev_conf_msg["频带能量参数2 START"] = self.dev_conf.freq_power2_start
|
||||
self.dev_conf_msg["频带能量参数2 END"] = self.dev_conf.freq_power2_stop
|
||||
self.dev_conf_msg["频带能量参数3 START"] = self.dev_conf.freq_power3_start
|
||||
self.dev_conf_msg["频带能量参数3 END"] = self.dev_conf.freq_power3_stop
|
||||
self.dev_conf_msg["频带能量参数4 START"] = self.dev_conf.freq_power4_start
|
||||
self.dev_conf_msg["频带能量参数4 END"] = self.dev_conf.freq_power4_stop
|
||||
self.dev_conf_msg["频带能量参数5 START"] = self.dev_conf.freq_power5_start
|
||||
self.dev_conf_msg["频带能量参数5 END"] = self.dev_conf.freq_power5_stop
|
||||
self.dev_conf_msg["冲击带通频率START"] = self.dev_conf.envel_freq_start
|
||||
self.dev_conf_msg["冲击带通频率END"] = self.dev_conf.envel_freq_stop
|
||||
self.dev_conf_msg["故障频率1"] = self.dev_conf.fail_freq1
|
||||
self.dev_conf_msg["故障频率2"] = self.dev_conf.fail_freq2
|
||||
self.dev_conf_msg["故障频率3"] = self.dev_conf.fail_freq3
|
||||
self.dev_conf_msg["故障频率4"] = self.dev_conf.fail_freq4
|
||||
self.dev_conf_msg["配置时间"] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(self.dev_conf.conf_date))
|
||||
self.dev_conf_msg["速度积分滤波频率"] = self.dev_conf.speed_freq_start
|
||||
|
||||
|
||||
def init_nfc_message(self):
|
||||
self.dev_info_msg = {"测点名称": None,
|
||||
"初始化标志": None,
|
||||
"加速度传感器状态": None,
|
||||
"Zigbee模块状态": None,
|
||||
"设备温度传感器状态": None,
|
||||
"环境温度传感器状态": None,
|
||||
"设备运行状态": None,
|
||||
"MAC地址": None,
|
||||
"硬件版本": None,
|
||||
"软件版本": None,
|
||||
"生产批号": None,
|
||||
"生产序列号": None,
|
||||
"首次上电日期": None,
|
||||
"唤醒次数": None,
|
||||
"特征值发送次数": None,
|
||||
"原始波形发送次数": None,
|
||||
"电池电压": None,
|
||||
"产品型号": None,
|
||||
"无线信号强度": None,
|
||||
}
|
||||
|
||||
self.dev_conf_msg = {"配置标志": None,
|
||||
"唤醒周期": None,
|
||||
"原始波形发送周期": None,
|
||||
"Zigbee PID": None,
|
||||
"Zigbee 信道": None,
|
||||
"Zigbee 本地地址": None,
|
||||
"Zigbee 目标地址": None,
|
||||
"Zigbee 发射功率": None,
|
||||
"Zigbee 重试次数": None,
|
||||
"Zigbee 重试间隔": None,
|
||||
"ACC采样率": None,
|
||||
"ACC量程": None,
|
||||
"ACC采样率时间": None,
|
||||
"频带能量参数1 START": None,
|
||||
"频带能量参数1 END": None,
|
||||
"频带能量参数2 START": None,
|
||||
"频带能量参数2 END": None,
|
||||
"频带能量参数3 START": None,
|
||||
"频带能量参数3 END": None,
|
||||
"频带能量参数4 START": None,
|
||||
"频带能量参数4 END": None,
|
||||
"频带能量参数5 START": None,
|
||||
"频带能量参数5 END": None,
|
||||
"冲击带通频率START": None,
|
||||
"冲击带通频率END": None,
|
||||
"故障频率1": None,
|
||||
"故障频率2": None,
|
||||
"故障频率3": None,
|
||||
"故障频率4": None,
|
||||
"配置时间": None,
|
||||
"速度积分滤波频率": None
|
||||
}
|
||||
def acc_range_cal(self, sdata):
|
||||
if sdata == 0b00:
|
||||
return "±8g"
|
||||
elif sdata == 0b01:
|
||||
return "±16g"
|
||||
elif sdata == 0b10:
|
||||
return "±32g"
|
||||
elif sdata == 0b11:
|
||||
return "±64g"
|
||||
|
||||
def acc_freq_cal(self, sdata):
|
||||
if sdata == 0b00:
|
||||
return "3.2kHz"
|
||||
elif sdata == 0b01:
|
||||
return "6.4kHz"
|
||||
elif sdata == 0b10:
|
||||
return "12.8kHz"
|
||||
elif sdata == 0b11:
|
||||
return "25.6kHz"
|
||||
|
||||
#传感器信息
|
||||
class NFC_INFO(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
#设备状态标志
|
||||
('uInitFlag', c_ubyte, 1),
|
||||
('uAccSta', c_ubyte, 1),
|
||||
('uZigbeeSta', c_ubyte, 1),
|
||||
('uLowerTempSta', c_ubyte, 1),
|
||||
('uUpperTempSta', c_ubyte, 1),
|
||||
('uRunningFlag', c_ubyte, 1),
|
||||
|
||||
('zigbeeMac', c_uint64), #Zigbee MAC地址
|
||||
('hwVersion', c_uint8), #硬件版本
|
||||
('sfVersion', c_uint8), #软件版本
|
||||
('pn', c_uint32), #批号
|
||||
('sn', c_uint32), #序列号
|
||||
('sTime', c_uint32), #首次上电时间
|
||||
('wakeupTimes', c_uint32), #唤醒次数
|
||||
('tzTimes', c_uint32), #特征值发送次数
|
||||
('wvTimes', c_uint32), #原始波形发送次数
|
||||
('batVol', c_uint16), #电池电压
|
||||
('productType', c_uint8), #产品型号
|
||||
('rss', c_uint8), #Zigbee信号强度
|
||||
]
|
||||
|
||||
|
||||
class NFC_CONF(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('active_flag', c_uint8), # 激活标志
|
||||
('wakeup_period', c_uint8), # 唤醒周期
|
||||
('wave_period', c_uint16), # 原始波形发送周期
|
||||
('zig_panid', c_uint16), # zigbee panid
|
||||
('zig_channel', c_uint8), # zigbee channel
|
||||
('zig_local_addr', c_uint16), # zigbee本地地址
|
||||
('zig_dst_addr', c_uint16), # zigbee目标地址
|
||||
('zig_power_level', c_uint8), # zigbee发射功率
|
||||
("zig_retry_num", c_uint8), # 重试次数
|
||||
("zig_retry_time", c_uint8), # 重试间隔
|
||||
|
||||
("reserve", c_ubyte, 4),
|
||||
("acc_acq_range", c_ubyte, 2), # 量程
|
||||
("acc_acq_freq", c_ubyte, 2), # 采样率
|
||||
|
||||
("acc_acq_time", c_uint8), # 采样时长
|
||||
|
||||
("freq_power1_start", c_uint16), # 频带能量参数1
|
||||
("freq_power1_stop", c_uint16), # 频带能量参数1
|
||||
("freq_power2_start", c_uint16), # 频带能量参数2
|
||||
("freq_power2_stop", c_uint16), # 频带能量参数2
|
||||
("freq_power3_start", c_uint16), # 频带能量参数3
|
||||
("freq_power3_stop", c_uint16), # 频带能量参数3
|
||||
("freq_power4_start", c_uint16), # 频带能量参数4
|
||||
("freq_power4_stop", c_uint16), # 频带能量参数4
|
||||
("freq_power5_start", c_uint16), # 频带能量参数5
|
||||
("freq_power5_stop", c_uint16), # 频带能量参数5
|
||||
("envel_freq_start", c_uint16), # 包络带通频率
|
||||
("envel_freq_stop", c_uint16), # 包络带通频率
|
||||
("fail_freq1", c_uint16), # 故障频率1
|
||||
("fail_freq2", c_uint16), # 故障频率2
|
||||
("fail_freq3", c_uint16), # 故障频率3
|
||||
("fail_freq4", c_uint16), # 故障频率4
|
||||
("conf_date", c_uint32), # 配置时间
|
||||
("speed_freq_start", c_uint8), # 速度积分起始频率
|
||||
("node_name", c_uint16*32), # 节点名称
|
||||
]
|
||||
|
||||
|
||||
class RFIDM_C2_WRITE_HEADER(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('address', c_uint16), # 模块地址
|
||||
('dlen', c_uint8), # 长度
|
||||
('cmd', c_uint8), # 命令
|
||||
('crc', c_uint8)
|
||||
]
|
||||
|
||||
class RFIDM_C2_READ_HEADER(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('cmd', c_uint8), # 模块地址
|
||||
('dlen', c_uint8), # 长度
|
||||
('flag', c_uint8), # 命令
|
||||
('crc', c_uint8)
|
||||
]
|
||||
|
||||
class RFIDM_C2_MULTI_WRITE_PACK(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('uuid', c_uint64), # UUID
|
||||
('flag', c_uint8), # 标志字节,固定值0x22
|
||||
('start_block', c_uint8), # 起始块号
|
||||
('block_len', c_uint8), #块数
|
||||
]
|
||||
|
||||
|
||||
class RFIDM_C2_SINGLE_WRITE_PACK(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('address', c_uint16), # 模块地址
|
||||
('dlen', c_uint8), # 长度0x10
|
||||
('cmd', c_uint8), # 命令 0x21
|
||||
('uuid', c_uint64), # UUID
|
||||
('flag', c_uint8), # 标志字节,固定值0x22
|
||||
('block_index', c_uint8), # 起始块号
|
||||
('data', c_uint8*4), # 写入的数据
|
||||
('crc', c_uint8)
|
||||
]
|
||||
|
||||
class RFIDM_C2_MULTI_READ_PACK(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('address', c_uint16), # 模块地址
|
||||
('dlen', c_uint8), # 长度0x10
|
||||
('cmd', c_uint8), # 命令 0x21
|
||||
('uuid', c_uint64), # UUID
|
||||
('block_index', c_uint8), # 起始块号
|
||||
('block_count', c_uint8), # 块数
|
||||
('crc', c_uint8)
|
||||
]
|
||||
|
||||
class RFIDM_C2_SINGLE_READ_PACK(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('address', c_uint16), # 模块地址
|
||||
('dlen', c_uint8), # 长度0x10
|
||||
('cmd', c_uint8), # 命令 0x21
|
||||
('uuid', c_uint64), # UUID
|
||||
('block_index', c_uint8), # 数据块号
|
||||
('crc', c_uint8)
|
||||
]
|
||||
|
||||
class RFIDM_C2_TAG_INFO_PACK(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('cmd', c_uint8), # 命令头 0xFE
|
||||
('dlen', c_uint8), # 长度 0x0C
|
||||
('sucess_flag', c_uint8), # 成功:0x11, 失败0xE2
|
||||
('flag', c_uint8), # flag
|
||||
('dsfid', c_uint8), # DSFID信息
|
||||
('uuid', c_uint64), # UUID
|
||||
('crc', c_uint8)
|
||||
]
|
||||
|
||||
class RFIDM_C2_RET_PACK(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('cmd', c_uint8), # 命令头 0xFE
|
||||
('dlen', c_uint8), # 长度 0x02
|
||||
('sucess_flag', c_uint8), # 成功:0x11, 失败0xE2
|
||||
('crc', c_uint8)
|
||||
]
|
||||
|
||||
class RFIDM_C2_CMD_PACK(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('address', c_uint16), # 模块地址
|
||||
('dlen', c_uint8), # 长度
|
||||
('cmd', c_uint8), # 命令
|
||||
('conf', c_uint8), # 设置
|
||||
('crc', c_uint8)
|
||||
]
|
||||
486
20231202/频响测试/DN101_ZIGBEE.py
Normal file
486
20231202/频响测试/DN101_ZIGBEE.py
Normal file
@ -0,0 +1,486 @@
|
||||
from ctypes import *
|
||||
import numpy as np
|
||||
import datetime
|
||||
from zigbee_message_pack import *
|
||||
|
||||
SENSER_INF_PACK1 = 0x01
|
||||
SENSER_INF_PACK2 = 0x07
|
||||
EVEL_DATA_PACK1 = 0x02
|
||||
EVEL_DATA_PACK2 = 0x06
|
||||
WAVE_X_PACK = 0x03
|
||||
WAVE_Y_PACK = 0x04
|
||||
WAVE_Z_PACK = 0x05
|
||||
|
||||
|
||||
class EvelPack(LittleEndianStructure):
|
||||
_fields_ = [
|
||||
# 特征值
|
||||
("temp_dev", c_uint16),
|
||||
("temp_env", c_uint16),
|
||||
("angle", c_uint16),
|
||||
("bat_vol", c_uint16),
|
||||
("acc_x_pk", c_uint16),
|
||||
("acc_x_rms", c_uint16),
|
||||
("speed_x_pk", c_uint16),
|
||||
("speed_x_rms", c_uint16),
|
||||
("fpower_x_1", c_uint16),
|
||||
("fpower_x_2", c_uint16),
|
||||
("fpower_x_3", c_uint16),
|
||||
("fpower_x_4", c_uint16),
|
||||
("fpower_x_5", c_uint16),
|
||||
("envepower_x", c_uint16),
|
||||
("errpower_x_1", c_uint16),
|
||||
("errpower_x_2", c_uint16),
|
||||
("errpower_x_3", c_uint16),
|
||||
("errpower_x_4", c_uint16),
|
||||
("acc_y_pk", c_uint16),
|
||||
("acc_y_rms", c_uint16),
|
||||
("speed_y_pk", c_uint16),
|
||||
("speed_y_rms", c_uint16),
|
||||
("fpower_y_1", c_uint16),
|
||||
("fpower_y_2", c_uint16),
|
||||
("fpower_y_3", c_uint16),
|
||||
("fpower_y_4", c_uint16),
|
||||
("fpower_y_5", c_uint16),
|
||||
("envepower_y", c_uint16),
|
||||
("errpower_y_1", c_uint16),
|
||||
("errpower_y_2", c_uint16),
|
||||
("errpower_y_3", c_uint16),
|
||||
("errpower_y_4", c_uint16),
|
||||
("acc_z_pk", c_uint16),
|
||||
("acc_z_rms", c_uint16),
|
||||
("speed_z_pk", c_uint16),
|
||||
("speed_z_rms", c_uint16),
|
||||
("fpower_z_1", c_uint16),
|
||||
("fpower_z_2", c_uint16),
|
||||
("fpower_z_3", c_uint16),
|
||||
("fpower_z_4", c_uint16),
|
||||
("fpower_z_5", c_uint16),
|
||||
("envepower_z", c_uint16),
|
||||
("errpower_z_1", c_uint16),
|
||||
("errpower_z_2", c_uint16),
|
||||
("errpower_z_3", c_uint16),
|
||||
("errpower_z_4", c_uint16),
|
||||
]
|
||||
|
||||
|
||||
class WavePack(Structure):
|
||||
_fields_ = [
|
||||
("wvdata", c_uint16 * 46), # 原始波形
|
||||
]
|
||||
|
||||
|
||||
# 传感器设备信息
|
||||
class DevInfo1(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
# 设备状态标志
|
||||
('uInitFlag', c_ubyte, 1),
|
||||
('uAccSta', c_ubyte, 1),
|
||||
('uZigbeeSta', c_ubyte, 1),
|
||||
('uLowerTempSta', c_ubyte, 1),
|
||||
('uUpperTempSta', c_ubyte, 1),
|
||||
('uRunningFlag', c_ubyte, 1),
|
||||
("reserve", c_ubyte, 2),
|
||||
|
||||
('zigbeeMac', c_uint64), # Zigbee MAC地址
|
||||
('hwVersion', c_uint8), # 硬件版本
|
||||
('sfVersion', c_uint8), # 软件版本
|
||||
('pn', c_uint32), # 批号
|
||||
('sn', c_uint32), # 序列号
|
||||
('sTime', c_uint32), # 首次上电时间
|
||||
('wakeupTimes', c_uint32), # 唤醒次数
|
||||
('tzTimes', c_uint32), # 特征值发送次数
|
||||
('wvTimes', c_uint32), # 原始波形发送次数
|
||||
('batVol', c_uint16), # 电池电压
|
||||
('productType', c_uint8), # 产品型号
|
||||
('rss', c_uint8), # Zigbee信号强度
|
||||
|
||||
('active_flag', c_uint8), # 激活标志
|
||||
('wakeup_period', c_uint8), # 唤醒周期
|
||||
('wave_period', c_uint16), # 原始波形发送周期
|
||||
('zig_panid', c_uint16), # zigbee panid
|
||||
('zig_channel', c_uint8), # zigbee channel
|
||||
('zig_local_addr', c_uint16), # zigbee本地地址
|
||||
('zig_dst_addr', c_uint16), # zigbee目标地址
|
||||
('zig_power_level', c_uint8), # zigbee发射功率
|
||||
("zig_retry_num", c_uint8), # 重试次数
|
||||
("zig_retry_time", c_uint8), # 重试间隔
|
||||
|
||||
("reserve", c_ubyte, 4),
|
||||
("acc_acq_range", c_ubyte, 2), # 量程
|
||||
("acc_acq_freq", c_ubyte, 2), # 采样率
|
||||
|
||||
("acc_acq_time", c_uint8), # 采样时长
|
||||
("freq_power1_start", c_uint16), # 频带能量参数1
|
||||
("freq_power1_stop", c_uint16), # 频带能量参数1
|
||||
("freq_power2_start", c_uint16), # 频带能量参数2
|
||||
("freq_power2_stop", c_uint16), # 频带能量参数2
|
||||
("freq_power3_start", c_uint16), # 频带能量参数3
|
||||
("freq_power3_stop", c_uint16), # 频带能量参数3
|
||||
("freq_power4_start", c_uint16), # 频带能量参数4
|
||||
("freq_power4_stop", c_uint16), # 频带能量参数4
|
||||
("freq_power5_start", c_uint16), # 频带能量参数5
|
||||
("freq_power5_stop", c_uint16), # 频带能量参数5
|
||||
("envel_freq_start", c_uint16), # 包络带通频率
|
||||
("envel_freq_stop", c_uint16), # 包络带通频率
|
||||
("fail_freq1", c_uint16), # 故障频率1
|
||||
("fail_freq2", c_uint16), # 故障频率2
|
||||
("fail_freq3", c_uint16), # 故障频率3
|
||||
("fail_freq4", c_uint16), # 故障频率4
|
||||
("conf_date", c_int32), # 配置时间
|
||||
("speed_freq_start", c_int8), # 速度积分起始频率
|
||||
]
|
||||
|
||||
|
||||
# 传感器信息2
|
||||
class DevInfo2(Structure):
|
||||
_fields_ = [
|
||||
# 特征值
|
||||
("node_name", c_int16 * 32), # 节点名称
|
||||
("reserve", c_int8 * 28), # 保留
|
||||
]
|
||||
|
||||
|
||||
class ZigPack(Structure):
|
||||
_fields_ = [
|
||||
("msg_header", c_uint8 * 3), # 帧头
|
||||
("msg_addr", c_uint8 * 2), # 源地址
|
||||
("msg_type", c_uint8), # 数据类型
|
||||
("msg_index", c_uint8), # 包序号
|
||||
("data", c_uint8 * 92), # 数据
|
||||
("crc", c_uint8), # 校验
|
||||
]
|
||||
|
||||
|
||||
class Zig_Reader(object):
|
||||
def __init__(self, zig_dev):
|
||||
self.evelpack = EvelPack()
|
||||
self.wavepack = WavePack()
|
||||
self.prev_index = 0
|
||||
self.zig_reader = zig_dev # 串口设备
|
||||
# self.zig_reader = serial.Serial('com5')
|
||||
self.recv_data_buf = b''
|
||||
self.zigpack = ZigPack()
|
||||
self.senser_info1 = DevInfo1()
|
||||
self.senser_info2 = DevInfo2()
|
||||
self.senser_evel = EvelPack()
|
||||
self.senser_wave = WavePack()
|
||||
|
||||
self.init_zigbee_message()
|
||||
|
||||
def read(self):
|
||||
sdata = self.zig_reader.read(self.zig_reader.inWaiting())
|
||||
self.recv_data_buf = self.recv_data_buf + sdata
|
||||
|
||||
ret = self.data_analysis()
|
||||
|
||||
return ret
|
||||
|
||||
def data_analysis(self):
|
||||
if (len(self.recv_data_buf) >= 100): # 缓存中数据量大于等于数据包
|
||||
if ((self.recv_data_buf[:3] == b'\xaaU\xaa') | (self.crc_check(self.recv_data_buf[:100]))):
|
||||
memmove(addressof(self.zigpack), self.recv_data_buf, sizeof(self.zigpack))
|
||||
|
||||
if self.zigpack.msg_type == SENSER_INF_PACK1:
|
||||
memmove(addressof(self.senser_info1), self.zigpack.data, sizeof(self.senser_info1))
|
||||
elif self.zigpack.msg_type == SENSER_INF_PACK2:
|
||||
memmove(addressof(self.senser_info2), self.zigpack.data, sizeof(self.senser_info2))
|
||||
self.dev_info_analysis()
|
||||
self.dev_conf_analysis()
|
||||
elif (self.zigpack.msg_type == EVEL_DATA_PACK1) | (self.zigpack.msg_type == EVEL_DATA_PACK2):
|
||||
memmove(addressof(self.senser_evel), self.zigpack.data, sizeof(self.senser_evel))
|
||||
self.evel_data_analysis()
|
||||
elif self.zigpack.msg_type == WAVE_X_PACK:
|
||||
memmove(addressof(self.senser_wave), self.zigpack.data, sizeof(self.senser_wave))
|
||||
elif self.zigpack.msg_type == WAVE_Y_PACK:
|
||||
memmove(addressof(self.senser_wave), self.zigpack.data, sizeof(self.senser_wave))
|
||||
elif self.zigpack.msg_type == WAVE_Z_PACK:
|
||||
memmove(addressof(self.senser_wave), self.zigpack.data, sizeof(self.senser_wave))
|
||||
|
||||
self.recv_data_buf = self.recv_data_buf[100:]
|
||||
return self.zigpack.msg_type
|
||||
else:
|
||||
self.recv_data_buf = self.recv_data_buf[1:]
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
|
||||
def crc_check(self, sdata):
|
||||
sdata = [d for d in sdata]
|
||||
sum_vl = np.sum(sdata[:-1])
|
||||
|
||||
if (sum_vl & 0xff) == sdata[-1]:
|
||||
return True
|
||||
else:
|
||||
msg = self.get_date_time() + '\n'
|
||||
msg = msg + "CRC Cal Error\n"
|
||||
msg = msg + str([hex(d) for d in sdata]) + '\n'
|
||||
print(msg)
|
||||
return False
|
||||
|
||||
def get_date_time(self):
|
||||
now_time = datetime.datetime.now()
|
||||
time_str = now_time.strftime('%Y-%m-%d %H:%M:%S')
|
||||
return time_str
|
||||
|
||||
def close(self):
|
||||
self.zig_reader.close()
|
||||
|
||||
def dev_info_analysis(self):
|
||||
self.dev_info_msg["初始化标志"] = self.senser_info1.uInitFlag
|
||||
self.dev_info_msg["加速度传感器状态"] = self.senser_info1.uAccSta
|
||||
self.dev_info_msg["Zigbee模块状态"] = self.senser_info1.uZigbeeSta
|
||||
self.dev_info_msg["设备温度传感器状态"] = self.senser_info1.uLowerTempSta
|
||||
self.dev_info_msg["环境温度传感器状态"] = self.senser_info1.uUpperTempSta
|
||||
self.dev_info_msg["设备运行状态"] = self.senser_info1.uRunningFlag
|
||||
self.dev_info_msg["MAC地址"] = hex(self.senser_info1.zigbeeMac)[2:]
|
||||
self.dev_info_msg["硬件版本"] = self.senser_info1.hwVersion/10
|
||||
self.dev_info_msg["软件版本"] = self.senser_info1.sfVersion/10
|
||||
self.dev_info_msg["生产批号"] = self.senser_info1.pn
|
||||
self.dev_info_msg["生产序列号"] = self.senser_info1.sn
|
||||
self.dev_info_msg["首次上电日期"] = self.senser_info1.sTime
|
||||
self.dev_info_msg["唤醒次数"] = self.senser_info1.wakeupTimes
|
||||
self.dev_info_msg["特征值发送次数"] = self.senser_info1.tzTimes
|
||||
self.dev_info_msg["原始波形发送次数"] = self.senser_info1.wvTimes
|
||||
self.dev_info_msg["电池电压"] = self.senser_info1.batVol
|
||||
self.dev_info_msg["产品型号"] = self.senser_info1.productType
|
||||
self.dev_info_msg["无线信号强度"] = self.senser_info1.rss
|
||||
self.dev_info_msg["测点名称"] = bytes(self.senser_info2.node_name).decode('GB18030')
|
||||
|
||||
def dev_conf_analysis(self):
|
||||
self.dev_conf_msg["配置标志"] = self.senser_info1.active_flag
|
||||
self.dev_conf_msg["唤醒周期"] = self.senser_info1.wakeup_period
|
||||
self.dev_conf_msg["原始波形发送周期"] = self.senser_info1.wave_period
|
||||
self.dev_conf_msg["Zigbee PID"] = hex(self.senser_info1.zig_panid)[2:]
|
||||
self.dev_conf_msg["Zigbee 信道"] = self.senser_info1.zig_channel
|
||||
self.dev_conf_msg["Zigbee 本地地址"] = hex(self.senser_info1.zig_local_addr)[2:]
|
||||
self.dev_conf_msg["Zigbee 目标地址"] = hex(self.senser_info1.zig_dst_addr)[2:]
|
||||
self.dev_conf_msg["Zigbee 发射功率"] = self.senser_info1.zig_power_level
|
||||
self.dev_conf_msg["Zigbee 重试次数"] = self.senser_info1.zig_retry_num
|
||||
self.dev_conf_msg["Zigbee 重试间隔"] = self.senser_info1.zig_retry_time
|
||||
self.dev_conf_msg["ACC采样率"] = self.acc_freq_cal(self.senser_info1.acc_acq_freq)
|
||||
self.dev_conf_msg["ACC量程"] = self.acc_range_cal(self.senser_info1.acc_acq_range)
|
||||
self.dev_conf_msg["ACC采样率时间"] = self.senser_info1.acc_acq_time
|
||||
self.dev_conf_msg["频带能量参数1 START"] = self.senser_info1.freq_power1_start
|
||||
self.dev_conf_msg["频带能量参数1 END"] = self.senser_info1.freq_power1_stop
|
||||
self.dev_conf_msg["频带能量参数2 START"] = self.senser_info1.freq_power2_start
|
||||
self.dev_conf_msg["频带能量参数2 END"] = self.senser_info1.freq_power2_stop
|
||||
self.dev_conf_msg["频带能量参数3 START"] = self.senser_info1.freq_power3_start
|
||||
self.dev_conf_msg["频带能量参数3 END"] = self.senser_info1.freq_power3_stop
|
||||
self.dev_conf_msg["频带能量参数4 START"] = self.senser_info1.freq_power4_start
|
||||
self.dev_conf_msg["频带能量参数4 END"] = self.senser_info1.freq_power4_stop
|
||||
self.dev_conf_msg["频带能量参数5 START"] = self.senser_info1.freq_power5_start
|
||||
self.dev_conf_msg["频带能量参数5 END"] = self.senser_info1.freq_power5_stop
|
||||
self.dev_conf_msg["冲击带通频率START"] = self.senser_info1.envel_freq_start
|
||||
self.dev_conf_msg["冲击带通频率END"] = self.senser_info1.envel_freq_stop
|
||||
self.dev_conf_msg["故障频率1"] = self.senser_info1.fail_freq1
|
||||
self.dev_conf_msg["故障频率2"] = self.senser_info1.fail_freq2
|
||||
self.dev_conf_msg["故障频率3"] = self.senser_info1.fail_freq3
|
||||
self.dev_conf_msg["故障频率4"] = self.senser_info1.fail_freq4
|
||||
self.dev_conf_msg["配置时间"] = self.senser_info1.conf_date
|
||||
self.dev_conf_msg["速度积分滤波频率"] = self.senser_info1.speed_freq_start
|
||||
|
||||
def evel_data_analysis(self):
|
||||
self.dev_evel_msg["传感器地址"] = hex((self.zigpack.msg_addr[0]<<8)+self.zigpack.msg_addr[1])[2:]
|
||||
self.dev_evel_msg["采集时间"] = self.get_date_time()
|
||||
self.dev_evel_msg["设备温度"] = temp_cal(self.senser_evel.temp_dev)
|
||||
self.dev_evel_msg["环境温度"] = temp_cal(self.senser_evel.temp_env)
|
||||
self.dev_evel_msg["倾角"] = self.senser_evel.angle
|
||||
self.dev_evel_msg["电池电压"] = self.senser_evel.bat_vol
|
||||
self.dev_evel_msg["X轴峰值"] = self.evel_cal(self.senser_evel.acc_x_pk)
|
||||
self.dev_evel_msg["X轴有效值"] = self.evel_cal(self.senser_evel.acc_x_rms)
|
||||
self.dev_evel_msg["X轴速度峰值"] = self.evel_cal(self.senser_evel.speed_x_pk)
|
||||
self.dev_evel_msg["X轴速度有效值"] = self.evel_cal(self.senser_evel.speed_x_rms)
|
||||
self.dev_evel_msg["X轴频带能量1"] = self.evel_cal(self.senser_evel.fpower_x_1)
|
||||
self.dev_evel_msg["X轴频带能量2"] = self.evel_cal(self.senser_evel.fpower_x_2)
|
||||
self.dev_evel_msg["X轴频带能量3"] = self.evel_cal(self.senser_evel.fpower_x_3)
|
||||
self.dev_evel_msg["X轴频带能量4"] = self.evel_cal(self.senser_evel.fpower_x_4)
|
||||
self.dev_evel_msg["X轴频带能量5"] = self.evel_cal(self.senser_evel.fpower_x_5)
|
||||
self.dev_evel_msg["X轴冲击能量"] = self.evel_cal(self.senser_evel.envepower_x)
|
||||
self.dev_evel_msg["X轴故障频率1"] = self.evel_cal(self.senser_evel.errpower_x_1)
|
||||
self.dev_evel_msg["X轴故障频率2"] = self.evel_cal(self.senser_evel.errpower_x_2)
|
||||
self.dev_evel_msg["X轴故障频率3"] = self.evel_cal(self.senser_evel.errpower_x_3)
|
||||
self.dev_evel_msg["X轴故障频率4"] = self.evel_cal(self.senser_evel.errpower_x_4)
|
||||
self.dev_evel_msg["Y轴峰值"] = self.evel_cal(self.senser_evel.acc_y_pk)
|
||||
self.dev_evel_msg["Y轴有效值"] = self.evel_cal(self.senser_evel.acc_y_rms)
|
||||
self.dev_evel_msg["Y轴速度峰值"] = self.evel_cal(self.senser_evel.speed_y_pk)
|
||||
self.dev_evel_msg["Y轴速度有效值"] = self.evel_cal(self.senser_evel.speed_y_rms)
|
||||
self.dev_evel_msg["Y轴频带能量1"] = self.evel_cal(self.senser_evel.fpower_y_1)
|
||||
self.dev_evel_msg["Y轴频带能量2"] = self.evel_cal(self.senser_evel.fpower_y_2)
|
||||
self.dev_evel_msg["Y轴频带能量3"] = self.evel_cal(self.senser_evel.fpower_y_3)
|
||||
self.dev_evel_msg["Y轴频带能量4"] = self.evel_cal(self.senser_evel.fpower_y_4)
|
||||
self.dev_evel_msg["Y轴频带能量5"] = self.evel_cal(self.senser_evel.fpower_y_5)
|
||||
self.dev_evel_msg["Y轴冲击能量"] = self.evel_cal(self.senser_evel.envepower_y)
|
||||
self.dev_evel_msg["Y轴故障频率1"] = self.evel_cal(self.senser_evel.errpower_y_1)
|
||||
self.dev_evel_msg["Y轴故障频率2"] = self.evel_cal(self.senser_evel.errpower_y_2)
|
||||
self.dev_evel_msg["Y轴故障频率3"] = self.evel_cal(self.senser_evel.errpower_y_3)
|
||||
self.dev_evel_msg["Y轴故障频率4"] = self.evel_cal(self.senser_evel.errpower_y_4)
|
||||
self.dev_evel_msg["Z轴峰值"] = self.evel_cal(self.senser_evel.acc_z_pk)
|
||||
self.dev_evel_msg["Z轴有效值"] = self.evel_cal(self.senser_evel.acc_z_rms)
|
||||
self.dev_evel_msg["Z轴速度峰值"] = self.evel_cal(self.senser_evel.speed_z_pk)
|
||||
self.dev_evel_msg["Z轴速度有效值"] = self.evel_cal(self.senser_evel.speed_z_rms)
|
||||
self.dev_evel_msg["Z轴频带能量1"] = self.evel_cal(self.senser_evel.fpower_z_1)
|
||||
self.dev_evel_msg["Z轴频带能量2"] = self.evel_cal(self.senser_evel.fpower_z_2)
|
||||
self.dev_evel_msg["Z轴频带能量3"] = self.evel_cal(self.senser_evel.fpower_z_3)
|
||||
self.dev_evel_msg["Z轴频带能量4"] = self.evel_cal(self.senser_evel.fpower_z_4)
|
||||
self.dev_evel_msg["Z轴频带能量5"] = self.evel_cal(self.senser_evel.fpower_z_5)
|
||||
self.dev_evel_msg["Z轴冲击能量"] = self.evel_cal(self.senser_evel.envepower_z)
|
||||
self.dev_evel_msg["Z轴故障频率1"] = self.evel_cal(self.senser_evel.errpower_z_1)
|
||||
self.dev_evel_msg["Z轴故障频率2"] = self.evel_cal(self.senser_evel.errpower_z_2)
|
||||
self.dev_evel_msg["Z轴故障频率3"] = self.evel_cal(self.senser_evel.errpower_z_3)
|
||||
self.dev_evel_msg["Z轴故障频率4"] = self.evel_cal(self.senser_evel.errpower_z_4)
|
||||
|
||||
def temp_cal(self, sdata):
|
||||
if sdata > 2048:
|
||||
temp = -(256 - sdata * 0.0625)
|
||||
else:
|
||||
temp = sdata * 0.0625
|
||||
|
||||
return temp
|
||||
|
||||
def evel_cal(self, sdata):
|
||||
s1 = sdata >> 14
|
||||
s2 = sdata & (0xffff >> 2)
|
||||
|
||||
if s1 == 0:
|
||||
vl = s2 * 0.0001
|
||||
elif s1 == 1:
|
||||
vl = s2 * 0.01
|
||||
elif s1 == 2:
|
||||
vl = s2
|
||||
elif s1 == 3:
|
||||
vl = s2 / 100
|
||||
else:
|
||||
vl = 16383
|
||||
|
||||
return vl
|
||||
|
||||
def acc_range_cal(self, sdata):
|
||||
if sdata == 0b00:
|
||||
return "±8g"
|
||||
elif sdata == 0b01:
|
||||
return "±16g"
|
||||
elif sdata == 0b10:
|
||||
return "±32g"
|
||||
elif sdata == 0b11:
|
||||
return "±64g"
|
||||
|
||||
def acc_freq_cal(self, sdata):
|
||||
if sdata == 0b00:
|
||||
return "3.2kHz"
|
||||
elif sdata == 0b01:
|
||||
return "6.4kHz"
|
||||
elif sdata == 0b10:
|
||||
return "12.8kHz"
|
||||
elif sdata == 0b11:
|
||||
return "25.6kHz"
|
||||
|
||||
def init_zigbee_message(self):
|
||||
self.dev_info_msg = {"测点名称": None,
|
||||
"初始化标志": None,
|
||||
"加速度传感器状态": None,
|
||||
"Zigbee模块状态": None,
|
||||
"设备温度传感器状态": None,
|
||||
"环境温度传感器状态": None,
|
||||
"设备运行状态": None,
|
||||
"MAC地址": None,
|
||||
"硬件版本": None,
|
||||
"软件版本": None,
|
||||
"生产批号": None,
|
||||
"生产序列号": None,
|
||||
"唤醒次数": None,
|
||||
"特征值发送次数": None,
|
||||
"原始波形发送次数": None,
|
||||
"电池电压": None,
|
||||
"产品型号": None,
|
||||
"无线信号强度": None,
|
||||
}
|
||||
|
||||
self.dev_conf_msg = {"配置标志": None,
|
||||
"唤醒周期": None,
|
||||
"原始波形发送周期": None,
|
||||
"Zigbee PID": None,
|
||||
"Zigbee 信道": None,
|
||||
"Zigbee 本地地址": None,
|
||||
"Zigbee 目标地址": None,
|
||||
"Zigbee 发射功率": None,
|
||||
"Zigbee 重试次数": None,
|
||||
"Zigbee 重试间隔": None,
|
||||
"ACC采样率": None,
|
||||
"ACC量程": None,
|
||||
"ACC采样率时间": None,
|
||||
"频带能量参数1 START": None,
|
||||
"频带能量参数1 END": None,
|
||||
"频带能量参数2 START": None,
|
||||
"频带能量参数2 END": None,
|
||||
"频带能量参数3 START": None,
|
||||
"频带能量参数3 END": None,
|
||||
"频带能量参数4 START": None,
|
||||
"频带能量参数4 END": None,
|
||||
"频带能量参数5 START": None,
|
||||
"频带能量参数5 END": None,
|
||||
"冲击带通频率START": None,
|
||||
"冲击带通频率END": None,
|
||||
"故障频率1": None,
|
||||
"故障频率2": None,
|
||||
"故障频率3": None,
|
||||
"故障频率4": None,
|
||||
"配置时间": None,
|
||||
"速度积分滤波频率": None,
|
||||
"原始数据": None
|
||||
}
|
||||
|
||||
self.dev_evel_msg = {"传感器地址": None,
|
||||
"采集时间": None,
|
||||
"设备温度": None,
|
||||
"环境温度": None,
|
||||
"倾角": None,
|
||||
"电池电压": None,
|
||||
"X轴峰值": None,
|
||||
"X轴有效值": None,
|
||||
"X轴速度峰值": None,
|
||||
"X轴速度有效值": None,
|
||||
"Y轴峰值": None,
|
||||
"Y轴有效值": None,
|
||||
"Y轴速度峰值": None,
|
||||
"Y轴速度有效值": None,
|
||||
"Z轴峰值": None,
|
||||
"Z轴有效值": None,
|
||||
"Z轴速度峰值": None,
|
||||
"Z轴速度有效值": None,
|
||||
|
||||
"X轴频带能量1": None,
|
||||
"X轴频带能量2": None,
|
||||
"X轴频带能量3": None,
|
||||
"X轴频带能量4": None,
|
||||
"X轴频带能量5": None,
|
||||
"X轴冲击能量": None,
|
||||
"X轴故障频率1": None,
|
||||
"X轴故障频率2": None,
|
||||
"X轴故障频率3": None,
|
||||
"X轴故障频率4": None,
|
||||
|
||||
"Y轴频带能量1": None,
|
||||
"Y轴频带能量2": None,
|
||||
"Y轴频带能量3": None,
|
||||
"Y轴频带能量4": None,
|
||||
"Y轴频带能量5": None,
|
||||
"Y轴冲击能量": None,
|
||||
"Y轴故障频率1": None,
|
||||
"Y轴故障频率2": None,
|
||||
"Y轴故障频率3": None,
|
||||
"Y轴故障频率4": None,
|
||||
|
||||
"Z轴频带能量1": None,
|
||||
"Z轴频带能量2": None,
|
||||
"Z轴频带能量3": None,
|
||||
"Z轴频带能量4": None,
|
||||
"Z轴频带能量5": None,
|
||||
"Z轴冲击能量": None,
|
||||
"Z轴故障频率1": None,
|
||||
"Z轴故障频率2": None,
|
||||
"Z轴故障频率3": None,
|
||||
"Z轴故障频率4": None,
|
||||
# "原始数据": None
|
||||
}
|
||||
702
20231202/频响测试/DataNodeFrequencyTest.py
Normal file
702
20231202/频响测试/DataNodeFrequencyTest.py
Normal file
@ -0,0 +1,702 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
from MainWindow import Ui_DataNodeFrequencyTest
|
||||
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
|
||||
from AFG3000 import *
|
||||
from Prologix import *
|
||||
from DN101_NFC import *
|
||||
from DN101_ZIGBEE import *
|
||||
from Mysql import *
|
||||
import serial, threading
|
||||
import serial.tools.list_ports
|
||||
from PyQt5.QtCore import QTimer, QThread, pyqtSignal
|
||||
from PyQt5.QtGui import QIcon
|
||||
from PyQt5.QtWidgets import *
|
||||
import numpy as np
|
||||
import matplotlib
|
||||
import time
|
||||
from sqlalchemy import create_engine
|
||||
import pandas as pd
|
||||
import tkinter as tk
|
||||
from tkinter import filedialog
|
||||
|
||||
from playsound import playsound
|
||||
matplotlib.use("Qt5Agg")
|
||||
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
|
||||
from matplotlib.figure import Figure
|
||||
import matplotlib.pyplot as plt
|
||||
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
|
||||
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
|
||||
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
|
||||
import win32con
|
||||
from win32process import SuspendThread, ResumeThread
|
||||
import ctypes
|
||||
|
||||
SENSER_INF_PACK1 = 0x01
|
||||
SENSER_INF_PACK2 = 0x07
|
||||
EVEL_DATA_PACK1 = 0x02
|
||||
EVEL_DATA_PACK2 = 0x06
|
||||
WAVE_X_PACK = 0x03
|
||||
WAVE_Y_PACK = 0x04
|
||||
WAVE_Z_PACK = 0x05
|
||||
NFC_PORT_STR = 'Silicon Labs Dual CP210x USB to UART Bridge: Enhanced COM Port'
|
||||
ZIG_PORT_STR = 'Silicon Labs Dual CP210x USB to UART Bridge: Standard COM Port'
|
||||
|
||||
AFG = AFG3000()
|
||||
|
||||
DMM = DMM_34401A(addr=22, port="COM13", baud=115200, ser_timeout=3, timeout=2)
|
||||
db = Mysql()
|
||||
Stop = 0
|
||||
|
||||
class Thread_01(QThread): # 线程1
|
||||
trigger = pyqtSignal(str)
|
||||
Voltage = pyqtSignal(str)
|
||||
AmplSig = pyqtSignal(str)
|
||||
TestOK = pyqtSignal(list)
|
||||
ThreadStop = pyqtSignal()
|
||||
TimeOut = pyqtSignal()
|
||||
def __init__(self, Fredata):
|
||||
super().__init__()
|
||||
self.Fredata = Fredata
|
||||
handle = -1
|
||||
def run(self):
|
||||
|
||||
try:
|
||||
self.handle = ctypes.windll.kernel32.OpenThread(
|
||||
win32con.PROCESS_ALL_ACCESS, False, int(QThread.currentThreadId()))
|
||||
except Exception as e:
|
||||
print('get thread handle failed', e)
|
||||
|
||||
global StopThread
|
||||
for i in range(0, len(self.Fredata)):
|
||||
print(self.Fredata[i]['Frequency'])
|
||||
|
||||
ampl = 0.02
|
||||
ampl_ins = 0.025
|
||||
AFG.SetAmpl(ampl)
|
||||
AFG.SetFrequency(str(self.Fredata[i]['Frequency']))
|
||||
self.trigger.emit(str(self.Fredata[i]['Frequency']))
|
||||
Voltage = str(DMM.measure())
|
||||
self.Voltage.emit(Voltage)
|
||||
retAmpl = AFG.query('VOLTAGE:AMPLITUDE?')
|
||||
self.AmplSig.emit(str(retAmpl))
|
||||
|
||||
while (ampl < 1.3)&(float(self.Fredata[i]['Frequency'])<=160):
|
||||
ampl += 0.05
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
|
||||
while (ampl < 1.6) & (float(self.Fredata[i]['Frequency']) > 160)& (float(self.Fredata[i]['Frequency']) <= 320):
|
||||
ampl += 0.05
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
|
||||
|
||||
while (ampl < 1.7) & (float(self.Fredata[i]['Frequency']) > 320)& (float(self.Fredata[i]['Frequency']) <= 640):
|
||||
ampl += 0.05
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
|
||||
|
||||
while (ampl < 1.7) & (float(self.Fredata[i]['Frequency']) > 640)& (float(self.Fredata[i]['Frequency']) <= 1000):
|
||||
ampl += 0.05
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
|
||||
while (ampl < 1.2) & (float(self.Fredata[i]['Frequency']) > 1000)& (float(self.Fredata[i]['Frequency']) <= 2000):
|
||||
ampl += 0.05
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
|
||||
while (ampl < 0.5) & (float(self.Fredata[i]['Frequency']) > 2000)& (float(self.Fredata[i]['Frequency']) <= 3000):
|
||||
ampl += 0.05
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
ampl_ins = 0.01
|
||||
|
||||
while (ampl < 0.05) & (float(self.Fredata[i]['Frequency']) > 3000)& (float(self.Fredata[i]['Frequency']) <= 4000):
|
||||
ampl += 0.02
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
ampl_ins = 0.01
|
||||
|
||||
while (ampl < 0.2) & (float(self.Fredata[i]['Frequency']) > 4000)& (float(self.Fredata[i]['Frequency']) <= 5000):
|
||||
ampl += 0.05
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
|
||||
while (ampl < 0.4) & (float(self.Fredata[i]['Frequency']) > 5000)& (float(self.Fredata[i]['Frequency']) <= 7000):
|
||||
ampl += 0.05
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
|
||||
try:
|
||||
if(float(self.Fredata[i]['Frequency']) >= 1000):
|
||||
DMM.set_measure_voltage_ac("AUTO", "200")
|
||||
else:
|
||||
DMM.set_measure_voltage_ac("AUTO", "20")
|
||||
except:
|
||||
print("DMM Set Error")
|
||||
|
||||
while float(Voltage) < 100:#调整电压到100mv
|
||||
# if (float(self.Fredata[i]['Frequency']) >= 1000):
|
||||
# Voltage = str(DMM.measure())
|
||||
# ampl += 0.01
|
||||
# self.Voltage.emit(Voltage)
|
||||
# retAmpl = AFG.query('VOLTAGE:AMPLITUDE?')
|
||||
# self.AmplSig.emit(str(retAmpl))
|
||||
# AFG.SetAmpl(ampl)
|
||||
# time.sleep(0.05)
|
||||
# else:
|
||||
Voltage = str(DMM.measure())
|
||||
if float(Voltage) < 95:
|
||||
ampl += ampl_ins
|
||||
if (float(Voltage) > 95) and (float(Voltage) < 100):
|
||||
ampl += 0.01
|
||||
self.Voltage.emit(Voltage)
|
||||
retAmpl = AFG.query('VOLTAGE:AMPLITUDE?')
|
||||
self.AmplSig.emit(str(retAmpl))
|
||||
AFG.SetAmpl(ampl)
|
||||
|
||||
|
||||
if float(Voltage) > 100:
|
||||
a = []
|
||||
a.append('1')
|
||||
a.append(self.Fredata[i]['Frequency'])
|
||||
a.append(Voltage)
|
||||
self.TestOK.emit(a)
|
||||
timeCount = 0
|
||||
while timeCount < 50:
|
||||
global Stop
|
||||
print(timeCount)
|
||||
if Stop == 1:
|
||||
time.sleep(1)
|
||||
Stop = 0
|
||||
break
|
||||
timeCount += 1
|
||||
time.sleep(1)
|
||||
|
||||
print(Voltage)
|
||||
retAmpl = AFG.query('VOLTAGE:AMPLITUDE?')
|
||||
#print(retAmpl)
|
||||
while float(retAmpl) > 0.07:#微调ampl到最低值20mv
|
||||
retAmpl -= 0.05
|
||||
#print(retAmpl)
|
||||
AFG.SetAmpl(retAmpl)
|
||||
retAmpl = AFG.query('VOLTAGE:AMPLITUDE?')
|
||||
time.sleep(0.05)
|
||||
print(retAmpl)
|
||||
time.sleep(1)
|
||||
|
||||
ampl = 0.02
|
||||
AFG.SetAmpl(ampl)
|
||||
AFG.SetFrequency('80')
|
||||
AFG.Close()
|
||||
|
||||
self.ThreadStop.emit()
|
||||
|
||||
class MyFigureCanvas(FigureCanvas):
|
||||
def __init__(self):
|
||||
self.fig = Figure()
|
||||
FigureCanvas.__init__(self, self.fig)
|
||||
self.axes = self.fig.add_subplot(111)
|
||||
#self.axes.set_ylim(ymin=0, ymax=30)
|
||||
def plot(self, data,shortAddr):
|
||||
self.axes.cla()
|
||||
x = []
|
||||
y1 = []
|
||||
y2 = []
|
||||
data1 = float(data[0]['rmsValue_Z']) * 1.41
|
||||
for i in range(len(data)):
|
||||
y1.append(float(data[i]['rmsValue_Z']))
|
||||
x.append(data[i]['Frequency'])
|
||||
y2.append(data1)
|
||||
self.axes.plot(x, y1)
|
||||
|
||||
data1 = float(data[0]['rmsValue_Z']) * 1.41
|
||||
|
||||
self.axes.plot(x, y2)
|
||||
self.axes.set_title('传感器短地址' + shortAddr)
|
||||
self.axes.set_xlabel('Frequency(Hz)')
|
||||
self.axes.set_ylabel('RMS(m/s^2)')
|
||||
self.fig.subplots_adjust(left=0.15, bottom=0.2)
|
||||
self.axes.grid()
|
||||
self.fig.canvas.draw_idle()
|
||||
path = 'G:/chaos/频响测试 - 副本/20230403/{0}.png'.format(shortAddr)
|
||||
self.fig.savefig(path)
|
||||
def clear(self):
|
||||
self.axes.cla()
|
||||
self.axes.grid()
|
||||
self.fig.canvas.draw_idle()
|
||||
|
||||
|
||||
class DataNodeFrequencyTest(QMainWindow, Ui_DataNodeFrequencyTest):
|
||||
def __init__(self):
|
||||
super(DataNodeFrequencyTest, self).__init__()
|
||||
self.setupUi(self)
|
||||
self.setWindowTitle("无线传感器频响测试")
|
||||
self.NFCRead_Btn.clicked.connect(self.NFCRead)
|
||||
self.Test_Btn.clicked.connect(self.StartTest)
|
||||
self.ConnecDev_Btn.clicked.connect(self.ConnectDev)
|
||||
self.Export_Btn.clicked.connect(self.Export2Excel)
|
||||
self.timer_zig = QTimer(self)
|
||||
self.timer_zig.timeout.connect(self.zig_update)
|
||||
|
||||
#self.timer_multimeter = QTimer(self)
|
||||
#self.timer_multimeter.timeout.connect(self.multimeter_update)
|
||||
|
||||
self.timer_single = QTimer(self)
|
||||
self.timer_nfc = QTimer(self)
|
||||
self.Init()
|
||||
|
||||
def Init(self):
|
||||
self.start = 0
|
||||
self.Test = 0
|
||||
self.Next = 0
|
||||
self.TestOK = '0'
|
||||
self.Fre = 0
|
||||
self.Vol = '0'
|
||||
# self.AFG3000 = AFG3000()
|
||||
self.port_list = AFG.init()
|
||||
for i in range(0, len(self.port_list)):
|
||||
self.Signal_Box.addItem(self.port_list[i])
|
||||
print(self.port_list)
|
||||
|
||||
self.AUDIO_PATH = self.get_resources_path(os.path.join('res', 'Finish.mp3'))
|
||||
#playsound(self.AUDIO_PATH)
|
||||
|
||||
self.port_list_multimeter = list(serial.tools.list_ports.comports())
|
||||
for i in range(0, len(self.port_list_multimeter)):
|
||||
self.multimeter_Box.addItem(self.port_list_multimeter[i].description)
|
||||
|
||||
|
||||
self.Fredata = db._Query('select * from t_data_frequency order by Frequency;');
|
||||
|
||||
thistime = time.strftime("%Y-%m-%d", time.localtime())
|
||||
|
||||
sql = "select count(*) from t_data_nfc"
|
||||
data = db._Query(sql)
|
||||
self.TotalCount.setText(str(data[0]['count(*)']))
|
||||
|
||||
sql = "select count(*) from t_data_nfc where TIME LIKE \'%{0}%\'".format(thistime)
|
||||
data = db._Query(sql)
|
||||
self.Count_Edit.setText(str(data[0]['count(*)']))
|
||||
|
||||
self.tabWidget.setCurrentIndex(2)
|
||||
self.NFCList = self.tabWidget.widget(2)
|
||||
layoutNFC = QVBoxLayout()
|
||||
|
||||
layoutNFC.addWidget(QLabel('频点列表(Hz)'))
|
||||
|
||||
for i in range(0, len(self.Fredata)):
|
||||
layoutNFC.addWidget(QLabel(str(self.Fredata[i]['Frequency'])))
|
||||
layoutNFC.addStretch(1)
|
||||
|
||||
self.NFCList.setLayout(layoutNFC)
|
||||
|
||||
self.plot = MyFigureCanvas()
|
||||
self.gridlayout = QGridLayout(self.groupBox_3) # 继承容器groupBox
|
||||
self.toolbar = NavigationToolbar(self.plot, self)
|
||||
self.gridlayout.addWidget(self.toolbar, 0, 0)
|
||||
self.gridlayout.addWidget(self.plot, 1, 0)
|
||||
self.show()
|
||||
|
||||
data = []
|
||||
|
||||
# sql = "select rmsValue_Z,speedValue_Z, Frequency from t_data_zigbee where shortAddr = '450'"
|
||||
# data = db._Query(sql)
|
||||
# self.plot.plot(data, '450')
|
||||
|
||||
self.plot.clear()
|
||||
|
||||
|
||||
def get_resources_path(self,relative_path):
|
||||
if getattr(sys, 'frozen', False):
|
||||
base_path = sys._MEIPASS
|
||||
else:
|
||||
base_path = os.path.abspath('.')
|
||||
return os.path.join(base_path, relative_path)
|
||||
|
||||
def Export2Excel(self):
|
||||
|
||||
root = tk.Tk()
|
||||
root.withdraw()
|
||||
Filepath = filedialog.askdirectory() # 获得选择好的文件
|
||||
|
||||
engine = create_engine('mysql+pymysql://root:root@192.168.1.75:3306/datanodedb')
|
||||
|
||||
sql = 'SELECT * FROM t_data_zigbee'
|
||||
|
||||
df_read = pd.read_sql_query(sql, engine)
|
||||
|
||||
Filepath = Filepath + '/data.xlsx'
|
||||
print(Filepath)
|
||||
df_read.to_excel(Filepath, index=False)
|
||||
|
||||
QMessageBox.warning(self, "标题", "导出成功", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
|
||||
def ConnectDev(self):
|
||||
|
||||
if self.start != 0:
|
||||
self.Result_edit.clear()
|
||||
self.start = 0
|
||||
AFG.Close()
|
||||
self.Result_edit.append('信号发生器断开成功!')
|
||||
DMM.Close()
|
||||
self.Result_edit.append('万用表断开成功!')
|
||||
self.nfc_ser.close()
|
||||
self.Result_edit.append('NFC模块断开成功!')
|
||||
self.zig_ser.close()
|
||||
self.Result_edit.append('ZigBee模块断开成功!')
|
||||
return None
|
||||
elif self.start == 0:
|
||||
self.ConnecDev_Btn.setEnabled(False)
|
||||
self.NFCRead_Btn.setEnabled(False)
|
||||
self.Test_Btn.setEnabled(False)
|
||||
try:
|
||||
# 连接信号发生器
|
||||
QApplication.processEvents()
|
||||
self.Result_edit.clear()
|
||||
#print(self.port_list[self.Signal_Box.currentIndex()])
|
||||
# self.AFG3000.Open(self.port_list[self.Signal_Box.currentIndex()])
|
||||
AFG.Connect('TCPIP0::192.168.1.140::inst0::INSTR')
|
||||
self.Result_edit.append('信号发生器联机成功!')
|
||||
# 连接万用表
|
||||
|
||||
# DMM = DMM_34401A(addr=22, port="COM8", baud=115200, ser_timeout=3, timeout=2)
|
||||
# self.DMM = DMM_34401A(addr=22, port=self.port_list_multimeter[self.multimeter_Box.currentIndex()].name, \
|
||||
# baud=115200, timeout=5)
|
||||
|
||||
print(DMM.cmdPoll("DETector:BANDwidth?"))
|
||||
DMM.set_measure_voltage_ac()
|
||||
# self.timer_multimeter.start(200) # 启动串口接收分析数据
|
||||
self.Result_edit.append('万用表联机成功!')
|
||||
|
||||
nfc_port, zig_port = self.get_nfc_zig_port()
|
||||
print(nfc_port, zig_port)
|
||||
self.nfc_ser = serial.Serial(nfc_port, 19200, rtscts=False, dsrdtr=False)
|
||||
self.zig_ser = serial.Serial(zig_port, 115200, rtscts=False, dsrdtr=False)
|
||||
|
||||
self.nfc_reader = Nfc_Reader(self.nfc_ser)
|
||||
self.zig_reader = Zig_Reader(self.zig_ser)
|
||||
self.timer_zig.start(100) # 启动串口接收分析数据
|
||||
self.nfc_reader.rfidm_c2_init()
|
||||
|
||||
self.Result_edit.append('NFC、ZigBee模块联机成功!')
|
||||
|
||||
self.ConnecDev_Btn.setEnabled(True)
|
||||
self.ConnecDev_Btn.setText('断开')
|
||||
self.NFCRead_Btn.setEnabled(True)
|
||||
self.start = 1
|
||||
except Exception as e:
|
||||
print(e)
|
||||
QMessageBox.warning(self, "标题", "连接失败", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
self.ConnecDev_Btn.setEnabled(True)
|
||||
self.start = 0
|
||||
return -1
|
||||
|
||||
def StartTest(self):
|
||||
# self.thread_01 = Thread_01() # 创建线程
|
||||
# self.thread_01.start() # 开始线程
|
||||
# return 0
|
||||
try:
|
||||
if self.Test != 0:
|
||||
self.Test = 0
|
||||
ret = ctypes.windll.kernel32.TerminateThread(self.thread_01.handle, 0)
|
||||
|
||||
AFG.SetAmpl(0.02)
|
||||
AFG.SetFrequency('80')
|
||||
AFG.Close()
|
||||
self.Test_Btn.setText('开始测试')
|
||||
self.TestStatus.setText('测试结束')
|
||||
return 0
|
||||
elif self.Test == 0:
|
||||
self.Test = 1
|
||||
AFG.Open()
|
||||
self.TestStatus.setText('正在测试中……')
|
||||
self.ConnecDev_Btn.setEnabled(False)
|
||||
self.NFCRead_Btn.setEnabled(False)
|
||||
self.Test_Btn.setText('停止测试')
|
||||
self.plot.clear()
|
||||
self.thread_01 = Thread_01(self.Fredata) # 创建线程
|
||||
self.thread_01.trigger.connect(self.deal)
|
||||
self.thread_01.Voltage.connect(self.VoltageFun)
|
||||
self.thread_01.TestOK.connect(self.TestOKFun)
|
||||
self.thread_01.AmplSig.connect(self.AmplFun)
|
||||
self.thread_01.ThreadStop.connect(self.ThreadStop)
|
||||
self.thread_01.TimeOut.connect(self.TimeOut)
|
||||
self.thread_01.start() # 开始线程
|
||||
|
||||
|
||||
return 0
|
||||
except Exception:
|
||||
QMessageBox.warning(self, "标题", "测试异常", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
return -1
|
||||
|
||||
# self.AFG3000.SetFrequency('8k')
|
||||
# self.AFG3000.query('FREQUENCY?');
|
||||
|
||||
def AmplFun(self,updateampl):
|
||||
updateampl = float(updateampl)*1000
|
||||
self.Ampl_Edit.setText(str(updateampl))
|
||||
|
||||
def deal(self, updatestr):
|
||||
self.Frequency_Edit.setText(updatestr)
|
||||
|
||||
def VoltageFun(self, updateVoltage):
|
||||
self.VOLTage_Edit.setText(updateVoltage)
|
||||
|
||||
def ThreadStop(self):
|
||||
self.Test = 0
|
||||
self.TestStatus.setText('测试结束')
|
||||
self.Test_Btn.setText('开始测试')
|
||||
self.NFCRead_Btn.setEnabled(True)
|
||||
self.Ampl_Edit.setText('20')
|
||||
self.Frequency_Edit.setText('80')
|
||||
sql = "select rmsValue_Z,speedValue_Z, Frequency from t_data_zigbee where shortAddr = '{0}' order by Frequency".format(
|
||||
self.ShortAddr)
|
||||
data = db._Query(sql)
|
||||
self.plot.plot(data,self.ShortAddr)
|
||||
self.Test_Btn.setEnabled(False)
|
||||
|
||||
thistime = time.strftime("%Y-%m-%d", time.localtime())
|
||||
sql = "select count(*) from t_data_nfc"
|
||||
data = db._Query(sql)
|
||||
self.TotalCount.setText(str(data[0]['count(*)']))
|
||||
|
||||
sql = "select count(*) from t_data_nfc where TIME LIKE \'%{0}%\'".format(thistime)
|
||||
data = db._Query(sql)
|
||||
self.Count_Edit.setText(str(data[0]['count(*)']))
|
||||
#playsound(self.AUDIO_PATH)
|
||||
|
||||
def TimeOut(self):
|
||||
self.Test = 0
|
||||
ret = ctypes.windll.kernel32.TerminateThread(self.thread_01.handle, 0)
|
||||
|
||||
AFG.SetAmpl(0.02)
|
||||
AFG.SetFrequency('80')
|
||||
AFG.Close();
|
||||
self.Test_Btn.setText('开始测试')
|
||||
self.TestStatus.setText('测试结束')
|
||||
QMessageBox.warning(self, "标题", "ZigBee接收超时,请重新测试!", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
def TestOKFun(self, updateTest):
|
||||
print(updateTest)
|
||||
self.TestOK = updateTest[0]
|
||||
print(self.TestOK)
|
||||
self.Fre = updateTest[1]
|
||||
self.Vol = updateTest[2]
|
||||
|
||||
def get_nfc_zig_port(self):
|
||||
serial_ports = self.get_serial_list()
|
||||
for port in serial_ports:
|
||||
port = list(port)
|
||||
print(port)
|
||||
if NFC_PORT_STR in port[1]:
|
||||
nfc_port = port[0]
|
||||
elif ZIG_PORT_STR in port[1]:
|
||||
zig_port = port[0]
|
||||
|
||||
return (nfc_port, zig_port)
|
||||
|
||||
def get_serial_list(self):
|
||||
serial_ports = serial.tools.list_ports.comports()
|
||||
serial_list = []
|
||||
for port in serial_ports:
|
||||
serial_list.append(list(port))
|
||||
return serial_list
|
||||
|
||||
#def multimeter_update(self):
|
||||
#VOLTage = self.DMM.measure()
|
||||
#print(VOLTage)
|
||||
#self.VOLTage_Edit.setText(VOLTage)
|
||||
|
||||
def zig_update(self):
|
||||
msg = ""
|
||||
zig_info = self.zig_reader.read()
|
||||
# 将解析的设备信息和特征值输出到界面上
|
||||
if zig_info == SENSER_INF_PACK2:
|
||||
for k, i in self.zig_reader.dev_info_msg.items():
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
|
||||
for k, i in self.zig_reader.dev_conf_msg.items():
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
|
||||
self.zig_conf_recv_flag = True
|
||||
|
||||
elif (zig_info == EVEL_DATA_PACK1) | (zig_info == EVEL_DATA_PACK2):
|
||||
for k, i in self.zig_reader.dev_evel_msg.items():
|
||||
# print(k, " :", i)
|
||||
if isinstance(i, float):
|
||||
msg = msg + k + ":" + format(i, ".4f") + "\n"
|
||||
else:
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
if zig_info:
|
||||
self.ZigBee_textEdit.setText(msg)
|
||||
zig_recv_file_name = self.zig_reader.dev_evel_msg['采集时间'][:10]+".txt"
|
||||
with open(zig_recv_file_name, "a") as zig_recv_file:
|
||||
zig_recv_file.write(msg)
|
||||
zig_recv_file.write(str(self.Fre))
|
||||
zig_recv_file.write(self.Vol)
|
||||
zig_recv_file.write("\n\n")
|
||||
|
||||
global Stop
|
||||
try:
|
||||
if int(self.TestOK) == 1 and (len(msg) > 0) and self.ShortAddr == self.zig_reader.dev_evel_msg['传感器地址']:
|
||||
self.Next = 1
|
||||
self.TestOK = '0'
|
||||
print("OK1")
|
||||
return
|
||||
if (int(self.Next) == 1) and (len(msg) > 0) and self.ShortAddr == self.zig_reader.dev_evel_msg['传感器地址']:
|
||||
print("OK2")
|
||||
Stop = 1
|
||||
self.Next = 0
|
||||
sql = "select count(*) from t_data_zigbee where shortAddr = '{0}' and Frequency = '{1}';".format(
|
||||
self.zig_reader.dev_evel_msg['传感器地址'],self.Fre)
|
||||
data = db._Query(sql)
|
||||
print(data[0]['count(*)'])
|
||||
if data[0]['count(*)'] > 0:
|
||||
sql = "update t_data_zigbee set sampleTime = '{0}',deviceTem = '{1}',\
|
||||
environmentTem = '{2}',angle = '{3}',batteryV = '{4}',\
|
||||
rmsPK_X = '{5}',rmsValue_X = '{6}',speedValue_X = '{7}',speedValue_X = '{8}',\
|
||||
rmsPK_Y = '{9}',rmsValue_Y = '{10}',speedPK_Y = '{11}',speedValue_Y = '{12}',\
|
||||
rmsPK_Z = '{13}',rmsValue_Z = '{14}',speedPK_Z = '{15}',speedValue_Z = '{16}',\
|
||||
VOLTage = '{17}' \
|
||||
where shortAddr = '{18}' and Frequency = '{19}';".format(self.zig_reader.dev_evel_msg['采集时间'],
|
||||
self.zig_reader.dev_evel_msg['设备温度'],
|
||||
self.zig_reader.dev_evel_msg['环境温度'],
|
||||
self.zig_reader.dev_evel_msg['倾角'],
|
||||
self.zig_reader.dev_evel_msg['电池电压'],
|
||||
self.zig_reader.dev_evel_msg['X轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['X轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['X轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['X轴速度有效值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴速度有效值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴速度有效值'],self.Vol,
|
||||
self.zig_reader.dev_evel_msg['传感器地址'],self.Fre)
|
||||
print(sql)
|
||||
data = db._Operate(sql)
|
||||
else:
|
||||
sql = "insert into t_data_zigbee(shortAddr,sampleTime,deviceTem,environmentTem,angle,batteryV,\
|
||||
rmsPK_X,rmsValue_X,speedPK_X,speedValue_X,rmsPK_Y,rmsValue_Y,speedPK_Y,speedValue_Y,rmsPK_Z,\
|
||||
rmsValue_Z,speedPK_Z,speedValue_Z,Frequency,VOLTage) values('{0}','{1}','{2}','{3}','{4}','{5}',\
|
||||
'{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}',{18},'{19}'\
|
||||
)".format(self.zig_reader.dev_evel_msg['传感器地址'],
|
||||
self.zig_reader.dev_evel_msg['采集时间'],
|
||||
self.zig_reader.dev_evel_msg['设备温度'],
|
||||
self.zig_reader.dev_evel_msg['环境温度'],
|
||||
self.zig_reader.dev_evel_msg['倾角'],
|
||||
self.zig_reader.dev_evel_msg['电池电压'],
|
||||
self.zig_reader.dev_evel_msg['X轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['X轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['X轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['X轴速度有效值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴速度有效值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴速度有效值'],self.Fre,self.Vol)
|
||||
#print(sql)
|
||||
data = db._Operate(sql)
|
||||
self.TestOK = '0'
|
||||
except Exception:
|
||||
QMessageBox.warning(self, "标题", "数据存储异常", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
return -1
|
||||
|
||||
|
||||
def nfc_update(self):
|
||||
msg = ''
|
||||
for k, i in self.nfc_reader.dev_info_msg.items():
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
|
||||
for k, i in self.nfc_reader.dev_conf_msg.items():
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
|
||||
thistime = time.strftime("%Y-%m-%d %H:%M:%S ", time.localtime())
|
||||
sql = "select count(*) from t_data_nfc where shortAddr = '{0}';".format(
|
||||
self.nfc_reader.dev_conf_msg['Zigbee 本地地址'])
|
||||
self.ShortAddr = self.nfc_reader.dev_conf_msg['Zigbee 本地地址']
|
||||
data = db._Query(sql)
|
||||
print(data[0]['count(*)'])
|
||||
if data[0]['count(*)'] > 0:
|
||||
sql = "update t_data_nfc set dataNodeName = '{0}',dataNodeNo = '{1}',\
|
||||
hardWareVersion = '{2}',softVersion = '{3}',productNo = '{4}',\
|
||||
productSN = '{5}',productType = '{6}',RSSI = '{7}',\
|
||||
firstPowerTime = '{8}',TIME = '{9}',batteryV = '{10}'\
|
||||
where shortAddr = '{11}';".format(self.nfc_reader.dev_info_msg['测点名称'],
|
||||
self.nfc_reader.dev_info_msg['MAC地址'], \
|
||||
self.nfc_reader.dev_info_msg['硬件版本'],
|
||||
self.nfc_reader.dev_info_msg['软件版本'], \
|
||||
self.nfc_reader.dev_info_msg['生产批号'],
|
||||
self.nfc_reader.dev_info_msg['生产序列号'], \
|
||||
self.nfc_reader.dev_info_msg['产品型号'],
|
||||
self.nfc_reader.dev_info_msg['无线信号强度'], \
|
||||
self.nfc_reader.dev_info_msg['首次上电日期'], thistime, \
|
||||
self.nfc_reader.dev_info_msg['电池电压'],
|
||||
self.nfc_reader.dev_conf_msg['Zigbee 本地地址'])
|
||||
#print(sql)
|
||||
data = db._Operate(sql);
|
||||
else:
|
||||
sql = "insert into t_data_nfc(dataNodeName,dataNodeNo,shortAddr,hardWareVersion,softVersion,productNo,\
|
||||
productType,RSSI,productSN,firstPowerTime,batteryV,TIME) values('{0}','{1}','{2}','{3}','{4}','{5}',\
|
||||
'{6}','{7}','{8}','{9}','{10}','{11}')".format(self.nfc_reader.dev_info_msg['测点名称'],
|
||||
self.nfc_reader.dev_info_msg['MAC地址'], \
|
||||
self.nfc_reader.dev_conf_msg['Zigbee 本地地址'],
|
||||
self.nfc_reader.dev_info_msg['硬件版本'], \
|
||||
self.nfc_reader.dev_info_msg['软件版本'],
|
||||
self.nfc_reader.dev_info_msg['生产批号'], \
|
||||
self.nfc_reader.dev_info_msg['产品型号'],
|
||||
self.nfc_reader.dev_info_msg['无线信号强度'], \
|
||||
self.nfc_reader.dev_info_msg['生产序列号'],
|
||||
self.nfc_reader.dev_info_msg['首次上电日期'], \
|
||||
self.nfc_reader.dev_info_msg['电池电压'], thistime)
|
||||
#print(sql)
|
||||
data = db._Operate(sql);
|
||||
self.NFC_textEdit.setText(msg)
|
||||
|
||||
def NFCRead(self):
|
||||
try:
|
||||
self.Test_Btn.setEnabled(True)
|
||||
self.Result_edit.clear()
|
||||
self.tabWidget.setCurrentIndex(0)
|
||||
QApplication.processEvents()
|
||||
self.nfc_reader.get_uuid()
|
||||
if self.nfc_reader.nfc_uuid:
|
||||
self.Result_edit.append("DN101 NFC UUID:" + hex(self.nfc_reader.nfc_uuid)[2:])
|
||||
time.sleep(0.5)
|
||||
info = self.nfc_reader.read_info()
|
||||
conf = self.nfc_reader.read_conf()
|
||||
if info & conf:
|
||||
self.nfc_reader.dev_info_analysis()
|
||||
self.nfc_reader.dev_conf_analysis()
|
||||
self.nfc_update()
|
||||
self.Result_edit.append("DN101 NFC读取成功")
|
||||
return info
|
||||
else:
|
||||
self.Result_edit.append("NFC读取失败")
|
||||
return False
|
||||
else:
|
||||
self.Result_edit.append("NFC读取失败")
|
||||
return False
|
||||
except Exception:
|
||||
QMessageBox.warning(self, "标题", "测试异常", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
return -1
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = QApplication(sys.argv)
|
||||
MainWindow = QMainWindow()
|
||||
ui = Ui_DataNodeFrequencyTest()
|
||||
ui.setupUi(MainWindow)
|
||||
View = DataNodeFrequencyTest()
|
||||
View.show()
|
||||
sys.exit(app.exec_())
|
||||
@ -0,0 +1,321 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 4.15.0, 2022-05-26T09:27:12. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
<value type="QByteArray">{168666bd-c3a3-4089-8a9e-043b6ddc15f8}</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||
<value type="int">0</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
||||
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||
<value type="QString" key="language">Cpp</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||
<value type="QString" key="language">QmlJS</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
|
||||
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
||||
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
|
||||
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
|
||||
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
|
||||
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
|
||||
<value type="bool" key="AutoTest.Framework.Boost">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.CTest">false</value>
|
||||
<value type="bool" key="AutoTest.Framework.Catch">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.GTest">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
|
||||
<value type="int" key="AutoTest.RunAfterBuild">0</value>
|
||||
<value type="bool" key="AutoTest.UseGlobal">true</value>
|
||||
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
|
||||
<value type="QString">-fno-delayed-template-parsing</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
|
||||
<value type="QString" key="ClangCodeModel.WarningConfigId">Builtin.BuildSystem</value>
|
||||
<valuemap type="QVariantMap" key="ClangTools">
|
||||
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
|
||||
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
|
||||
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
|
||||
<value type="int" key="ClangTools.ParallelJobs">3</value>
|
||||
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
|
||||
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
|
||||
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
|
||||
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="QString" key="DeviceType">Desktop</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.12.11 MinGW 32-bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.12.11 MinGW 32-bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.51211.win32_mingw73_kit</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||
<value type="int" key="EnableQmlDebugging">0</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\WorkSpace\测试工具\chaos\频响测试\build-DataNodeFrequencyTest-Desktop_Qt_5_12_11_MinGW_32_bit-Debug</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/WorkSpace/测试工具/chaos/频响测试/build-DataNodeFrequencyTest-Desktop_Qt_5_12_11_MinGW_32_bit-Debug</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\WorkSpace\测试工具\chaos\频响测试\build-DataNodeFrequencyTest-Desktop_Qt_5_12_11_MinGW_32_bit-Release</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/WorkSpace/测试工具/chaos/频响测试/build-DataNodeFrequencyTest-Desktop_Qt_5_12_11_MinGW_32_bit-Release</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||
<value type="int" key="QtQuickCompiler">0</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
||||
<value type="int" key="EnableQmlDebugging">0</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\WorkSpace\测试工具\chaos\频响测试\build-DataNodeFrequencyTest-Desktop_Qt_5_12_11_MinGW_32_bit-Profile</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/WorkSpace/测试工具/chaos/频响测试/build-DataNodeFrequencyTest-Desktop_Qt_5_12_11_MinGW_32_bit-Profile</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||
<value type="int" key="QtQuickCompiler">0</value>
|
||||
<value type="int" key="SeparateDebugInfo">0</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
|
||||
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
|
||||
<value type="QString">cpu-cycles</value>
|
||||
</valuelist>
|
||||
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
|
||||
<value type="int" key="Analyzer.Perf.Frequency">250</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
|
||||
<value type="QString">-e</value>
|
||||
<value type="QString">cpu-cycles</value>
|
||||
<value type="QString">--call-graph</value>
|
||||
<value type="QString">dwarf,4096</value>
|
||||
<value type="QString">-F</value>
|
||||
<value type="QString">250</value>
|
||||
</valuelist>
|
||||
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
|
||||
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
||||
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
||||
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
||||
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
||||
<value type="QString" key="Analyzer.Valgrind.Callgrind.Arguments"></value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
|
||||
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.Memcheck.Arguments"></value>
|
||||
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
||||
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.ValgrindArguments"></value>
|
||||
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
||||
<value type="int">0</value>
|
||||
<value type="int">1</value>
|
||||
<value type="int">2</value>
|
||||
<value type="int">3</value>
|
||||
<value type="int">4</value>
|
||||
<value type="int">5</value>
|
||||
<value type="int">6</value>
|
||||
<value type="int">7</value>
|
||||
<value type="int">8</value>
|
||||
<value type="int">9</value>
|
||||
<value type="int">10</value>
|
||||
<value type="int">11</value>
|
||||
<value type="int">12</value>
|
||||
<value type="int">13</value>
|
||||
<value type="int">14</value>
|
||||
</valuelist>
|
||||
<valuelist type="QVariantList" key="CustomOutputParsers"/>
|
||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:E:/WorkSpace/测试工具/chaos/频响测试/DataNodeFrequencyTest/DataNodeFrequencyTest.pro</value>
|
||||
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">E:/WorkSpace/测试工具/chaos/频响测试/DataNodeFrequencyTest/DataNodeFrequencyTest.pro</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
<value type="QString" key="RunConfiguration.WorkingDirectory.default">E:/WorkSpace/测试工具/chaos/频响测试/build-DataNodeFrequencyTest-Desktop_Qt_5_12_11_MinGW_32_bit-Debug</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||
<value type="int">1</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||
<value type="int">22</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>Version</variable>
|
||||
<value type="int">22</value>
|
||||
</data>
|
||||
</qtcreator>
|
||||
203
20231202/频响测试/DataNodeFrequencyTest/MainWindow - 副本.py
Normal file
203
20231202/频响测试/DataNodeFrequencyTest/MainWindow - 副本.py
Normal file
@ -0,0 +1,203 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'form.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.6
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
|
||||
class Ui_DataNodeFrequencyTest(object):
|
||||
def setupUi(self, DataNodeFrequencyTest):
|
||||
DataNodeFrequencyTest.setObjectName("DataNodeFrequencyTest")
|
||||
DataNodeFrequencyTest.resize(997, 796)
|
||||
self.groupBox = QtWidgets.QGroupBox(DataNodeFrequencyTest)
|
||||
self.groupBox.setGeometry(QtCore.QRect(10, 560, 541, 161))
|
||||
self.groupBox.setStyleSheet("font: 12pt \"宋体\";")
|
||||
self.groupBox.setObjectName("groupBox")
|
||||
self.multimeter_Box = QtWidgets.QComboBox(self.groupBox)
|
||||
self.multimeter_Box.setGeometry(QtCore.QRect(150, 20, 241, 41))
|
||||
self.multimeter_Box.setStyleSheet("font: 12pt \"宋体\";")
|
||||
self.multimeter_Box.setObjectName("multimeter_Box")
|
||||
self.Signal_Box = QtWidgets.QComboBox(self.groupBox)
|
||||
self.Signal_Box.setGeometry(QtCore.QRect(150, 100, 241, 41))
|
||||
self.Signal_Box.setStyleSheet("font: 12pt \"宋体\";")
|
||||
self.Signal_Box.setObjectName("Signal_Box")
|
||||
self.label = QtWidgets.QLabel(self.groupBox)
|
||||
self.label.setGeometry(QtCore.QRect(10, 20, 91, 41))
|
||||
self.label.setStyleSheet("font: 12pt \"宋体\";")
|
||||
self.label.setObjectName("label")
|
||||
self.label_2 = QtWidgets.QLabel(self.groupBox)
|
||||
self.label_2.setGeometry(QtCore.QRect(10, 100, 121, 41))
|
||||
self.label_2.setStyleSheet("font: 12pt \"宋体\";")
|
||||
self.label_2.setObjectName("label_2")
|
||||
self.layoutWidget = QtWidgets.QWidget(self.groupBox)
|
||||
self.layoutWidget.setGeometry(QtCore.QRect(440, 20, 77, 121))
|
||||
self.layoutWidget.setObjectName("layoutWidget")
|
||||
self.gridLayout = QtWidgets.QGridLayout(self.layoutWidget)
|
||||
self.gridLayout.setContentsMargins(0, 0, 0, 0)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
self.ConnecDev_Btn = QtWidgets.QPushButton(self.layoutWidget)
|
||||
self.ConnecDev_Btn.setStyleSheet("font: 12pt \"宋体\";")
|
||||
self.ConnecDev_Btn.setObjectName("ConnecDev_Btn")
|
||||
self.gridLayout.addWidget(self.ConnecDev_Btn, 0, 0, 1, 1)
|
||||
self.NFCRead_Btn = QtWidgets.QPushButton(self.layoutWidget)
|
||||
self.NFCRead_Btn.setEnabled(False)
|
||||
self.NFCRead_Btn.setStyleSheet("font: 12pt \"宋体\";")
|
||||
self.NFCRead_Btn.setObjectName("NFCRead_Btn")
|
||||
self.gridLayout.addWidget(self.NFCRead_Btn, 5, 0, 1, 1)
|
||||
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.gridLayout.addItem(spacerItem, 1, 0, 1, 1)
|
||||
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.gridLayout.addItem(spacerItem1, 6, 0, 1, 1)
|
||||
self.Test_Btn = QtWidgets.QPushButton(self.layoutWidget)
|
||||
self.Test_Btn.setEnabled(False)
|
||||
self.Test_Btn.setStyleSheet("font: 12pt \"宋体\";")
|
||||
self.Test_Btn.setObjectName("Test_Btn")
|
||||
self.gridLayout.addWidget(self.Test_Btn, 7, 0, 1, 1)
|
||||
self.groupBox_2 = QtWidgets.QGroupBox(DataNodeFrequencyTest)
|
||||
self.groupBox_2.setGeometry(QtCore.QRect(570, 10, 381, 231))
|
||||
self.groupBox_2.setStyleSheet("font: 12pt \"Agency FB\";")
|
||||
self.groupBox_2.setObjectName("groupBox_2")
|
||||
self.label_3 = QtWidgets.QLabel(self.groupBox_2)
|
||||
self.label_3.setGeometry(QtCore.QRect(10, 20, 121, 41))
|
||||
self.label_3.setStyleSheet("font: 12pt \"Agency FB\";")
|
||||
self.label_3.setObjectName("label_3")
|
||||
self.label_4 = QtWidgets.QLabel(self.groupBox_2)
|
||||
self.label_4.setGeometry(QtCore.QRect(10, 70, 131, 41))
|
||||
self.label_4.setStyleSheet("font: 12pt \"Agency FB\";")
|
||||
self.label_4.setObjectName("label_4")
|
||||
self.label_5 = QtWidgets.QLabel(self.groupBox_2)
|
||||
self.label_5.setGeometry(QtCore.QRect(10, 120, 101, 41))
|
||||
self.label_5.setStyleSheet("font: 12pt \"Agency FB\";")
|
||||
self.label_5.setObjectName("label_5")
|
||||
self.Frequency_Edit = QtWidgets.QLineEdit(self.groupBox_2)
|
||||
self.Frequency_Edit.setEnabled(False)
|
||||
self.Frequency_Edit.setGeometry(QtCore.QRect(140, 20, 161, 41))
|
||||
self.Frequency_Edit.setStyleSheet("font: 20pt \"宋体\";\n"
|
||||
"color: rgb(0, 170, 0);")
|
||||
self.Frequency_Edit.setObjectName("Frequency_Edit")
|
||||
self.Ampl_Edit = QtWidgets.QLineEdit(self.groupBox_2)
|
||||
self.Ampl_Edit.setEnabled(False)
|
||||
self.Ampl_Edit.setGeometry(QtCore.QRect(140, 70, 161, 41))
|
||||
self.Ampl_Edit.setStyleSheet("font: 20pt \"宋体\";\n"
|
||||
"color: rgb(0, 170, 0);")
|
||||
self.Ampl_Edit.setObjectName("Ampl_Edit")
|
||||
self.VOLTage_Edit = QtWidgets.QLineEdit(self.groupBox_2)
|
||||
self.VOLTage_Edit.setEnabled(False)
|
||||
self.VOLTage_Edit.setGeometry(QtCore.QRect(140, 120, 161, 41))
|
||||
self.VOLTage_Edit.setStyleSheet("font: 20pt \"宋体\";\n"
|
||||
"color: rgb(0, 170, 0);")
|
||||
self.VOLTage_Edit.setObjectName("VOLTage_Edit")
|
||||
self.label_9 = QtWidgets.QLabel(self.groupBox_2)
|
||||
self.label_9.setGeometry(QtCore.QRect(320, 132, 54, 20))
|
||||
self.label_9.setStyleSheet("font: 12pt \"宋体\";")
|
||||
self.label_9.setObjectName("label_9")
|
||||
self.label_10 = QtWidgets.QLabel(self.groupBox_2)
|
||||
self.label_10.setGeometry(QtCore.QRect(320, 30, 54, 20))
|
||||
self.label_10.setStyleSheet("font: 12pt \"宋体\";")
|
||||
self.label_10.setObjectName("label_10")
|
||||
self.label_11 = QtWidgets.QLabel(self.groupBox_2)
|
||||
self.label_11.setGeometry(QtCore.QRect(320, 80, 54, 20))
|
||||
self.label_11.setStyleSheet("font: 12pt \"宋体\";")
|
||||
self.label_11.setObjectName("label_11")
|
||||
self.label_7 = QtWidgets.QLabel(self.groupBox_2)
|
||||
self.label_7.setGeometry(QtCore.QRect(10, 180, 131, 31))
|
||||
self.label_7.setStyleSheet("font: 12pt \"Agency FB\";")
|
||||
self.label_7.setObjectName("label_7")
|
||||
self.Count_Edit = QtWidgets.QLineEdit(self.groupBox_2)
|
||||
self.Count_Edit.setEnabled(False)
|
||||
self.Count_Edit.setGeometry(QtCore.QRect(140, 170, 161, 41))
|
||||
self.Count_Edit.setStyleSheet("font: 20pt \"宋体\";\n"
|
||||
"color: rgb(0, 170, 0);")
|
||||
self.Count_Edit.setObjectName("Count_Edit")
|
||||
self.label_12 = QtWidgets.QLabel(self.groupBox_2)
|
||||
self.label_12.setGeometry(QtCore.QRect(320, 180, 54, 20))
|
||||
self.label_12.setStyleSheet("font: 12pt \"宋体\";")
|
||||
self.label_12.setObjectName("label_12")
|
||||
self.groupBox_3 = QtWidgets.QGroupBox(DataNodeFrequencyTest)
|
||||
self.groupBox_3.setGeometry(QtCore.QRect(10, 10, 541, 391))
|
||||
self.groupBox_3.setStyleSheet("font: 12pt \"Agency FB\";")
|
||||
self.groupBox_3.setObjectName("groupBox_3")
|
||||
self.tabWidget = QtWidgets.QTabWidget(DataNodeFrequencyTest)
|
||||
self.tabWidget.setGeometry(QtCore.QRect(570, 250, 381, 471))
|
||||
self.tabWidget.setStyleSheet("font: 12pt \"宋体\";")
|
||||
self.tabWidget.setTabBarAutoHide(False)
|
||||
self.tabWidget.setObjectName("tabWidget")
|
||||
self.tab = QtWidgets.QWidget()
|
||||
self.tab.setObjectName("tab")
|
||||
self.NFC_textEdit = QtWidgets.QTextEdit(self.tab)
|
||||
self.NFC_textEdit.setGeometry(QtCore.QRect(10, 10, 351, 421))
|
||||
self.NFC_textEdit.setObjectName("NFC_textEdit")
|
||||
self.tabWidget.addTab(self.tab, "")
|
||||
self.tab_2 = QtWidgets.QWidget()
|
||||
self.tab_2.setObjectName("tab_2")
|
||||
self.ZigBee_textEdit = QtWidgets.QTextEdit(self.tab_2)
|
||||
self.ZigBee_textEdit.setGeometry(QtCore.QRect(10, 10, 351, 421))
|
||||
self.ZigBee_textEdit.setObjectName("ZigBee_textEdit")
|
||||
self.tabWidget.addTab(self.tab_2, "")
|
||||
self.tab_5 = QtWidgets.QWidget()
|
||||
self.tab_5.setObjectName("tab_5")
|
||||
self.tabWidget.addTab(self.tab_5, "")
|
||||
self.Result_edit = QtWidgets.QTextEdit(DataNodeFrequencyTest)
|
||||
self.Result_edit.setGeometry(QtCore.QRect(10, 420, 541, 121))
|
||||
self.Result_edit.setStyleSheet("font: 16pt \"宋体\";")
|
||||
self.Result_edit.setObjectName("Result_edit")
|
||||
self.TestStatus = QtWidgets.QLabel(DataNodeFrequencyTest)
|
||||
self.TestStatus.setGeometry(QtCore.QRect(240, 740, 251, 41))
|
||||
self.TestStatus.setStyleSheet("font: 28pt \"Agency FB\";\n"
|
||||
"color: rgb(0, 170, 0);")
|
||||
self.TestStatus.setObjectName("TestStatus")
|
||||
self.Export_Btn = QtWidgets.QPushButton(DataNodeFrequencyTest)
|
||||
self.Export_Btn.setGeometry(QtCore.QRect(810, 730, 81, 51))
|
||||
self.Export_Btn.setStyleSheet("font: 12pt \"Agency FB\";")
|
||||
self.Export_Btn.setObjectName("Export_Btn")
|
||||
self.label_6 = QtWidgets.QLabel(DataNodeFrequencyTest)
|
||||
self.label_6.setGeometry(QtCore.QRect(20, 740, 171, 41))
|
||||
self.label_6.setStyleSheet("font: 28pt \"宋体\";")
|
||||
self.label_6.setObjectName("label_6")
|
||||
self.label_8 = QtWidgets.QLabel(DataNodeFrequencyTest)
|
||||
self.label_8.setGeometry(QtCore.QRect(510, 750, 131, 31))
|
||||
self.label_8.setStyleSheet("font: 12pt \"Agency FB\";")
|
||||
self.label_8.setObjectName("label_8")
|
||||
self.TotalCount = QtWidgets.QLabel(DataNodeFrequencyTest)
|
||||
self.TotalCount.setGeometry(QtCore.QRect(640, 740, 131, 41))
|
||||
self.TotalCount.setStyleSheet("font: 28pt \"宋体\";\n"
|
||||
"color: rgb(0, 170, 0);")
|
||||
self.TotalCount.setText("")
|
||||
self.TotalCount.setObjectName("TotalCount")
|
||||
|
||||
self.retranslateUi(DataNodeFrequencyTest)
|
||||
self.tabWidget.setCurrentIndex(1)
|
||||
QtCore.QMetaObject.connectSlotsByName(DataNodeFrequencyTest)
|
||||
|
||||
def retranslateUi(self, DataNodeFrequencyTest):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
DataNodeFrequencyTest.setWindowTitle(_translate("DataNodeFrequencyTest", "DataNodeFrequencyTest"))
|
||||
self.groupBox.setTitle(_translate("DataNodeFrequencyTest", "端口"))
|
||||
self.label.setText(_translate("DataNodeFrequencyTest", "万用表:"))
|
||||
self.label_2.setText(_translate("DataNodeFrequencyTest", "信号发生器:"))
|
||||
self.ConnecDev_Btn.setText(_translate("DataNodeFrequencyTest", "联机"))
|
||||
self.NFCRead_Btn.setText(_translate("DataNodeFrequencyTest", "NFC读取"))
|
||||
self.Test_Btn.setText(_translate("DataNodeFrequencyTest", "开始测试"))
|
||||
self.groupBox_2.setTitle(_translate("DataNodeFrequencyTest", "实时数据"))
|
||||
self.label_3.setText(_translate("DataNodeFrequencyTest", "信号发生器频率:"))
|
||||
self.label_4.setText(_translate("DataNodeFrequencyTest", "信号发生器幅值:"))
|
||||
self.label_5.setText(_translate("DataNodeFrequencyTest", "万用表电压:"))
|
||||
self.label_9.setText(_translate("DataNodeFrequencyTest", "mv"))
|
||||
self.label_10.setText(_translate("DataNodeFrequencyTest", "Hz"))
|
||||
self.label_11.setText(_translate("DataNodeFrequencyTest", "mv"))
|
||||
self.label_7.setText(_translate("DataNodeFrequencyTest", "今天测试 个数:"))
|
||||
self.label_12.setText(_translate("DataNodeFrequencyTest", "个"))
|
||||
self.groupBox_3.setTitle(_translate("DataNodeFrequencyTest", "频响曲线"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("DataNodeFrequencyTest", "NFC"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("DataNodeFrequencyTest", "ZigBee"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_5), _translate("DataNodeFrequencyTest", " 频点"))
|
||||
self.TestStatus.setText(_translate("DataNodeFrequencyTest", "未测试"))
|
||||
self.Export_Btn.setText(_translate("DataNodeFrequencyTest", "导出数据"))
|
||||
self.label_6.setText(_translate("DataNodeFrequencyTest", "测试状态:"))
|
||||
self.label_8.setText(_translate("DataNodeFrequencyTest", "累计测试个数:"))
|
||||
231
20231202/频响测试/DataNodeFrequencyTest/MainWindow.py
Normal file
231
20231202/频响测试/DataNodeFrequencyTest/MainWindow.py
Normal file
@ -0,0 +1,231 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'mainwindow.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.6
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
|
||||
class Ui_DataNodeFrequencyTest(object):
|
||||
def setupUi(self, DataNodeFrequencyTest):
|
||||
DataNodeFrequencyTest.setObjectName("DataNodeFrequencyTest")
|
||||
DataNodeFrequencyTest.resize(850, 600)
|
||||
self.centralwidget = QtWidgets.QWidget(DataNodeFrequencyTest)
|
||||
self.centralwidget.setObjectName("centralwidget")
|
||||
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
|
||||
self.verticalLayout.setObjectName("verticalLayout")
|
||||
self.widget = QtWidgets.QWidget(self.centralwidget)
|
||||
self.widget.setObjectName("widget")
|
||||
self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget)
|
||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||
self.widget_3 = QtWidgets.QWidget(self.widget)
|
||||
self.widget_3.setMinimumSize(QtCore.QSize(500, 0))
|
||||
self.widget_3.setObjectName("widget_3")
|
||||
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.widget_3)
|
||||
self.verticalLayout_3.setObjectName("verticalLayout_3")
|
||||
self.widget_7 = QtWidgets.QWidget(self.widget_3)
|
||||
self.widget_7.setMinimumSize(QtCore.QSize(0, 300))
|
||||
self.widget_7.setObjectName("widget_7")
|
||||
self.horizontalLayout_8 = QtWidgets.QHBoxLayout(self.widget_7)
|
||||
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
|
||||
self.groupBox_3 = QtWidgets.QGroupBox(self.widget_7)
|
||||
self.groupBox_3.setObjectName("groupBox_3")
|
||||
self.horizontalLayout_8.addWidget(self.groupBox_3)
|
||||
self.verticalLayout_3.addWidget(self.widget_7)
|
||||
self.widget_9 = QtWidgets.QWidget(self.widget_3)
|
||||
self.widget_9.setMinimumSize(QtCore.QSize(120, 0))
|
||||
self.widget_9.setObjectName("widget_9")
|
||||
self.horizontalLayout_12 = QtWidgets.QHBoxLayout(self.widget_9)
|
||||
self.horizontalLayout_12.setObjectName("horizontalLayout_12")
|
||||
self.verticalLayout_5 = QtWidgets.QVBoxLayout()
|
||||
self.verticalLayout_5.setObjectName("verticalLayout_5")
|
||||
self.horizontalLayout_9 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_9.setObjectName("horizontalLayout_9")
|
||||
self.label = QtWidgets.QLabel(self.widget_9)
|
||||
self.label.setMinimumSize(QtCore.QSize(100, 0))
|
||||
self.label.setObjectName("label")
|
||||
self.horizontalLayout_9.addWidget(self.label)
|
||||
self.sensorType_Box = QtWidgets.QComboBox(self.widget_9)
|
||||
self.sensorType_Box.setMinimumSize(QtCore.QSize(120, 0))
|
||||
self.sensorType_Box.setObjectName("sensorType_Box")
|
||||
self.horizontalLayout_9.addWidget(self.sensorType_Box)
|
||||
self.verticalLayout_5.addLayout(self.horizontalLayout_9)
|
||||
self.horizontalLayout_10 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_10.setObjectName("horizontalLayout_10")
|
||||
self.label_2 = QtWidgets.QLabel(self.widget_9)
|
||||
self.label_2.setMinimumSize(QtCore.QSize(120, 0))
|
||||
self.label_2.setObjectName("label_2")
|
||||
self.horizontalLayout_10.addWidget(self.label_2)
|
||||
self.Signal_Edit = QtWidgets.QLineEdit(self.widget_9)
|
||||
self.Signal_Edit.setMinimumSize(QtCore.QSize(120, 0))
|
||||
self.Signal_Edit.setObjectName("Signal_Edit")
|
||||
self.horizontalLayout_10.addWidget(self.Signal_Edit)
|
||||
self.verticalLayout_5.addLayout(self.horizontalLayout_10)
|
||||
self.horizontalLayout_11 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_11.setObjectName("horizontalLayout_11")
|
||||
self.label_7 = QtWidgets.QLabel(self.widget_9)
|
||||
self.label_7.setMinimumSize(QtCore.QSize(100, 0))
|
||||
self.label_7.setObjectName("label_7")
|
||||
self.horizontalLayout_11.addWidget(self.label_7)
|
||||
self.multimeter_Box = QtWidgets.QComboBox(self.widget_9)
|
||||
self.multimeter_Box.setMinimumSize(QtCore.QSize(120, 0))
|
||||
self.multimeter_Box.setObjectName("multimeter_Box")
|
||||
self.horizontalLayout_11.addWidget(self.multimeter_Box)
|
||||
self.verticalLayout_5.addLayout(self.horizontalLayout_11)
|
||||
self.horizontalLayout_12.addLayout(self.verticalLayout_5)
|
||||
spacerItem = QtWidgets.QSpacerItem(109, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_12.addItem(spacerItem)
|
||||
self.verticalLayout_6 = QtWidgets.QVBoxLayout()
|
||||
self.verticalLayout_6.setObjectName("verticalLayout_6")
|
||||
self.ConnecDev_Btn = QtWidgets.QPushButton(self.widget_9)
|
||||
self.ConnecDev_Btn.setObjectName("ConnecDev_Btn")
|
||||
self.verticalLayout_6.addWidget(self.ConnecDev_Btn)
|
||||
self.NFCRead_Btn = QtWidgets.QPushButton(self.widget_9)
|
||||
self.NFCRead_Btn.setObjectName("NFCRead_Btn")
|
||||
self.verticalLayout_6.addWidget(self.NFCRead_Btn)
|
||||
self.Test_Btn = QtWidgets.QPushButton(self.widget_9)
|
||||
self.Test_Btn.setObjectName("Test_Btn")
|
||||
self.verticalLayout_6.addWidget(self.Test_Btn)
|
||||
self.horizontalLayout_12.addLayout(self.verticalLayout_6)
|
||||
self.verticalLayout_3.addWidget(self.widget_9)
|
||||
self.horizontalLayout.addWidget(self.widget_3)
|
||||
self.widget_4 = QtWidgets.QWidget(self.widget)
|
||||
self.widget_4.setObjectName("widget_4")
|
||||
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.widget_4)
|
||||
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
||||
self.widget_5 = QtWidgets.QWidget(self.widget_4)
|
||||
self.widget_5.setMinimumSize(QtCore.QSize(300, 240))
|
||||
self.widget_5.setObjectName("widget_5")
|
||||
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget_5)
|
||||
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
||||
self.groupBox_2 = QtWidgets.QGroupBox(self.widget_5)
|
||||
self.groupBox_2.setObjectName("groupBox_2")
|
||||
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.groupBox_2)
|
||||
self.verticalLayout_4.setObjectName("verticalLayout_4")
|
||||
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
|
||||
self.label_3 = QtWidgets.QLabel(self.groupBox_2)
|
||||
self.label_3.setMinimumSize(QtCore.QSize(100, 0))
|
||||
self.label_3.setObjectName("label_3")
|
||||
self.horizontalLayout_4.addWidget(self.label_3)
|
||||
self.Frequency_Edit = QtWidgets.QLineEdit(self.groupBox_2)
|
||||
self.Frequency_Edit.setObjectName("Frequency_Edit")
|
||||
self.horizontalLayout_4.addWidget(self.Frequency_Edit)
|
||||
self.label_10 = QtWidgets.QLabel(self.groupBox_2)
|
||||
self.label_10.setObjectName("label_10")
|
||||
self.horizontalLayout_4.addWidget(self.label_10)
|
||||
self.verticalLayout_4.addLayout(self.horizontalLayout_4)
|
||||
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
|
||||
self.label_4 = QtWidgets.QLabel(self.groupBox_2)
|
||||
self.label_4.setMinimumSize(QtCore.QSize(100, 0))
|
||||
self.label_4.setObjectName("label_4")
|
||||
self.horizontalLayout_5.addWidget(self.label_4)
|
||||
self.Ampl_Edit = QtWidgets.QLineEdit(self.groupBox_2)
|
||||
self.Ampl_Edit.setObjectName("Ampl_Edit")
|
||||
self.horizontalLayout_5.addWidget(self.Ampl_Edit)
|
||||
self.label_11 = QtWidgets.QLabel(self.groupBox_2)
|
||||
self.label_11.setObjectName("label_11")
|
||||
self.horizontalLayout_5.addWidget(self.label_11)
|
||||
self.verticalLayout_4.addLayout(self.horizontalLayout_5)
|
||||
self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
|
||||
self.label_5 = QtWidgets.QLabel(self.groupBox_2)
|
||||
self.label_5.setMinimumSize(QtCore.QSize(100, 0))
|
||||
self.label_5.setObjectName("label_5")
|
||||
self.horizontalLayout_6.addWidget(self.label_5)
|
||||
self.VOLTage_Edit = QtWidgets.QLineEdit(self.groupBox_2)
|
||||
self.VOLTage_Edit.setObjectName("VOLTage_Edit")
|
||||
self.horizontalLayout_6.addWidget(self.VOLTage_Edit)
|
||||
self.label_9 = QtWidgets.QLabel(self.groupBox_2)
|
||||
self.label_9.setObjectName("label_9")
|
||||
self.horizontalLayout_6.addWidget(self.label_9)
|
||||
self.verticalLayout_4.addLayout(self.horizontalLayout_6)
|
||||
self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
|
||||
self.label_6 = QtWidgets.QLabel(self.groupBox_2)
|
||||
self.label_6.setMinimumSize(QtCore.QSize(100, 0))
|
||||
self.label_6.setObjectName("label_6")
|
||||
self.horizontalLayout_7.addWidget(self.label_6)
|
||||
self.Count_Edit = QtWidgets.QLineEdit(self.groupBox_2)
|
||||
self.Count_Edit.setObjectName("Count_Edit")
|
||||
self.horizontalLayout_7.addWidget(self.Count_Edit)
|
||||
self.label_12 = QtWidgets.QLabel(self.groupBox_2)
|
||||
self.label_12.setObjectName("label_12")
|
||||
self.horizontalLayout_7.addWidget(self.label_12)
|
||||
self.verticalLayout_4.addLayout(self.horizontalLayout_7)
|
||||
self.horizontalLayout_2.addWidget(self.groupBox_2)
|
||||
self.verticalLayout_2.addWidget(self.widget_5)
|
||||
self.widget_6 = QtWidgets.QWidget(self.widget_4)
|
||||
self.widget_6.setObjectName("widget_6")
|
||||
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.widget_6)
|
||||
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
|
||||
self.tabWidget = QtWidgets.QTabWidget(self.widget_6)
|
||||
self.tabWidget.setObjectName("tabWidget")
|
||||
self.tab_3 = QtWidgets.QWidget()
|
||||
self.tab_3.setObjectName("tab_3")
|
||||
self.tabWidget.addTab(self.tab_3, "")
|
||||
self.tab_6 = QtWidgets.QWidget()
|
||||
self.tab_6.setObjectName("tab_6")
|
||||
self.tabWidget.addTab(self.tab_6, "")
|
||||
self.tab_4 = QtWidgets.QWidget()
|
||||
self.tab_4.setObjectName("tab_4")
|
||||
self.tabWidget.addTab(self.tab_4, "")
|
||||
self.horizontalLayout_3.addWidget(self.tabWidget)
|
||||
self.verticalLayout_2.addWidget(self.widget_6)
|
||||
self.horizontalLayout.addWidget(self.widget_4)
|
||||
self.verticalLayout.addWidget(self.widget)
|
||||
self.widget_2 = QtWidgets.QWidget(self.centralwidget)
|
||||
self.widget_2.setMinimumSize(QtCore.QSize(0, 80))
|
||||
self.widget_2.setMaximumSize(QtCore.QSize(16777215, 80))
|
||||
self.widget_2.setObjectName("widget_2")
|
||||
self.label_8 = QtWidgets.QLabel(self.widget_2)
|
||||
self.label_8.setGeometry(QtCore.QRect(30, 40, 71, 16))
|
||||
self.label_8.setObjectName("label_8")
|
||||
self.TestStatus = QtWidgets.QLabel(self.widget_2)
|
||||
self.TestStatus.setGeometry(QtCore.QRect(150, 40, 54, 12))
|
||||
self.TestStatus.setObjectName("TestStatus")
|
||||
self.label_14 = QtWidgets.QLabel(self.widget_2)
|
||||
self.label_14.setGeometry(QtCore.QRect(460, 40, 91, 16))
|
||||
self.label_14.setObjectName("label_14")
|
||||
self.TotalCount = QtWidgets.QLabel(self.widget_2)
|
||||
self.TotalCount.setGeometry(QtCore.QRect(570, 40, 54, 12))
|
||||
self.TotalCount.setObjectName("TotalCount")
|
||||
self.verticalLayout.addWidget(self.widget_2)
|
||||
DataNodeFrequencyTest.setCentralWidget(self.centralwidget)
|
||||
|
||||
self.retranslateUi(DataNodeFrequencyTest)
|
||||
self.tabWidget.setCurrentIndex(0)
|
||||
QtCore.QMetaObject.connectSlotsByName(DataNodeFrequencyTest)
|
||||
|
||||
def retranslateUi(self, DataNodeFrequencyTest):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
DataNodeFrequencyTest.setWindowTitle(_translate("DataNodeFrequencyTest", "DataNodeFrequencyTest"))
|
||||
self.groupBox_3.setTitle(_translate("DataNodeFrequencyTest", "GroupBox"))
|
||||
self.label.setText(_translate("DataNodeFrequencyTest", " 传感器类型:"))
|
||||
self.label_2.setText(_translate("DataNodeFrequencyTest", "信号发生器端口:"))
|
||||
self.label_7.setText(_translate("DataNodeFrequencyTest", " 万用表端口:"))
|
||||
self.ConnecDev_Btn.setText(_translate("DataNodeFrequencyTest", " 联机"))
|
||||
self.NFCRead_Btn.setText(_translate("DataNodeFrequencyTest", "NFC读取"))
|
||||
self.Test_Btn.setText(_translate("DataNodeFrequencyTest", "开始测试"))
|
||||
self.groupBox_2.setTitle(_translate("DataNodeFrequencyTest", "实时数据"))
|
||||
self.label_3.setText(_translate("DataNodeFrequencyTest", "信号发生器频率:"))
|
||||
self.label_10.setText(_translate("DataNodeFrequencyTest", "Hz"))
|
||||
self.label_4.setText(_translate("DataNodeFrequencyTest", "信号发生器幅值:"))
|
||||
self.label_11.setText(_translate("DataNodeFrequencyTest", "mv"))
|
||||
self.label_5.setText(_translate("DataNodeFrequencyTest", "万用表电压:"))
|
||||
self.label_9.setText(_translate("DataNodeFrequencyTest", "mv"))
|
||||
self.label_6.setText(_translate("DataNodeFrequencyTest", "今天测试个数:"))
|
||||
self.label_12.setText(_translate("DataNodeFrequencyTest", "个"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("DataNodeFrequencyTest", "Zigbee"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_6), _translate("DataNodeFrequencyTest", "NFC"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("DataNodeFrequencyTest", "Frequency"))
|
||||
self.label_8.setText(_translate("DataNodeFrequencyTest", " 当前状态:"))
|
||||
self.TestStatus.setText(_translate("DataNodeFrequencyTest", "TextLabel"))
|
||||
self.label_14.setText(_translate("DataNodeFrequencyTest", "累计测试个数:"))
|
||||
self.TotalCount.setText(_translate("DataNodeFrequencyTest", "TextLabel"))
|
||||
376
20231202/频响测试/DataNodeFrequencyTest/form.ui
Normal file
376
20231202/频响测试/DataNodeFrequencyTest/form.ui
Normal file
@ -0,0 +1,376 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>DataNodeFrequencyTest</class>
|
||||
<widget class="QWidget" name="DataNodeFrequencyTest">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>803</width>
|
||||
<height>660</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>DataNodeFrequencyTest</string>
|
||||
</property>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>480</y>
|
||||
<width>481</width>
|
||||
<height>131</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>端口</string>
|
||||
</property>
|
||||
<widget class="QComboBox" name="multimeter_Box">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>90</x>
|
||||
<y>20</y>
|
||||
<width>241</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QComboBox" name="Signal_Box">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>90</x>
|
||||
<y>80</y>
|
||||
<width>241</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>20</y>
|
||||
<width>61</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>万用表:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>80</y>
|
||||
<width>71</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>信号发生器:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QWidget" name="layoutWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>370</x>
|
||||
<y>20</y>
|
||||
<width>77</width>
|
||||
<height>101</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="5" column="0">
|
||||
<widget class="QPushButton" name="NFCRead_Btn">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>NFC读取</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QPushButton" name="ConnecDev_Btn">
|
||||
<property name="text">
|
||||
<string>联机</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<widget class="QPushButton" name="Test_Btn">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>开始测试</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<spacer name="verticalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>510</x>
|
||||
<y>10</y>
|
||||
<width>261</width>
|
||||
<height>171</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>实时数据</string>
|
||||
</property>
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>20</y>
|
||||
<width>101</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>信号发生器频率:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>70</y>
|
||||
<width>101</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>信号发生器幅值:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>120</y>
|
||||
<width>101</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>万用表电压:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLineEdit" name="Frequency_Edit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>130</x>
|
||||
<y>20</y>
|
||||
<width>91</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 28pt "Agency FB";
|
||||
color: rgb(0, 255, 0);</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLineEdit" name="Ampl_Edit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>130</x>
|
||||
<y>70</y>
|
||||
<width>91</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 28pt "Agency FB";
|
||||
color: rgb(0, 255, 0);</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLineEdit" name="VOLTage_Edit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>130</x>
|
||||
<y>120</y>
|
||||
<width>91</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 28pt "Agency FB";
|
||||
color: rgb(0, 255, 0);
|
||||
color: rgb(85, 255, 0);</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>230</x>
|
||||
<y>132</y>
|
||||
<width>54</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>mv</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>230</x>
|
||||
<y>30</y>
|
||||
<width>54</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Hz</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>230</x>
|
||||
<y>80</y>
|
||||
<width>54</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>mv</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QGroupBox" name="groupBox_3">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>10</y>
|
||||
<width>481</width>
|
||||
<height>311</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>频响曲线</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>510</x>
|
||||
<y>200</y>
|
||||
<width>271</width>
|
||||
<height>411</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="tabBarAutoHide">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab">
|
||||
<attribute name="title">
|
||||
<string>NFC</string>
|
||||
</attribute>
|
||||
<widget class="QTextEdit" name="NFC_textEdit">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>10</y>
|
||||
<width>241</width>
|
||||
<height>371</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_2">
|
||||
<attribute name="title">
|
||||
<string>ZigBee</string>
|
||||
</attribute>
|
||||
<widget class="QTextEdit" name="ZigBee_textEdit">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>10</y>
|
||||
<width>241</width>
|
||||
<height>371</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_5">
|
||||
<attribute name="title">
|
||||
<string> 频点</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QTextEdit" name="Result_edit">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>340</y>
|
||||
<width>481</width>
|
||||
<height>121</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="TestStatus">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>270</x>
|
||||
<y>620</y>
|
||||
<width>221</width>
|
||||
<height>31</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 28pt "Agency FB";</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
376
20231202/频响测试/DataNodeFrequencyTest/form.ui.autosave
Normal file
376
20231202/频响测试/DataNodeFrequencyTest/form.ui.autosave
Normal file
@ -0,0 +1,376 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>DataNodeFrequencyTest</class>
|
||||
<widget class="QWidget" name="DataNodeFrequencyTest">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>803</width>
|
||||
<height>660</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>DataNodeFrequencyTest</string>
|
||||
</property>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>480</y>
|
||||
<width>481</width>
|
||||
<height>131</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>端口</string>
|
||||
</property>
|
||||
<widget class="QComboBox" name="multimeter_Box">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>90</x>
|
||||
<y>20</y>
|
||||
<width>241</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QComboBox" name="Signal_Box">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>90</x>
|
||||
<y>80</y>
|
||||
<width>241</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>20</y>
|
||||
<width>61</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>万用表:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>80</y>
|
||||
<width>71</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>信号发生器:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QWidget" name="layoutWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>370</x>
|
||||
<y>20</y>
|
||||
<width>77</width>
|
||||
<height>101</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="5" column="0">
|
||||
<widget class="QPushButton" name="NFCRead_Btn">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>NFC读取</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QPushButton" name="ConnecDev_Btn">
|
||||
<property name="text">
|
||||
<string>联机</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<widget class="QPushButton" name="Test_Btn">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>开始测试</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<spacer name="verticalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>510</x>
|
||||
<y>10</y>
|
||||
<width>261</width>
|
||||
<height>171</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>实时数据</string>
|
||||
</property>
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>20</y>
|
||||
<width>101</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>信号发生器频率:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>70</y>
|
||||
<width>101</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>信号发生器幅值:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>120</y>
|
||||
<width>101</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>万用表电压:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLineEdit" name="Frequency_Edit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>130</x>
|
||||
<y>20</y>
|
||||
<width>91</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 28pt "Agency FB";
|
||||
color: rgb(0, 255, 0);</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLineEdit" name="Ampl_Edit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>130</x>
|
||||
<y>70</y>
|
||||
<width>91</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 28pt "Agency FB";
|
||||
color: rgb(0, 255, 0);</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLineEdit" name="VOLTage_Edit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>130</x>
|
||||
<y>120</y>
|
||||
<width>91</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 28pt "Agency FB";
|
||||
color: rgb(0, 255, 0);
|
||||
color: rgb(85, 255, 0);</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>230</x>
|
||||
<y>132</y>
|
||||
<width>54</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>mv</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>230</x>
|
||||
<y>30</y>
|
||||
<width>54</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Hz</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>230</x>
|
||||
<y>80</y>
|
||||
<width>54</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>mv</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QGroupBox" name="groupBox_3">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>10</y>
|
||||
<width>481</width>
|
||||
<height>311</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>频响曲线</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>510</x>
|
||||
<y>200</y>
|
||||
<width>271</width>
|
||||
<height>411</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="tabBarAutoHide">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab">
|
||||
<attribute name="title">
|
||||
<string>NFC</string>
|
||||
</attribute>
|
||||
<widget class="QTextEdit" name="NFC_textEdit">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>10</y>
|
||||
<width>241</width>
|
||||
<height>371</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_2">
|
||||
<attribute name="title">
|
||||
<string>ZigBee</string>
|
||||
</attribute>
|
||||
<widget class="QTextEdit" name="ZigBee_textEdit">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>10</y>
|
||||
<width>241</width>
|
||||
<height>371</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_5">
|
||||
<attribute name="title">
|
||||
<string> 频点</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QTextEdit" name="Result_edit">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>340</y>
|
||||
<width>481</width>
|
||||
<height>121</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="TestStatus">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>270</x>
|
||||
<y>620</y>
|
||||
<width>221</width>
|
||||
<height>31</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 28pt "Agency FB";</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
29
20231202/频响测试/DataNodeFrequencyTest/main.py
Normal file
29
20231202/频响测试/DataNodeFrequencyTest/main.py
Normal file
@ -0,0 +1,29 @@
|
||||
# This Python file uses the following encoding: utf-8
|
||||
import os
|
||||
from pathlib import Path
|
||||
import sys
|
||||
|
||||
from PySide2.QtWidgets import QApplication, QWidget
|
||||
from PySide2.QtCore import QFile
|
||||
from PySide2.QtUiTools import QUiLoader
|
||||
|
||||
|
||||
class DataNodeFrequencyTest(QWidget):
|
||||
def __init__(self):
|
||||
super(DataNodeFrequencyTest, self).__init__()
|
||||
self.load_ui()
|
||||
|
||||
def load_ui(self):
|
||||
loader = QUiLoader()
|
||||
path = os.fspath(Path(__file__).resolve().parent / "form.ui")
|
||||
ui_file = QFile(path)
|
||||
ui_file.open(QFile.ReadOnly)
|
||||
loader.load(ui_file, self)
|
||||
ui_file.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = QApplication([])
|
||||
widget = DataNodeFrequencyTest()
|
||||
widget.show()
|
||||
sys.exit(app.exec_())
|
||||
3
20231202/频响测试/DataNodeFrequencyTest/main.pyproject
Normal file
3
20231202/频响测试/DataNodeFrequencyTest/main.pyproject
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"files": ["main.py", "form.ui"]
|
||||
}
|
||||
204
20231202/频响测试/DataNodeFrequencyTest/main.pyproject.user
Normal file
204
20231202/频响测试/DataNodeFrequencyTest/main.pyproject.user
Normal file
@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 4.15.0, 2022-05-26T09:27:12. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
<value type="QByteArray">{168666bd-c3a3-4089-8a9e-043b6ddc15f8}</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||
<value type="int">0</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
||||
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||
<value type="QString" key="language">Cpp</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||
<value type="QString" key="language">QmlJS</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
|
||||
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
||||
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
|
||||
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
|
||||
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
|
||||
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
|
||||
<value type="bool" key="AutoTest.Framework.Boost">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.CTest">false</value>
|
||||
<value type="bool" key="AutoTest.Framework.Catch">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.GTest">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
|
||||
<value type="int" key="AutoTest.RunAfterBuild">0</value>
|
||||
<value type="bool" key="AutoTest.UseGlobal">true</value>
|
||||
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
|
||||
<value type="QString">-fno-delayed-template-parsing</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
|
||||
<value type="QString" key="ClangCodeModel.WarningConfigId">Builtin.BuildSystem</value>
|
||||
<valuemap type="QVariantMap" key="ClangTools">
|
||||
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
|
||||
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
|
||||
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
|
||||
<value type="int" key="ClangTools.ParallelJobs">3</value>
|
||||
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
|
||||
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
|
||||
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
|
||||
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="QString" key="DeviceType">Desktop</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop (x86-windows-msvc2019-pe-32bit)</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop (x86-windows-msvc2019-pe-32bit)</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{fa19fc04-f534-43b3-9bf0-1e4de7e3a94a}</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">-1</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">0</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
|
||||
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
|
||||
<value type="QString">cpu-cycles</value>
|
||||
</valuelist>
|
||||
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
|
||||
<value type="int" key="Analyzer.Perf.Frequency">250</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
|
||||
<value type="QString">-e</value>
|
||||
<value type="QString">cpu-cycles</value>
|
||||
<value type="QString">--call-graph</value>
|
||||
<value type="QString">dwarf,4096</value>
|
||||
<value type="QString">-F</value>
|
||||
<value type="QString">250</value>
|
||||
</valuelist>
|
||||
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
|
||||
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
||||
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
||||
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
||||
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
||||
<value type="QString" key="Analyzer.Valgrind.Callgrind.Arguments"></value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
|
||||
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.Memcheck.Arguments"></value>
|
||||
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
||||
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.ValgrindArguments"></value>
|
||||
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
||||
<value type="int">0</value>
|
||||
<value type="int">1</value>
|
||||
<value type="int">2</value>
|
||||
<value type="int">3</value>
|
||||
<value type="int">4</value>
|
||||
<value type="int">5</value>
|
||||
<value type="int">6</value>
|
||||
<value type="int">7</value>
|
||||
<value type="int">8</value>
|
||||
<value type="int">9</value>
|
||||
<value type="int">10</value>
|
||||
<value type="int">11</value>
|
||||
<value type="int">12</value>
|
||||
<value type="int">13</value>
|
||||
<value type="int">14</value>
|
||||
</valuelist>
|
||||
<valuelist type="QVariantList" key="CustomOutputParsers"/>
|
||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">E:/WorkSpace/测试工具/chaos/频响测试/DataNodeFrequencyTest/main.py</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">PythonEditor.RunConfiguration.E:/WorkSpace/测试工具/chaos/频响测试/DataNodeFrequencyTest/main.py</value>
|
||||
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">E:/WorkSpace/测试工具/chaos/频响测试/DataNodeFrequencyTest/main.py</value>
|
||||
<value type="QString" key="PythonEditor.RunConfiguation.Interpreter">{d245bd83-529a-4496-be6d-3c8c4bcbfa45}</value>
|
||||
<value type="QString" key="PythonEditor.RunConfiguation.Script">E:\WorkSpace\测试工具\chaos\频响测试\DataNodeFrequencyTest\main.py</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
<value type="QString" key="RunConfiguration.WorkingDirectory.default">E:/WorkSpace/测试工具/chaos/频响测试/DataNodeFrequencyTest</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||
<value type="int">1</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||
<value type="int">22</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>Version</variable>
|
||||
<value type="int">22</value>
|
||||
</data>
|
||||
</qtcreator>
|
||||
11
20231202/频响测试/DataNodeFrequencyTest/untitled/main.cpp
Normal file
11
20231202/频响测试/DataNodeFrequencyTest/untitled/main.cpp
Normal file
@ -0,0 +1,11 @@
|
||||
#include "mainwindow.h"
|
||||
|
||||
#include <QApplication>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication a(argc, argv);
|
||||
MainWindow w;
|
||||
w.show();
|
||||
return a.exec();
|
||||
}
|
||||
15
20231202/频响测试/DataNodeFrequencyTest/untitled/mainwindow.cpp
Normal file
15
20231202/频响测试/DataNodeFrequencyTest/untitled/mainwindow.cpp
Normal file
@ -0,0 +1,15 @@
|
||||
#include "mainwindow.h"
|
||||
#include "ui_mainwindow.h"
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
: QMainWindow(parent)
|
||||
, ui(new Ui::MainWindow)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
21
20231202/频响测试/DataNodeFrequencyTest/untitled/mainwindow.h
Normal file
21
20231202/频响测试/DataNodeFrequencyTest/untitled/mainwindow.h
Normal file
@ -0,0 +1,21 @@
|
||||
#ifndef MAINWINDOW_H
|
||||
#define MAINWINDOW_H
|
||||
|
||||
#include <QMainWindow>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
namespace Ui { class MainWindow; }
|
||||
QT_END_NAMESPACE
|
||||
|
||||
class MainWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
MainWindow(QWidget *parent = nullptr);
|
||||
~MainWindow();
|
||||
|
||||
private:
|
||||
Ui::MainWindow *ui;
|
||||
};
|
||||
#endif // MAINWINDOW_H
|
||||
301
20231202/频响测试/DataNodeFrequencyTest/untitled/mainwindow.py
Normal file
301
20231202/频响测试/DataNodeFrequencyTest/untitled/mainwindow.py
Normal file
@ -0,0 +1,301 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'mainwindow.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.6
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
|
||||
class Ui_DataNodeFrequencyTest(object):
|
||||
def setupUi(self, DataNodeFrequencyTest):
|
||||
DataNodeFrequencyTest.setObjectName("DataNodeFrequencyTest")
|
||||
DataNodeFrequencyTest.resize(850, 600)
|
||||
self.centralwidget = QtWidgets.QWidget(DataNodeFrequencyTest)
|
||||
self.centralwidget.setObjectName("centralwidget")
|
||||
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
|
||||
self.verticalLayout.setObjectName("verticalLayout")
|
||||
self.widget = QtWidgets.QWidget(self.centralwidget)
|
||||
self.widget.setObjectName("widget")
|
||||
self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget)
|
||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||
self.widget_3 = QtWidgets.QWidget(self.widget)
|
||||
self.widget_3.setMinimumSize(QtCore.QSize(500, 0))
|
||||
self.widget_3.setObjectName("widget_3")
|
||||
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.widget_3)
|
||||
self.verticalLayout_3.setObjectName("verticalLayout_3")
|
||||
self.widget_7 = QtWidgets.QWidget(self.widget_3)
|
||||
self.widget_7.setMinimumSize(QtCore.QSize(0, 300))
|
||||
self.widget_7.setObjectName("widget_7")
|
||||
self.horizontalLayout_8 = QtWidgets.QHBoxLayout(self.widget_7)
|
||||
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
|
||||
self.groupBox_3 = QtWidgets.QGroupBox(self.widget_7)
|
||||
self.groupBox_3.setObjectName("groupBox_3")
|
||||
self.horizontalLayout_8.addWidget(self.groupBox_3)
|
||||
self.verticalLayout_3.addWidget(self.widget_7)
|
||||
self.widget_9 = QtWidgets.QWidget(self.widget_3)
|
||||
self.widget_9.setMinimumSize(QtCore.QSize(120, 0))
|
||||
self.widget_9.setObjectName("widget_9")
|
||||
self.horizontalLayout_12 = QtWidgets.QHBoxLayout(self.widget_9)
|
||||
self.horizontalLayout_12.setObjectName("horizontalLayout_12")
|
||||
self.verticalLayout_4 = QtWidgets.QVBoxLayout()
|
||||
self.verticalLayout_4.setObjectName("verticalLayout_4")
|
||||
self.horizontalLayout_11 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_11.setObjectName("horizontalLayout_11")
|
||||
self.label = QtWidgets.QLabel(self.widget_9)
|
||||
self.label.setMinimumSize(QtCore.QSize(100, 0))
|
||||
self.label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label.setObjectName("label")
|
||||
self.horizontalLayout_11.addWidget(self.label)
|
||||
self.sensorType_Box = QtWidgets.QComboBox(self.widget_9)
|
||||
self.sensorType_Box.setMinimumSize(QtCore.QSize(220, 0))
|
||||
self.sensorType_Box.setMaximumSize(QtCore.QSize(220, 16777215))
|
||||
self.sensorType_Box.setObjectName("sensorType_Box")
|
||||
self.horizontalLayout_11.addWidget(self.sensorType_Box)
|
||||
self.verticalLayout_4.addLayout(self.horizontalLayout_11)
|
||||
self.horizontalLayout_10 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_10.setObjectName("horizontalLayout_10")
|
||||
self.label_7 = QtWidgets.QLabel(self.widget_9)
|
||||
self.label_7.setMinimumSize(QtCore.QSize(120, 0))
|
||||
self.label_7.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_7.setObjectName("label_7")
|
||||
self.horizontalLayout_10.addWidget(self.label_7)
|
||||
self.multimeter_Box = QtWidgets.QComboBox(self.widget_9)
|
||||
self.multimeter_Box.setMinimumSize(QtCore.QSize(220, 0))
|
||||
self.multimeter_Box.setMaximumSize(QtCore.QSize(220, 16777215))
|
||||
self.multimeter_Box.setObjectName("multimeter_Box")
|
||||
self.horizontalLayout_10.addWidget(self.multimeter_Box)
|
||||
self.verticalLayout_4.addLayout(self.horizontalLayout_10)
|
||||
self.horizontalLayout_9 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_9.setObjectName("horizontalLayout_9")
|
||||
self.label_2 = QtWidgets.QLabel(self.widget_9)
|
||||
self.label_2.setMinimumSize(QtCore.QSize(120, 0))
|
||||
self.label_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_2.setObjectName("label_2")
|
||||
self.horizontalLayout_9.addWidget(self.label_2)
|
||||
self.Signal_Edit = QtWidgets.QLineEdit(self.widget_9)
|
||||
self.Signal_Edit.setMinimumSize(QtCore.QSize(220, 0))
|
||||
self.Signal_Edit.setMaximumSize(QtCore.QSize(220, 16777215))
|
||||
self.Signal_Edit.setObjectName("Signal_Edit")
|
||||
self.horizontalLayout_9.addWidget(self.Signal_Edit)
|
||||
self.verticalLayout_4.addLayout(self.horizontalLayout_9)
|
||||
self.horizontalLayout_12.addLayout(self.verticalLayout_4)
|
||||
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_12.addItem(spacerItem)
|
||||
self.verticalLayout_6 = QtWidgets.QVBoxLayout()
|
||||
self.verticalLayout_6.setObjectName("verticalLayout_6")
|
||||
self.ConnecDev_Btn = QtWidgets.QPushButton(self.widget_9)
|
||||
self.ConnecDev_Btn.setObjectName("ConnecDev_Btn")
|
||||
self.verticalLayout_6.addWidget(self.ConnecDev_Btn)
|
||||
self.NFCRead_Btn = QtWidgets.QPushButton(self.widget_9)
|
||||
self.NFCRead_Btn.setEnabled(False)
|
||||
self.NFCRead_Btn.setObjectName("NFCRead_Btn")
|
||||
self.verticalLayout_6.addWidget(self.NFCRead_Btn)
|
||||
self.Test_Btn = QtWidgets.QPushButton(self.widget_9)
|
||||
self.Test_Btn.setEnabled(False)
|
||||
self.Test_Btn.setObjectName("Test_Btn")
|
||||
self.verticalLayout_6.addWidget(self.Test_Btn)
|
||||
self.horizontalLayout_12.addLayout(self.verticalLayout_6)
|
||||
self.verticalLayout_3.addWidget(self.widget_9)
|
||||
self.horizontalLayout.addWidget(self.widget_3)
|
||||
self.widget_4 = QtWidgets.QWidget(self.widget)
|
||||
self.widget_4.setObjectName("widget_4")
|
||||
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.widget_4)
|
||||
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
||||
self.widget_5 = QtWidgets.QWidget(self.widget_4)
|
||||
self.widget_5.setMinimumSize(QtCore.QSize(300, 240))
|
||||
self.widget_5.setObjectName("widget_5")
|
||||
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget_5)
|
||||
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
||||
self.groupBox_2 = QtWidgets.QGroupBox(self.widget_5)
|
||||
self.groupBox_2.setObjectName("groupBox_2")
|
||||
self.widget1 = QtWidgets.QWidget(self.groupBox_2)
|
||||
self.widget1.setGeometry(QtCore.QRect(10, 22, 259, 32))
|
||||
self.widget1.setObjectName("widget1")
|
||||
self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.widget1)
|
||||
self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
|
||||
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
|
||||
self.label_3 = QtWidgets.QLabel(self.widget1)
|
||||
self.label_3.setMinimumSize(QtCore.QSize(100, 0))
|
||||
self.label_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_3.setObjectName("label_3")
|
||||
self.horizontalLayout_4.addWidget(self.label_3)
|
||||
self.Frequency_Edit = QtWidgets.QLineEdit(self.widget1)
|
||||
self.Frequency_Edit.setEnabled(False)
|
||||
self.Frequency_Edit.setMinimumSize(QtCore.QSize(0, 30))
|
||||
self.Frequency_Edit.setStyleSheet("font: 75 20pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 170, 0);")
|
||||
self.Frequency_Edit.setObjectName("Frequency_Edit")
|
||||
self.horizontalLayout_4.addWidget(self.Frequency_Edit)
|
||||
self.label_10 = QtWidgets.QLabel(self.widget1)
|
||||
self.label_10.setObjectName("label_10")
|
||||
self.horizontalLayout_4.addWidget(self.label_10)
|
||||
self.widget2 = QtWidgets.QWidget(self.groupBox_2)
|
||||
self.widget2.setGeometry(QtCore.QRect(10, 71, 259, 32))
|
||||
self.widget2.setObjectName("widget2")
|
||||
self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.widget2)
|
||||
self.horizontalLayout_5.setContentsMargins(0, 0, 0, 0)
|
||||
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
|
||||
self.label_4 = QtWidgets.QLabel(self.widget2)
|
||||
self.label_4.setMinimumSize(QtCore.QSize(100, 0))
|
||||
self.label_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_4.setObjectName("label_4")
|
||||
self.horizontalLayout_5.addWidget(self.label_4)
|
||||
self.Ampl_Edit = QtWidgets.QLineEdit(self.widget2)
|
||||
self.Ampl_Edit.setEnabled(False)
|
||||
self.Ampl_Edit.setMinimumSize(QtCore.QSize(0, 30))
|
||||
self.Ampl_Edit.setStyleSheet("font: 75 20pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 170, 0);")
|
||||
self.Ampl_Edit.setObjectName("Ampl_Edit")
|
||||
self.horizontalLayout_5.addWidget(self.Ampl_Edit)
|
||||
self.label_11 = QtWidgets.QLabel(self.widget2)
|
||||
self.label_11.setObjectName("label_11")
|
||||
self.horizontalLayout_5.addWidget(self.label_11)
|
||||
self.widget3 = QtWidgets.QWidget(self.groupBox_2)
|
||||
self.widget3.setGeometry(QtCore.QRect(10, 120, 259, 32))
|
||||
self.widget3.setObjectName("widget3")
|
||||
self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.widget3)
|
||||
self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0)
|
||||
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
|
||||
self.label_5 = QtWidgets.QLabel(self.widget3)
|
||||
self.label_5.setMinimumSize(QtCore.QSize(100, 0))
|
||||
self.label_5.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_5.setObjectName("label_5")
|
||||
self.horizontalLayout_6.addWidget(self.label_5)
|
||||
self.VOLTage_Edit = QtWidgets.QLineEdit(self.widget3)
|
||||
self.VOLTage_Edit.setEnabled(False)
|
||||
self.VOLTage_Edit.setMinimumSize(QtCore.QSize(0, 30))
|
||||
self.VOLTage_Edit.setStyleSheet("font: 75 20pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 170, 0);")
|
||||
self.VOLTage_Edit.setObjectName("VOLTage_Edit")
|
||||
self.horizontalLayout_6.addWidget(self.VOLTage_Edit)
|
||||
self.label_9 = QtWidgets.QLabel(self.widget3)
|
||||
self.label_9.setObjectName("label_9")
|
||||
self.horizontalLayout_6.addWidget(self.label_9)
|
||||
self.widget4 = QtWidgets.QWidget(self.groupBox_2)
|
||||
self.widget4.setGeometry(QtCore.QRect(10, 169, 259, 32))
|
||||
self.widget4.setObjectName("widget4")
|
||||
self.horizontalLayout_7 = QtWidgets.QHBoxLayout(self.widget4)
|
||||
self.horizontalLayout_7.setContentsMargins(0, 0, 0, 0)
|
||||
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
|
||||
self.label_6 = QtWidgets.QLabel(self.widget4)
|
||||
self.label_6.setMinimumSize(QtCore.QSize(100, 0))
|
||||
self.label_6.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_6.setObjectName("label_6")
|
||||
self.horizontalLayout_7.addWidget(self.label_6)
|
||||
self.Count_Edit = QtWidgets.QLineEdit(self.widget4)
|
||||
self.Count_Edit.setEnabled(False)
|
||||
self.Count_Edit.setMinimumSize(QtCore.QSize(0, 30))
|
||||
self.Count_Edit.setStyleSheet("font: 75 20pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 170, 0);")
|
||||
self.Count_Edit.setObjectName("Count_Edit")
|
||||
self.horizontalLayout_7.addWidget(self.Count_Edit)
|
||||
self.label_12 = QtWidgets.QLabel(self.widget4)
|
||||
self.label_12.setObjectName("label_12")
|
||||
self.horizontalLayout_7.addWidget(self.label_12)
|
||||
self.horizontalLayout_2.addWidget(self.groupBox_2)
|
||||
self.verticalLayout_2.addWidget(self.widget_5)
|
||||
self.widget_6 = QtWidgets.QWidget(self.widget_4)
|
||||
self.widget_6.setObjectName("widget_6")
|
||||
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.widget_6)
|
||||
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
|
||||
self.tabWidget = QtWidgets.QTabWidget(self.widget_6)
|
||||
self.tabWidget.setObjectName("tabWidget")
|
||||
self.tab_3 = QtWidgets.QWidget()
|
||||
self.tab_3.setObjectName("tab_3")
|
||||
self.horizontalLayout_15 = QtWidgets.QHBoxLayout(self.tab_3)
|
||||
self.horizontalLayout_15.setObjectName("horizontalLayout_15")
|
||||
self.ZigBee_Edit = QtWidgets.QTextEdit(self.tab_3)
|
||||
self.ZigBee_Edit.setObjectName("ZigBee_Edit")
|
||||
self.horizontalLayout_15.addWidget(self.ZigBee_Edit)
|
||||
self.tabWidget.addTab(self.tab_3, "")
|
||||
self.tab_6 = QtWidgets.QWidget()
|
||||
self.tab_6.setObjectName("tab_6")
|
||||
self.horizontalLayout_16 = QtWidgets.QHBoxLayout(self.tab_6)
|
||||
self.horizontalLayout_16.setObjectName("horizontalLayout_16")
|
||||
self.NFC_Edit = QtWidgets.QTextEdit(self.tab_6)
|
||||
self.NFC_Edit.setObjectName("NFC_Edit")
|
||||
self.horizontalLayout_16.addWidget(self.NFC_Edit)
|
||||
self.tabWidget.addTab(self.tab_6, "")
|
||||
self.tab_4 = QtWidgets.QWidget()
|
||||
self.tab_4.setObjectName("tab_4")
|
||||
self.tabWidget.addTab(self.tab_4, "")
|
||||
self.horizontalLayout_3.addWidget(self.tabWidget)
|
||||
self.verticalLayout_2.addWidget(self.widget_6)
|
||||
self.horizontalLayout.addWidget(self.widget_4)
|
||||
self.verticalLayout.addWidget(self.widget)
|
||||
self.widget_2 = QtWidgets.QWidget(self.centralwidget)
|
||||
self.widget_2.setMinimumSize(QtCore.QSize(0, 80))
|
||||
self.widget_2.setMaximumSize(QtCore.QSize(16777215, 80))
|
||||
self.widget_2.setObjectName("widget_2")
|
||||
self.horizontalLayout_17 = QtWidgets.QHBoxLayout(self.widget_2)
|
||||
self.horizontalLayout_17.setObjectName("horizontalLayout_17")
|
||||
self.horizontalLayout_13 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_13.setObjectName("horizontalLayout_13")
|
||||
self.label_8 = QtWidgets.QLabel(self.widget_2)
|
||||
self.label_8.setObjectName("label_8")
|
||||
self.horizontalLayout_13.addWidget(self.label_8)
|
||||
self.TestStatus = QtWidgets.QLabel(self.widget_2)
|
||||
self.TestStatus.setStyleSheet("font: 75 28pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 170, 0);")
|
||||
self.TestStatus.setObjectName("TestStatus")
|
||||
self.horizontalLayout_13.addWidget(self.TestStatus)
|
||||
self.horizontalLayout_17.addLayout(self.horizontalLayout_13)
|
||||
spacerItem1 = QtWidgets.QSpacerItem(56, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_17.addItem(spacerItem1)
|
||||
self.horizontalLayout_14 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_14.setObjectName("horizontalLayout_14")
|
||||
self.label_14 = QtWidgets.QLabel(self.widget_2)
|
||||
self.label_14.setObjectName("label_14")
|
||||
self.horizontalLayout_14.addWidget(self.label_14)
|
||||
self.TotalCount = QtWidgets.QLabel(self.widget_2)
|
||||
self.TotalCount.setStyleSheet("font: 75 28pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 170, 0);")
|
||||
self.TotalCount.setObjectName("TotalCount")
|
||||
self.horizontalLayout_14.addWidget(self.TotalCount)
|
||||
self.horizontalLayout_17.addLayout(self.horizontalLayout_14)
|
||||
spacerItem2 = QtWidgets.QSpacerItem(55, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_17.addItem(spacerItem2)
|
||||
self.encourage_label = QtWidgets.QLabel(self.widget_2)
|
||||
self.encourage_label.setStyleSheet("font: 75 28pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 170, 0);")
|
||||
self.encourage_label.setObjectName("encourage_label")
|
||||
self.horizontalLayout_17.addWidget(self.encourage_label)
|
||||
self.verticalLayout.addWidget(self.widget_2)
|
||||
DataNodeFrequencyTest.setCentralWidget(self.centralwidget)
|
||||
|
||||
self.retranslateUi(DataNodeFrequencyTest)
|
||||
self.tabWidget.setCurrentIndex(0)
|
||||
QtCore.QMetaObject.connectSlotsByName(DataNodeFrequencyTest)
|
||||
|
||||
def retranslateUi(self, DataNodeFrequencyTest):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
DataNodeFrequencyTest.setWindowTitle(_translate("DataNodeFrequencyTest", "DataNodeFrequencyTest"))
|
||||
self.groupBox_3.setTitle(_translate("DataNodeFrequencyTest", "频响曲线"))
|
||||
self.label.setText(_translate("DataNodeFrequencyTest", " 传感器类型:"))
|
||||
self.label_7.setText(_translate("DataNodeFrequencyTest", " 万用表端口:"))
|
||||
self.label_2.setText(_translate("DataNodeFrequencyTest", "信号发生器端口:"))
|
||||
self.ConnecDev_Btn.setText(_translate("DataNodeFrequencyTest", " 联机"))
|
||||
self.NFCRead_Btn.setText(_translate("DataNodeFrequencyTest", "NFC读取"))
|
||||
self.Test_Btn.setText(_translate("DataNodeFrequencyTest", "开始测试"))
|
||||
self.groupBox_2.setTitle(_translate("DataNodeFrequencyTest", "实时数据"))
|
||||
self.label_3.setText(_translate("DataNodeFrequencyTest", "信号发生器频率:"))
|
||||
self.label_10.setText(_translate("DataNodeFrequencyTest", "Hz"))
|
||||
self.label_4.setText(_translate("DataNodeFrequencyTest", "信号发生器幅值:"))
|
||||
self.label_11.setText(_translate("DataNodeFrequencyTest", "mv"))
|
||||
self.label_5.setText(_translate("DataNodeFrequencyTest", "万用表电压:"))
|
||||
self.label_9.setText(_translate("DataNodeFrequencyTest", "mv"))
|
||||
self.label_6.setText(_translate("DataNodeFrequencyTest", "今天测试个数:"))
|
||||
self.label_12.setText(_translate("DataNodeFrequencyTest", "个"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("DataNodeFrequencyTest", "Zigbee"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_6), _translate("DataNodeFrequencyTest", "NFC"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("DataNodeFrequencyTest", "Frequency"))
|
||||
self.label_8.setText(_translate("DataNodeFrequencyTest", " 当前状态:"))
|
||||
self.TestStatus.setText(_translate("DataNodeFrequencyTest", "TextLabel"))
|
||||
self.label_14.setText(_translate("DataNodeFrequencyTest", "累计测试个数:"))
|
||||
self.TotalCount.setText(_translate("DataNodeFrequencyTest", "TextLabel"))
|
||||
self.encourage_label.setText(_translate("DataNodeFrequencyTest", "TextLabel"))
|
||||
598
20231202/频响测试/DataNodeFrequencyTest/untitled/mainwindow.ui
Normal file
598
20231202/频响测试/DataNodeFrequencyTest/untitled/mainwindow.ui
Normal file
@ -0,0 +1,598 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>DataNodeFrequencyTest</class>
|
||||
<widget class="QMainWindow" name="DataNodeFrequencyTest">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>850</width>
|
||||
<height>600</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>DataNodeFrequencyTest</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_3" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>500</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_7" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>300</height>
|
||||
</size>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_3">
|
||||
<property name="title">
|
||||
<string>频响曲线</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_9" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>120</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_12">
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_11">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string> 传感器类型:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="sensorType_Box">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>220</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>220</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_10">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>120</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string> 万用表端口:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="multimeter_Box">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>220</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>220</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>120</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>信号发生器端口:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="Signal_Edit">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>220</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>220</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_6">
|
||||
<item>
|
||||
<widget class="QPushButton" name="ConnecDev_Btn">
|
||||
<property name="text">
|
||||
<string> 联机</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="NFCRead_Btn">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>NFC读取</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="Test_Btn">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>开始测试</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_4" native="true">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_5" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>300</width>
|
||||
<height>240</height>
|
||||
</size>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="title">
|
||||
<string>实时数据</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>22</y>
|
||||
<width>259</width>
|
||||
<height>32</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>信号发生器频率:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="Frequency_Edit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 75 20pt "微软雅黑";
|
||||
color: rgb(255, 170, 0);</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="text">
|
||||
<string>Hz</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>71</y>
|
||||
<width>259</width>
|
||||
<height>32</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>信号发生器幅值:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="Ampl_Edit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 75 20pt "微软雅黑";
|
||||
color: rgb(255, 170, 0);</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="text">
|
||||
<string>mv</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>120</y>
|
||||
<width>259</width>
|
||||
<height>32</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>万用表电压:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="VOLTage_Edit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 75 20pt "微软雅黑";
|
||||
color: rgb(255, 170, 0);</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string>mv</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>169</y>
|
||||
<width>259</width>
|
||||
<height>32</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>今天测试个数:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="Count_Edit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 75 20pt "微软雅黑";
|
||||
color: rgb(255, 170, 0);</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_12">
|
||||
<property name="text">
|
||||
<string>个</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_6" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab_3">
|
||||
<attribute name="title">
|
||||
<string>Zigbee</string>
|
||||
</attribute>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_15">
|
||||
<item>
|
||||
<widget class="QTextEdit" name="ZigBee_Edit"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_6">
|
||||
<attribute name="title">
|
||||
<string>NFC</string>
|
||||
</attribute>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_16">
|
||||
<item>
|
||||
<widget class="QTextEdit" name="NFC_Edit"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_4">
|
||||
<attribute name="title">
|
||||
<string>Frequency</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_2" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>80</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>80</height>
|
||||
</size>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_17">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_13">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string> 当前状态:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="TestStatus">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 75 28pt "微软雅黑";
|
||||
color: rgb(255, 170, 0);</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>56</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_14">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_14">
|
||||
<property name="text">
|
||||
<string>累计测试个数:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="TotalCount">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 75 28pt "微软雅黑";
|
||||
color: rgb(255, 170, 0);</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>55</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="encourage_label">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 75 28pt "微软雅黑";
|
||||
color: rgb(255, 170, 0);</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
@ -0,0 +1,598 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>DataNodeFrequencyTest</class>
|
||||
<widget class="QMainWindow" name="DataNodeFrequencyTest">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>860</width>
|
||||
<height>600</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>DataNodeFrequencyTest</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_3" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>500</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_7" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>300</height>
|
||||
</size>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_3">
|
||||
<property name="title">
|
||||
<string>频响曲线</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_9" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>120</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_12">
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_11">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string> 传感器类型:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="sensorType_Box">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>220</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>220</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_10">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>120</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string> 万用表端口:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="multimeter_Box">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>220</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>220</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>120</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>信号发生器端口:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="Signal_Edit">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>220</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>220</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_6">
|
||||
<item>
|
||||
<widget class="QPushButton" name="ConnecDev_Btn">
|
||||
<property name="text">
|
||||
<string> 联机</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="NFCRead_Btn">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>NFC读取</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="Test_Btn">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>开始测试</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_4" native="true">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_5" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>300</width>
|
||||
<height>240</height>
|
||||
</size>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="title">
|
||||
<string>实时数据</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="layoutWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>22</y>
|
||||
<width>259</width>
|
||||
<height>32</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>信号发生器频率:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="Frequency_Edit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 75 20pt "微软雅黑";
|
||||
color: rgb(255, 170, 0);</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="text">
|
||||
<string>Hz</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="layoutWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>71</y>
|
||||
<width>259</width>
|
||||
<height>32</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>信号发生器幅值:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="Ampl_Edit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 75 20pt "微软雅黑";
|
||||
color: rgb(255, 170, 0);</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="text">
|
||||
<string>mv</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="layoutWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>120</y>
|
||||
<width>259</width>
|
||||
<height>32</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>万用表电压:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="VOLTage_Edit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 75 20pt "微软雅黑";
|
||||
color: rgb(255, 170, 0);</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string>mv</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="layoutWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>169</y>
|
||||
<width>259</width>
|
||||
<height>32</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>今天测试个数:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="Count_Edit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 75 20pt "微软雅黑";
|
||||
color: rgb(255, 170, 0);</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_12">
|
||||
<property name="text">
|
||||
<string>个</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_6" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab_3">
|
||||
<attribute name="title">
|
||||
<string>Zigbee</string>
|
||||
</attribute>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_15">
|
||||
<item>
|
||||
<widget class="QTextEdit" name="ZigBee_Edit"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_6">
|
||||
<attribute name="title">
|
||||
<string>NFC</string>
|
||||
</attribute>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_16">
|
||||
<item>
|
||||
<widget class="QTextEdit" name="NFC_Edit"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_4">
|
||||
<attribute name="title">
|
||||
<string>Frequency</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_2" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>80</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>80</height>
|
||||
</size>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_17">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_13">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string> 当前状态:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="TestStatus">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 75 28pt "微软雅黑";
|
||||
color: rgb(255, 170, 0);</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>56</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_14">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_14">
|
||||
<property name="text">
|
||||
<string>累计测试个数:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="TotalCount">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 75 28pt "微软雅黑";
|
||||
color: rgb(255, 170, 0);</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>55</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="encourage_label">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 75 28pt "微软雅黑";
|
||||
color: rgb(255, 170, 0);</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
24
20231202/频响测试/DataNodeFrequencyTest/untitled/untitled.pro
Normal file
24
20231202/频响测试/DataNodeFrequencyTest/untitled/untitled.pro
Normal file
@ -0,0 +1,24 @@
|
||||
QT += core gui
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
CONFIG += c++11
|
||||
|
||||
# You can make your code fail to compile if it uses deprecated APIs.
|
||||
# In order to do so, uncomment the following line.
|
||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
SOURCES += \
|
||||
main.cpp \
|
||||
mainwindow.cpp
|
||||
|
||||
HEADERS += \
|
||||
mainwindow.h
|
||||
|
||||
FORMS += \
|
||||
mainwindow.ui
|
||||
|
||||
# Default rules for deployment.
|
||||
qnx: target.path = /tmp/$${TARGET}/bin
|
||||
else: unix:!android: target.path = /opt/$${TARGET}/bin
|
||||
!isEmpty(target.path): INSTALLS += target
|
||||
288
20231202/频响测试/DataNodeFrequencyTest/untitled/untitled.pro.user
Normal file
288
20231202/频响测试/DataNodeFrequencyTest/untitled/untitled.pro.user
Normal file
@ -0,0 +1,288 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 4.15.0, 2023-11-28T10:35:31. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
<value type="QByteArray">{168666bd-c3a3-4089-8a9e-043b6ddc15f8}</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||
<value type="int">0</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
||||
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||
<value type="QString" key="language">Cpp</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||
<value type="QString" key="language">QmlJS</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
|
||||
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
||||
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
|
||||
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
|
||||
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
|
||||
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="QString" key="DeviceType">Desktop</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.12.11 MinGW 32-bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.12.11 MinGW 32-bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.51211.win32_mingw73_kit</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||
<value type="int" key="EnableQmlDebugging">0</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\WorkSpace\测试工具\chaos\频响测试\DataNodeFrequencyTest\build-untitled-Desktop_Qt_5_12_11_MinGW_32_bit-Debug</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/WorkSpace/测试工具/chaos/频响测试/DataNodeFrequencyTest/build-untitled-Desktop_Qt_5_12_11_MinGW_32_bit-Debug</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\WorkSpace\测试工具\chaos\频响测试\DataNodeFrequencyTest\build-untitled-Desktop_Qt_5_12_11_MinGW_32_bit-Release</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/WorkSpace/测试工具/chaos/频响测试/DataNodeFrequencyTest/build-untitled-Desktop_Qt_5_12_11_MinGW_32_bit-Release</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||
<value type="int" key="QtQuickCompiler">0</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
||||
<value type="int" key="EnableQmlDebugging">0</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\WorkSpace\测试工具\chaos\频响测试\DataNodeFrequencyTest\build-untitled-Desktop_Qt_5_12_11_MinGW_32_bit-Profile</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/WorkSpace/测试工具/chaos/频响测试/DataNodeFrequencyTest/build-untitled-Desktop_Qt_5_12_11_MinGW_32_bit-Profile</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||
<value type="int" key="QtQuickCompiler">0</value>
|
||||
<value type="int" key="SeparateDebugInfo">0</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
|
||||
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
|
||||
<value type="QString">cpu-cycles</value>
|
||||
</valuelist>
|
||||
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
|
||||
<value type="int" key="Analyzer.Perf.Frequency">250</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
|
||||
<value type="QString">-e</value>
|
||||
<value type="QString">cpu-cycles</value>
|
||||
<value type="QString">--call-graph</value>
|
||||
<value type="QString">dwarf,4096</value>
|
||||
<value type="QString">-F</value>
|
||||
<value type="QString">250</value>
|
||||
</valuelist>
|
||||
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
|
||||
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
||||
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
||||
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
||||
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
||||
<value type="QString" key="Analyzer.Valgrind.Callgrind.Arguments"></value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
|
||||
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.Memcheck.Arguments"></value>
|
||||
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
||||
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.ValgrindArguments"></value>
|
||||
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
||||
<value type="int">0</value>
|
||||
<value type="int">1</value>
|
||||
<value type="int">2</value>
|
||||
<value type="int">3</value>
|
||||
<value type="int">4</value>
|
||||
<value type="int">5</value>
|
||||
<value type="int">6</value>
|
||||
<value type="int">7</value>
|
||||
<value type="int">8</value>
|
||||
<value type="int">9</value>
|
||||
<value type="int">10</value>
|
||||
<value type="int">11</value>
|
||||
<value type="int">12</value>
|
||||
<value type="int">13</value>
|
||||
<value type="int">14</value>
|
||||
</valuelist>
|
||||
<valuelist type="QVariantList" key="CustomOutputParsers"/>
|
||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
|
||||
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||
<value type="int">1</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||
<value type="int">22</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>Version</variable>
|
||||
<value type="int">22</value>
|
||||
</data>
|
||||
</qtcreator>
|
||||
786
20231202/频响测试/DataNodeFrequencyTestnew.py
Normal file
786
20231202/频响测试/DataNodeFrequencyTestnew.py
Normal file
@ -0,0 +1,786 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from MainWindow import Ui_DataNodeFrequencyTest
|
||||
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
|
||||
from AFG3000 import *
|
||||
from Prologix import *
|
||||
from DN101_NFC import *
|
||||
from DN101_ZIGBEE import *
|
||||
from Mysql import *
|
||||
import serial, threading
|
||||
import serial.tools.list_ports
|
||||
from PyQt5.QtCore import QTimer, QThread, pyqtSignal
|
||||
from PyQt5.QtGui import QIcon
|
||||
from PyQt5.QtWidgets import *
|
||||
import numpy as np
|
||||
import matplotlib
|
||||
import time
|
||||
from sqlalchemy import create_engine
|
||||
import pandas as pd
|
||||
import tkinter as tk
|
||||
from tkinter import filedialog
|
||||
|
||||
from playsound import playsound
|
||||
matplotlib.use("Qt5Agg")
|
||||
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
|
||||
from matplotlib.figure import Figure
|
||||
import matplotlib.pyplot as plt
|
||||
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
|
||||
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
|
||||
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
|
||||
import win32con
|
||||
#from win32process import SuspendThread, ResumeThread
|
||||
import ctypes
|
||||
cfp = configparser.ConfigParser()
|
||||
cfp.read("config.ini")
|
||||
|
||||
|
||||
SENSER_INF_PACK1 = 0x01
|
||||
SENSER_INF_PACK2 = 0x07
|
||||
EVEL_DATA_PACK1 = 0x02
|
||||
EVEL_DATA_PACK2 = 0x06
|
||||
WAVE_X_PACK = 0x03
|
||||
WAVE_Y_PACK = 0x04
|
||||
WAVE_Z_PACK = 0x05
|
||||
NFC_PORT_STR = 'Silicon Labs Dual CP210x USB to UART Bridge: Enhanced COM Port'
|
||||
ZIG_PORT_STR = 'Silicon Labs Dual CP210x USB to UART Bridge: Standard COM Port'
|
||||
|
||||
AFG = AFG3000()
|
||||
|
||||
#DMM = DMM_34401A(addr=22, port="COM12", baud=115200, ser_timeout=3, timeout=2)
|
||||
db = Mysql()
|
||||
Stop = 0
|
||||
sensorType = -1
|
||||
|
||||
#vol = {
|
||||
# "160Hz":1.575,
|
||||
# "320Hz":1.000,
|
||||
# "640Hz":1.000,
|
||||
# "1000Hz":2.620,
|
||||
# "2000Hz":2.9,
|
||||
# "3000Hz":2.7,
|
||||
# "4000Hz":1.82,
|
||||
# "5000Hz":1.33,
|
||||
# "6000Hz":0.66
|
||||
#}
|
||||
|
||||
|
||||
|
||||
class Thread_01(QThread): # 线程1
|
||||
trigger = pyqtSignal(str)
|
||||
Voltage = pyqtSignal(str)
|
||||
AmplSig = pyqtSignal(str)
|
||||
TestOK = pyqtSignal(list)
|
||||
ThreadStop = pyqtSignal()
|
||||
TimeOut = pyqtSignal()
|
||||
def __init__(self, Fredata,vol):
|
||||
super().__init__()
|
||||
self.Fredata = Fredata
|
||||
self.vol = vol
|
||||
handle = -1
|
||||
def run(self):
|
||||
|
||||
try:
|
||||
self.handle = ctypes.windll.kernel32.OpenThread(
|
||||
win32con.PROCESS_ALL_ACCESS, False, int(QThread.currentThreadId()))
|
||||
except Exception as e:
|
||||
print('get thread handle failed', e)
|
||||
|
||||
global StopThread
|
||||
for i in range(0, len(self.Fredata)):
|
||||
print(self.Fredata[i]['Frequency'])
|
||||
a = []
|
||||
a.append('0')
|
||||
a.append(str(self.Fredata[i]['Frequency']))
|
||||
a.append('0')
|
||||
self.TestOK.emit(a)
|
||||
ampl = 0.02
|
||||
ampl_ins = 0.02
|
||||
AFG.SetAmpl(ampl)
|
||||
AFG.SetFrequency(str(self.Fredata[i]['Frequency']))
|
||||
self.trigger.emit(str(self.Fredata[i]['Frequency']))
|
||||
#Voltage = str(DMM.measure())
|
||||
Voltage = (AFG.measure())
|
||||
Voltage = str(round(Voltage, 2))
|
||||
self.Voltage.emit(Voltage)
|
||||
retAmpl = AFG.query('VOLTAGE:AMPLITUDE?')
|
||||
retAmpl = round(retAmpl,2)
|
||||
self.AmplSig.emit(str(retAmpl))
|
||||
|
||||
AFG.Open()
|
||||
time.sleep(1)
|
||||
|
||||
current_freq = self.Fredata[i]['Frequency']
|
||||
ampl_set = float(self.vol[current_freq])
|
||||
|
||||
|
||||
while(ampl<ampl_set):
|
||||
ampl = ampl + ampl_ins
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
|
||||
retry_times = 3
|
||||
Voltage = (AFG.measure())
|
||||
while retry_times:
|
||||
vol_diff = 100-Voltage
|
||||
vol_div = vol_diff/Voltage
|
||||
vol_change = ampl*vol_div
|
||||
ampl = ampl+vol_change
|
||||
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
|
||||
Voltage = AFG.measure()
|
||||
if(abs(Voltage-100)<1):
|
||||
retry_times = 0
|
||||
else:
|
||||
retry_times = retry_times -1
|
||||
|
||||
try:
|
||||
vol_str = str(round(Voltage, 2))
|
||||
self.Voltage.emit(vol_str)
|
||||
retAmpl = AFG.query(':SOUR1:VOLT?')
|
||||
retAmpl = round(retAmpl, 2)
|
||||
self.AmplSig.emit(str(retAmpl))
|
||||
except:
|
||||
pass
|
||||
|
||||
self.vol[current_freq] = str(ampl)
|
||||
print(current_freq, ampl)
|
||||
|
||||
|
||||
|
||||
a = []
|
||||
a.append('1')
|
||||
a.append(str(self.Fredata[i]['Frequency']))
|
||||
a.append(str(Voltage))
|
||||
self.TestOK.emit(a)
|
||||
timeCount = 0
|
||||
while timeCount < 50:
|
||||
global Stop
|
||||
#print(timeCount)
|
||||
if Stop == 1:
|
||||
time.sleep(1)
|
||||
Stop = 0
|
||||
break
|
||||
timeCount += 1
|
||||
time.sleep(1)
|
||||
|
||||
if timeCount == 50:
|
||||
self.TimeOut.emit()
|
||||
#print(Voltage)
|
||||
# retAmpl = AFG.query('VOLTAGE:AMPLITUDE?')
|
||||
retAmpl = AFG.query(':SOUR1:VOLT?')
|
||||
#print(retAmpl)
|
||||
while float(retAmpl) > 0.07:#微调ampl到最低值20mv
|
||||
retAmpl -= 0.05
|
||||
#print(retAmpl)
|
||||
AFG.SetAmpl(retAmpl)
|
||||
# retAmpl = AFG.query('VOLTAGE:AMPLITUDE?')
|
||||
retAmpl = AFG.query(':SOUR1:VOLT?')
|
||||
time.sleep(0.05)
|
||||
#print(retAmpl)
|
||||
time.sleep(1)
|
||||
AFG.Close()
|
||||
|
||||
ampl = 0.02
|
||||
AFG.SetAmpl(ampl)
|
||||
AFG.SetFrequency('80')
|
||||
AFG.Close()
|
||||
|
||||
self.ThreadStop.emit()
|
||||
|
||||
class MyFigureCanvas(FigureCanvas):
|
||||
def __init__(self):
|
||||
self.fig = Figure()
|
||||
FigureCanvas.__init__(self, self.fig)
|
||||
self.axes = self.fig.add_subplot(111)
|
||||
#self.axes.set_ylim(ymin=0, ymax=30)
|
||||
def plot(self, data,shortAddr):
|
||||
self.axes.cla()
|
||||
x = []
|
||||
y1 = []
|
||||
y2 = []
|
||||
data1 = float(data[0]['rmsValue_Z']) * 1.41
|
||||
for i in range(len(data)):
|
||||
y1.append(float(data[i]['rmsValue_Z']))
|
||||
x.append(data[i]['Frequency'])
|
||||
y2.append(data1)
|
||||
self.axes.plot(x, y1)
|
||||
|
||||
data1 = float(data[0]['rmsValue_Z']) * 1.41
|
||||
|
||||
self.axes.plot(x, y2)
|
||||
self.axes.set_title('传感器短地址' + shortAddr)
|
||||
self.axes.set_xlabel('Frequency(Hz)')
|
||||
self.axes.set_ylabel('RMS(m/s^2)')
|
||||
self.fig.subplots_adjust(left=0.15, bottom=0.2)
|
||||
self.axes.grid()
|
||||
self.fig.canvas.draw_idle()
|
||||
now_time = datetime.datetime.now()
|
||||
time_str = now_time.strftime('%Y-%m-%d')
|
||||
strPath = os.getcwd()
|
||||
path = strPath + '\\{0}\\{1}.png'.format(time_str,shortAddr)
|
||||
#if os.path.exists(path):
|
||||
self.fig.savefig(path)
|
||||
def clear(self):
|
||||
self.axes.cla()
|
||||
self.axes.grid()
|
||||
self.fig.canvas.draw_idle()
|
||||
|
||||
|
||||
class DataNodeFrequencyTest(QMainWindow, Ui_DataNodeFrequencyTest):
|
||||
def __init__(self):
|
||||
super(DataNodeFrequencyTest, self).__init__()
|
||||
self.setupUi(self)
|
||||
self.setWindowTitle("凯奥思无线传感器频响测试")
|
||||
self.NFCRead_Btn.clicked.connect(self.NFCRead)
|
||||
self.Test_Btn.clicked.connect(self.StartTest)
|
||||
self.ConnecDev_Btn.clicked.connect(self.ConnectDev)
|
||||
#self.Export_Btn.clicked.connect(self.Export2Excel)
|
||||
self.timer_zig = QTimer(self)
|
||||
self.timer_zig.timeout.connect(self.zig_update)
|
||||
|
||||
#self.timer_multimeter = QTimer(self)
|
||||
#self.timer_multimeter.timeout.connect(self.multimeter_update)
|
||||
|
||||
self.timer_single = QTimer(self)
|
||||
self.timer_nfc = QTimer(self)
|
||||
self.Init()
|
||||
self.vol = {}
|
||||
|
||||
def Init(self):
|
||||
self.start = 0
|
||||
self.Test = 0
|
||||
self.Next = 0
|
||||
self.TestOK = '0'
|
||||
self.Fre = 0
|
||||
self.Vol = '0'
|
||||
# self.AFG3000 = AFG3000()
|
||||
self.port_list = AFG.init()
|
||||
ip = cfp.get("DB", "IP")
|
||||
# for i in range(0, len(self.port_list)):
|
||||
# self.Signal_Box.addItem(self.port_list[i])
|
||||
# print(self.port_list)
|
||||
|
||||
#self.AUDIO_PATH = self.get_resources_path(os.path.join('res', 'Finish.mp3'))
|
||||
#playsound(self.AUDIO_PATH)
|
||||
|
||||
self.port_list_multimeter = list(serial.tools.list_ports.comports())
|
||||
for i in range(0, len(self.port_list_multimeter)):
|
||||
self.multimeter_Box.addItem(self.port_list_multimeter[i].device)
|
||||
|
||||
self.sensorType_Box.addItem('mems无线传感器')
|
||||
self.sensorType_Box.addItem('压电无线传感器')
|
||||
|
||||
thistime = time.strftime("%Y-%m-%d", time.localtime())
|
||||
|
||||
sql = "select count(*) from t_data_nfc"
|
||||
data = db._Query(sql)
|
||||
self.TotalCount.setText(str(data[0]['count(*)']))
|
||||
|
||||
sql = "select count(*) from t_data_nfc where TIME LIKE \'%{0}%\'".format(thistime)
|
||||
data = db._Query(sql)
|
||||
self.Count_Edit.setText(str(data[0]['count(*)']))
|
||||
|
||||
self.Signal_Edit.setText(cfp.get("Device", "deviceSignal"))
|
||||
|
||||
self.plot = MyFigureCanvas()
|
||||
self.gridlayout = QGridLayout(self.groupBox_3) # 继承容器groupBox
|
||||
self.toolbar = NavigationToolbar(self.plot, self)
|
||||
self.gridlayout.addWidget(self.toolbar, 0, 0)
|
||||
self.gridlayout.addWidget(self.plot, 1, 0)
|
||||
self.show()
|
||||
|
||||
data = []
|
||||
|
||||
# sql = "select rmsValue_Z,speedValue_Z, Frequency from t_data_zigbee where shortAddr = '450'"
|
||||
# data = db._Query(sql)
|
||||
# self.plot.plot(data, '450')
|
||||
|
||||
self.plot.clear()
|
||||
|
||||
|
||||
def get_resources_path(self,relative_path):
|
||||
if getattr(sys, 'frozen', False):
|
||||
base_path = sys._MEIPASS
|
||||
else:
|
||||
base_path = os.path.abspath('.')
|
||||
return os.path.join(base_path, relative_path)
|
||||
|
||||
def Export2Excel(self):
|
||||
|
||||
root = tk.Tk()
|
||||
root.withdraw()
|
||||
Filepath = filedialog.askdirectory() # 获得选择好的文件
|
||||
|
||||
engine = create_engine('mysql+pymysql://root:root@192.168.1.75:3306/datanodedb')
|
||||
|
||||
sql = 'SELECT * FROM t_data_zigbee'
|
||||
|
||||
df_read = pd.read_sql_query(sql, engine)
|
||||
|
||||
Filepath = Filepath + '/data.xlsx'
|
||||
print(Filepath)
|
||||
df_read.to_excel(Filepath, index=False)
|
||||
|
||||
QMessageBox.warning(self, "标题", "导出成功", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
|
||||
def ConnectDev(self):
|
||||
|
||||
if self.start != 0:
|
||||
#self.Result_edit.clear()
|
||||
self.start = 0
|
||||
AFG.Close()
|
||||
#self.Result_edit.append('信号发生器断开成功!')
|
||||
#DMM.Close()
|
||||
#self.Result_edit.append('万用表断开成功!')
|
||||
self.nfc_ser.close()
|
||||
#self.Result_edit.append('NFC模块断开成功!')
|
||||
self.zig_ser.close()
|
||||
#self.Result_edit.append('ZigBee模块断开成功!')
|
||||
return None
|
||||
elif self.start == 0:
|
||||
self.ConnecDev_Btn.setEnabled(False)
|
||||
self.NFCRead_Btn.setEnabled(False)
|
||||
self.Test_Btn.setEnabled(False)
|
||||
try:
|
||||
# 连接信号发生器
|
||||
QApplication.processEvents()
|
||||
#self.Result_edit.clear()
|
||||
#print(self.port_list[self.Signal_Box.currentIndex()])
|
||||
# self.AFG3000.Open(self.port_list[self.Signal_Box.currentIndex()])
|
||||
|
||||
if self.sensorType_Box.currentText() == 'mems无线传感器':
|
||||
sensorType = 0
|
||||
self.Fredata = db._Query('select * from t_data_frequency WHERE sensorType = 0 order by Frequency;')
|
||||
elif self.sensorType_Box.currentText() == '压电无线传感器':
|
||||
sensorType = 1
|
||||
self.Fredata = db._Query('select * from t_data_frequency order by Frequency;')
|
||||
|
||||
self.tabWidget.setCurrentIndex(2)
|
||||
self.NFCList = self.tabWidget.widget(2)
|
||||
layoutNFC = QVBoxLayout()
|
||||
|
||||
layoutNFC.addWidget(QLabel('频点列表(Hz)'))
|
||||
|
||||
for i in range(0, len(self.Fredata)):
|
||||
layoutNFC.addWidget(QLabel(str(self.Fredata[i]['Frequency'])))
|
||||
print(self.Fredata[i]['Frequency'])
|
||||
self.vol[self.Fredata[i]['Frequency']] = cfp.get("Frequency", str(self.Fredata[i]['Frequency']))
|
||||
layoutNFC.addStretch(1)
|
||||
|
||||
self.NFCList.setLayout(layoutNFC)
|
||||
|
||||
cfp.set("Device", "deviceSignal",self.Signal_Edit.text())
|
||||
#cfp.set("Device", "deviceMultimeter", self.multimeter_Box.currentText())
|
||||
|
||||
signal = cfp.get("Device", "deviceSignal")
|
||||
multimeter = cfp.get("Device", "deviceMultimeter")
|
||||
#multimeter = 'USB0::0x2A8D::0xB318::MY62200139::0::INSTR'
|
||||
AFG.Connect(signal)
|
||||
self.TestStatus.setText('信号发生器联机成功!')
|
||||
#self.Result_edit.append('信号发生器联机成功!')
|
||||
# 连接万用表
|
||||
|
||||
# DMM = DMM_34401A(addr=22, port="COM8", baud=115200, ser_timeout=3, timeout=2)
|
||||
# self.DMM = DMM_34401A(addr=22, port=self.port_list_multimeter[self.multimeter_Box.currentIndex()].name, \
|
||||
# baud=115200, timeout=5)
|
||||
|
||||
#print(DMM.cmdPoll("DETector:BANDwidth?"))
|
||||
#DMM.set_measure_voltage_ac()
|
||||
# self.timer_multimeter.start(200) # 启动串口接收分析数据
|
||||
|
||||
AFG.ConnectMultimeter(multimeter)
|
||||
AFG.SetAC()
|
||||
#self.Result_edit.append('万用表联机成功!')
|
||||
self.TestStatus.setText('万用表联机成功!')
|
||||
|
||||
nfc_port, zig_port = self.get_nfc_zig_port()
|
||||
print(nfc_port, zig_port)
|
||||
self.nfc_ser = serial.Serial(nfc_port, 19200, rtscts=False, dsrdtr=False)
|
||||
self.zig_ser = serial.Serial(zig_port, 115200, rtscts=False, dsrdtr=False)
|
||||
|
||||
self.nfc_reader = Nfc_Reader(self.nfc_ser)
|
||||
self.zig_reader = Zig_Reader(self.zig_ser)
|
||||
self.timer_zig.start(100) # 启动串口接收分析数据
|
||||
self.nfc_reader.rfidm_c2_init()
|
||||
|
||||
#self.Result_edit.append('NFC、ZigBee模块联机成功!')
|
||||
self.TestStatus.setText('NFC、ZigBee模块联机成功!')
|
||||
self.ConnecDev_Btn.setEnabled(True)
|
||||
self.ConnecDev_Btn.setText('断开')
|
||||
self.NFCRead_Btn.setEnabled(True)
|
||||
self.TestStatus.setText('联机成功!')
|
||||
self.start = 1
|
||||
|
||||
thistime = time.strftime("%Y-%m-%d", time.localtime())
|
||||
sql = "select count(*) from t_data_nfc where TIME LIKE \'%{0}%\'".format(thistime)
|
||||
data = db._Query(sql)
|
||||
self.Count_Edit.setText(str(data[0]['count(*)']))
|
||||
if data[0]['count(*)'] < 10 :
|
||||
self.encourage_label.setStyleSheet("font: 75 15pt \"微软雅黑\";\n"
|
||||
"color: rgb(106, 168, 79);")
|
||||
self.encourage_label.setText('今天是新的一天,加油!')
|
||||
if data[0]['count(*)'] > 10 :
|
||||
self.encourage_label.setStyleSheet("font: 75 15pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 0, 0);")
|
||||
self.encourage_label.setText('再接再厉!')
|
||||
except Exception:
|
||||
QMessageBox.warning(self, "标题", "连接失败", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
self.ConnecDev_Btn.setEnabled(True)
|
||||
self.start = 0
|
||||
return -1
|
||||
|
||||
def StartTest(self):
|
||||
# self.thread_01 = Thread_01() # 创建线程
|
||||
# self.thread_01.start() # 开始线程
|
||||
# return 0
|
||||
try:
|
||||
if self.Test != 0:
|
||||
self.Test = 0
|
||||
ret = ctypes.windll.kernel32.TerminateThread(self.thread_01.handle, 0)
|
||||
|
||||
AFG.SetAmpl(0.02)
|
||||
AFG.SetFrequency('80')
|
||||
AFG.Close()
|
||||
self.Test_Btn.setText('开始测试')
|
||||
self.TestStatus.setText('测试结束')
|
||||
return 0
|
||||
elif self.Test == 0:
|
||||
self.Test = 1
|
||||
#AFG.Open()
|
||||
thistime = time.strftime("%Y-%m-%d", time.localtime())
|
||||
sql = "select count(*) from t_data_nfc where TIME LIKE \'%{0}%\'".format(thistime)
|
||||
data = db._Query(sql)
|
||||
self.Count_Edit.setText(str(data[0]['count(*)']))
|
||||
if data[0]['count(*)'] < 10:
|
||||
self.encourage_label.setStyleSheet("font: 75 15pt \"微软雅黑\";\n"
|
||||
"color: rgb(106, 168, 79);")
|
||||
self.encourage_label.setText('今天是新的一天,加油!')
|
||||
if data[0]['count(*)'] > 10:
|
||||
self.encourage_label.setStyleSheet("font: 75 20pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 0, 0);")
|
||||
self.encourage_label.setText('再接再厉!')
|
||||
|
||||
self.TestStatus.setText('正在测试中……')
|
||||
self.ConnecDev_Btn.setEnabled(False)
|
||||
self.NFCRead_Btn.setEnabled(False)
|
||||
self.Test_Btn.setText('停止测试')
|
||||
self.plot.clear()
|
||||
self.thread_01 = Thread_01(self.Fredata,self.vol) # 创建线程
|
||||
self.thread_01.trigger.connect(self.deal)
|
||||
self.thread_01.Voltage.connect(self.VoltageFun)
|
||||
self.thread_01.TestOK.connect(self.TestOKFun)
|
||||
self.thread_01.AmplSig.connect(self.AmplFun)
|
||||
self.thread_01.ThreadStop.connect(self.ThreadStop)
|
||||
self.thread_01.TimeOut.connect(self.TimeOut)
|
||||
self.thread_01.start() # 开始线程
|
||||
|
||||
|
||||
return 0
|
||||
except Exception:
|
||||
QMessageBox.warning(self, "标题", "测试异常", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
return -1
|
||||
|
||||
# self.AFG3000.SetFrequency('8k')
|
||||
# self.AFG3000.query('FREQUENCY?');
|
||||
|
||||
def AmplFun(self,updateampl):
|
||||
updateampl = float(updateampl)*1000
|
||||
self.Ampl_Edit.setText(str(updateampl))
|
||||
|
||||
def deal(self, updatestr):
|
||||
self.encourage_label.setText('')
|
||||
self.Frequency_Edit.setText(updatestr)
|
||||
|
||||
def VoltageFun(self, updateVoltage):
|
||||
self.VOLTage_Edit.setText(updateVoltage)
|
||||
|
||||
def ThreadStop(self):
|
||||
self.Test = 0
|
||||
self.TestStatus.setText('测试结束')
|
||||
self.Test_Btn.setText('开始测试')
|
||||
self.NFCRead_Btn.setEnabled(True)
|
||||
self.Ampl_Edit.setText('20')
|
||||
self.Frequency_Edit.setText('80')
|
||||
sql = "select rmsValue_Z,speedValue_Z, Frequency from t_data_zigbee where shortAddr = '{0}' order by Frequency".format(
|
||||
self.ShortAddr)
|
||||
data = db._Query(sql)
|
||||
self.plot.plot(data,self.ShortAddr)
|
||||
self.Test_Btn.setEnabled(False)
|
||||
|
||||
thistime = time.strftime("%Y-%m-%d", time.localtime())
|
||||
sql = "select count(*) from t_data_nfc"
|
||||
data = db._Query(sql)
|
||||
self.TotalCount.setText(str(data[0]['count(*)']))
|
||||
|
||||
sql = "select count(*) from t_data_nfc where TIME LIKE \'%{0}%\'".format(thistime)
|
||||
data = db._Query(sql)
|
||||
self.Count_Edit.setText(str(data[0]['count(*)']))
|
||||
if 10 < data[0]['count(*)'] < 50:
|
||||
self.encourage_label.setStyleSheet("font: 75 15pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 0, 0);")
|
||||
self.encourage_label.setText('再接再厉!')
|
||||
elif 50 < data[0]['count(*)'] < 100:
|
||||
self.encourage_label.setStyleSheet("font: 75 20pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 0, 0);")
|
||||
self.encourage_label.setText('GOOD')
|
||||
elif 100 < data[0]['count(*)'] < 110:
|
||||
self.encourage_label.setStyleSheet("font: 75 30pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 0, 0);")
|
||||
self.encourage_label.setText('GREAT')
|
||||
elif data[0]['count(*)'] > 110 :
|
||||
self.encourage_label.setStyleSheet("font: 75 35pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 255, 0);")
|
||||
self.encourage_label.setText('UNBELIEVABLE')
|
||||
|
||||
|
||||
def TimeOut(self):
|
||||
self.encourage_label.setStyleSheet("font: 75 15pt \"微软雅黑\";\n"
|
||||
"color: rgb(0, 0, 0);")
|
||||
self.encourage_label.setText('超时了')
|
||||
Stop = 1
|
||||
# self.Test = 0
|
||||
# ret = ctypes.windll.kernel32.TerminateThread(self.thread_01.handle, 0)
|
||||
#
|
||||
# AFG.SetAmpl(0.02)
|
||||
# AFG.SetFrequency('80')
|
||||
# AFG.Close()
|
||||
# self.Test_Btn.setText('开始测试')
|
||||
# self.TestStatus.setText('测试结束')
|
||||
# QMessageBox.warning(self, "标题", "ZigBee接收超时,请重新测试!", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
def TestOKFun(self, updateTest):
|
||||
print(updateTest)
|
||||
self.TestOK = updateTest[0]
|
||||
print(self.TestOK)
|
||||
self.Fre = updateTest[1]
|
||||
self.Vol = updateTest[2]
|
||||
|
||||
def get_nfc_zig_port(self):
|
||||
serial_ports = self.get_serial_list()
|
||||
for port in serial_ports:
|
||||
port = list(port)
|
||||
print(port)
|
||||
if NFC_PORT_STR in port[1]:
|
||||
nfc_port = port[0]
|
||||
elif ZIG_PORT_STR in port[1]:
|
||||
zig_port = port[0]
|
||||
|
||||
return (nfc_port, zig_port)
|
||||
|
||||
def get_serial_list(self):
|
||||
serial_ports = serial.tools.list_ports.comports()
|
||||
serial_list = []
|
||||
for port in serial_ports:
|
||||
serial_list.append(list(port))
|
||||
return serial_list
|
||||
|
||||
#def multimeter_update(self):
|
||||
#VOLTage = self.DMM.measure()
|
||||
#print(VOLTage)
|
||||
#self.VOLTage_Edit.setText(VOLTage)
|
||||
|
||||
def zig_update(self):
|
||||
msg = ""
|
||||
zig_info = self.zig_reader.read()
|
||||
# 将解析的设备信息和特征值输出到界面上
|
||||
if zig_info == SENSER_INF_PACK2:
|
||||
for k, i in self.zig_reader.dev_info_msg.items():
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
|
||||
for k, i in self.zig_reader.dev_conf_msg.items():
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
|
||||
self.zig_conf_recv_flag = True
|
||||
|
||||
elif (zig_info == EVEL_DATA_PACK1) | (zig_info == EVEL_DATA_PACK2):
|
||||
for k, i in self.zig_reader.dev_evel_msg.items():
|
||||
# print(k, " :", i)
|
||||
if isinstance(i, float):
|
||||
msg = msg + k + ":" + format(i, ".4f") + "\n"
|
||||
else:
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
if zig_info:
|
||||
self.ZigBee_Edit.setText(msg)
|
||||
zig_recv_file_name = self.zig_reader.dev_evel_msg['采集时间'][:10]+".txt"
|
||||
with open(zig_recv_file_name, "a") as zig_recv_file:
|
||||
zig_recv_file.write(msg)
|
||||
zig_recv_file.write(str(self.Fre))
|
||||
zig_recv_file.write(self.Vol)
|
||||
zig_recv_file.write("\n\n")
|
||||
|
||||
global Stop
|
||||
try:
|
||||
#print(self.TestOK,len(msg),self.zig_reader.dev_evel_msg['传感器地址'] )
|
||||
if int(self.TestOK) == 1 and (len(msg) > 0) and self.ShortAddr == self.zig_reader.dev_evel_msg['传感器地址']:
|
||||
self.Next = 1
|
||||
self.TestOK = '0'
|
||||
print("OK1")
|
||||
self.encourage_label.setStyleSheet("font: 75 15pt \"微软雅黑\";\n"
|
||||
"color: rgb(0, 0, 0);")
|
||||
self.encourage_label.setText('第一次收到Zigbee信息')
|
||||
return
|
||||
if (int(self.Next) == 1) and (len(msg) > 0) and self.ShortAddr == self.zig_reader.dev_evel_msg['传感器地址']:
|
||||
print("OK2")
|
||||
self.encourage_label.setStyleSheet("font: 75 15pt \"微软雅黑\";\n"
|
||||
"color: rgb(0, 0, 0);")
|
||||
self.encourage_label.setText('第二次收到Zigbee信息')
|
||||
Stop = 1
|
||||
self.Next = 0
|
||||
sql = "select count(*) from t_data_zigbee where shortAddr = '{0}' and Frequency = '{1}';".format(
|
||||
self.zig_reader.dev_evel_msg['传感器地址'],self.Fre)
|
||||
data = db._Query(sql)
|
||||
print(data[0]['count(*)'])
|
||||
if data[0]['count(*)'] > 0:
|
||||
sql = "update t_data_zigbee set sampleTime = '{0}',deviceTem = '{1}',\
|
||||
environmentTem = '{2}',angle = '{3}',batteryV = '{4}',\
|
||||
rmsPK_X = '{5}',rmsValue_X = '{6}',speedValue_X = '{7}',speedValue_X = '{8}',\
|
||||
rmsPK_Y = '{9}',rmsValue_Y = '{10}',speedPK_Y = '{11}',speedValue_Y = '{12}',\
|
||||
rmsPK_Z = '{13}',rmsValue_Z = '{14}',speedPK_Z = '{15}',speedValue_Z = '{16}',\
|
||||
VOLTage = '{17}' \
|
||||
where shortAddr = '{18}' and Frequency = {19};".format(self.zig_reader.dev_evel_msg['采集时间'],
|
||||
self.zig_reader.dev_evel_msg['设备温度'],
|
||||
self.zig_reader.dev_evel_msg['环境温度'],
|
||||
self.zig_reader.dev_evel_msg['倾角'],
|
||||
self.zig_reader.dev_evel_msg['电池电压'],
|
||||
self.zig_reader.dev_evel_msg['X轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['X轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['X轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['X轴速度有效值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴速度有效值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴速度有效值'],self.Vol,
|
||||
self.zig_reader.dev_evel_msg['传感器地址'],self.Fre)
|
||||
print(sql)
|
||||
data = db._Operate(sql)
|
||||
else:
|
||||
sql = "insert into t_data_zigbee(shortAddr,sampleTime,deviceTem,environmentTem,angle,batteryV,\
|
||||
rmsPK_X,rmsValue_X,speedPK_X,speedValue_X,rmsPK_Y,rmsValue_Y,speedPK_Y,speedValue_Y,rmsPK_Z,\
|
||||
rmsValue_Z,speedPK_Z,speedValue_Z,Frequency,VOLTage) values('{0}','{1}','{2}','{3}','{4}','{5}',\
|
||||
'{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}',{18},'{19}'\
|
||||
)".format(self.zig_reader.dev_evel_msg['传感器地址'],
|
||||
self.zig_reader.dev_evel_msg['采集时间'],
|
||||
self.zig_reader.dev_evel_msg['设备温度'],
|
||||
self.zig_reader.dev_evel_msg['环境温度'],
|
||||
self.zig_reader.dev_evel_msg['倾角'],
|
||||
self.zig_reader.dev_evel_msg['电池电压'],
|
||||
self.zig_reader.dev_evel_msg['X轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['X轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['X轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['X轴速度有效值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴速度有效值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴速度有效值'],self.Fre,self.Vol)
|
||||
#print(sql)
|
||||
data = db._Operate(sql)
|
||||
self.TestOK = '0'
|
||||
self.plot.clear()
|
||||
sql = "select rmsValue_Z,speedValue_Z, Frequency from t_data_zigbee where shortAddr = '{0}' order by Frequency".format(
|
||||
self.ShortAddr)
|
||||
data = db._Query(sql)
|
||||
self.plot.plot(data, self.ShortAddr)
|
||||
except Exception:
|
||||
QMessageBox.warning(self, "标题", "数据存储异常", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
return -1
|
||||
|
||||
|
||||
def nfc_update(self):
|
||||
msg = ''
|
||||
for k, i in self.nfc_reader.dev_info_msg.items():
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
|
||||
for k, i in self.nfc_reader.dev_conf_msg.items():
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
|
||||
thistime = time.strftime("%Y-%m-%d %H:%M:%S ", time.localtime())
|
||||
sql = "select count(*) from t_data_nfc where shortAddr = '{0}';".format(
|
||||
self.nfc_reader.dev_conf_msg['Zigbee 本地地址'])
|
||||
self.ShortAddr = self.nfc_reader.dev_conf_msg['Zigbee 本地地址']
|
||||
data = db._Query(sql)
|
||||
print(data[0]['count(*)'])
|
||||
if data[0]['count(*)'] > 0:
|
||||
sql = "update t_data_nfc set dataNodeName = '{0}',dataNodeNo = '{1}',\
|
||||
hardWareVersion = '{2}',softVersion = '{3}',productNo = '{4}',\
|
||||
productSN = '{5}',productType = '{6}',RSSI = '{7}',\
|
||||
firstPowerTime = '{8}',TIME = '{9}',batteryV = '{10}'\
|
||||
where shortAddr = '{11}';".format(self.nfc_reader.dev_info_msg['测点名称'],
|
||||
self.nfc_reader.dev_info_msg['MAC地址'], \
|
||||
self.nfc_reader.dev_info_msg['硬件版本'],
|
||||
self.nfc_reader.dev_info_msg['软件版本'], \
|
||||
self.nfc_reader.dev_info_msg['生产批号'],
|
||||
self.nfc_reader.dev_info_msg['生产序列号'], \
|
||||
self.nfc_reader.dev_info_msg['产品型号'],
|
||||
self.nfc_reader.dev_info_msg['无线信号强度'], \
|
||||
self.nfc_reader.dev_info_msg['首次上电日期'], thistime, \
|
||||
self.nfc_reader.dev_info_msg['电池电压'],
|
||||
self.nfc_reader.dev_conf_msg['Zigbee 本地地址'])
|
||||
#print(sql)
|
||||
data = db._Operate(sql);
|
||||
else:
|
||||
sql = "insert into t_data_nfc(dataNodeName,dataNodeNo,shortAddr,hardWareVersion,softVersion,productNo,\
|
||||
productType,RSSI,productSN,firstPowerTime,batteryV,TIME) values('{0}','{1}','{2}','{3}','{4}','{5}',\
|
||||
'{6}','{7}','{8}','{9}','{10}','{11}')".format(self.nfc_reader.dev_info_msg['测点名称'],
|
||||
self.nfc_reader.dev_info_msg['MAC地址'], \
|
||||
self.nfc_reader.dev_conf_msg['Zigbee 本地地址'],
|
||||
self.nfc_reader.dev_info_msg['硬件版本'], \
|
||||
self.nfc_reader.dev_info_msg['软件版本'],
|
||||
self.nfc_reader.dev_info_msg['生产批号'], \
|
||||
self.nfc_reader.dev_info_msg['产品型号'],
|
||||
self.nfc_reader.dev_info_msg['无线信号强度'], \
|
||||
self.nfc_reader.dev_info_msg['生产序列号'],
|
||||
self.nfc_reader.dev_info_msg['首次上电日期'], \
|
||||
self.nfc_reader.dev_info_msg['电池电压'], thistime)
|
||||
#print(sql)
|
||||
data = db._Operate(sql)
|
||||
self.NFC_Edit.setText(msg)
|
||||
self.tabWidget.setCurrentIndex(1)
|
||||
def NFCRead(self):
|
||||
try:
|
||||
self.Test_Btn.setEnabled(True)
|
||||
#self.Result_edit.clear()
|
||||
self.tabWidget.setCurrentIndex(0)
|
||||
QApplication.processEvents()
|
||||
self.nfc_reader.get_uuid()
|
||||
if self.nfc_reader.nfc_uuid:
|
||||
#self.Result_edit.append("DN101 NFC UUID:" + hex(self.nfc_reader.nfc_uuid)[2:])
|
||||
time.sleep(0.5)
|
||||
info = self.nfc_reader.read_info()
|
||||
conf = self.nfc_reader.read_conf()
|
||||
if info & conf:
|
||||
self.nfc_reader.dev_info_analysis()
|
||||
self.nfc_reader.dev_conf_analysis()
|
||||
self.nfc_update()
|
||||
self.TestStatus.setText('NFC读取成功!')
|
||||
#self.Result_edit.append("DN101 NFC读取成功")
|
||||
return info
|
||||
else:
|
||||
#self.Result_edit.append("NFC读取失败")
|
||||
return False
|
||||
else:
|
||||
#self.Result_edit.append("NFC读取失败")
|
||||
return False
|
||||
except Exception:
|
||||
QMessageBox.warning(self, "标题", "测试异常", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
return -1
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = QApplication(sys.argv)
|
||||
MainWindow = QMainWindow()
|
||||
ui = Ui_DataNodeFrequencyTest()
|
||||
ui.setupUi(MainWindow)
|
||||
View = DataNodeFrequencyTest()
|
||||
View.show()
|
||||
sys.exit(app.exec_())
|
||||
40
20231202/频响测试/DataNodeFrequencyTestnew.spec
Normal file
40
20231202/频响测试/DataNodeFrequencyTestnew.spec
Normal file
@ -0,0 +1,40 @@
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
|
||||
|
||||
block_cipher = None
|
||||
|
||||
|
||||
a = Analysis(['DataNodeFrequencyTestnew.py'],
|
||||
pathex=[],
|
||||
binaries=[],
|
||||
datas=[],
|
||||
hiddenimports=[],
|
||||
hookspath=[],
|
||||
hooksconfig={},
|
||||
runtime_hooks=[],
|
||||
excludes=[],
|
||||
win_no_prefer_redirects=False,
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher,
|
||||
noarchive=False)
|
||||
pyz = PYZ(a.pure, a.zipped_data,
|
||||
cipher=block_cipher)
|
||||
|
||||
exe = EXE(pyz,
|
||||
a.scripts,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
[],
|
||||
name='DataNodeFrequencyTestnew',
|
||||
debug=False,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
upx_exclude=[],
|
||||
runtime_tmpdir=None,
|
||||
console=False,
|
||||
disable_windowed_traceback=False,
|
||||
target_arch=None,
|
||||
codesign_identity=None,
|
||||
entitlements_file=None )
|
||||
809
20231202/频响测试/DataNodeFrequencyTestold.py
Normal file
809
20231202/频响测试/DataNodeFrequencyTestold.py
Normal file
@ -0,0 +1,809 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
from MainWindow import Ui_DataNodeFrequencyTest
|
||||
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
|
||||
from AFG3000old import *
|
||||
from Prologix import *
|
||||
from DN101_NFC import *
|
||||
from DN101_ZIGBEE import *
|
||||
from Mysql import *
|
||||
import serial, threading
|
||||
import serial.tools.list_ports
|
||||
from PyQt5.QtCore import QTimer, QThread, pyqtSignal
|
||||
from PyQt5.QtGui import QIcon
|
||||
from PyQt5.QtWidgets import *
|
||||
import numpy as np
|
||||
import matplotlib
|
||||
import time
|
||||
from sqlalchemy import create_engine
|
||||
import pandas as pd
|
||||
import tkinter as tk
|
||||
from tkinter import filedialog
|
||||
|
||||
from playsound import playsound
|
||||
matplotlib.use("Qt5Agg")
|
||||
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
|
||||
from matplotlib.figure import Figure
|
||||
import matplotlib.pyplot as plt
|
||||
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
|
||||
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
|
||||
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
|
||||
import win32con
|
||||
from win32process import SuspendThread, ResumeThread
|
||||
import ctypes
|
||||
|
||||
SENSER_INF_PACK1 = 0x01
|
||||
SENSER_INF_PACK2 = 0x07
|
||||
EVEL_DATA_PACK1 = 0x02
|
||||
EVEL_DATA_PACK2 = 0x06
|
||||
WAVE_X_PACK = 0x03
|
||||
WAVE_Y_PACK = 0x04
|
||||
WAVE_Z_PACK = 0x05
|
||||
NFC_PORT_STR = 'Silicon Labs Dual CP210x USB to UART Bridge: Enhanced COM Port'
|
||||
ZIG_PORT_STR = 'Silicon Labs Dual CP210x USB to UART Bridge: Standard COM Port'
|
||||
|
||||
AFG = AFG3000()
|
||||
cfp = configparser.ConfigParser()
|
||||
cfp.read("config.ini")
|
||||
signal = cfp.get("Device", "deviceSignal")
|
||||
multimeter = cfp.get("Device", "deviceMultimeter")
|
||||
DMM = DMM_34401A(addr=22, port=multimeter, baud=115200, ser_timeout=3, timeout=2)
|
||||
db = Mysql()
|
||||
Stop = 0
|
||||
|
||||
vol = {
|
||||
"160Hz":1.575,
|
||||
"320Hz":1.000,
|
||||
"640Hz":1.000,
|
||||
"1000Hz":2.620,
|
||||
"2000Hz":2.9,
|
||||
"3000Hz":2.7,
|
||||
"4000Hz":1.82,
|
||||
"5000Hz":1.33,
|
||||
"6000Hz":0.66
|
||||
}
|
||||
|
||||
class Thread_01(QThread): # 线程1
|
||||
trigger = pyqtSignal(str)
|
||||
Voltage = pyqtSignal(str)
|
||||
AmplSig = pyqtSignal(str)
|
||||
TestOK = pyqtSignal(list)
|
||||
ThreadStop = pyqtSignal()
|
||||
TimeOut = pyqtSignal()
|
||||
def __init__(self, Fredata):
|
||||
super().__init__()
|
||||
self.Fredata = Fredata
|
||||
handle = -1
|
||||
def run(self):
|
||||
|
||||
# try:
|
||||
# self.handle = ctypes.windll.kernel32.OpenThread(
|
||||
# win32con.PROCESS_ALL_ACCESS, False, int(QThread.currentThreadId()))
|
||||
# except Exception as e:
|
||||
# print('get thread handle failed', e)
|
||||
#
|
||||
# global StopThread
|
||||
# for i in range(0, len(self.Fredata)):
|
||||
# print(self.Fredata[i]['Frequency'])
|
||||
#
|
||||
# ampl = 0.02
|
||||
# ampl_ins = 0.025
|
||||
# AFG.SetAmpl(ampl)
|
||||
# AFG.SetFrequency(str(self.Fredata[i]['Frequency']))
|
||||
# self.trigger.emit(str(self.Fredata[i]['Frequency']))
|
||||
# Voltage = str(DMM.measure())
|
||||
# self.Voltage.emit(Voltage)
|
||||
# retAmpl = AFG.query('VOLTAGE:AMPLITUDE?')
|
||||
# self.AmplSig.emit(str(retAmpl))
|
||||
#
|
||||
# current_freq = str(self.Fredata[i]['Frequency']) + "Hz"
|
||||
# ampl_set = vol[current_freq]
|
||||
# while (ampl < ampl_set):
|
||||
# ampl = ampl + ampl_ins
|
||||
# AFG.SetAmpl(ampl)
|
||||
# time.sleep(0.1)
|
||||
#
|
||||
# retry_times = 3
|
||||
# Voltage = float(DMM.measure())
|
||||
# while retry_times:
|
||||
# vol_diff = 100 - Voltage
|
||||
# vol_div = vol_diff / Voltage
|
||||
# vol_change = float(ampl * vol_div)
|
||||
# ampl = ampl + vol_change
|
||||
#
|
||||
# AFG.SetAmpl(ampl)
|
||||
# time.sleep(0.1)
|
||||
#
|
||||
# Voltage = DMM.measure()
|
||||
# if (abs(Voltage - 100) < 1):
|
||||
# retry_times = 0
|
||||
# else:
|
||||
# retry_times = retry_times - 1
|
||||
#
|
||||
# try:
|
||||
# vol_str = str(round(Voltage, 2))
|
||||
# self.Voltage.emit(vol_str)
|
||||
# retAmpl = AFG.query('VOLTAGE:AMPLITUDE?')
|
||||
# retAmpl = round(retAmpl, 2)
|
||||
# self.AmplSig.emit(str(retAmpl))
|
||||
# except:
|
||||
# pass
|
||||
#
|
||||
# vol[current_freq] = ampl
|
||||
# print(current_freq, ampl)
|
||||
#
|
||||
#
|
||||
# a = []
|
||||
# a.append('1')
|
||||
# a.append(self.Fredata[i]['Frequency'])
|
||||
# a.append(Voltage)
|
||||
# self.TestOK.emit(a)
|
||||
# timeCount = 0
|
||||
# while timeCount < 50:
|
||||
# global Stop
|
||||
# print(timeCount)
|
||||
# if Stop == 1:
|
||||
# time.sleep(1)
|
||||
# Stop = 0
|
||||
# break
|
||||
# timeCount += 1
|
||||
# time.sleep(1)
|
||||
#
|
||||
# print(Voltage)
|
||||
# retAmpl = AFG.query('VOLTAGE:AMPLITUDE?')
|
||||
# #print(retAmpl)
|
||||
# while float(retAmpl) > 0.07:#微调ampl到最低值20mv
|
||||
# retAmpl -= 0.05
|
||||
# #print(retAmpl)
|
||||
# AFG.SetAmpl(retAmpl)
|
||||
# retAmpl = AFG.query('VOLTAGE:AMPLITUDE?')
|
||||
# time.sleep(0.05)
|
||||
# print(retAmpl)
|
||||
# time.sleep(1)
|
||||
#
|
||||
# ampl = 0.02
|
||||
# AFG.SetAmpl(ampl)
|
||||
# AFG.SetFrequency('80')
|
||||
# AFG.Close()
|
||||
|
||||
try:
|
||||
self.handle = ctypes.windll.kernel32.OpenThread(
|
||||
win32con.PROCESS_ALL_ACCESS, False, int(QThread.currentThreadId()))
|
||||
except Exception as e:
|
||||
print('get thread handle failed', e)
|
||||
|
||||
global StopThread
|
||||
for i in range(0, len(self.Fredata)):
|
||||
print(self.Fredata[i]['Frequency'])
|
||||
|
||||
ampl = 0.02
|
||||
ampl_ins = 0.025
|
||||
AFG.SetAmpl(ampl)
|
||||
AFG.SetFrequency(str(self.Fredata[i]['Frequency']))
|
||||
self.trigger.emit(str(self.Fredata[i]['Frequency']))
|
||||
Voltage = str(DMM.measure())
|
||||
self.Voltage.emit(Voltage)
|
||||
retAmpl = AFG.query('VOLTAGE:AMPLITUDE?')
|
||||
self.AmplSig.emit(str(retAmpl))
|
||||
|
||||
while (ampl < 1.3)&(float(self.Fredata[i]['Frequency'])<=160):
|
||||
ampl += 0.05
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
|
||||
while (ampl < 1.6) & (float(self.Fredata[i]['Frequency']) > 160)& (float(self.Fredata[i]['Frequency']) <= 320):
|
||||
ampl += 0.05
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
|
||||
|
||||
while (ampl < 1.7) & (float(self.Fredata[i]['Frequency']) > 320)& (float(self.Fredata[i]['Frequency']) <= 640):
|
||||
ampl += 0.05
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
|
||||
|
||||
while (ampl < 1.7) & (float(self.Fredata[i]['Frequency']) > 640)& (float(self.Fredata[i]['Frequency']) <= 1000):
|
||||
ampl += 0.05
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
|
||||
while (ampl < 1.2) & (float(self.Fredata[i]['Frequency']) > 1000)& (float(self.Fredata[i]['Frequency']) <= 2000):
|
||||
ampl += 0.05
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
|
||||
while (ampl < 0.5) & (float(self.Fredata[i]['Frequency']) > 2000)& (float(self.Fredata[i]['Frequency']) <= 3000):
|
||||
ampl += 0.05
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
ampl_ins = 0.01
|
||||
|
||||
while (ampl < 0.05) & (float(self.Fredata[i]['Frequency']) > 3000)& (float(self.Fredata[i]['Frequency']) <= 4000):
|
||||
ampl += 0.02
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
ampl_ins = 0.01
|
||||
|
||||
while (ampl < 0.2) & (float(self.Fredata[i]['Frequency']) > 4000)& (float(self.Fredata[i]['Frequency']) <= 5000):
|
||||
ampl += 0.05
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
|
||||
while (ampl < 0.4) & (float(self.Fredata[i]['Frequency']) > 5000)& (float(self.Fredata[i]['Frequency']) <= 7000):
|
||||
ampl += 0.05
|
||||
AFG.SetAmpl(ampl)
|
||||
time.sleep(0.1)
|
||||
|
||||
try:
|
||||
if(float(self.Fredata[i]['Frequency']) >= 1000):
|
||||
DMM.set_measure_voltage_ac("AUTO", "200")
|
||||
else:
|
||||
DMM.set_measure_voltage_ac("AUTO", "20")
|
||||
except:
|
||||
print("DMM Set Error")
|
||||
|
||||
while float(Voltage) < 100:#调整电压到100mv
|
||||
# if (float(self.Fredata[i]['Frequency']) >= 1000):
|
||||
# Voltage = str(DMM.measure())
|
||||
# ampl += 0.01
|
||||
# self.Voltage.emit(Voltage)
|
||||
# retAmpl = AFG.query('VOLTAGE:AMPLITUDE?')
|
||||
# self.AmplSig.emit(str(retAmpl))
|
||||
# AFG.SetAmpl(ampl)
|
||||
# time.sleep(0.05)
|
||||
# else:
|
||||
Voltage = str(DMM.measure())
|
||||
if float(Voltage) < 95:
|
||||
ampl += ampl_ins
|
||||
if (float(Voltage) > 95) and (float(Voltage) < 100):
|
||||
ampl += 0.01
|
||||
self.Voltage.emit(Voltage)
|
||||
retAmpl = AFG.query('VOLTAGE:AMPLITUDE?')
|
||||
self.AmplSig.emit(str(retAmpl))
|
||||
AFG.SetAmpl(ampl)
|
||||
|
||||
|
||||
if float(Voltage) > 100:
|
||||
a = []
|
||||
a.append('1')
|
||||
a.append(self.Fredata[i]['Frequency'])
|
||||
a.append(Voltage)
|
||||
self.TestOK.emit(a)
|
||||
timeCount = 0
|
||||
while timeCount < 50:
|
||||
global Stop
|
||||
print(timeCount)
|
||||
if Stop == 1:
|
||||
time.sleep(1)
|
||||
Stop = 0
|
||||
break
|
||||
timeCount += 1
|
||||
time.sleep(1)
|
||||
|
||||
print(Voltage)
|
||||
retAmpl = AFG.query('VOLTAGE:AMPLITUDE?')
|
||||
#print(retAmpl)
|
||||
while float(retAmpl) > 0.07:#微调ampl到最低值20mv
|
||||
retAmpl -= 0.05
|
||||
#print(retAmpl)
|
||||
AFG.SetAmpl(retAmpl)
|
||||
retAmpl = AFG.query('VOLTAGE:AMPLITUDE?')
|
||||
time.sleep(0.05)
|
||||
print(retAmpl)
|
||||
time.sleep(1)
|
||||
|
||||
ampl = 0.02
|
||||
AFG.SetAmpl(ampl)
|
||||
AFG.SetFrequency('80')
|
||||
AFG.Close()
|
||||
|
||||
self.ThreadStop.emit()
|
||||
|
||||
class MyFigureCanvas(FigureCanvas):
|
||||
def __init__(self):
|
||||
self.fig = Figure()
|
||||
FigureCanvas.__init__(self, self.fig)
|
||||
self.axes = self.fig.add_subplot(111)
|
||||
#self.axes.set_ylim(ymin=0, ymax=30)
|
||||
def plot(self, data,shortAddr):
|
||||
self.axes.cla()
|
||||
x = []
|
||||
y1 = []
|
||||
y2 = []
|
||||
data1 = float(data[0]['rmsValue_Z']) * 1.41
|
||||
for i in range(len(data)):
|
||||
y1.append(float(data[i]['rmsValue_Z']))
|
||||
x.append(data[i]['Frequency'])
|
||||
y2.append(data1)
|
||||
self.axes.plot(x, y1)
|
||||
|
||||
data1 = float(data[0]['rmsValue_Z']) * 1.41
|
||||
|
||||
self.axes.plot(x, y2)
|
||||
self.axes.set_title('传感器短地址' + shortAddr)
|
||||
self.axes.set_xlabel('Frequency(Hz)')
|
||||
self.axes.set_ylabel('RMS(m/s^2)')
|
||||
self.fig.subplots_adjust(left=0.15, bottom=0.2)
|
||||
self.axes.grid()
|
||||
self.fig.canvas.draw_idle()
|
||||
now_time = datetime.datetime.now()
|
||||
time_str = now_time.strftime('%Y-%m-%d')
|
||||
strPath = os.getcwd()
|
||||
path = strPath + '\\{0}\\{1}.png'.format(time_str, shortAddr)
|
||||
self.fig.savefig(path)
|
||||
def clear(self):
|
||||
self.axes.cla()
|
||||
self.axes.grid()
|
||||
self.fig.canvas.draw_idle()
|
||||
|
||||
|
||||
class DataNodeFrequencyTest(QMainWindow, Ui_DataNodeFrequencyTest):
|
||||
def __init__(self):
|
||||
super(DataNodeFrequencyTest, self).__init__()
|
||||
self.setupUi(self)
|
||||
self.setWindowTitle("无线传感器频响测试")
|
||||
self.NFCRead_Btn.clicked.connect(self.NFCRead)
|
||||
self.Test_Btn.clicked.connect(self.StartTest)
|
||||
self.ConnecDev_Btn.clicked.connect(self.ConnectDev)
|
||||
self.Export_Btn.clicked.connect(self.Export2Excel)
|
||||
self.timer_zig = QTimer(self)
|
||||
self.timer_zig.timeout.connect(self.zig_update)
|
||||
|
||||
#self.timer_multimeter = QTimer(self)
|
||||
#self.timer_multimeter.timeout.connect(self.multimeter_update)
|
||||
|
||||
self.timer_single = QTimer(self)
|
||||
self.timer_nfc = QTimer(self)
|
||||
self.Init()
|
||||
|
||||
def Init(self):
|
||||
self.start = 0
|
||||
self.Test = 0
|
||||
self.Next = 0
|
||||
self.TestOK = '0'
|
||||
self.Fre = 0
|
||||
self.Vol = '0'
|
||||
# self.AFG3000 = AFG3000()
|
||||
self.port_list = AFG.init()
|
||||
for i in range(0, len(self.port_list)):
|
||||
self.Signal_Box.addItem(self.port_list[i])
|
||||
print(self.port_list)
|
||||
|
||||
self.AUDIO_PATH = self.get_resources_path(os.path.join('res', 'Finish.mp3'))
|
||||
#playsound(self.AUDIO_PATH)
|
||||
|
||||
self.port_list_multimeter = list(serial.tools.list_ports.comports())
|
||||
for i in range(0, len(self.port_list_multimeter)):
|
||||
self.multimeter_Box.addItem(self.port_list_multimeter[i].description)
|
||||
|
||||
|
||||
self.Fredata = db._Query('select * from t_data_frequency order by Frequency;');
|
||||
|
||||
thistime = time.strftime("%Y-%m-%d", time.localtime())
|
||||
|
||||
sql = "select count(*) from t_data_nfc"
|
||||
data = db._Query(sql)
|
||||
self.TotalCount.setText(str(data[0]['count(*)']))
|
||||
|
||||
sql = "select count(*) from t_data_nfc where TIME LIKE \'%{0}%\'".format(thistime)
|
||||
data = db._Query(sql)
|
||||
self.Count_Edit.setText(str(data[0]['count(*)']))
|
||||
|
||||
self.tabWidget.setCurrentIndex(2)
|
||||
self.NFCList = self.tabWidget.widget(2)
|
||||
layoutNFC = QVBoxLayout()
|
||||
|
||||
layoutNFC.addWidget(QLabel('频点列表(Hz)'))
|
||||
|
||||
for i in range(0, len(self.Fredata)):
|
||||
layoutNFC.addWidget(QLabel(str(self.Fredata[i]['Frequency'])))
|
||||
layoutNFC.addStretch(1)
|
||||
|
||||
self.NFCList.setLayout(layoutNFC)
|
||||
|
||||
self.plot = MyFigureCanvas()
|
||||
self.gridlayout = QGridLayout(self.groupBox_3) # 继承容器groupBox
|
||||
self.toolbar = NavigationToolbar(self.plot, self)
|
||||
self.gridlayout.addWidget(self.toolbar, 0, 0)
|
||||
self.gridlayout.addWidget(self.plot, 1, 0)
|
||||
self.show()
|
||||
|
||||
data = []
|
||||
|
||||
sql = "select rmsValue_Z,speedValue_Z, Frequency from t_data_zigbee where shortAddr = '450'"
|
||||
data = db._Query(sql)
|
||||
self.plot.plot(data, '450')
|
||||
|
||||
self.plot.clear()
|
||||
|
||||
|
||||
def get_resources_path(self,relative_path):
|
||||
if getattr(sys, 'frozen', False):
|
||||
base_path = sys._MEIPASS
|
||||
else:
|
||||
base_path = os.path.abspath('.')
|
||||
return os.path.join(base_path, relative_path)
|
||||
|
||||
def Export2Excel(self):
|
||||
|
||||
root = tk.Tk()
|
||||
root.withdraw()
|
||||
Filepath = filedialog.askdirectory() # 获得选择好的文件
|
||||
|
||||
engine = create_engine('mysql+pymysql://root:root@192.168.1.75:3306/datanodedb')
|
||||
|
||||
sql = 'SELECT * FROM t_data_zigbee'
|
||||
|
||||
df_read = pd.read_sql_query(sql, engine)
|
||||
|
||||
Filepath = Filepath + '/data.xlsx'
|
||||
print(Filepath)
|
||||
df_read.to_excel(Filepath, index=False)
|
||||
|
||||
QMessageBox.warning(self, "标题", "导出成功", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
|
||||
def ConnectDev(self):
|
||||
|
||||
if self.start != 0:
|
||||
self.Result_edit.clear()
|
||||
self.start = 0
|
||||
AFG.Close()
|
||||
self.Result_edit.append('信号发生器断开成功!')
|
||||
DMM.Close()
|
||||
self.Result_edit.append('万用表断开成功!')
|
||||
self.nfc_ser.close()
|
||||
self.Result_edit.append('NFC模块断开成功!')
|
||||
self.zig_ser.close()
|
||||
self.Result_edit.append('ZigBee模块断开成功!')
|
||||
return None
|
||||
elif self.start == 0:
|
||||
self.ConnecDev_Btn.setEnabled(False)
|
||||
self.NFCRead_Btn.setEnabled(False)
|
||||
self.Test_Btn.setEnabled(False)
|
||||
try:
|
||||
# 连接信号发生器
|
||||
QApplication.processEvents()
|
||||
self.Result_edit.clear()
|
||||
#print(self.port_list[self.Signal_Box.currentIndex()])
|
||||
# self.AFG3000.Open(self.port_list[self.Signal_Box.currentIndex()])
|
||||
AFG.Connect(signal)
|
||||
self.Result_edit.append('信号发生器联机成功!')
|
||||
# 连接万用表
|
||||
|
||||
# DMM = DMM_34401A(addr=22, port="COM8", baud=115200, ser_timeout=3, timeout=2)
|
||||
# self.DMM = DMM_34401A(addr=22, port=self.port_list_multimeter[self.multimeter_Box.currentIndex()].name, \
|
||||
# baud=115200, timeout=5)
|
||||
|
||||
print(DMM.cmdPoll("DETector:BANDwidth?"))
|
||||
DMM.set_measure_voltage_ac()
|
||||
# self.timer_multimeter.start(200) # 启动串口接收分析数据
|
||||
self.Result_edit.append('万用表联机成功!')
|
||||
|
||||
nfc_port, zig_port = self.get_nfc_zig_port()
|
||||
print(nfc_port, zig_port)
|
||||
self.nfc_ser = serial.Serial(nfc_port, 19200, rtscts=False, dsrdtr=False)
|
||||
self.zig_ser = serial.Serial(zig_port, 115200, rtscts=False, dsrdtr=False)
|
||||
|
||||
self.nfc_reader = Nfc_Reader(self.nfc_ser)
|
||||
self.zig_reader = Zig_Reader(self.zig_ser)
|
||||
self.timer_zig.start(100) # 启动串口接收分析数据
|
||||
self.nfc_reader.rfidm_c2_init()
|
||||
|
||||
self.Result_edit.append('NFC、ZigBee模块联机成功!')
|
||||
|
||||
self.ConnecDev_Btn.setEnabled(True)
|
||||
self.ConnecDev_Btn.setText('断开')
|
||||
self.NFCRead_Btn.setEnabled(True)
|
||||
self.start = 1
|
||||
except Exception:
|
||||
QMessageBox.warning(self, "标题", "连接失败", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
self.ConnecDev_Btn.setEnabled(True)
|
||||
self.start = 0
|
||||
return -1
|
||||
|
||||
def StartTest(self):
|
||||
# self.thread_01 = Thread_01() # 创建线程
|
||||
# self.thread_01.start() # 开始线程
|
||||
# return 0
|
||||
try:
|
||||
if self.Test != 0:
|
||||
self.Test = 0
|
||||
ret = ctypes.windll.kernel32.TerminateThread(self.thread_01.handle, 0)
|
||||
|
||||
AFG.SetAmpl(0.02)
|
||||
AFG.SetFrequency('80')
|
||||
AFG.Close()
|
||||
self.Test_Btn.setText('开始测试')
|
||||
self.TestStatus.setText('测试结束')
|
||||
return 0
|
||||
elif self.Test == 0:
|
||||
self.Test = 1
|
||||
AFG.Open()
|
||||
self.TestStatus.setText('正在测试中……')
|
||||
self.ConnecDev_Btn.setEnabled(False)
|
||||
self.NFCRead_Btn.setEnabled(False)
|
||||
self.Test_Btn.setText('停止测试')
|
||||
self.plot.clear()
|
||||
self.thread_01 = Thread_01(self.Fredata) # 创建线程
|
||||
self.thread_01.trigger.connect(self.deal)
|
||||
self.thread_01.Voltage.connect(self.VoltageFun)
|
||||
self.thread_01.TestOK.connect(self.TestOKFun)
|
||||
self.thread_01.AmplSig.connect(self.AmplFun)
|
||||
self.thread_01.ThreadStop.connect(self.ThreadStop)
|
||||
self.thread_01.TimeOut.connect(self.TimeOut)
|
||||
self.thread_01.start() # 开始线程
|
||||
|
||||
|
||||
return 0
|
||||
except Exception:
|
||||
QMessageBox.warning(self, "标题", "测试异常", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
return -1
|
||||
|
||||
# self.AFG3000.SetFrequency('8k')
|
||||
# self.AFG3000.query('FREQUENCY?');
|
||||
|
||||
def AmplFun(self,updateampl):
|
||||
updateampl = float(updateampl)*1000
|
||||
self.Ampl_Edit.setText(str(updateampl))
|
||||
|
||||
def deal(self, updatestr):
|
||||
self.Frequency_Edit.setText(updatestr)
|
||||
|
||||
def VoltageFun(self, updateVoltage):
|
||||
self.VOLTage_Edit.setText(updateVoltage)
|
||||
|
||||
def ThreadStop(self):
|
||||
self.Test = 0
|
||||
self.TestStatus.setText('测试结束')
|
||||
self.Test_Btn.setText('开始测试')
|
||||
self.NFCRead_Btn.setEnabled(True)
|
||||
self.Ampl_Edit.setText('20')
|
||||
self.Frequency_Edit.setText('80')
|
||||
sql = "select rmsValue_Z,speedValue_Z, Frequency from t_data_zigbee where shortAddr = '{0}' order by Frequency".format(
|
||||
self.ShortAddr)
|
||||
data = db._Query(sql)
|
||||
self.plot.plot(data,self.ShortAddr)
|
||||
self.Test_Btn.setEnabled(False)
|
||||
|
||||
thistime = time.strftime("%Y-%m-%d", time.localtime())
|
||||
sql = "select count(*) from t_data_nfc"
|
||||
data = db._Query(sql)
|
||||
self.TotalCount.setText(str(data[0]['count(*)']))
|
||||
|
||||
sql = "select count(*) from t_data_nfc where TIME LIKE \'%{0}%\'".format(thistime)
|
||||
data = db._Query(sql)
|
||||
self.Count_Edit.setText(str(data[0]['count(*)']))
|
||||
#playsound(self.AUDIO_PATH)
|
||||
|
||||
def TimeOut(self):
|
||||
self.Test = 0
|
||||
ret = ctypes.windll.kernel32.TerminateThread(self.thread_01.handle, 0)
|
||||
|
||||
AFG.SetAmpl(0.02)
|
||||
AFG.SetFrequency('80')
|
||||
AFG.Close();
|
||||
self.Test_Btn.setText('开始测试')
|
||||
self.TestStatus.setText('测试结束')
|
||||
QMessageBox.warning(self, "标题", "ZigBee接收超时,请重新测试!", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
def TestOKFun(self, updateTest):
|
||||
print(updateTest)
|
||||
self.TestOK = updateTest[0]
|
||||
print(self.TestOK)
|
||||
self.Fre = updateTest[1]
|
||||
self.Vol = updateTest[2]
|
||||
|
||||
def get_nfc_zig_port(self):
|
||||
serial_ports = self.get_serial_list()
|
||||
for port in serial_ports:
|
||||
port = list(port)
|
||||
print(port)
|
||||
if NFC_PORT_STR in port[1]:
|
||||
nfc_port = port[0]
|
||||
elif ZIG_PORT_STR in port[1]:
|
||||
zig_port = port[0]
|
||||
|
||||
return (nfc_port, zig_port)
|
||||
|
||||
def get_serial_list(self):
|
||||
serial_ports = serial.tools.list_ports.comports()
|
||||
serial_list = []
|
||||
for port in serial_ports:
|
||||
serial_list.append(list(port))
|
||||
return serial_list
|
||||
|
||||
#def multimeter_update(self):
|
||||
#VOLTage = self.DMM.measure()
|
||||
#print(VOLTage)
|
||||
#self.VOLTage_Edit.setText(VOLTage)
|
||||
|
||||
def zig_update(self):
|
||||
msg = ""
|
||||
zig_info = self.zig_reader.read()
|
||||
# 将解析的设备信息和特征值输出到界面上
|
||||
if zig_info == SENSER_INF_PACK2:
|
||||
for k, i in self.zig_reader.dev_info_msg.items():
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
|
||||
for k, i in self.zig_reader.dev_conf_msg.items():
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
|
||||
self.zig_conf_recv_flag = True
|
||||
|
||||
elif (zig_info == EVEL_DATA_PACK1) | (zig_info == EVEL_DATA_PACK2):
|
||||
for k, i in self.zig_reader.dev_evel_msg.items():
|
||||
# print(k, " :", i)
|
||||
if isinstance(i, float):
|
||||
msg = msg + k + ":" + format(i, ".4f") + "\n"
|
||||
else:
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
if zig_info:
|
||||
self.ZigBee_textEdit.setText(msg)
|
||||
# zig_recv_file_name = self.zig_reader.dev_evel_msg['采集时间'][:10]+".txt"
|
||||
# with open(zig_recv_file_name, "a") as zig_recv_file:
|
||||
# zig_recv_file.write(msg)
|
||||
# zig_recv_file.write(str(self.Fre))
|
||||
# zig_recv_file.write(self.Vol)
|
||||
# zig_recv_file.write("\n\n")
|
||||
|
||||
global Stop
|
||||
try:
|
||||
if int(self.TestOK) == 1 and (len(msg) > 0) and self.ShortAddr == self.zig_reader.dev_evel_msg['传感器地址']:
|
||||
self.Next = 1
|
||||
self.TestOK = '0'
|
||||
print("OK1")
|
||||
return
|
||||
if (int(self.Next) == 1) and (len(msg) > 0) and self.ShortAddr == self.zig_reader.dev_evel_msg['传感器地址']:
|
||||
print("OK2")
|
||||
Stop = 1
|
||||
self.Next = 0
|
||||
sql = "select count(*) from t_data_zigbee where shortAddr = '{0}' and Frequency = '{1}';".format(
|
||||
self.zig_reader.dev_evel_msg['传感器地址'],self.Fre)
|
||||
data = db._Query(sql)
|
||||
print(data[0]['count(*)'])
|
||||
if data[0]['count(*)'] > 0:
|
||||
sql = "update t_data_zigbee set sampleTime = '{0}',deviceTem = '{1}',\
|
||||
environmentTem = '{2}',angle = '{3}',batteryV = '{4}',\
|
||||
rmsPK_X = '{5}',rmsValue_X = '{6}',speedValue_X = '{7}',speedValue_X = '{8}',\
|
||||
rmsPK_Y = '{9}',rmsValue_Y = '{10}',speedPK_Y = '{11}',speedValue_Y = '{12}',\
|
||||
rmsPK_Z = '{13}',rmsValue_Z = '{14}',speedPK_Z = '{15}',speedValue_Z = '{16}',\
|
||||
VOLTage = '{17}' \
|
||||
where shortAddr = '{18}' and Frequency = '{19}';".format(self.zig_reader.dev_evel_msg['采集时间'],
|
||||
self.zig_reader.dev_evel_msg['设备温度'],
|
||||
self.zig_reader.dev_evel_msg['环境温度'],
|
||||
self.zig_reader.dev_evel_msg['倾角'],
|
||||
self.zig_reader.dev_evel_msg['电池电压'],
|
||||
self.zig_reader.dev_evel_msg['X轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['X轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['X轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['X轴速度有效值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴速度有效值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴速度有效值'],self.Vol,
|
||||
self.zig_reader.dev_evel_msg['传感器地址'],self.Fre)
|
||||
print(sql)
|
||||
data = db._Operate(sql)
|
||||
else:
|
||||
sql = "insert into t_data_zigbee(shortAddr,sampleTime,deviceTem,environmentTem,angle,batteryV,\
|
||||
rmsPK_X,rmsValue_X,speedPK_X,speedValue_X,rmsPK_Y,rmsValue_Y,speedPK_Y,speedValue_Y,rmsPK_Z,\
|
||||
rmsValue_Z,speedPK_Z,speedValue_Z,Frequency,VOLTage) values('{0}','{1}','{2}','{3}','{4}','{5}',\
|
||||
'{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}',{18},'{19}'\
|
||||
)".format(self.zig_reader.dev_evel_msg['传感器地址'],
|
||||
self.zig_reader.dev_evel_msg['采集时间'],
|
||||
self.zig_reader.dev_evel_msg['设备温度'],
|
||||
self.zig_reader.dev_evel_msg['环境温度'],
|
||||
self.zig_reader.dev_evel_msg['倾角'],
|
||||
self.zig_reader.dev_evel_msg['电池电压'],
|
||||
self.zig_reader.dev_evel_msg['X轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['X轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['X轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['X轴速度有效值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['Y轴速度有效值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴峰值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴有效值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴速度峰值'],
|
||||
self.zig_reader.dev_evel_msg['Z轴速度有效值'],self.Fre,self.Vol)
|
||||
#print(sql)
|
||||
data = db._Operate(sql)
|
||||
self.TestOK = '0'
|
||||
except Exception:
|
||||
QMessageBox.warning(self, "标题", "数据存储异常", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
return -1
|
||||
|
||||
|
||||
def nfc_update(self):
|
||||
msg = ''
|
||||
for k, i in self.nfc_reader.dev_info_msg.items():
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
|
||||
for k, i in self.nfc_reader.dev_conf_msg.items():
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
|
||||
thistime = time.strftime("%Y-%m-%d %H:%M:%S ", time.localtime())
|
||||
sql = "select count(*) from t_data_nfc where shortAddr = '{0}';".format(
|
||||
self.nfc_reader.dev_conf_msg['Zigbee 本地地址'])
|
||||
self.ShortAddr = self.nfc_reader.dev_conf_msg['Zigbee 本地地址']
|
||||
data = db._Query(sql)
|
||||
print(data[0]['count(*)'])
|
||||
if data[0]['count(*)'] > 0:
|
||||
sql = "update t_data_nfc set dataNodeName = '{0}',dataNodeNo = '{1}',\
|
||||
hardWareVersion = '{2}',softVersion = '{3}',productNo = '{4}',\
|
||||
productSN = '{5}',productType = '{6}',RSSI = '{7}',\
|
||||
firstPowerTime = '{8}',TIME = '{9}',batteryV = '{10}'\
|
||||
where shortAddr = '{11}';".format(self.nfc_reader.dev_info_msg['测点名称'],
|
||||
self.nfc_reader.dev_info_msg['MAC地址'], \
|
||||
self.nfc_reader.dev_info_msg['硬件版本'],
|
||||
self.nfc_reader.dev_info_msg['软件版本'], \
|
||||
self.nfc_reader.dev_info_msg['生产批号'],
|
||||
self.nfc_reader.dev_info_msg['生产序列号'], \
|
||||
self.nfc_reader.dev_info_msg['产品型号'],
|
||||
self.nfc_reader.dev_info_msg['无线信号强度'], \
|
||||
self.nfc_reader.dev_info_msg['首次上电日期'], thistime, \
|
||||
self.nfc_reader.dev_info_msg['电池电压'],
|
||||
self.nfc_reader.dev_conf_msg['Zigbee 本地地址'])
|
||||
#print(sql)
|
||||
data = db._Operate(sql);
|
||||
else:
|
||||
sql = "insert into t_data_nfc(dataNodeName,dataNodeNo,shortAddr,hardWareVersion,softVersion,productNo,\
|
||||
productType,RSSI,productSN,firstPowerTime,batteryV,TIME) values('{0}','{1}','{2}','{3}','{4}','{5}',\
|
||||
'{6}','{7}','{8}','{9}','{10}','{11}')".format(self.nfc_reader.dev_info_msg['测点名称'],
|
||||
self.nfc_reader.dev_info_msg['MAC地址'], \
|
||||
self.nfc_reader.dev_conf_msg['Zigbee 本地地址'],
|
||||
self.nfc_reader.dev_info_msg['硬件版本'], \
|
||||
self.nfc_reader.dev_info_msg['软件版本'],
|
||||
self.nfc_reader.dev_info_msg['生产批号'], \
|
||||
self.nfc_reader.dev_info_msg['产品型号'],
|
||||
self.nfc_reader.dev_info_msg['无线信号强度'], \
|
||||
self.nfc_reader.dev_info_msg['生产序列号'],
|
||||
self.nfc_reader.dev_info_msg['首次上电日期'], \
|
||||
self.nfc_reader.dev_info_msg['电池电压'], thistime)
|
||||
#print(sql)
|
||||
data = db._Operate(sql);
|
||||
self.NFC_textEdit.setText(msg)
|
||||
|
||||
def NFCRead(self):
|
||||
try:
|
||||
self.Test_Btn.setEnabled(True)
|
||||
self.Result_edit.clear()
|
||||
self.tabWidget.setCurrentIndex(0)
|
||||
QApplication.processEvents()
|
||||
self.nfc_reader.get_uuid()
|
||||
if self.nfc_reader.nfc_uuid:
|
||||
self.Result_edit.append("DN101 NFC UUID:" + hex(self.nfc_reader.nfc_uuid)[2:])
|
||||
time.sleep(0.5)
|
||||
info = self.nfc_reader.read_info()
|
||||
conf = self.nfc_reader.read_conf()
|
||||
if info & conf:
|
||||
self.nfc_reader.dev_info_analysis()
|
||||
self.nfc_reader.dev_conf_analysis()
|
||||
self.nfc_update()
|
||||
self.Result_edit.append("DN101 NFC读取成功")
|
||||
return info
|
||||
else:
|
||||
self.Result_edit.append("NFC读取失败")
|
||||
return False
|
||||
else:
|
||||
self.Result_edit.append("NFC读取失败")
|
||||
return False
|
||||
except Exception:
|
||||
QMessageBox.warning(self, "标题", "测试异常", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
|
||||
return -1
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = QApplication(sys.argv)
|
||||
MainWindow = QMainWindow()
|
||||
ui = Ui_DataNodeFrequencyTest()
|
||||
ui.setupUi(MainWindow)
|
||||
View = DataNodeFrequencyTest()
|
||||
View.show()
|
||||
sys.exit(app.exec_())
|
||||
40
20231202/频响测试/DataNodeFrequencyTestold.spec
Normal file
40
20231202/频响测试/DataNodeFrequencyTestold.spec
Normal file
@ -0,0 +1,40 @@
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
|
||||
|
||||
block_cipher = None
|
||||
|
||||
|
||||
a = Analysis(['DataNodeFrequencyTestold.py'],
|
||||
pathex=[],
|
||||
binaries=[],
|
||||
datas=[],
|
||||
hiddenimports=[],
|
||||
hookspath=[],
|
||||
hooksconfig={},
|
||||
runtime_hooks=[],
|
||||
excludes=[],
|
||||
win_no_prefer_redirects=False,
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher,
|
||||
noarchive=False)
|
||||
pyz = PYZ(a.pure, a.zipped_data,
|
||||
cipher=block_cipher)
|
||||
|
||||
exe = EXE(pyz,
|
||||
a.scripts,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
[],
|
||||
name='DataNodeFrequencyTestold',
|
||||
debug=False,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
upx_exclude=[],
|
||||
runtime_tmpdir=None,
|
||||
console=True,
|
||||
disable_windowed_traceback=False,
|
||||
target_arch=None,
|
||||
codesign_identity=None,
|
||||
entitlements_file=None )
|
||||
301
20231202/频响测试/MainWindow.py
Normal file
301
20231202/频响测试/MainWindow.py
Normal file
@ -0,0 +1,301 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'mainwindow.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.6
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
|
||||
class Ui_DataNodeFrequencyTest(object):
|
||||
def setupUi(self, DataNodeFrequencyTest):
|
||||
DataNodeFrequencyTest.setObjectName("DataNodeFrequencyTest")
|
||||
DataNodeFrequencyTest.resize(850, 600)
|
||||
self.centralwidget = QtWidgets.QWidget(DataNodeFrequencyTest)
|
||||
self.centralwidget.setObjectName("centralwidget")
|
||||
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
|
||||
self.verticalLayout.setObjectName("verticalLayout")
|
||||
self.widget = QtWidgets.QWidget(self.centralwidget)
|
||||
self.widget.setObjectName("widget")
|
||||
self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget)
|
||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||
self.widget_3 = QtWidgets.QWidget(self.widget)
|
||||
self.widget_3.setMinimumSize(QtCore.QSize(500, 0))
|
||||
self.widget_3.setObjectName("widget_3")
|
||||
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.widget_3)
|
||||
self.verticalLayout_3.setObjectName("verticalLayout_3")
|
||||
self.widget_7 = QtWidgets.QWidget(self.widget_3)
|
||||
self.widget_7.setMinimumSize(QtCore.QSize(0, 300))
|
||||
self.widget_7.setObjectName("widget_7")
|
||||
self.horizontalLayout_8 = QtWidgets.QHBoxLayout(self.widget_7)
|
||||
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
|
||||
self.groupBox_3 = QtWidgets.QGroupBox(self.widget_7)
|
||||
self.groupBox_3.setObjectName("groupBox_3")
|
||||
self.horizontalLayout_8.addWidget(self.groupBox_3)
|
||||
self.verticalLayout_3.addWidget(self.widget_7)
|
||||
self.widget_9 = QtWidgets.QWidget(self.widget_3)
|
||||
self.widget_9.setMinimumSize(QtCore.QSize(120, 0))
|
||||
self.widget_9.setObjectName("widget_9")
|
||||
self.horizontalLayout_12 = QtWidgets.QHBoxLayout(self.widget_9)
|
||||
self.horizontalLayout_12.setObjectName("horizontalLayout_12")
|
||||
self.verticalLayout_4 = QtWidgets.QVBoxLayout()
|
||||
self.verticalLayout_4.setObjectName("verticalLayout_4")
|
||||
self.horizontalLayout_11 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_11.setObjectName("horizontalLayout_11")
|
||||
self.label = QtWidgets.QLabel(self.widget_9)
|
||||
self.label.setMinimumSize(QtCore.QSize(100, 0))
|
||||
self.label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label.setObjectName("label")
|
||||
self.horizontalLayout_11.addWidget(self.label)
|
||||
self.sensorType_Box = QtWidgets.QComboBox(self.widget_9)
|
||||
self.sensorType_Box.setMinimumSize(QtCore.QSize(220, 0))
|
||||
self.sensorType_Box.setMaximumSize(QtCore.QSize(220, 16777215))
|
||||
self.sensorType_Box.setObjectName("sensorType_Box")
|
||||
self.horizontalLayout_11.addWidget(self.sensorType_Box)
|
||||
self.verticalLayout_4.addLayout(self.horizontalLayout_11)
|
||||
self.horizontalLayout_10 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_10.setObjectName("horizontalLayout_10")
|
||||
self.label_7 = QtWidgets.QLabel(self.widget_9)
|
||||
self.label_7.setMinimumSize(QtCore.QSize(120, 0))
|
||||
self.label_7.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_7.setObjectName("label_7")
|
||||
self.horizontalLayout_10.addWidget(self.label_7)
|
||||
self.multimeter_Box = QtWidgets.QComboBox(self.widget_9)
|
||||
self.multimeter_Box.setMinimumSize(QtCore.QSize(220, 0))
|
||||
self.multimeter_Box.setMaximumSize(QtCore.QSize(220, 16777215))
|
||||
self.multimeter_Box.setObjectName("multimeter_Box")
|
||||
self.horizontalLayout_10.addWidget(self.multimeter_Box)
|
||||
self.verticalLayout_4.addLayout(self.horizontalLayout_10)
|
||||
self.horizontalLayout_9 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_9.setObjectName("horizontalLayout_9")
|
||||
self.label_2 = QtWidgets.QLabel(self.widget_9)
|
||||
self.label_2.setMinimumSize(QtCore.QSize(120, 0))
|
||||
self.label_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_2.setObjectName("label_2")
|
||||
self.horizontalLayout_9.addWidget(self.label_2)
|
||||
self.Signal_Edit = QtWidgets.QLineEdit(self.widget_9)
|
||||
self.Signal_Edit.setMinimumSize(QtCore.QSize(220, 0))
|
||||
self.Signal_Edit.setMaximumSize(QtCore.QSize(220, 16777215))
|
||||
self.Signal_Edit.setObjectName("Signal_Edit")
|
||||
self.horizontalLayout_9.addWidget(self.Signal_Edit)
|
||||
self.verticalLayout_4.addLayout(self.horizontalLayout_9)
|
||||
self.horizontalLayout_12.addLayout(self.verticalLayout_4)
|
||||
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_12.addItem(spacerItem)
|
||||
self.verticalLayout_6 = QtWidgets.QVBoxLayout()
|
||||
self.verticalLayout_6.setObjectName("verticalLayout_6")
|
||||
self.ConnecDev_Btn = QtWidgets.QPushButton(self.widget_9)
|
||||
self.ConnecDev_Btn.setObjectName("ConnecDev_Btn")
|
||||
self.verticalLayout_6.addWidget(self.ConnecDev_Btn)
|
||||
self.NFCRead_Btn = QtWidgets.QPushButton(self.widget_9)
|
||||
self.NFCRead_Btn.setEnabled(False)
|
||||
self.NFCRead_Btn.setObjectName("NFCRead_Btn")
|
||||
self.verticalLayout_6.addWidget(self.NFCRead_Btn)
|
||||
self.Test_Btn = QtWidgets.QPushButton(self.widget_9)
|
||||
self.Test_Btn.setEnabled(False)
|
||||
self.Test_Btn.setObjectName("Test_Btn")
|
||||
self.verticalLayout_6.addWidget(self.Test_Btn)
|
||||
self.horizontalLayout_12.addLayout(self.verticalLayout_6)
|
||||
self.verticalLayout_3.addWidget(self.widget_9)
|
||||
self.horizontalLayout.addWidget(self.widget_3)
|
||||
self.widget_4 = QtWidgets.QWidget(self.widget)
|
||||
self.widget_4.setObjectName("widget_4")
|
||||
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.widget_4)
|
||||
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
||||
self.widget_5 = QtWidgets.QWidget(self.widget_4)
|
||||
self.widget_5.setMinimumSize(QtCore.QSize(300, 240))
|
||||
self.widget_5.setObjectName("widget_5")
|
||||
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget_5)
|
||||
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
||||
self.groupBox_2 = QtWidgets.QGroupBox(self.widget_5)
|
||||
self.groupBox_2.setObjectName("groupBox_2")
|
||||
self.widget1 = QtWidgets.QWidget(self.groupBox_2)
|
||||
self.widget1.setGeometry(QtCore.QRect(10, 22, 259, 32))
|
||||
self.widget1.setObjectName("widget1")
|
||||
self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.widget1)
|
||||
self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
|
||||
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
|
||||
self.label_3 = QtWidgets.QLabel(self.widget1)
|
||||
self.label_3.setMinimumSize(QtCore.QSize(100, 0))
|
||||
self.label_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_3.setObjectName("label_3")
|
||||
self.horizontalLayout_4.addWidget(self.label_3)
|
||||
self.Frequency_Edit = QtWidgets.QLineEdit(self.widget1)
|
||||
self.Frequency_Edit.setEnabled(False)
|
||||
self.Frequency_Edit.setMinimumSize(QtCore.QSize(0, 30))
|
||||
self.Frequency_Edit.setStyleSheet("font: 75 20pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 170, 0);")
|
||||
self.Frequency_Edit.setObjectName("Frequency_Edit")
|
||||
self.horizontalLayout_4.addWidget(self.Frequency_Edit)
|
||||
self.label_10 = QtWidgets.QLabel(self.widget1)
|
||||
self.label_10.setObjectName("label_10")
|
||||
self.horizontalLayout_4.addWidget(self.label_10)
|
||||
self.widget2 = QtWidgets.QWidget(self.groupBox_2)
|
||||
self.widget2.setGeometry(QtCore.QRect(10, 71, 259, 32))
|
||||
self.widget2.setObjectName("widget2")
|
||||
self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.widget2)
|
||||
self.horizontalLayout_5.setContentsMargins(0, 0, 0, 0)
|
||||
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
|
||||
self.label_4 = QtWidgets.QLabel(self.widget2)
|
||||
self.label_4.setMinimumSize(QtCore.QSize(100, 0))
|
||||
self.label_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_4.setObjectName("label_4")
|
||||
self.horizontalLayout_5.addWidget(self.label_4)
|
||||
self.Ampl_Edit = QtWidgets.QLineEdit(self.widget2)
|
||||
self.Ampl_Edit.setEnabled(False)
|
||||
self.Ampl_Edit.setMinimumSize(QtCore.QSize(0, 30))
|
||||
self.Ampl_Edit.setStyleSheet("font: 75 20pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 170, 0);")
|
||||
self.Ampl_Edit.setObjectName("Ampl_Edit")
|
||||
self.horizontalLayout_5.addWidget(self.Ampl_Edit)
|
||||
self.label_11 = QtWidgets.QLabel(self.widget2)
|
||||
self.label_11.setObjectName("label_11")
|
||||
self.horizontalLayout_5.addWidget(self.label_11)
|
||||
self.widget3 = QtWidgets.QWidget(self.groupBox_2)
|
||||
self.widget3.setGeometry(QtCore.QRect(10, 120, 259, 32))
|
||||
self.widget3.setObjectName("widget3")
|
||||
self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.widget3)
|
||||
self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0)
|
||||
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
|
||||
self.label_5 = QtWidgets.QLabel(self.widget3)
|
||||
self.label_5.setMinimumSize(QtCore.QSize(100, 0))
|
||||
self.label_5.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_5.setObjectName("label_5")
|
||||
self.horizontalLayout_6.addWidget(self.label_5)
|
||||
self.VOLTage_Edit = QtWidgets.QLineEdit(self.widget3)
|
||||
self.VOLTage_Edit.setEnabled(False)
|
||||
self.VOLTage_Edit.setMinimumSize(QtCore.QSize(0, 30))
|
||||
self.VOLTage_Edit.setStyleSheet("font: 75 20pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 170, 0);")
|
||||
self.VOLTage_Edit.setObjectName("VOLTage_Edit")
|
||||
self.horizontalLayout_6.addWidget(self.VOLTage_Edit)
|
||||
self.label_9 = QtWidgets.QLabel(self.widget3)
|
||||
self.label_9.setObjectName("label_9")
|
||||
self.horizontalLayout_6.addWidget(self.label_9)
|
||||
self.widget4 = QtWidgets.QWidget(self.groupBox_2)
|
||||
self.widget4.setGeometry(QtCore.QRect(10, 169, 259, 32))
|
||||
self.widget4.setObjectName("widget4")
|
||||
self.horizontalLayout_7 = QtWidgets.QHBoxLayout(self.widget4)
|
||||
self.horizontalLayout_7.setContentsMargins(0, 0, 0, 0)
|
||||
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
|
||||
self.label_6 = QtWidgets.QLabel(self.widget4)
|
||||
self.label_6.setMinimumSize(QtCore.QSize(100, 0))
|
||||
self.label_6.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_6.setObjectName("label_6")
|
||||
self.horizontalLayout_7.addWidget(self.label_6)
|
||||
self.Count_Edit = QtWidgets.QLineEdit(self.widget4)
|
||||
self.Count_Edit.setEnabled(False)
|
||||
self.Count_Edit.setMinimumSize(QtCore.QSize(0, 30))
|
||||
self.Count_Edit.setStyleSheet("font: 75 20pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 170, 0);")
|
||||
self.Count_Edit.setObjectName("Count_Edit")
|
||||
self.horizontalLayout_7.addWidget(self.Count_Edit)
|
||||
self.label_12 = QtWidgets.QLabel(self.widget4)
|
||||
self.label_12.setObjectName("label_12")
|
||||
self.horizontalLayout_7.addWidget(self.label_12)
|
||||
self.horizontalLayout_2.addWidget(self.groupBox_2)
|
||||
self.verticalLayout_2.addWidget(self.widget_5)
|
||||
self.widget_6 = QtWidgets.QWidget(self.widget_4)
|
||||
self.widget_6.setObjectName("widget_6")
|
||||
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.widget_6)
|
||||
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
|
||||
self.tabWidget = QtWidgets.QTabWidget(self.widget_6)
|
||||
self.tabWidget.setObjectName("tabWidget")
|
||||
self.tab_3 = QtWidgets.QWidget()
|
||||
self.tab_3.setObjectName("tab_3")
|
||||
self.horizontalLayout_15 = QtWidgets.QHBoxLayout(self.tab_3)
|
||||
self.horizontalLayout_15.setObjectName("horizontalLayout_15")
|
||||
self.ZigBee_Edit = QtWidgets.QTextEdit(self.tab_3)
|
||||
self.ZigBee_Edit.setObjectName("ZigBee_Edit")
|
||||
self.horizontalLayout_15.addWidget(self.ZigBee_Edit)
|
||||
self.tabWidget.addTab(self.tab_3, "")
|
||||
self.tab_6 = QtWidgets.QWidget()
|
||||
self.tab_6.setObjectName("tab_6")
|
||||
self.horizontalLayout_16 = QtWidgets.QHBoxLayout(self.tab_6)
|
||||
self.horizontalLayout_16.setObjectName("horizontalLayout_16")
|
||||
self.NFC_Edit = QtWidgets.QTextEdit(self.tab_6)
|
||||
self.NFC_Edit.setObjectName("NFC_Edit")
|
||||
self.horizontalLayout_16.addWidget(self.NFC_Edit)
|
||||
self.tabWidget.addTab(self.tab_6, "")
|
||||
self.tab_4 = QtWidgets.QWidget()
|
||||
self.tab_4.setObjectName("tab_4")
|
||||
self.tabWidget.addTab(self.tab_4, "")
|
||||
self.horizontalLayout_3.addWidget(self.tabWidget)
|
||||
self.verticalLayout_2.addWidget(self.widget_6)
|
||||
self.horizontalLayout.addWidget(self.widget_4)
|
||||
self.verticalLayout.addWidget(self.widget)
|
||||
self.widget_2 = QtWidgets.QWidget(self.centralwidget)
|
||||
self.widget_2.setMinimumSize(QtCore.QSize(0, 80))
|
||||
self.widget_2.setMaximumSize(QtCore.QSize(16777215, 80))
|
||||
self.widget_2.setObjectName("widget_2")
|
||||
self.horizontalLayout_17 = QtWidgets.QHBoxLayout(self.widget_2)
|
||||
self.horizontalLayout_17.setObjectName("horizontalLayout_17")
|
||||
self.horizontalLayout_13 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_13.setObjectName("horizontalLayout_13")
|
||||
self.label_8 = QtWidgets.QLabel(self.widget_2)
|
||||
self.label_8.setObjectName("label_8")
|
||||
self.horizontalLayout_13.addWidget(self.label_8)
|
||||
self.TestStatus = QtWidgets.QLabel(self.widget_2)
|
||||
self.TestStatus.setStyleSheet("font: 75 28pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 170, 0);")
|
||||
self.TestStatus.setObjectName("TestStatus")
|
||||
self.horizontalLayout_13.addWidget(self.TestStatus)
|
||||
self.horizontalLayout_17.addLayout(self.horizontalLayout_13)
|
||||
spacerItem1 = QtWidgets.QSpacerItem(56, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_17.addItem(spacerItem1)
|
||||
self.horizontalLayout_14 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_14.setObjectName("horizontalLayout_14")
|
||||
self.label_14 = QtWidgets.QLabel(self.widget_2)
|
||||
self.label_14.setObjectName("label_14")
|
||||
self.horizontalLayout_14.addWidget(self.label_14)
|
||||
self.TotalCount = QtWidgets.QLabel(self.widget_2)
|
||||
self.TotalCount.setStyleSheet("font: 75 28pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 170, 0);")
|
||||
self.TotalCount.setObjectName("TotalCount")
|
||||
self.horizontalLayout_14.addWidget(self.TotalCount)
|
||||
self.horizontalLayout_17.addLayout(self.horizontalLayout_14)
|
||||
spacerItem2 = QtWidgets.QSpacerItem(55, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_17.addItem(spacerItem2)
|
||||
self.encourage_label = QtWidgets.QLabel(self.widget_2)
|
||||
self.encourage_label.setStyleSheet("font: 75 28pt \"微软雅黑\";\n"
|
||||
"color: rgb(255, 170, 0);")
|
||||
self.encourage_label.setObjectName("encourage_label")
|
||||
self.horizontalLayout_17.addWidget(self.encourage_label)
|
||||
self.verticalLayout.addWidget(self.widget_2)
|
||||
DataNodeFrequencyTest.setCentralWidget(self.centralwidget)
|
||||
|
||||
self.retranslateUi(DataNodeFrequencyTest)
|
||||
self.tabWidget.setCurrentIndex(0)
|
||||
QtCore.QMetaObject.connectSlotsByName(DataNodeFrequencyTest)
|
||||
|
||||
def retranslateUi(self, DataNodeFrequencyTest):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
DataNodeFrequencyTest.setWindowTitle(_translate("DataNodeFrequencyTest", "DataNodeFrequencyTest"))
|
||||
self.groupBox_3.setTitle(_translate("DataNodeFrequencyTest", "频响曲线"))
|
||||
self.label.setText(_translate("DataNodeFrequencyTest", " 传感器类型:"))
|
||||
self.label_7.setText(_translate("DataNodeFrequencyTest", " 万用表端口:"))
|
||||
self.label_2.setText(_translate("DataNodeFrequencyTest", "信号发生器端口:"))
|
||||
self.ConnecDev_Btn.setText(_translate("DataNodeFrequencyTest", " 联机"))
|
||||
self.NFCRead_Btn.setText(_translate("DataNodeFrequencyTest", "NFC读取"))
|
||||
self.Test_Btn.setText(_translate("DataNodeFrequencyTest", "开始测试"))
|
||||
self.groupBox_2.setTitle(_translate("DataNodeFrequencyTest", "实时数据"))
|
||||
self.label_3.setText(_translate("DataNodeFrequencyTest", "信号发生器频率:"))
|
||||
self.label_10.setText(_translate("DataNodeFrequencyTest", "Hz"))
|
||||
self.label_4.setText(_translate("DataNodeFrequencyTest", "信号发生器幅值:"))
|
||||
self.label_11.setText(_translate("DataNodeFrequencyTest", "mv"))
|
||||
self.label_5.setText(_translate("DataNodeFrequencyTest", "万用表电压:"))
|
||||
self.label_9.setText(_translate("DataNodeFrequencyTest", "mv"))
|
||||
self.label_6.setText(_translate("DataNodeFrequencyTest", "今天测试个数:"))
|
||||
self.label_12.setText(_translate("DataNodeFrequencyTest", "个"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("DataNodeFrequencyTest", "Zigbee"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_6), _translate("DataNodeFrequencyTest", "NFC"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("DataNodeFrequencyTest", "Frequency"))
|
||||
self.label_8.setText(_translate("DataNodeFrequencyTest", " 当前状态:"))
|
||||
self.TestStatus.setText(_translate("DataNodeFrequencyTest", "未测试"))
|
||||
self.label_14.setText(_translate("DataNodeFrequencyTest", "累计测试个数:"))
|
||||
self.TotalCount.setText(_translate("DataNodeFrequencyTest", "TextLabel"))
|
||||
self.encourage_label.setText(_translate("DataNodeFrequencyTest", ""))
|
||||
38
20231202/频响测试/Mysql.py
Normal file
38
20231202/频响测试/Mysql.py
Normal file
@ -0,0 +1,38 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import pymysql
|
||||
import configparser
|
||||
cfp = configparser.ConfigParser()
|
||||
cfp.read("config.ini")
|
||||
|
||||
class Mysql():
|
||||
def __init__(self):
|
||||
ip = cfp.get("DB","IP")
|
||||
self.conn = pymysql.connect(host=ip, user='root', password='root', port=3306, db='datanodedb',
|
||||
charset='utf8');
|
||||
print(self.conn)
|
||||
try:
|
||||
self.cursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor)
|
||||
except pymysql.err.MySQLError as _error:
|
||||
raise _error
|
||||
|
||||
def _Query(self, sql):
|
||||
|
||||
print(sql)
|
||||
try:
|
||||
self.cursor.execute(sql)
|
||||
data = self.cursor.fetchall()
|
||||
return data
|
||||
except pymysql.err.MySQLError as _error:
|
||||
raise _error
|
||||
|
||||
|
||||
def _Operate(self, sql):
|
||||
try:
|
||||
print(sql)
|
||||
self.cursor.execute(sql)
|
||||
# 提交数据
|
||||
self.conn.commit()
|
||||
except pymysql.err.MySQLError as _error:
|
||||
raise _error
|
||||
181
20231202/频响测试/Prologix.py
Normal file
181
20231202/频响测试/Prologix.py
Normal file
@ -0,0 +1,181 @@
|
||||
import serial
|
||||
import datetime
|
||||
import os
|
||||
import time
|
||||
from decimal import *
|
||||
class prologix(object):
|
||||
serial: object = None
|
||||
debug: bool = False
|
||||
timeout: float = 2.5
|
||||
EOL: str = "\n"
|
||||
|
||||
def __init__(self, addr:int=22, port:str="com1", baud: int = 115200,
|
||||
ser_timeout: float = 3, timeout: float = 2.5, debug: bool = False):
|
||||
"""
|
||||
:param port:
|
||||
:param baud:
|
||||
:param timeout:
|
||||
:param debug:
|
||||
"""
|
||||
self.timeout = timeout
|
||||
|
||||
|
||||
try:
|
||||
self.serial = serial.Serial(port, baudrate=baud, timeout=ser_timeout)
|
||||
except serial.SerialException:
|
||||
print("!! Port " + port + " could not be opened")
|
||||
self.serial = None
|
||||
else:
|
||||
timeout_str = str(int(self.timeout*1000))
|
||||
self.cmdWrite("++addr "+str(addr)) #select instrument gpib address
|
||||
self.cmdWrite("++mode 1") # Change to controller mode
|
||||
self.cmdWrite("++auto 0") # Do not automatically read device after each command
|
||||
self.cmdWrite("++eoi 1") #自动添加命令结束标识符
|
||||
self.cmdWrite("++eos 2") #结束标识符为LF
|
||||
self.cmdWrite("++read_tmo_ms "+timeout_str) # Transmission timeout
|
||||
self.cmdWrite("++ifc")
|
||||
#self.cmdWrite("++clr")
|
||||
|
||||
|
||||
|
||||
# Check for Prologix device
|
||||
self.cmdWrite("++ver")
|
||||
check = self.serial.readline()
|
||||
|
||||
if len(check) <= 0:
|
||||
print("!! No responding device on port " + port + " found")
|
||||
self.serial = None
|
||||
return None
|
||||
else:
|
||||
info = "Device on Port : "+port
|
||||
return info
|
||||
|
||||
|
||||
|
||||
|
||||
def cmdWrite(self, cmd: str):
|
||||
"""
|
||||
通过串口写入数据,无数据读回
|
||||
:param cmd: 命令
|
||||
:return: None
|
||||
"""
|
||||
self.serial.reset_output_buffer()
|
||||
self.serial.write(str.encode(cmd+self.EOL))
|
||||
self.serial.flush()
|
||||
|
||||
def cmdPoll(self, cmd: str):
|
||||
"""
|
||||
写入命令,并读回返回值
|
||||
:param cmd:
|
||||
:return:
|
||||
"""
|
||||
self.serial.reset_input_buffer()
|
||||
self.cmdWrite(cmd)
|
||||
|
||||
ret = self.cmdRead()
|
||||
return ret
|
||||
|
||||
def cmdRead(self):
|
||||
self.cmdWrite("++read eoi")
|
||||
|
||||
out = self.serial.readline()
|
||||
#print("Read out: ", out)
|
||||
if len(out) == 0:
|
||||
return None
|
||||
|
||||
return out
|
||||
|
||||
def release(self):
|
||||
"""
|
||||
解除对仪器的控制
|
||||
:return: None
|
||||
"""
|
||||
self.cmdWrite("++loc")
|
||||
self.serial.close()
|
||||
|
||||
class DMM_34401A(prologix):
|
||||
def __init__(self, addr:int=22, port:str="com1", baud: int = 115200,
|
||||
ser_timeout: float=3, timeout: float=2.5,debug: bool = False ):
|
||||
super(DMM_34401A,self).__init__(addr, port, baud, ser_timeout, timeout)
|
||||
|
||||
self.init_setup()
|
||||
|
||||
def init_setup(self):
|
||||
#self.auto_disable
|
||||
#self.clear_err()
|
||||
#self.auto_enable
|
||||
|
||||
ret = self.cmdPoll("*IDN?")
|
||||
#print(ret)
|
||||
|
||||
|
||||
@property
|
||||
def auto_enable(self):
|
||||
self.cmdWrite("++auto 1")
|
||||
mode = self.cmdPoll("++auto")
|
||||
return mode
|
||||
|
||||
@property
|
||||
def auto_disable(self):
|
||||
self.cmdWrite("++auto 0")
|
||||
mode = self.cmdPoll("++auto")
|
||||
return mode
|
||||
|
||||
def close_dmm(self):
|
||||
self.release()
|
||||
|
||||
def measure(self):
|
||||
ret = self.cmdPoll("*CLS;:READ?")
|
||||
|
||||
#print(ret)
|
||||
if ret==None:
|
||||
return None
|
||||
|
||||
value = ret.decode().strip()
|
||||
value = float(value)
|
||||
value = (value*1000)
|
||||
value = Decimal(value).quantize(Decimal('0.000'))
|
||||
return value
|
||||
|
||||
def clear_err(self):
|
||||
self.cmdWrite("*CLS")
|
||||
|
||||
def measure_multi(self, count):
|
||||
measure_result = []
|
||||
index = 0
|
||||
while index < count:
|
||||
ret = self.measure()
|
||||
if ret:
|
||||
measure_result.append(ret)
|
||||
index += 1
|
||||
|
||||
return measure_result
|
||||
|
||||
def set_measure_voltage_ac(self, range:str="AUTO", band:str="20"):
|
||||
"""
|
||||
设置测量AC电压
|
||||
:param range【量程】: AUTO, MIN, MAX
|
||||
:param band【带宽】: 3, 20, 200
|
||||
:return: Conf info
|
||||
"""
|
||||
self.cmdWrite("CONFigure:VOLTage:AC "+range)
|
||||
ret = self.cmdPoll("CONFigure?")
|
||||
print("测量模式:",ret.decode().strip())
|
||||
|
||||
self.cmdWrite("DETector:BANDwidth "+band)
|
||||
ret = self.cmdPoll("DETector:BANDwidth?")
|
||||
print("AC带宽:",ret.decode().strip())
|
||||
|
||||
def set_measure_voltage_dc(self, range:str="AUTO"):
|
||||
"""
|
||||
设置测量DC电压
|
||||
:param range【量程】: AUTO, ...
|
||||
:return:
|
||||
"""
|
||||
self.cmdWrite("CONFigure:VOLTage:DC "+range)
|
||||
ret = self.cmdPoll("CONFigure?")
|
||||
#print(ret)
|
||||
def Close(self):
|
||||
self.release()
|
||||
|
||||
|
||||
16
20231202/频响测试/Test.py
Normal file
16
20231202/频响测试/Test.py
Normal file
@ -0,0 +1,16 @@
|
||||
from Prologix import *
|
||||
|
||||
#创建34401A 连接
|
||||
DMM = DMM_34401A(addr=22, port="COM12", baud=115200, ser_timeout=3, timeout=2)
|
||||
|
||||
DMM.cmdWrite("*RST")
|
||||
DMM.cmdWrite("CONFigure:VOLTage:AC AUTO")
|
||||
|
||||
print(DMM.cmdWrite("DETector:BANDwidth 20"))
|
||||
print(DMM.cmdPoll("DETector:BANDwidth?"))
|
||||
|
||||
|
||||
DMM.set_measure_voltage_ac()
|
||||
print(DMM.cmdPoll("MEASure:VOLTage:AC?"))
|
||||
for i in range(10):
|
||||
print(DMM.measure())
|
||||
BIN
20231202/频响测试/__pycache__/AFG3000.cpython-310.pyc
Normal file
BIN
20231202/频响测试/__pycache__/AFG3000.cpython-310.pyc
Normal file
Binary file not shown.
BIN
20231202/频响测试/__pycache__/AFG3000.cpython-39.pyc
Normal file
BIN
20231202/频响测试/__pycache__/AFG3000.cpython-39.pyc
Normal file
Binary file not shown.
BIN
20231202/频响测试/__pycache__/AFG3000old.cpython-39.pyc
Normal file
BIN
20231202/频响测试/__pycache__/AFG3000old.cpython-39.pyc
Normal file
Binary file not shown.
BIN
20231202/频响测试/__pycache__/DN101_NFC.cpython-310.pyc
Normal file
BIN
20231202/频响测试/__pycache__/DN101_NFC.cpython-310.pyc
Normal file
Binary file not shown.
BIN
20231202/频响测试/__pycache__/DN101_NFC.cpython-39.pyc
Normal file
BIN
20231202/频响测试/__pycache__/DN101_NFC.cpython-39.pyc
Normal file
Binary file not shown.
BIN
20231202/频响测试/__pycache__/DN101_ZIGBEE.cpython-310.pyc
Normal file
BIN
20231202/频响测试/__pycache__/DN101_ZIGBEE.cpython-310.pyc
Normal file
Binary file not shown.
BIN
20231202/频响测试/__pycache__/DN101_ZIGBEE.cpython-39.pyc
Normal file
BIN
20231202/频响测试/__pycache__/DN101_ZIGBEE.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
20231202/频响测试/__pycache__/MainWindow.cpython-310.pyc
Normal file
BIN
20231202/频响测试/__pycache__/MainWindow.cpython-310.pyc
Normal file
Binary file not shown.
BIN
20231202/频响测试/__pycache__/MainWindow.cpython-39.pyc
Normal file
BIN
20231202/频响测试/__pycache__/MainWindow.cpython-39.pyc
Normal file
Binary file not shown.
BIN
20231202/频响测试/__pycache__/Mysql.cpython-310.pyc
Normal file
BIN
20231202/频响测试/__pycache__/Mysql.cpython-310.pyc
Normal file
Binary file not shown.
BIN
20231202/频响测试/__pycache__/Mysql.cpython-39.pyc
Normal file
BIN
20231202/频响测试/__pycache__/Mysql.cpython-39.pyc
Normal file
Binary file not shown.
BIN
20231202/频响测试/__pycache__/Prologix.cpython-310.pyc
Normal file
BIN
20231202/频响测试/__pycache__/Prologix.cpython-310.pyc
Normal file
Binary file not shown.
BIN
20231202/频响测试/__pycache__/Prologix.cpython-39.pyc
Normal file
BIN
20231202/频响测试/__pycache__/Prologix.cpython-39.pyc
Normal file
Binary file not shown.
BIN
20231202/频响测试/__pycache__/zigbee_message_pack.cpython-310.pyc
Normal file
BIN
20231202/频响测试/__pycache__/zigbee_message_pack.cpython-310.pyc
Normal file
Binary file not shown.
BIN
20231202/频响测试/__pycache__/zigbee_message_pack.cpython-39.pyc
Normal file
BIN
20231202/频响测试/__pycache__/zigbee_message_pack.cpython-39.pyc
Normal file
Binary file not shown.
13983
20231202/频响测试/build/DataNodeFrequencyTestnew/Analysis-00.toc
Normal file
13983
20231202/频响测试/build/DataNodeFrequencyTestnew/Analysis-00.toc
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
<assemblyIdentity type="win32" name="DataNodeFrequencyTestnew" processorArchitecture="amd64" version="1.0.0.0"/>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<security>
|
||||
<requestedPrivileges>
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" language="*" processorArchitecture="*" version="6.0.0.0" publicKeyToken="6595b64144ccf1df"/>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
|
||||
</application>
|
||||
</compatibility>
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
</assembly>
|
||||
Binary file not shown.
7265
20231202/频响测试/build/DataNodeFrequencyTestnew/EXE-00.toc
Normal file
7265
20231202/频响测试/build/DataNodeFrequencyTestnew/EXE-00.toc
Normal file
File diff suppressed because it is too large
Load Diff
7257
20231202/频响测试/build/DataNodeFrequencyTestnew/PKG-00.toc
Normal file
7257
20231202/频响测试/build/DataNodeFrequencyTestnew/PKG-00.toc
Normal file
File diff suppressed because it is too large
Load Diff
BIN
20231202/频响测试/build/DataNodeFrequencyTestnew/PYZ-00.pyz
Normal file
BIN
20231202/频响测试/build/DataNodeFrequencyTestnew/PYZ-00.pyz
Normal file
Binary file not shown.
6752
20231202/频响测试/build/DataNodeFrequencyTestnew/PYZ-00.toc
Normal file
6752
20231202/频响测试/build/DataNodeFrequencyTestnew/PYZ-00.toc
Normal file
File diff suppressed because it is too large
Load Diff
2518
20231202/频响测试/build/DataNodeFrequencyTestnew/Tree-00.toc
Normal file
2518
20231202/频响测试/build/DataNodeFrequencyTestnew/Tree-00.toc
Normal file
File diff suppressed because it is too large
Load Diff
257
20231202/频响测试/build/DataNodeFrequencyTestnew/Tree-01.toc
Normal file
257
20231202/频响测试/build/DataNodeFrequencyTestnew/Tree-01.toc
Normal file
@ -0,0 +1,257 @@
|
||||
('D:\\Program Files\\Python39\\tcl\\tk8.6',
|
||||
'tk',
|
||||
['demos', '*.lib', 'tkConfig.sh'],
|
||||
'DATA',
|
||||
[('tk\\bgerror.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\bgerror.tcl',
|
||||
'DATA'),
|
||||
('tk\\button.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\button.tcl',
|
||||
'DATA'),
|
||||
('tk\\choosedir.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\choosedir.tcl',
|
||||
'DATA'),
|
||||
('tk\\clrpick.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\clrpick.tcl',
|
||||
'DATA'),
|
||||
('tk\\comdlg.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\comdlg.tcl',
|
||||
'DATA'),
|
||||
('tk\\console.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\console.tcl',
|
||||
'DATA'),
|
||||
('tk\\dialog.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\dialog.tcl',
|
||||
'DATA'),
|
||||
('tk\\entry.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\entry.tcl',
|
||||
'DATA'),
|
||||
('tk\\focus.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\focus.tcl',
|
||||
'DATA'),
|
||||
('tk\\fontchooser.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\fontchooser.tcl',
|
||||
'DATA'),
|
||||
('tk\\iconlist.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\iconlist.tcl',
|
||||
'DATA'),
|
||||
('tk\\icons.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\icons.tcl',
|
||||
'DATA'),
|
||||
('tk\\license.terms',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\license.terms',
|
||||
'DATA'),
|
||||
('tk\\listbox.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\listbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\megawidget.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\megawidget.tcl',
|
||||
'DATA'),
|
||||
('tk\\menu.tcl', 'D:\\Program Files\\Python39\\tcl\\tk8.6\\menu.tcl', 'DATA'),
|
||||
('tk\\mkpsenc.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\mkpsenc.tcl',
|
||||
'DATA'),
|
||||
('tk\\msgbox.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\obsolete.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\obsolete.tcl',
|
||||
'DATA'),
|
||||
('tk\\optMenu.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\optMenu.tcl',
|
||||
'DATA'),
|
||||
('tk\\palette.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\palette.tcl',
|
||||
'DATA'),
|
||||
('tk\\panedwindow.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\panedwindow.tcl',
|
||||
'DATA'),
|
||||
('tk\\pkgIndex.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\pkgIndex.tcl',
|
||||
'DATA'),
|
||||
('tk\\safetk.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\safetk.tcl',
|
||||
'DATA'),
|
||||
('tk\\scale.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\scale.tcl',
|
||||
'DATA'),
|
||||
('tk\\scrlbar.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\scrlbar.tcl',
|
||||
'DATA'),
|
||||
('tk\\spinbox.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\spinbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\tclIndex', 'D:\\Program Files\\Python39\\tcl\\tk8.6\\tclIndex', 'DATA'),
|
||||
('tk\\tearoff.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\tearoff.tcl',
|
||||
'DATA'),
|
||||
('tk\\text.tcl', 'D:\\Program Files\\Python39\\tcl\\tk8.6\\text.tcl', 'DATA'),
|
||||
('tk\\tk.tcl', 'D:\\Program Files\\Python39\\tcl\\tk8.6\\tk.tcl', 'DATA'),
|
||||
('tk\\tkfbox.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\tkfbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\unsupported.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\unsupported.tcl',
|
||||
'DATA'),
|
||||
('tk\\xmfbox.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\xmfbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\altTheme.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\altTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\aquaTheme.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\aquaTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\button.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\button.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\clamTheme.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\clamTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\classicTheme.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\classicTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\combobox.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\combobox.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\cursors.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\cursors.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\defaults.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\defaults.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\entry.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\entry.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\fonts.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\fonts.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\menubutton.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\menubutton.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\notebook.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\notebook.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\panedwindow.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\panedwindow.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\progress.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\progress.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\scale.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\scale.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\scrollbar.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\scrollbar.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\sizegrip.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\sizegrip.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\spinbox.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\spinbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\treeview.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\treeview.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\ttk.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\ttk.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\utils.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\utils.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\vistaTheme.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\vistaTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\winTheme.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\winTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\xpTheme.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\xpTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\msgs\\cs.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\cs.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\da.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\da.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\de.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\de.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\el.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\el.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\en.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\en.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\en_gb.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\en_gb.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\eo.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\eo.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\es.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\es.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\fr.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\fr.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\hu.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\hu.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\it.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\it.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\nl.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\nl.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\pl.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\pl.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\pt.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\pt.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\ru.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\ru.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\sv.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\sv.msg',
|
||||
'DATA'),
|
||||
('tk\\images\\logo.eps',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\logo.eps',
|
||||
'DATA'),
|
||||
('tk\\images\\logo100.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\logo100.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\logo64.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\logo64.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\logoLarge.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\logoLarge.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\logoMed.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\logoMed.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo.eps',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\pwrdLogo.eps',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo100.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\pwrdLogo100.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo150.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\pwrdLogo150.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo175.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\pwrdLogo175.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo200.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\pwrdLogo200.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo75.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\pwrdLogo75.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\README',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\README',
|
||||
'DATA'),
|
||||
('tk\\images\\tai-ku.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\tai-ku.gif',
|
||||
'DATA')])
|
||||
21
20231202/频响测试/build/DataNodeFrequencyTestnew/Tree-02.toc
Normal file
21
20231202/频响测试/build/DataNodeFrequencyTestnew/Tree-02.toc
Normal file
@ -0,0 +1,21 @@
|
||||
('D:\\Program Files\\Python39\\tcl\\tcl8.6\\..\\tcl8',
|
||||
'tcl8',
|
||||
[],
|
||||
'DATA',
|
||||
[('tcl8\\8.6\\http-2.9.5.tm',
|
||||
'D:\\Program Files\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.6\\http-2.9.5.tm',
|
||||
'DATA'),
|
||||
('tcl8\\8.5\\msgcat-1.6.1.tm',
|
||||
'D:\\Program Files\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.5\\msgcat-1.6.1.tm',
|
||||
'DATA'),
|
||||
('tcl8\\8.5\\tcltest-2.5.3.tm',
|
||||
'D:\\Program Files\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.5\\tcltest-2.5.3.tm',
|
||||
'DATA'),
|
||||
('tcl8\\8.4\\platform-1.0.18.tm',
|
||||
'D:\\Program '
|
||||
'Files\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.4\\platform-1.0.18.tm',
|
||||
'DATA'),
|
||||
('tcl8\\8.4\\platform\\shell-1.1.4.tm',
|
||||
'D:\\Program '
|
||||
'Files\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.4\\platform\\shell-1.1.4.tm',
|
||||
'DATA')])
|
||||
2400
20231202/频响测试/build/DataNodeFrequencyTestnew/Tree-03.toc
Normal file
2400
20231202/频响测试/build/DataNodeFrequencyTestnew/Tree-03.toc
Normal file
File diff suppressed because it is too large
Load Diff
BIN
20231202/频响测试/build/DataNodeFrequencyTestnew/base_library.zip
Normal file
BIN
20231202/频响测试/build/DataNodeFrequencyTestnew/base_library.zip
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,314 @@
|
||||
|
||||
This file lists modules PyInstaller was not able to find. This does not
|
||||
necessarily mean this module is required for running you program. Python and
|
||||
Python 3rd-party packages include a lot of conditional or optional modules. For
|
||||
example the module 'ntpath' only exists on Windows, whereas the module
|
||||
'posixpath' only exists on Posix systems.
|
||||
|
||||
Types if import:
|
||||
* top-level: imported at the top-level - look at these first
|
||||
* conditional: imported within an if-statement
|
||||
* delayed: imported from within a function
|
||||
* optional: imported within a try-except-statement
|
||||
|
||||
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
|
||||
yourself tracking down the missing module. Thanks!
|
||||
|
||||
missing module named 'org.python' - imported by copy (optional), xml.sax (delayed, conditional), setuptools.sandbox (conditional)
|
||||
missing module named _posixsubprocess - imported by subprocess (optional), multiprocessing.util (delayed)
|
||||
missing module named grp - imported by shutil (optional), tarfile (optional), pathlib (delayed, optional), subprocess (optional), distutils.archive_util (optional)
|
||||
missing module named pwd - imported by posixpath (delayed, conditional), shutil (optional), tarfile (optional), pathlib (delayed, conditional, optional), subprocess (optional), http.server (delayed, optional), webbrowser (delayed), netrc (delayed, conditional), getpass (delayed), distutils.util (delayed, conditional, optional), distutils.archive_util (optional)
|
||||
missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
|
||||
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
|
||||
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
|
||||
missing module named urllib.unquote_plus - imported by urllib (conditional), sqlalchemy.util.compat (conditional)
|
||||
missing module named urllib.unquote - imported by urllib (conditional), sqlalchemy.util.compat (conditional)
|
||||
missing module named urllib.quote_plus - imported by urllib (conditional), sqlalchemy.util.compat (conditional)
|
||||
missing module named urllib.quote - imported by urllib (conditional), sqlalchemy.util.compat (conditional), playsound (delayed, optional)
|
||||
missing module named urllib.pathname2url - imported by urllib (conditional), PyInstaller.lib.modulegraph._compat (conditional), playsound (delayed, optional)
|
||||
missing module named pep517 - imported by importlib.metadata (delayed)
|
||||
missing module named posix - imported by os (conditional, optional), shutil (conditional), importlib._bootstrap_external (conditional)
|
||||
missing module named resource - imported by posix (top-level), test.support (delayed, conditional, optional)
|
||||
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), zipimport (top-level), PyInstaller.loader.pyimod02_archive (delayed)
|
||||
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
|
||||
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
|
||||
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
|
||||
missing module named _scproxy - imported by urllib.request (conditional)
|
||||
missing module named termios - imported by tty (top-level), getpass (optional), serial.serialposix (top-level)
|
||||
missing module named 'java.lang' - imported by platform (delayed, optional), xml.sax._exceptions (conditional)
|
||||
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
|
||||
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
|
||||
missing module named multiprocessing.Pool - imported by multiprocessing (delayed, conditional), scipy._lib._util (delayed, conditional)
|
||||
missing module named multiprocessing.Manager - imported by multiprocessing (optional), nose.plugins.plugintest (optional)
|
||||
missing module named multiprocessing.current_process - imported by multiprocessing (delayed), nose.plugins.plugintest (delayed)
|
||||
missing module named asyncio.DefaultEventLoopPolicy - imported by asyncio (delayed, conditional), asyncio.events (delayed, conditional)
|
||||
missing module named vms_lib - imported by platform (delayed, optional)
|
||||
missing module named java - imported by platform (delayed)
|
||||
missing module named _winreg - imported by platform (delayed, optional), pkg_resources._vendor.appdirs (delayed, conditional)
|
||||
missing module named readline - imported by cmd (delayed, conditional, optional), code (delayed, conditional, optional), pdb (delayed, optional)
|
||||
missing module named org - imported by pickle (optional)
|
||||
missing module named pyimod03_importers - imported by D:\Program Files\Python39\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py (top-level), D:\Program Files\Python39\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgres.py (top-level)
|
||||
missing module named tputil - imported by jinja2.debug (conditional, optional)
|
||||
missing module named railroad - imported by pyparsing.diagram (top-level)
|
||||
missing module named _manylinux - imported by pkg_resources._vendor.packaging.tags (delayed, optional), packaging._manylinux (delayed, optional), setuptools._vendor.packaging.tags (delayed, optional)
|
||||
missing module named 'com.sun' - imported by pkg_resources._vendor.appdirs (delayed, conditional, optional)
|
||||
missing module named com - imported by pkg_resources._vendor.appdirs (delayed)
|
||||
missing module named 'win32com.shell' - imported by pkg_resources._vendor.appdirs (delayed, conditional, optional)
|
||||
missing module named 'pkg_resources.extern.pyparsing' - imported by pkg_resources._vendor.packaging.requirements (top-level), pkg_resources._vendor.packaging.markers (top-level)
|
||||
missing module named __builtin__ - imported by pkg_resources._vendor.pyparsing (conditional), setuptools._vendor.pyparsing (conditional)
|
||||
missing module named ordereddict - imported by pkg_resources._vendor.pyparsing (optional), setuptools._vendor.pyparsing (optional)
|
||||
missing module named pkg_resources.extern.packaging - imported by pkg_resources.extern (top-level), pkg_resources (top-level)
|
||||
missing module named pkg_resources.extern.appdirs - imported by pkg_resources.extern (top-level), pkg_resources (top-level)
|
||||
missing module named pickle5 - imported by numpy.compat.py3k (optional)
|
||||
missing module named _dummy_thread - imported by cffi.lock (conditional, optional), numpy.core.arrayprint (optional)
|
||||
missing module named numpy.array - imported by numpy (top-level), numpy.ma.core (top-level), numpy.ma.extras (top-level), numpy.ma.mrecords (top-level), scipy.interpolate.interpolate (top-level), scipy.linalg.decomp (top-level), scipy.linalg.decomp_schur (top-level), scipy.sparse.linalg.isolve.utils (top-level), scipy.interpolate._fitpack_impl (top-level), scipy.interpolate.fitpack2 (top-level), scipy.stats.stats (top-level), scipy.optimize.lbfgsb (top-level), scipy.optimize.tnc (top-level), scipy.optimize.slsqp (top-level), scipy.integrate._ode (top-level), scipy.misc.common (top-level), scipy.stats.morestats (top-level)
|
||||
missing module named numpy.recarray - imported by numpy (top-level), numpy.ma.mrecords (top-level)
|
||||
missing module named numpy.ndarray - imported by numpy (top-level), numpy.ma.core (top-level), numpy.ma.extras (top-level), numpy.ma.mrecords (top-level), numpy.ctypeslib (top-level), pandas.compat.numpy.function (top-level), numpy.typing._array_like (top-level), scipy.stats._distn_infrastructure (top-level), scipy.stats.mstats_basic (top-level), scipy.stats.mstats_extras (top-level)
|
||||
missing module named numpy.dtype - imported by numpy (top-level), numpy.ma.mrecords (top-level), numpy.ctypeslib (top-level), scipy.optimize.minpack (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.bool_ - imported by numpy (top-level), numpy.ma.core (top-level), numpy.ma.mrecords (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.expand_dims - imported by numpy (top-level), numpy.ma.core (top-level)
|
||||
missing module named numpy.iscomplexobj - imported by numpy (top-level), numpy.ma.core (top-level), scipy.linalg.decomp (top-level), scipy.linalg._decomp_ldl (top-level)
|
||||
missing module named numpy.amin - imported by numpy (top-level), numpy.ma.core (top-level), scipy.stats.morestats (top-level)
|
||||
missing module named numpy.amax - imported by numpy (top-level), numpy.ma.core (top-level), scipy.linalg.matfuncs (top-level), scipy.stats.morestats (top-level)
|
||||
missing module named numpy.histogramdd - imported by numpy (delayed), numpy.lib.twodim_base (delayed)
|
||||
missing module named numpy.core.ufunc - imported by numpy.core (top-level), numpy.lib.utils (top-level)
|
||||
missing module named numpy.core.ones - imported by numpy.core (top-level), numpy.lib.polynomial (top-level)
|
||||
missing module named numpy.core.hstack - imported by numpy.core (top-level), numpy.lib.polynomial (top-level)
|
||||
missing module named numpy.core.atleast_1d - imported by numpy.core (top-level), numpy.lib.polynomial (top-level)
|
||||
missing module named numpy.core.atleast_3d - imported by numpy.core (top-level), numpy.lib.shape_base (top-level)
|
||||
missing module named numpy.core.vstack - imported by numpy.core (top-level), numpy.lib.shape_base (top-level)
|
||||
missing module named numpy.core.linspace - imported by numpy.core (top-level), numpy.lib.index_tricks (top-level)
|
||||
missing module named numpy.core.transpose - imported by numpy.core (top-level), numpy.lib.function_base (top-level)
|
||||
missing module named numpy.core.roll - imported by numpy.core (top-level), numpy.fft.helper (top-level)
|
||||
missing module named numpy.core.integer - imported by numpy.core (top-level), numpy.fft.helper (top-level)
|
||||
missing module named numpy.core.take - imported by numpy.core (top-level), numpy.fft._pocketfft (top-level)
|
||||
missing module named numpy.core.conjugate - imported by numpy.core (top-level), numpy.fft._pocketfft (top-level)
|
||||
missing module named numpy.core.result_type - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.float_ - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.number - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.bool_ - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.inf - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.array2string - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.signbit - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.isscalar - imported by numpy.core (delayed), numpy.testing._private.utils (delayed), numpy.lib.polynomial (top-level)
|
||||
missing module named numpy.core.isinf - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.isnat - imported by numpy.core (top-level), numpy.testing._private.utils (top-level)
|
||||
missing module named numpy.core.ndarray - imported by numpy.core (top-level), numpy.testing._private.utils (top-level), numpy.lib.utils (top-level)
|
||||
missing module named numpy.core.array_repr - imported by numpy.core (top-level), numpy.testing._private.utils (top-level)
|
||||
missing module named numpy.core.arange - imported by numpy.core (top-level), numpy.testing._private.utils (top-level), numpy.fft.helper (top-level)
|
||||
missing module named numpy.core.float32 - imported by numpy.core (top-level), numpy.testing._private.utils (top-level)
|
||||
missing module named numpy.core.iinfo - imported by numpy.core (top-level), numpy.lib.twodim_base (top-level)
|
||||
missing module named numpy.core.sort - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.argsort - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.sign - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.isnan - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.count_nonzero - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.divide - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.swapaxes - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.fft._pocketfft (top-level)
|
||||
missing module named numpy.core.matmul - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.object_ - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.asanyarray - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.intp - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.testing._private.utils (top-level)
|
||||
missing module named numpy.core.atleast_2d - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.product - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.amax - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.amin - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.moveaxis - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.geterrobj - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.errstate - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.finfo - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.lib.polynomial (top-level)
|
||||
missing module named numpy.core.isfinite - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.sum - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.fastCopyAndTranspose - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.sqrt - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.fft._pocketfft (top-level)
|
||||
missing module named numpy.core.multiply - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.add - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.dot - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.lib.polynomial (top-level)
|
||||
missing module named numpy.core.Inf - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.all - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.newaxis - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.complexfloating - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.inexact - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.cdouble - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.csingle - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.double - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.single - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.intc - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.empty_like - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.empty - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.testing._private.utils (top-level), numpy.fft.helper (top-level)
|
||||
missing module named numpy.core.zeros - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.fft._pocketfft (top-level)
|
||||
missing module named numpy.core.asarray - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.fft._pocketfft (top-level), numpy.fft.helper (top-level), numpy.lib.utils (top-level)
|
||||
missing module named numpy.core.array - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.testing._private.utils (top-level), numpy.lib.polynomial (top-level)
|
||||
missing module named numpy.eye - imported by numpy (delayed), numpy.core.numeric (delayed), scipy.linalg.decomp (top-level), scipy.interpolate._pade (top-level), scipy.optimize.optimize (top-level), scipy.optimize.minpack (top-level)
|
||||
missing module named psutil - imported by numpy.testing._private.utils (delayed, optional), scipy._lib._testutils (delayed, optional)
|
||||
runtime module named six.moves - imported by dateutil.tz.tz (top-level), dateutil.tz._factories (top-level), dateutil.tz.win (top-level), dateutil.rrule (top-level)
|
||||
missing module named six.moves.range - imported by six.moves (top-level), dateutil.rrule (top-level)
|
||||
missing module named StringIO - imported by PyInstaller.lib.modulegraph._compat (conditional), PyInstaller.lib.modulegraph.zipio (conditional), six (conditional), sqlalchemy.util.compat (conditional)
|
||||
missing module named dateutil.tz.tzfile - imported by dateutil.tz (top-level), dateutil.zoneinfo (top-level)
|
||||
missing module named olefile - imported by PIL.MicImagePlugin (top-level), PIL.FpxImagePlugin (top-level)
|
||||
missing module named 'PySide2.QtGui' - imported by PIL.ImageQt (conditional, optional)
|
||||
missing module named 'PySide6.QtGui' - imported by PIL.ImageQt (conditional, optional)
|
||||
missing module named 'PyQt6.QtGui' - imported by PIL.ImageQt (conditional, optional)
|
||||
missing module named dummy_thread - imported by cffi.lock (conditional, optional)
|
||||
missing module named thread - imported by cffi.lock (conditional, optional), cffi.cparser (conditional, optional)
|
||||
missing module named 'setuptools.extern.pyparsing' - imported by setuptools._vendor.packaging.requirements (top-level), setuptools._vendor.packaging.markers (top-level)
|
||||
missing module named 'setuptools.extern.more_itertools' - imported by setuptools.dist (top-level), setuptools.package_index (top-level), setuptools.msvc (top-level)
|
||||
missing module named 'setuptools.extern.packaging.version' - imported by setuptools.config (top-level), setuptools.msvc (top-level)
|
||||
missing module named 'setuptools.extern.packaging.utils' - imported by setuptools.wheel (top-level)
|
||||
missing module named 'setuptools.extern.packaging.tags' - imported by setuptools.wheel (top-level)
|
||||
missing module named 'setuptools.extern.packaging.specifiers' - imported by setuptools.config (top-level)
|
||||
missing module named setuptools.extern.ordered_set - imported by setuptools.extern (top-level), setuptools.dist (top-level)
|
||||
missing module named setuptools.extern.packaging - imported by setuptools.extern (top-level), setuptools.dist (top-level), setuptools.command.egg_info (top-level)
|
||||
missing module named cStringIO - imported by cPickle (top-level), cffi.ffiplatform (optional), sqlalchemy.util.compat (conditional)
|
||||
missing module named copy_reg - imported by cPickle (top-level), cStringIO (top-level)
|
||||
missing module named cPickle - imported by pycparser.ply.yacc (delayed, optional), sqlalchemy.util.compat (conditional, optional), sqlalchemy.testing.util (delayed, conditional, optional)
|
||||
missing module named cffi._pycparser - imported by cffi (optional), cffi.cparser (optional)
|
||||
missing module named defusedxml - imported by PIL.Image (optional), openpyxl.xml (delayed, optional)
|
||||
missing module named fontTools.ttLib.getSearchRange - imported by fontTools.ttLib (top-level), fontTools.ttLib.woff2 (top-level), fontTools.ttLib.tables.otConverters (top-level), fontTools.ttLib.tables._c_m_a_p (top-level), fontTools.ttLib.tables._k_e_r_n (top-level), fontTools.ttLib.sfnt (delayed, conditional)
|
||||
missing module named zopfli - imported by fontTools.ttLib.sfnt (delayed, conditional)
|
||||
missing module named unicodedata2 - imported by fontTools.unicode (delayed, optional)
|
||||
missing module named xattr - imported by fontTools.misc.macCreatorType (optional)
|
||||
missing module named brotli - imported by fontTools.ttLib.woff2 (optional)
|
||||
missing module named brotlicffi - imported by fontTools.ttLib.woff2 (optional)
|
||||
missing module named fontTools.ttLib.getClassTag - imported by fontTools.ttLib (top-level), fontTools.ttLib.tables.DefaultTable (top-level)
|
||||
missing module named fontTools.ttLib.getTableClass - imported by fontTools.ttLib (top-level), fontTools.ttLib.woff2 (top-level)
|
||||
missing module named fontTools.ttLib.getTableModule - imported by fontTools.ttLib (top-level), fontTools.ttLib.woff2 (top-level)
|
||||
missing module named fontTools.ttLib.TTFont - imported by fontTools.ttLib (top-level), fontTools.ttLib.woff2 (top-level), fontTools.cffLib (top-level), fontTools.varLib (top-level), fontTools.varLib.varStore (delayed), fontTools.otlLib.optimize (top-level), fontTools.otlLib.optimize.gpos (top-level), fontTools.ttx (top-level), fontTools.colorLib.unbuilder (conditional)
|
||||
missing module named __pypy__ - imported by fontTools.misc.etree (optional)
|
||||
missing module named 'lxml.etree' - imported by openpyxl.xml.functions (conditional), pandas.io.xml (delayed), pandas.io.formats.xml (delayed), pandas.io.html (delayed), fontTools.misc.etree (optional)
|
||||
missing module named UserList - imported by fontTools.ttLib.tables.otConverters (optional)
|
||||
missing module named fontTools.ttLib.newTable - imported by fontTools.ttLib (top-level), fontTools.ttLib.tables._n_a_m_e (top-level), fontTools.varLib (top-level), fontTools.varLib.featureVars (top-level), fontTools.varLib.cff (top-level)
|
||||
missing module named lxml - imported by openpyxl.xml (delayed, optional), fontTools.subset.svg (optional)
|
||||
missing module named 'lz4.block' - imported by fontTools.ttLib.tables.grUtils (optional)
|
||||
missing module named lz4 - imported by fontTools.ttLib.tables.grUtils (optional)
|
||||
missing module named PyQt6 - imported by matplotlib.backends.qt_compat (delayed, conditional), matplotlib.backends.backend_qtagg (delayed, conditional, optional)
|
||||
missing module named shiboken2 - imported by matplotlib.backends.qt_compat (delayed, conditional)
|
||||
missing module named PySide2 - imported by matplotlib.backends.qt_compat (delayed, conditional)
|
||||
missing module named sip - imported by matplotlib.backends.qt_compat (delayed, conditional), PyQt5 (top-level)
|
||||
missing module named shiboken6 - imported by matplotlib.backends.qt_compat (delayed, conditional)
|
||||
missing module named PySide6 - imported by matplotlib.backends.qt_compat (delayed, conditional)
|
||||
missing module named 'tornado.template' - imported by matplotlib.backends.backend_webagg (delayed)
|
||||
missing module named 'tornado.websocket' - imported by matplotlib.backends.backend_webagg (top-level)
|
||||
missing module named 'tornado.ioloop' - imported by matplotlib.backends.backend_webagg (top-level)
|
||||
missing module named 'tornado.web' - imported by matplotlib.backends.backend_webagg (top-level)
|
||||
missing module named tornado - imported by matplotlib.backends.backend_webagg (optional), matplotlib.backends.backend_webagg_core (delayed)
|
||||
missing module named IPython - imported by PIL.ImageShow (optional), matplotlib.backend_bases (delayed), matplotlib.pyplot (delayed, conditional), pandas.io.formats.printing (delayed)
|
||||
missing module named 'IPython.core' - imported by matplotlib.backend_bases (delayed), matplotlib.pyplot (delayed), pandas.io.formats.printing (delayed, conditional)
|
||||
missing module named matplotlib.tri.Triangulation - imported by matplotlib.tri (top-level), matplotlib.tri.trifinder (top-level), matplotlib.tri.tritools (top-level), matplotlib.tri.triinterpolate (top-level)
|
||||
missing module named matplotlib.axes.Axes - imported by matplotlib.axes (delayed), matplotlib.legend (delayed), matplotlib.projections.geo (top-level), matplotlib.projections.polar (top-level), mpl_toolkits.mplot3d.axes3d (top-level), matplotlib.figure (top-level), matplotlib.pyplot (top-level), pandas.plotting._matplotlib.timeseries (conditional), pandas.plotting._matplotlib.tools (conditional), pandas.plotting._matplotlib.core (conditional), pandas.plotting._matplotlib.boxplot (conditional), pandas.plotting._matplotlib.hist (conditional), pandas.plotting._matplotlib.misc (conditional)
|
||||
missing module named gi - imported by matplotlib.cbook (delayed, conditional), playsound (delayed, conditional, optional)
|
||||
missing module named dummy_threading - imported by matplotlib.pyplot (optional), matplotlib.font_manager (optional), matplotlib.backends.backend_agg (optional), sqlalchemy.util.compat (optional)
|
||||
missing module named 'gi.repository' - imported by playsound (delayed, conditional, optional)
|
||||
missing module named Foundation - imported by pandas.io.clipboard (delayed, conditional, optional), playsound (delayed)
|
||||
missing module named AppKit - imported by pandas.io.clipboard (delayed, conditional, optional), playsound (delayed, conditional, optional)
|
||||
missing module named numexpr - imported by pandas.core.computation.expressions (conditional), pandas.core.computation.engines (delayed)
|
||||
missing module named pytest - imported by scipy._lib._testutils (delayed), matplotlib (delayed, optional), pandas._testing._io (delayed), pandas._testing (delayed), pandas.util._tester (delayed, optional), sqlalchemy.testing.warnings (delayed, optional)
|
||||
missing module named pyarrow - imported by pandas.core.arrays.masked (delayed), pandas.core.arrays.numeric (delayed, conditional), pandas.core.arrays._arrow_utils (top-level), pandas.core.arrays.interval (delayed), pandas.core.arrays.period (delayed), pandas.core.arrays.boolean (delayed, conditional), pandas.io.feather_format (delayed), pandas.core.arrays.string_ (delayed, conditional), pandas.core.arrays.string_arrow (conditional), pandas.core.dtypes.dtypes (delayed, conditional), pandas.compat.pyarrow (optional)
|
||||
missing module named 'pyarrow.parquet' - imported by pandas.io.parquet (delayed)
|
||||
missing module named PyQt4 - imported by pandas.io.clipboard (delayed, conditional, optional)
|
||||
missing module named qtpy - imported by pandas.io.clipboard (delayed, conditional, optional)
|
||||
missing module named urlparse - imported by sqlalchemy.util.compat (conditional)
|
||||
missing module named ConfigParser - imported by sqlalchemy.util.compat (conditional)
|
||||
missing module named importlib_metadata - imported by pyvisa (conditional), PyInstaller.compat (delayed, conditional), PyInstaller.utils.hooks.conda (conditional), sqlalchemy.util.compat (conditional)
|
||||
missing module named tables - imported by pandas.io.pytables (delayed, conditional)
|
||||
missing module named xlsxwriter - imported by pandas.io.excel._xlsxwriter (delayed)
|
||||
missing module named 'defusedxml.ElementTree' - imported by openpyxl.xml.functions (conditional)
|
||||
missing module named tests - imported by openpyxl.reader.excel (optional)
|
||||
missing module named 'odf.config' - imported by pandas.io.excel._odswriter (delayed)
|
||||
missing module named 'odf.style' - imported by pandas.io.excel._odswriter (delayed)
|
||||
missing module named 'odf.text' - imported by pandas.io.excel._odfreader (delayed), pandas.io.excel._odswriter (delayed)
|
||||
missing module named 'odf.table' - imported by pandas.io.excel._odfreader (delayed), pandas.io.excel._odswriter (delayed)
|
||||
missing module named 'odf.opendocument' - imported by pandas.io.excel._odfreader (delayed), pandas.io.excel._odswriter (delayed)
|
||||
missing module named xlrd - imported by pandas.io.excel._xlrd (delayed), pandas.io.excel._base (delayed, conditional)
|
||||
missing module named pyxlsb - imported by pandas.io.excel._pyxlsb (delayed)
|
||||
missing module named 'odf.element' - imported by pandas.io.excel._odfreader (delayed)
|
||||
missing module named 'odf.namespaces' - imported by pandas.io.excel._odfreader (delayed)
|
||||
missing module named odf - imported by pandas.io.excel._odfreader (delayed)
|
||||
missing module named scipy.special.ndtr - imported by scipy.special (top-level), scipy.stats._bootstrap (top-level)
|
||||
missing module named scipy.special.betaln - imported by scipy.special (top-level), scipy.stats._discrete_distns (top-level), scipy.stats._multivariate (top-level)
|
||||
missing module named scipy.special.beta - imported by scipy.special (top-level), scipy.stats._tukeylambda_stats (top-level)
|
||||
missing module named scipy.special.ive - imported by scipy.special (top-level), scipy.stats._distn_infrastructure (top-level)
|
||||
missing module named scipy.special.entr - imported by scipy.special (top-level), scipy.stats._distn_infrastructure (top-level), scipy.stats._discrete_distns (top-level), scipy.stats._multivariate (top-level)
|
||||
missing module named scipy.special.chndtr - imported by scipy.special (top-level), scipy.stats._distn_infrastructure (top-level)
|
||||
missing module named scipy.special.rel_entr - imported by scipy.special (top-level), scipy.spatial.distance (top-level)
|
||||
missing module named scipy.special.xlogy - imported by scipy.special (top-level), scipy.interpolate.rbf (top-level), scipy.stats._distn_infrastructure (top-level), scipy.stats._multivariate (top-level)
|
||||
missing module named scipy.sparse.coo_matrix - imported by scipy.sparse (delayed), scipy.sparse.data (delayed), scipy.optimize._numdiff (top-level), scipy.integrate._bvp (top-level), scipy.integrate._ivp.common (top-level), scipy.stats._crosstab (top-level), pandas.core.arrays.sparse.accessor (delayed)
|
||||
missing module named numpy.random.randn - imported by numpy.random (top-level), scipy (top-level)
|
||||
missing module named numpy.random.rand - imported by numpy.random (top-level), scipy (top-level)
|
||||
missing module named scipy.linalg._flapack_64 - imported by scipy.linalg (optional), scipy.linalg.lapack (optional)
|
||||
missing module named scipy.linalg._clapack - imported by scipy.linalg (optional), scipy.linalg.lapack (optional)
|
||||
missing module named scipy.linalg._fblas_64 - imported by scipy.linalg (optional), scipy.linalg.blas (optional)
|
||||
missing module named scipy.linalg._cblas - imported by scipy.linalg (optional), scipy.linalg.blas (optional)
|
||||
missing module named 'scikits.umfpack' - imported by scipy.optimize._linprog_ip (optional)
|
||||
missing module named 'sksparse.cholmod' - imported by scipy.optimize._linprog_ip (optional)
|
||||
missing module named sksparse - imported by scipy.optimize._trustregion_constr.projections (optional), scipy.optimize._linprog_ip (optional)
|
||||
missing module named numpy.double - imported by numpy (top-level), scipy.optimize._nnls (top-level)
|
||||
missing module named numpy.float64 - imported by numpy (top-level), scipy.optimize.lbfgsb (top-level)
|
||||
missing module named numpy.inexact - imported by numpy (top-level), scipy.special._basic (top-level), scipy.linalg.decomp (top-level), scipy.optimize.minpack (top-level)
|
||||
missing module named numpy.greater - imported by numpy (top-level), scipy.optimize.minpack (top-level)
|
||||
missing module named sparse - imported by scipy.sparse.linalg._expm_multiply (delayed, conditional), scipy.sparse.linalg.matfuncs (delayed, conditional)
|
||||
missing module named uarray - imported by scipy._lib.uarray (conditional, optional)
|
||||
missing module named numpy.arcsin - imported by numpy (top-level), scipy.linalg.decomp_svd (top-level)
|
||||
missing module named numpy.arccos - imported by numpy (top-level), scipy.special.orthogonal (top-level), scipy.linalg.decomp_svd (top-level)
|
||||
missing module named numpy.conj - imported by numpy (top-level), scipy.linalg.decomp (top-level)
|
||||
missing module named scikits - imported by scipy.sparse.linalg.dsolve.linsolve (optional)
|
||||
missing module named scipy.linalg.qr_insert - imported by scipy.linalg (top-level), scipy.sparse.linalg.isolve._gcrotmk (top-level)
|
||||
missing module named numpy.single - imported by numpy (top-level), scipy.linalg.decomp_schur (top-level), scipy.linalg.matfuncs (top-level)
|
||||
missing module named numpy.sign - imported by numpy (top-level), scipy.linalg.matfuncs (top-level)
|
||||
missing module named numpy.conjugate - imported by numpy (top-level), scipy.linalg.matfuncs (top-level)
|
||||
missing module named numpy.logical_not - imported by numpy (top-level), scipy.linalg.matfuncs (top-level)
|
||||
missing module named scipy.special.gammaln - imported by scipy.special (top-level), scipy.special.spfun_stats (top-level), scipy.optimize._dual_annealing (top-level), scipy.integrate._quadrature (top-level), scipy.stats._discrete_distns (top-level), scipy.stats._hypotests (top-level), scipy.stats._multivariate (top-level)
|
||||
missing module named scipy.special.airy - imported by scipy.special (top-level), scipy.special.orthogonal (top-level)
|
||||
missing module named scipy.special.comb - imported by scipy.special (delayed), scipy.linalg.special_matrices (delayed), scipy.interpolate.interpolate (top-level), scipy.interpolate._rbfinterp (top-level), scipy.stats._distn_infrastructure (top-level)
|
||||
missing module named scipy.special.poch - imported by scipy.special (top-level), scipy.fft._fftlog (top-level)
|
||||
missing module named scipy.special.loggamma - imported by scipy.special (top-level), scipy.fft._fftlog (top-level)
|
||||
missing module named numpy.power - imported by numpy (top-level), scipy.stats.kde (top-level)
|
||||
missing module named numpy.NINF - imported by numpy (top-level), scipy.stats._distn_infrastructure (top-level)
|
||||
missing module named numpy.logical_and - imported by numpy (top-level), scipy.stats._distn_infrastructure (top-level)
|
||||
missing module named numpy.hypot - imported by numpy (top-level), scipy.stats.morestats (top-level)
|
||||
missing module named numpy.log - imported by numpy (top-level), scipy.stats._distn_infrastructure (top-level), scipy.stats._discrete_distns (top-level), scipy.stats.morestats (top-level)
|
||||
missing module named scipy.stats.iqr - imported by scipy.stats (delayed), scipy.stats._hypotests (delayed)
|
||||
missing module named numpy.sinh - imported by numpy (top-level), scipy.stats._discrete_distns (top-level)
|
||||
missing module named numpy.cosh - imported by numpy (top-level), scipy.stats._discrete_distns (top-level)
|
||||
missing module named numpy.tanh - imported by numpy (top-level), scipy.stats._discrete_distns (top-level)
|
||||
missing module named numpy.expm1 - imported by numpy (top-level), scipy.stats._discrete_distns (top-level)
|
||||
missing module named numpy.log1p - imported by numpy (top-level), scipy.stats._discrete_distns (top-level)
|
||||
missing module named _ufunc - imported by numpy.typing (conditional)
|
||||
missing module named numpy.bytes_ - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.str_ - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.void - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.object_ - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.datetime64 - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.timedelta64 - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.number - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.complexfloating - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.floating - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.unsignedinteger - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named botocore - imported by pandas.io.common (delayed, conditional, optional)
|
||||
missing module named sets - imported by nose.util (optional), pytz.tzinfo (optional)
|
||||
missing module named UserDict - imported by pytz.lazy (optional)
|
||||
missing module named 'pyarrow.compute' - imported by pandas.core.arrays.string_arrow (conditional)
|
||||
missing module named hypothesis - imported by pandas.util._tester (delayed, optional)
|
||||
missing module named 'lxml.html' - imported by pandas.io.html (delayed)
|
||||
missing module named bs4 - imported by pandas.io.html (delayed)
|
||||
missing module named pandas.ExtensionArray - imported by pandas (conditional), pandas.core.construction (conditional)
|
||||
missing module named Sybase - imported by sqlalchemy.dialects.sybase.pysybase (delayed)
|
||||
missing module named pysqlite2 - imported by sqlalchemy.dialects.sqlite.pysqlite (delayed, conditional, optional)
|
||||
missing module named pysqlcipher - imported by sqlalchemy.dialects.sqlite.pysqlcipher (delayed, conditional)
|
||||
missing module named pysqlcipher3 - imported by sqlalchemy.dialects.sqlite.pysqlcipher (delayed, conditional)
|
||||
missing module named sqlcipher3 - imported by sqlalchemy.dialects.sqlite.pysqlcipher (delayed, conditional, optional)
|
||||
missing module named asyncpg - imported by sqlalchemy.dialects.postgresql.asyncpg (delayed)
|
||||
missing module named postgresql - imported by sqlalchemy.dialects.postgresql.pypostgresql (delayed)
|
||||
missing module named pgdb - imported by sqlalchemy.dialects.postgresql.pygresql (delayed)
|
||||
missing module named psycopg2 - imported by sqlalchemy.dialects.postgresql.psycopg2 (delayed)
|
||||
missing module named cx_Oracle - imported by sqlalchemy.dialects.oracle.cx_oracle (delayed)
|
||||
missing module named asyncmy - imported by sqlalchemy.dialects.mysql.asyncmy (delayed)
|
||||
missing module named 'mysql.connector' - imported by sqlalchemy.dialects.mysql.mysqlconnector (delayed, conditional, optional)
|
||||
missing module named mysql - imported by sqlalchemy.dialects.mysql.mysqlconnector (delayed)
|
||||
missing module named 'mx.ODBC' - imported by sqlalchemy.connectors.mxodbc (delayed, conditional)
|
||||
missing module named mx - imported by sqlalchemy.connectors.mxodbc (delayed, conditional)
|
||||
missing module named 'typing.io' - imported by importlib.resources (top-level)
|
||||
missing module named setuptools_scm - imported by matplotlib (delayed, conditional)
|
||||
missing module named fcntl - imported by serial.serialposix (top-level)
|
||||
missing module named 'System.IO' - imported by serial.serialcli (top-level)
|
||||
missing module named System - imported by serial.serialcli (top-level)
|
||||
File diff suppressed because it is too large
Load Diff
13978
20231202/频响测试/build/DataNodeFrequencyTestold/Analysis-00.toc
Normal file
13978
20231202/频响测试/build/DataNodeFrequencyTestold/Analysis-00.toc
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
<assemblyIdentity type="win32" name="DataNodeFrequencyTestold" processorArchitecture="amd64" version="1.0.0.0"/>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<security>
|
||||
<requestedPrivileges>
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" language="*" processorArchitecture="*" version="6.0.0.0" publicKeyToken="6595b64144ccf1df"/>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
|
||||
</application>
|
||||
</compatibility>
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
</assembly>
|
||||
Binary file not shown.
7268
20231202/频响测试/build/DataNodeFrequencyTestold/EXE-00.toc
Normal file
7268
20231202/频响测试/build/DataNodeFrequencyTestold/EXE-00.toc
Normal file
File diff suppressed because it is too large
Load Diff
7260
20231202/频响测试/build/DataNodeFrequencyTestold/PKG-00.toc
Normal file
7260
20231202/频响测试/build/DataNodeFrequencyTestold/PKG-00.toc
Normal file
File diff suppressed because it is too large
Load Diff
BIN
20231202/频响测试/build/DataNodeFrequencyTestold/PYZ-00.pyz
Normal file
BIN
20231202/频响测试/build/DataNodeFrequencyTestold/PYZ-00.pyz
Normal file
Binary file not shown.
6744
20231202/频响测试/build/DataNodeFrequencyTestold/PYZ-00.toc
Normal file
6744
20231202/频响测试/build/DataNodeFrequencyTestold/PYZ-00.toc
Normal file
File diff suppressed because it is too large
Load Diff
2518
20231202/频响测试/build/DataNodeFrequencyTestold/Tree-00.toc
Normal file
2518
20231202/频响测试/build/DataNodeFrequencyTestold/Tree-00.toc
Normal file
File diff suppressed because it is too large
Load Diff
257
20231202/频响测试/build/DataNodeFrequencyTestold/Tree-01.toc
Normal file
257
20231202/频响测试/build/DataNodeFrequencyTestold/Tree-01.toc
Normal file
@ -0,0 +1,257 @@
|
||||
('D:\\Program Files\\Python39\\tcl\\tk8.6',
|
||||
'tk',
|
||||
['demos', '*.lib', 'tkConfig.sh'],
|
||||
'DATA',
|
||||
[('tk\\bgerror.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\bgerror.tcl',
|
||||
'DATA'),
|
||||
('tk\\button.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\button.tcl',
|
||||
'DATA'),
|
||||
('tk\\choosedir.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\choosedir.tcl',
|
||||
'DATA'),
|
||||
('tk\\clrpick.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\clrpick.tcl',
|
||||
'DATA'),
|
||||
('tk\\comdlg.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\comdlg.tcl',
|
||||
'DATA'),
|
||||
('tk\\console.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\console.tcl',
|
||||
'DATA'),
|
||||
('tk\\dialog.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\dialog.tcl',
|
||||
'DATA'),
|
||||
('tk\\entry.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\entry.tcl',
|
||||
'DATA'),
|
||||
('tk\\focus.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\focus.tcl',
|
||||
'DATA'),
|
||||
('tk\\fontchooser.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\fontchooser.tcl',
|
||||
'DATA'),
|
||||
('tk\\iconlist.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\iconlist.tcl',
|
||||
'DATA'),
|
||||
('tk\\icons.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\icons.tcl',
|
||||
'DATA'),
|
||||
('tk\\license.terms',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\license.terms',
|
||||
'DATA'),
|
||||
('tk\\listbox.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\listbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\megawidget.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\megawidget.tcl',
|
||||
'DATA'),
|
||||
('tk\\menu.tcl', 'D:\\Program Files\\Python39\\tcl\\tk8.6\\menu.tcl', 'DATA'),
|
||||
('tk\\mkpsenc.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\mkpsenc.tcl',
|
||||
'DATA'),
|
||||
('tk\\msgbox.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\obsolete.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\obsolete.tcl',
|
||||
'DATA'),
|
||||
('tk\\optMenu.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\optMenu.tcl',
|
||||
'DATA'),
|
||||
('tk\\palette.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\palette.tcl',
|
||||
'DATA'),
|
||||
('tk\\panedwindow.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\panedwindow.tcl',
|
||||
'DATA'),
|
||||
('tk\\pkgIndex.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\pkgIndex.tcl',
|
||||
'DATA'),
|
||||
('tk\\safetk.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\safetk.tcl',
|
||||
'DATA'),
|
||||
('tk\\scale.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\scale.tcl',
|
||||
'DATA'),
|
||||
('tk\\scrlbar.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\scrlbar.tcl',
|
||||
'DATA'),
|
||||
('tk\\spinbox.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\spinbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\tclIndex', 'D:\\Program Files\\Python39\\tcl\\tk8.6\\tclIndex', 'DATA'),
|
||||
('tk\\tearoff.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\tearoff.tcl',
|
||||
'DATA'),
|
||||
('tk\\text.tcl', 'D:\\Program Files\\Python39\\tcl\\tk8.6\\text.tcl', 'DATA'),
|
||||
('tk\\tk.tcl', 'D:\\Program Files\\Python39\\tcl\\tk8.6\\tk.tcl', 'DATA'),
|
||||
('tk\\tkfbox.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\tkfbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\unsupported.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\unsupported.tcl',
|
||||
'DATA'),
|
||||
('tk\\xmfbox.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\xmfbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\altTheme.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\altTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\aquaTheme.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\aquaTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\button.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\button.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\clamTheme.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\clamTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\classicTheme.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\classicTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\combobox.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\combobox.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\cursors.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\cursors.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\defaults.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\defaults.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\entry.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\entry.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\fonts.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\fonts.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\menubutton.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\menubutton.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\notebook.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\notebook.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\panedwindow.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\panedwindow.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\progress.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\progress.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\scale.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\scale.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\scrollbar.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\scrollbar.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\sizegrip.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\sizegrip.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\spinbox.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\spinbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\treeview.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\treeview.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\ttk.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\ttk.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\utils.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\utils.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\vistaTheme.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\vistaTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\winTheme.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\winTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\xpTheme.tcl',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\ttk\\xpTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\msgs\\cs.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\cs.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\da.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\da.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\de.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\de.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\el.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\el.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\en.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\en.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\en_gb.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\en_gb.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\eo.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\eo.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\es.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\es.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\fr.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\fr.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\hu.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\hu.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\it.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\it.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\nl.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\nl.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\pl.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\pl.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\pt.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\pt.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\ru.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\ru.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\sv.msg',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\msgs\\sv.msg',
|
||||
'DATA'),
|
||||
('tk\\images\\logo.eps',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\logo.eps',
|
||||
'DATA'),
|
||||
('tk\\images\\logo100.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\logo100.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\logo64.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\logo64.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\logoLarge.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\logoLarge.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\logoMed.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\logoMed.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo.eps',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\pwrdLogo.eps',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo100.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\pwrdLogo100.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo150.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\pwrdLogo150.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo175.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\pwrdLogo175.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo200.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\pwrdLogo200.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo75.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\pwrdLogo75.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\README',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\README',
|
||||
'DATA'),
|
||||
('tk\\images\\tai-ku.gif',
|
||||
'D:\\Program Files\\Python39\\tcl\\tk8.6\\images\\tai-ku.gif',
|
||||
'DATA')])
|
||||
21
20231202/频响测试/build/DataNodeFrequencyTestold/Tree-02.toc
Normal file
21
20231202/频响测试/build/DataNodeFrequencyTestold/Tree-02.toc
Normal file
@ -0,0 +1,21 @@
|
||||
('D:\\Program Files\\Python39\\tcl\\tcl8.6\\..\\tcl8',
|
||||
'tcl8',
|
||||
[],
|
||||
'DATA',
|
||||
[('tcl8\\8.6\\http-2.9.5.tm',
|
||||
'D:\\Program Files\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.6\\http-2.9.5.tm',
|
||||
'DATA'),
|
||||
('tcl8\\8.5\\msgcat-1.6.1.tm',
|
||||
'D:\\Program Files\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.5\\msgcat-1.6.1.tm',
|
||||
'DATA'),
|
||||
('tcl8\\8.5\\tcltest-2.5.3.tm',
|
||||
'D:\\Program Files\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.5\\tcltest-2.5.3.tm',
|
||||
'DATA'),
|
||||
('tcl8\\8.4\\platform-1.0.18.tm',
|
||||
'D:\\Program '
|
||||
'Files\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.4\\platform-1.0.18.tm',
|
||||
'DATA'),
|
||||
('tcl8\\8.4\\platform\\shell-1.1.4.tm',
|
||||
'D:\\Program '
|
||||
'Files\\Python39\\tcl\\tcl8.6\\..\\tcl8\\8.4\\platform\\shell-1.1.4.tm',
|
||||
'DATA')])
|
||||
BIN
20231202/频响测试/build/DataNodeFrequencyTestold/base_library.zip
Normal file
BIN
20231202/频响测试/build/DataNodeFrequencyTestold/base_library.zip
Normal file
Binary file not shown.
@ -0,0 +1,314 @@
|
||||
|
||||
This file lists modules PyInstaller was not able to find. This does not
|
||||
necessarily mean this module is required for running you program. Python and
|
||||
Python 3rd-party packages include a lot of conditional or optional modules. For
|
||||
example the module 'ntpath' only exists on Windows, whereas the module
|
||||
'posixpath' only exists on Posix systems.
|
||||
|
||||
Types if import:
|
||||
* top-level: imported at the top-level - look at these first
|
||||
* conditional: imported within an if-statement
|
||||
* delayed: imported from within a function
|
||||
* optional: imported within a try-except-statement
|
||||
|
||||
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
|
||||
yourself tracking down the missing module. Thanks!
|
||||
|
||||
missing module named 'org.python' - imported by copy (optional), xml.sax (delayed, conditional), setuptools.sandbox (conditional)
|
||||
missing module named _posixsubprocess - imported by subprocess (optional), multiprocessing.util (delayed)
|
||||
missing module named grp - imported by subprocess (optional), shutil (optional), tarfile (optional), pathlib (delayed, optional), distutils.archive_util (optional)
|
||||
missing module named pwd - imported by posixpath (delayed, conditional), subprocess (optional), shutil (optional), tarfile (optional), pathlib (delayed, conditional, optional), http.server (delayed, optional), webbrowser (delayed), netrc (delayed, conditional), getpass (delayed), distutils.util (delayed, conditional, optional), distutils.archive_util (optional)
|
||||
missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
|
||||
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
|
||||
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
|
||||
missing module named urllib.unquote_plus - imported by urllib (conditional), sqlalchemy.util.compat (conditional)
|
||||
missing module named urllib.unquote - imported by urllib (conditional), sqlalchemy.util.compat (conditional)
|
||||
missing module named urllib.quote_plus - imported by urllib (conditional), sqlalchemy.util.compat (conditional)
|
||||
missing module named urllib.quote - imported by urllib (conditional), sqlalchemy.util.compat (conditional), playsound (delayed, optional)
|
||||
missing module named urllib.pathname2url - imported by urllib (conditional), PyInstaller.lib.modulegraph._compat (conditional), playsound (delayed, optional)
|
||||
missing module named pep517 - imported by importlib.metadata (delayed)
|
||||
missing module named posix - imported by os (conditional, optional), shutil (conditional), importlib._bootstrap_external (conditional)
|
||||
missing module named resource - imported by posix (top-level), test.support (delayed, conditional, optional)
|
||||
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), zipimport (top-level), PyInstaller.loader.pyimod02_archive (delayed)
|
||||
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
|
||||
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
|
||||
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
|
||||
missing module named _scproxy - imported by urllib.request (conditional)
|
||||
missing module named termios - imported by tty (top-level), getpass (optional), serial.serialposix (top-level)
|
||||
missing module named 'java.lang' - imported by platform (delayed, optional), xml.sax._exceptions (conditional)
|
||||
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
|
||||
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
|
||||
missing module named multiprocessing.Pool - imported by multiprocessing (delayed, conditional), scipy._lib._util (delayed, conditional)
|
||||
missing module named multiprocessing.Manager - imported by multiprocessing (optional), nose.plugins.plugintest (optional)
|
||||
missing module named multiprocessing.current_process - imported by multiprocessing (delayed), nose.plugins.plugintest (delayed)
|
||||
missing module named asyncio.DefaultEventLoopPolicy - imported by asyncio (delayed, conditional), asyncio.events (delayed, conditional)
|
||||
missing module named vms_lib - imported by platform (delayed, optional)
|
||||
missing module named java - imported by platform (delayed)
|
||||
missing module named _winreg - imported by platform (delayed, optional), pkg_resources._vendor.appdirs (delayed, conditional)
|
||||
missing module named readline - imported by cmd (delayed, conditional, optional), code (delayed, conditional, optional), pdb (delayed, optional)
|
||||
missing module named org - imported by pickle (optional)
|
||||
missing module named pyimod03_importers - imported by D:\Program Files\Python39\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py (top-level), D:\Program Files\Python39\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgres.py (top-level)
|
||||
missing module named tputil - imported by jinja2.debug (conditional, optional)
|
||||
missing module named railroad - imported by pyparsing.diagram (top-level)
|
||||
missing module named _manylinux - imported by pkg_resources._vendor.packaging.tags (delayed, optional), packaging._manylinux (delayed, optional), setuptools._vendor.packaging.tags (delayed, optional)
|
||||
missing module named 'com.sun' - imported by pkg_resources._vendor.appdirs (delayed, conditional, optional)
|
||||
missing module named com - imported by pkg_resources._vendor.appdirs (delayed)
|
||||
missing module named 'win32com.shell' - imported by pkg_resources._vendor.appdirs (delayed, conditional, optional)
|
||||
missing module named 'pkg_resources.extern.pyparsing' - imported by pkg_resources._vendor.packaging.requirements (top-level), pkg_resources._vendor.packaging.markers (top-level)
|
||||
missing module named __builtin__ - imported by pkg_resources._vendor.pyparsing (conditional), setuptools._vendor.pyparsing (conditional)
|
||||
missing module named ordereddict - imported by pkg_resources._vendor.pyparsing (optional), setuptools._vendor.pyparsing (optional)
|
||||
missing module named pkg_resources.extern.packaging - imported by pkg_resources.extern (top-level), pkg_resources (top-level)
|
||||
missing module named pkg_resources.extern.appdirs - imported by pkg_resources.extern (top-level), pkg_resources (top-level)
|
||||
missing module named pickle5 - imported by numpy.compat.py3k (optional)
|
||||
missing module named _dummy_thread - imported by cffi.lock (conditional, optional), numpy.core.arrayprint (optional)
|
||||
missing module named numpy.array - imported by numpy (top-level), numpy.ma.core (top-level), numpy.ma.extras (top-level), numpy.ma.mrecords (top-level), scipy.interpolate.interpolate (top-level), scipy.linalg.decomp (top-level), scipy.linalg.decomp_schur (top-level), scipy.sparse.linalg.isolve.utils (top-level), scipy.interpolate._fitpack_impl (top-level), scipy.interpolate.fitpack2 (top-level), scipy.stats.stats (top-level), scipy.optimize.lbfgsb (top-level), scipy.optimize.tnc (top-level), scipy.optimize.slsqp (top-level), scipy.integrate._ode (top-level), scipy.misc.common (top-level), scipy.stats.morestats (top-level)
|
||||
missing module named numpy.recarray - imported by numpy (top-level), numpy.ma.mrecords (top-level)
|
||||
missing module named numpy.ndarray - imported by numpy (top-level), numpy.ma.core (top-level), numpy.ma.extras (top-level), numpy.ma.mrecords (top-level), numpy.ctypeslib (top-level), pandas.compat.numpy.function (top-level), numpy.typing._array_like (top-level), scipy.stats._distn_infrastructure (top-level), scipy.stats.mstats_basic (top-level), scipy.stats.mstats_extras (top-level)
|
||||
missing module named numpy.dtype - imported by numpy (top-level), numpy.ma.mrecords (top-level), numpy.ctypeslib (top-level), scipy.optimize.minpack (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.bool_ - imported by numpy (top-level), numpy.ma.core (top-level), numpy.ma.mrecords (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.expand_dims - imported by numpy (top-level), numpy.ma.core (top-level)
|
||||
missing module named numpy.iscomplexobj - imported by numpy (top-level), numpy.ma.core (top-level), scipy.linalg.decomp (top-level), scipy.linalg._decomp_ldl (top-level)
|
||||
missing module named numpy.amin - imported by numpy (top-level), numpy.ma.core (top-level), scipy.stats.morestats (top-level)
|
||||
missing module named numpy.amax - imported by numpy (top-level), numpy.ma.core (top-level), scipy.linalg.matfuncs (top-level), scipy.stats.morestats (top-level)
|
||||
missing module named numpy.histogramdd - imported by numpy (delayed), numpy.lib.twodim_base (delayed)
|
||||
missing module named numpy.core.ufunc - imported by numpy.core (top-level), numpy.lib.utils (top-level)
|
||||
missing module named numpy.core.ones - imported by numpy.core (top-level), numpy.lib.polynomial (top-level)
|
||||
missing module named numpy.core.hstack - imported by numpy.core (top-level), numpy.lib.polynomial (top-level)
|
||||
missing module named numpy.core.atleast_1d - imported by numpy.core (top-level), numpy.lib.polynomial (top-level)
|
||||
missing module named numpy.core.atleast_3d - imported by numpy.core (top-level), numpy.lib.shape_base (top-level)
|
||||
missing module named numpy.core.vstack - imported by numpy.core (top-level), numpy.lib.shape_base (top-level)
|
||||
missing module named numpy.core.linspace - imported by numpy.core (top-level), numpy.lib.index_tricks (top-level)
|
||||
missing module named numpy.core.transpose - imported by numpy.core (top-level), numpy.lib.function_base (top-level)
|
||||
missing module named numpy.core.roll - imported by numpy.core (top-level), numpy.fft.helper (top-level)
|
||||
missing module named numpy.core.integer - imported by numpy.core (top-level), numpy.fft.helper (top-level)
|
||||
missing module named numpy.core.take - imported by numpy.core (top-level), numpy.fft._pocketfft (top-level)
|
||||
missing module named numpy.core.conjugate - imported by numpy.core (top-level), numpy.fft._pocketfft (top-level)
|
||||
missing module named numpy.core.result_type - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.float_ - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.number - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.bool_ - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.inf - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.array2string - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.signbit - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.isscalar - imported by numpy.core (delayed), numpy.testing._private.utils (delayed), numpy.lib.polynomial (top-level)
|
||||
missing module named numpy.core.isinf - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.isnat - imported by numpy.core (top-level), numpy.testing._private.utils (top-level)
|
||||
missing module named numpy.core.ndarray - imported by numpy.core (top-level), numpy.testing._private.utils (top-level), numpy.lib.utils (top-level)
|
||||
missing module named numpy.core.array_repr - imported by numpy.core (top-level), numpy.testing._private.utils (top-level)
|
||||
missing module named numpy.core.arange - imported by numpy.core (top-level), numpy.testing._private.utils (top-level), numpy.fft.helper (top-level)
|
||||
missing module named numpy.core.float32 - imported by numpy.core (top-level), numpy.testing._private.utils (top-level)
|
||||
missing module named numpy.core.iinfo - imported by numpy.core (top-level), numpy.lib.twodim_base (top-level)
|
||||
missing module named numpy.core.sort - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.argsort - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.sign - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.isnan - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.count_nonzero - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.divide - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.swapaxes - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.fft._pocketfft (top-level)
|
||||
missing module named numpy.core.matmul - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.object_ - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.asanyarray - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.intp - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.testing._private.utils (top-level)
|
||||
missing module named numpy.core.atleast_2d - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.product - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.amax - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.amin - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.moveaxis - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.geterrobj - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.errstate - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.finfo - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.lib.polynomial (top-level)
|
||||
missing module named numpy.core.isfinite - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.sum - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.fastCopyAndTranspose - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.sqrt - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.fft._pocketfft (top-level)
|
||||
missing module named numpy.core.multiply - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.add - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.dot - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.lib.polynomial (top-level)
|
||||
missing module named numpy.core.Inf - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.all - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.newaxis - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.complexfloating - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.inexact - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.cdouble - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.csingle - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.double - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.single - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.intc - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.empty_like - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.empty - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.testing._private.utils (top-level), numpy.fft.helper (top-level)
|
||||
missing module named numpy.core.zeros - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.fft._pocketfft (top-level)
|
||||
missing module named numpy.core.asarray - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.fft._pocketfft (top-level), numpy.fft.helper (top-level), numpy.lib.utils (top-level)
|
||||
missing module named numpy.core.array - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.testing._private.utils (top-level), numpy.lib.polynomial (top-level)
|
||||
missing module named numpy.eye - imported by numpy (delayed), numpy.core.numeric (delayed), scipy.linalg.decomp (top-level), scipy.interpolate._pade (top-level), scipy.optimize.optimize (top-level), scipy.optimize.minpack (top-level)
|
||||
missing module named psutil - imported by numpy.testing._private.utils (delayed, optional), scipy._lib._testutils (delayed, optional)
|
||||
runtime module named six.moves - imported by dateutil.tz.tz (top-level), dateutil.tz._factories (top-level), dateutil.tz.win (top-level), dateutil.rrule (top-level)
|
||||
missing module named six.moves.range - imported by six.moves (top-level), dateutil.rrule (top-level)
|
||||
missing module named StringIO - imported by PyInstaller.lib.modulegraph._compat (conditional), PyInstaller.lib.modulegraph.zipio (conditional), six (conditional), sqlalchemy.util.compat (conditional)
|
||||
missing module named dateutil.tz.tzfile - imported by dateutil.tz (top-level), dateutil.zoneinfo (top-level)
|
||||
missing module named olefile - imported by PIL.MicImagePlugin (top-level), PIL.FpxImagePlugin (top-level)
|
||||
missing module named 'PySide2.QtGui' - imported by PIL.ImageQt (conditional, optional)
|
||||
missing module named 'PySide6.QtGui' - imported by PIL.ImageQt (conditional, optional)
|
||||
missing module named 'PyQt6.QtGui' - imported by PIL.ImageQt (conditional, optional)
|
||||
missing module named dummy_thread - imported by cffi.lock (conditional, optional)
|
||||
missing module named thread - imported by cffi.lock (conditional, optional), cffi.cparser (conditional, optional)
|
||||
missing module named 'setuptools.extern.pyparsing' - imported by setuptools._vendor.packaging.requirements (top-level), setuptools._vendor.packaging.markers (top-level)
|
||||
missing module named 'setuptools.extern.more_itertools' - imported by setuptools.dist (top-level), setuptools.package_index (top-level), setuptools.msvc (top-level)
|
||||
missing module named 'setuptools.extern.packaging.version' - imported by setuptools.config (top-level), setuptools.msvc (top-level)
|
||||
missing module named 'setuptools.extern.packaging.utils' - imported by setuptools.wheel (top-level)
|
||||
missing module named 'setuptools.extern.packaging.tags' - imported by setuptools.wheel (top-level)
|
||||
missing module named 'setuptools.extern.packaging.specifiers' - imported by setuptools.config (top-level)
|
||||
missing module named setuptools.extern.ordered_set - imported by setuptools.extern (top-level), setuptools.dist (top-level)
|
||||
missing module named setuptools.extern.packaging - imported by setuptools.extern (top-level), setuptools.dist (top-level), setuptools.command.egg_info (top-level)
|
||||
missing module named cStringIO - imported by cPickle (top-level), cffi.ffiplatform (optional), sqlalchemy.util.compat (conditional)
|
||||
missing module named copy_reg - imported by cPickle (top-level), cStringIO (top-level)
|
||||
missing module named cPickle - imported by pycparser.ply.yacc (delayed, optional), sqlalchemy.util.compat (conditional, optional), sqlalchemy.testing.util (delayed, conditional, optional)
|
||||
missing module named cffi._pycparser - imported by cffi (optional), cffi.cparser (optional)
|
||||
missing module named defusedxml - imported by PIL.Image (optional), openpyxl.xml (delayed, optional)
|
||||
missing module named fontTools.ttLib.getSearchRange - imported by fontTools.ttLib (top-level), fontTools.ttLib.woff2 (top-level), fontTools.ttLib.tables.otConverters (top-level), fontTools.ttLib.tables._c_m_a_p (top-level), fontTools.ttLib.tables._k_e_r_n (top-level), fontTools.ttLib.sfnt (delayed, conditional)
|
||||
missing module named zopfli - imported by fontTools.ttLib.sfnt (delayed, conditional)
|
||||
missing module named unicodedata2 - imported by fontTools.unicode (delayed, optional)
|
||||
missing module named xattr - imported by fontTools.misc.macCreatorType (optional)
|
||||
missing module named brotli - imported by fontTools.ttLib.woff2 (optional)
|
||||
missing module named brotlicffi - imported by fontTools.ttLib.woff2 (optional)
|
||||
missing module named fontTools.ttLib.getClassTag - imported by fontTools.ttLib (top-level), fontTools.ttLib.tables.DefaultTable (top-level)
|
||||
missing module named fontTools.ttLib.getTableClass - imported by fontTools.ttLib (top-level), fontTools.ttLib.woff2 (top-level)
|
||||
missing module named fontTools.ttLib.getTableModule - imported by fontTools.ttLib (top-level), fontTools.ttLib.woff2 (top-level)
|
||||
missing module named fontTools.ttLib.TTFont - imported by fontTools.ttLib (top-level), fontTools.ttLib.woff2 (top-level), fontTools.cffLib (top-level), fontTools.varLib (top-level), fontTools.varLib.varStore (delayed), fontTools.otlLib.optimize (top-level), fontTools.otlLib.optimize.gpos (top-level), fontTools.ttx (top-level), fontTools.colorLib.unbuilder (conditional)
|
||||
missing module named __pypy__ - imported by fontTools.misc.etree (optional)
|
||||
missing module named 'lxml.etree' - imported by openpyxl.xml.functions (conditional), pandas.io.xml (delayed), pandas.io.formats.xml (delayed), pandas.io.html (delayed), fontTools.misc.etree (optional)
|
||||
missing module named UserList - imported by fontTools.ttLib.tables.otConverters (optional)
|
||||
missing module named fontTools.ttLib.newTable - imported by fontTools.ttLib (top-level), fontTools.ttLib.tables._n_a_m_e (top-level), fontTools.varLib (top-level), fontTools.varLib.featureVars (top-level), fontTools.varLib.cff (top-level)
|
||||
missing module named lxml - imported by openpyxl.xml (delayed, optional), fontTools.subset.svg (optional)
|
||||
missing module named 'lz4.block' - imported by fontTools.ttLib.tables.grUtils (optional)
|
||||
missing module named lz4 - imported by fontTools.ttLib.tables.grUtils (optional)
|
||||
missing module named PyQt6 - imported by matplotlib.backends.qt_compat (delayed, conditional), matplotlib.backends.backend_qtagg (delayed, conditional, optional)
|
||||
missing module named shiboken2 - imported by matplotlib.backends.qt_compat (delayed, conditional)
|
||||
missing module named PySide2 - imported by matplotlib.backends.qt_compat (delayed, conditional)
|
||||
missing module named sip - imported by matplotlib.backends.qt_compat (delayed, conditional), PyQt5 (top-level)
|
||||
missing module named shiboken6 - imported by matplotlib.backends.qt_compat (delayed, conditional)
|
||||
missing module named PySide6 - imported by matplotlib.backends.qt_compat (delayed, conditional)
|
||||
missing module named 'tornado.template' - imported by matplotlib.backends.backend_webagg (delayed)
|
||||
missing module named 'tornado.websocket' - imported by matplotlib.backends.backend_webagg (top-level)
|
||||
missing module named 'tornado.ioloop' - imported by matplotlib.backends.backend_webagg (top-level)
|
||||
missing module named 'tornado.web' - imported by matplotlib.backends.backend_webagg (top-level)
|
||||
missing module named tornado - imported by matplotlib.backends.backend_webagg (optional), matplotlib.backends.backend_webagg_core (delayed)
|
||||
missing module named IPython - imported by PIL.ImageShow (optional), matplotlib.backend_bases (delayed), matplotlib.pyplot (delayed, conditional), pandas.io.formats.printing (delayed)
|
||||
missing module named 'IPython.core' - imported by matplotlib.backend_bases (delayed), matplotlib.pyplot (delayed), pandas.io.formats.printing (delayed, conditional)
|
||||
missing module named matplotlib.tri.Triangulation - imported by matplotlib.tri (top-level), matplotlib.tri.trifinder (top-level), matplotlib.tri.tritools (top-level), matplotlib.tri.triinterpolate (top-level)
|
||||
missing module named matplotlib.axes.Axes - imported by matplotlib.axes (delayed), matplotlib.legend (delayed), matplotlib.projections.geo (top-level), matplotlib.projections.polar (top-level), mpl_toolkits.mplot3d.axes3d (top-level), matplotlib.figure (top-level), matplotlib.pyplot (top-level), pandas.plotting._matplotlib.timeseries (conditional), pandas.plotting._matplotlib.tools (conditional), pandas.plotting._matplotlib.core (conditional), pandas.plotting._matplotlib.boxplot (conditional), pandas.plotting._matplotlib.hist (conditional), pandas.plotting._matplotlib.misc (conditional)
|
||||
missing module named gi - imported by matplotlib.cbook (delayed, conditional), playsound (delayed, conditional, optional)
|
||||
missing module named dummy_threading - imported by matplotlib.pyplot (optional), matplotlib.font_manager (optional), matplotlib.backends.backend_agg (optional), sqlalchemy.util.compat (optional)
|
||||
missing module named 'gi.repository' - imported by playsound (delayed, conditional, optional)
|
||||
missing module named Foundation - imported by pandas.io.clipboard (delayed, conditional, optional), playsound (delayed)
|
||||
missing module named AppKit - imported by pandas.io.clipboard (delayed, conditional, optional), playsound (delayed, conditional, optional)
|
||||
missing module named numexpr - imported by pandas.core.computation.expressions (conditional), pandas.core.computation.engines (delayed)
|
||||
missing module named pytest - imported by scipy._lib._testutils (delayed), matplotlib (delayed, optional), pandas._testing._io (delayed), pandas._testing (delayed), pandas.util._tester (delayed, optional), sqlalchemy.testing.warnings (delayed, optional)
|
||||
missing module named pyarrow - imported by pandas.core.arrays.masked (delayed), pandas.core.arrays.numeric (delayed, conditional), pandas.core.arrays._arrow_utils (top-level), pandas.core.arrays.interval (delayed), pandas.core.arrays.period (delayed), pandas.core.arrays.boolean (delayed, conditional), pandas.io.feather_format (delayed), pandas.core.arrays.string_ (delayed, conditional), pandas.core.arrays.string_arrow (conditional), pandas.core.dtypes.dtypes (delayed, conditional), pandas.compat.pyarrow (optional)
|
||||
missing module named 'pyarrow.parquet' - imported by pandas.io.parquet (delayed)
|
||||
missing module named PyQt4 - imported by pandas.io.clipboard (delayed, conditional, optional)
|
||||
missing module named qtpy - imported by pandas.io.clipboard (delayed, conditional, optional)
|
||||
missing module named urlparse - imported by sqlalchemy.util.compat (conditional)
|
||||
missing module named ConfigParser - imported by sqlalchemy.util.compat (conditional)
|
||||
missing module named importlib_metadata - imported by pyvisa (conditional), PyInstaller.compat (delayed, conditional), PyInstaller.utils.hooks.conda (conditional), sqlalchemy.util.compat (conditional)
|
||||
missing module named tables - imported by pandas.io.pytables (delayed, conditional)
|
||||
missing module named xlsxwriter - imported by pandas.io.excel._xlsxwriter (delayed)
|
||||
missing module named 'defusedxml.ElementTree' - imported by openpyxl.xml.functions (conditional)
|
||||
missing module named tests - imported by openpyxl.reader.excel (optional)
|
||||
missing module named 'odf.config' - imported by pandas.io.excel._odswriter (delayed)
|
||||
missing module named 'odf.style' - imported by pandas.io.excel._odswriter (delayed)
|
||||
missing module named 'odf.text' - imported by pandas.io.excel._odfreader (delayed), pandas.io.excel._odswriter (delayed)
|
||||
missing module named 'odf.table' - imported by pandas.io.excel._odfreader (delayed), pandas.io.excel._odswriter (delayed)
|
||||
missing module named 'odf.opendocument' - imported by pandas.io.excel._odfreader (delayed), pandas.io.excel._odswriter (delayed)
|
||||
missing module named xlrd - imported by pandas.io.excel._xlrd (delayed), pandas.io.excel._base (delayed, conditional)
|
||||
missing module named pyxlsb - imported by pandas.io.excel._pyxlsb (delayed)
|
||||
missing module named 'odf.element' - imported by pandas.io.excel._odfreader (delayed)
|
||||
missing module named 'odf.namespaces' - imported by pandas.io.excel._odfreader (delayed)
|
||||
missing module named odf - imported by pandas.io.excel._odfreader (delayed)
|
||||
missing module named scipy.special.ndtr - imported by scipy.special (top-level), scipy.stats._bootstrap (top-level)
|
||||
missing module named scipy.special.betaln - imported by scipy.special (top-level), scipy.stats._discrete_distns (top-level), scipy.stats._multivariate (top-level)
|
||||
missing module named scipy.special.beta - imported by scipy.special (top-level), scipy.stats._tukeylambda_stats (top-level)
|
||||
missing module named scipy.special.ive - imported by scipy.special (top-level), scipy.stats._distn_infrastructure (top-level)
|
||||
missing module named scipy.special.entr - imported by scipy.special (top-level), scipy.stats._distn_infrastructure (top-level), scipy.stats._discrete_distns (top-level), scipy.stats._multivariate (top-level)
|
||||
missing module named scipy.special.chndtr - imported by scipy.special (top-level), scipy.stats._distn_infrastructure (top-level)
|
||||
missing module named scipy.special.rel_entr - imported by scipy.special (top-level), scipy.spatial.distance (top-level)
|
||||
missing module named scipy.special.xlogy - imported by scipy.special (top-level), scipy.interpolate.rbf (top-level), scipy.stats._distn_infrastructure (top-level), scipy.stats._multivariate (top-level)
|
||||
missing module named scipy.sparse.coo_matrix - imported by scipy.sparse (delayed), scipy.sparse.data (delayed), scipy.optimize._numdiff (top-level), scipy.integrate._bvp (top-level), scipy.integrate._ivp.common (top-level), scipy.stats._crosstab (top-level), pandas.core.arrays.sparse.accessor (delayed)
|
||||
missing module named numpy.random.randn - imported by numpy.random (top-level), scipy (top-level)
|
||||
missing module named numpy.random.rand - imported by numpy.random (top-level), scipy (top-level)
|
||||
missing module named scipy.linalg._flapack_64 - imported by scipy.linalg (optional), scipy.linalg.lapack (optional)
|
||||
missing module named scipy.linalg._clapack - imported by scipy.linalg (optional), scipy.linalg.lapack (optional)
|
||||
missing module named scipy.linalg._fblas_64 - imported by scipy.linalg (optional), scipy.linalg.blas (optional)
|
||||
missing module named scipy.linalg._cblas - imported by scipy.linalg (optional), scipy.linalg.blas (optional)
|
||||
missing module named 'scikits.umfpack' - imported by scipy.optimize._linprog_ip (optional)
|
||||
missing module named 'sksparse.cholmod' - imported by scipy.optimize._linprog_ip (optional)
|
||||
missing module named sksparse - imported by scipy.optimize._trustregion_constr.projections (optional), scipy.optimize._linprog_ip (optional)
|
||||
missing module named numpy.double - imported by numpy (top-level), scipy.optimize._nnls (top-level)
|
||||
missing module named numpy.float64 - imported by numpy (top-level), scipy.optimize.lbfgsb (top-level)
|
||||
missing module named numpy.inexact - imported by numpy (top-level), scipy.special._basic (top-level), scipy.linalg.decomp (top-level), scipy.optimize.minpack (top-level)
|
||||
missing module named numpy.greater - imported by numpy (top-level), scipy.optimize.minpack (top-level)
|
||||
missing module named sparse - imported by scipy.sparse.linalg._expm_multiply (delayed, conditional), scipy.sparse.linalg.matfuncs (delayed, conditional)
|
||||
missing module named uarray - imported by scipy._lib.uarray (conditional, optional)
|
||||
missing module named numpy.arcsin - imported by numpy (top-level), scipy.linalg.decomp_svd (top-level)
|
||||
missing module named numpy.arccos - imported by numpy (top-level), scipy.special.orthogonal (top-level), scipy.linalg.decomp_svd (top-level)
|
||||
missing module named numpy.conj - imported by numpy (top-level), scipy.linalg.decomp (top-level)
|
||||
missing module named scikits - imported by scipy.sparse.linalg.dsolve.linsolve (optional)
|
||||
missing module named scipy.linalg.qr_insert - imported by scipy.linalg (top-level), scipy.sparse.linalg.isolve._gcrotmk (top-level)
|
||||
missing module named numpy.single - imported by numpy (top-level), scipy.linalg.decomp_schur (top-level), scipy.linalg.matfuncs (top-level)
|
||||
missing module named numpy.sign - imported by numpy (top-level), scipy.linalg.matfuncs (top-level)
|
||||
missing module named numpy.conjugate - imported by numpy (top-level), scipy.linalg.matfuncs (top-level)
|
||||
missing module named numpy.logical_not - imported by numpy (top-level), scipy.linalg.matfuncs (top-level)
|
||||
missing module named scipy.special.gammaln - imported by scipy.special (top-level), scipy.special.spfun_stats (top-level), scipy.optimize._dual_annealing (top-level), scipy.integrate._quadrature (top-level), scipy.stats._discrete_distns (top-level), scipy.stats._hypotests (top-level), scipy.stats._multivariate (top-level)
|
||||
missing module named scipy.special.airy - imported by scipy.special (top-level), scipy.special.orthogonal (top-level)
|
||||
missing module named scipy.special.comb - imported by scipy.special (delayed), scipy.linalg.special_matrices (delayed), scipy.interpolate.interpolate (top-level), scipy.interpolate._rbfinterp (top-level), scipy.stats._distn_infrastructure (top-level)
|
||||
missing module named scipy.special.poch - imported by scipy.special (top-level), scipy.fft._fftlog (top-level)
|
||||
missing module named scipy.special.loggamma - imported by scipy.special (top-level), scipy.fft._fftlog (top-level)
|
||||
missing module named numpy.power - imported by numpy (top-level), scipy.stats.kde (top-level)
|
||||
missing module named numpy.NINF - imported by numpy (top-level), scipy.stats._distn_infrastructure (top-level)
|
||||
missing module named numpy.logical_and - imported by numpy (top-level), scipy.stats._distn_infrastructure (top-level)
|
||||
missing module named numpy.hypot - imported by numpy (top-level), scipy.stats.morestats (top-level)
|
||||
missing module named numpy.log - imported by numpy (top-level), scipy.stats._distn_infrastructure (top-level), scipy.stats._discrete_distns (top-level), scipy.stats.morestats (top-level)
|
||||
missing module named scipy.stats.iqr - imported by scipy.stats (delayed), scipy.stats._hypotests (delayed)
|
||||
missing module named numpy.sinh - imported by numpy (top-level), scipy.stats._discrete_distns (top-level)
|
||||
missing module named numpy.cosh - imported by numpy (top-level), scipy.stats._discrete_distns (top-level)
|
||||
missing module named numpy.tanh - imported by numpy (top-level), scipy.stats._discrete_distns (top-level)
|
||||
missing module named numpy.expm1 - imported by numpy (top-level), scipy.stats._discrete_distns (top-level)
|
||||
missing module named numpy.log1p - imported by numpy (top-level), scipy.stats._discrete_distns (top-level)
|
||||
missing module named _ufunc - imported by numpy.typing (conditional)
|
||||
missing module named numpy.bytes_ - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.str_ - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.void - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.object_ - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.datetime64 - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.timedelta64 - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.number - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.complexfloating - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.floating - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named numpy.unsignedinteger - imported by numpy (top-level), numpy.typing._array_like (top-level)
|
||||
missing module named botocore - imported by pandas.io.common (delayed, conditional, optional)
|
||||
missing module named sets - imported by nose.util (optional), pytz.tzinfo (optional)
|
||||
missing module named UserDict - imported by pytz.lazy (optional)
|
||||
missing module named 'pyarrow.compute' - imported by pandas.core.arrays.string_arrow (conditional)
|
||||
missing module named hypothesis - imported by pandas.util._tester (delayed, optional)
|
||||
missing module named 'lxml.html' - imported by pandas.io.html (delayed)
|
||||
missing module named bs4 - imported by pandas.io.html (delayed)
|
||||
missing module named pandas.ExtensionArray - imported by pandas (conditional), pandas.core.construction (conditional)
|
||||
missing module named Sybase - imported by sqlalchemy.dialects.sybase.pysybase (delayed)
|
||||
missing module named pysqlite2 - imported by sqlalchemy.dialects.sqlite.pysqlite (delayed, conditional, optional)
|
||||
missing module named pysqlcipher - imported by sqlalchemy.dialects.sqlite.pysqlcipher (delayed, conditional)
|
||||
missing module named pysqlcipher3 - imported by sqlalchemy.dialects.sqlite.pysqlcipher (delayed, conditional)
|
||||
missing module named sqlcipher3 - imported by sqlalchemy.dialects.sqlite.pysqlcipher (delayed, conditional, optional)
|
||||
missing module named asyncpg - imported by sqlalchemy.dialects.postgresql.asyncpg (delayed)
|
||||
missing module named postgresql - imported by sqlalchemy.dialects.postgresql.pypostgresql (delayed)
|
||||
missing module named pgdb - imported by sqlalchemy.dialects.postgresql.pygresql (delayed)
|
||||
missing module named psycopg2 - imported by sqlalchemy.dialects.postgresql.psycopg2 (delayed)
|
||||
missing module named cx_Oracle - imported by sqlalchemy.dialects.oracle.cx_oracle (delayed)
|
||||
missing module named asyncmy - imported by sqlalchemy.dialects.mysql.asyncmy (delayed)
|
||||
missing module named 'mysql.connector' - imported by sqlalchemy.dialects.mysql.mysqlconnector (delayed, conditional, optional)
|
||||
missing module named mysql - imported by sqlalchemy.dialects.mysql.mysqlconnector (delayed)
|
||||
missing module named 'mx.ODBC' - imported by sqlalchemy.connectors.mxodbc (delayed, conditional)
|
||||
missing module named mx - imported by sqlalchemy.connectors.mxodbc (delayed, conditional)
|
||||
missing module named 'typing.io' - imported by importlib.resources (top-level)
|
||||
missing module named setuptools_scm - imported by matplotlib (delayed, conditional)
|
||||
missing module named fcntl - imported by serial.serialposix (top-level)
|
||||
missing module named 'System.IO' - imported by serial.serialcli (top-level)
|
||||
missing module named System - imported by serial.serialcli (top-level)
|
||||
File diff suppressed because it is too large
Load Diff
15
20231202/频响测试/config.ini
Normal file
15
20231202/频响测试/config.ini
Normal file
@ -0,0 +1,15 @@
|
||||
[Device]
|
||||
deviceSignal=TCPIP0::192.168.1.71::inst0::INSTR
|
||||
deviceMultimeter=USB0::0x2A8D::0xB318::MY62200139::0::INSTR
|
||||
[DB]
|
||||
IP=192.168.1.68
|
||||
[Frequency]
|
||||
160=1.575
|
||||
320=1.000
|
||||
640=1.000
|
||||
1000=2.620
|
||||
2000=2.9
|
||||
3000=2.7
|
||||
4000=1.82
|
||||
5000=1.33
|
||||
6000=0.66
|
||||
BIN
20231202/频响测试/data.xlsx
Normal file
BIN
20231202/频响测试/data.xlsx
Normal file
Binary file not shown.
BIN
20231202/频响测试/dist/DataNodeFrequencyTestnew.exe
vendored
Normal file
BIN
20231202/频响测试/dist/DataNodeFrequencyTestnew.exe
vendored
Normal file
Binary file not shown.
15
20231202/频响测试/dist/config.ini
vendored
Normal file
15
20231202/频响测试/dist/config.ini
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
[Device]
|
||||
deviceSignal=TCPIP0::192.168.1.71::inst0::INSTR
|
||||
deviceMultimeter=USB0::0x2A8D::0xB318::MY62200139::0::INSTR
|
||||
[DB]
|
||||
IP=192.168.1.68
|
||||
[Frequency]
|
||||
160=1.575
|
||||
320=1.000
|
||||
640=1.000
|
||||
1000=2.620
|
||||
2000=2.9
|
||||
3000=2.7
|
||||
4000=1.82
|
||||
5000=1.33
|
||||
6000=0.66
|
||||
BIN
20231202/频响测试/dn.zip
Normal file
BIN
20231202/频响测试/dn.zip
Normal file
Binary file not shown.
561
20231202/频响测试/dn/DN101_NFC.py
Normal file
561
20231202/频响测试/dn/DN101_NFC.py
Normal file
@ -0,0 +1,561 @@
|
||||
from ctypes import *
|
||||
import time
|
||||
|
||||
class Nfc_Reader(object):
|
||||
def __init__(self, nfc_dev):
|
||||
self.nfc_reader = nfc_dev
|
||||
# self.nfc_reader = serial.Serial("com6")
|
||||
self.dev_info = NFC_INFO()
|
||||
self.dev_conf = NFC_CONF()
|
||||
self.init_nfc_message()
|
||||
|
||||
self.rfidm_c2_wpack = RFIDM_C2_WRITE_HEADER()
|
||||
self.rfidm_c2_rpack = RFIDM_C2_READ_HEADER()
|
||||
|
||||
self.nfc_uuid = None
|
||||
|
||||
def write_info(self, info_data):
|
||||
info_bytes = bytes(info_data) +b'\x00'
|
||||
|
||||
ret = self.rfidm_c2_multi_write(0, 10, info_bytes)
|
||||
|
||||
return ret
|
||||
|
||||
def write_conf(self, conf_data):
|
||||
conf_bytes = bytes(conf_data) + bytes([0, 0, 0])
|
||||
print("配置信息", conf_bytes)
|
||||
ret1 = self.rfidm_c2_multi_write(16, 15, conf_bytes[:60])
|
||||
ret2 = self.rfidm_c2_multi_write(31, 15, conf_bytes[60:])
|
||||
|
||||
return ret1&ret2
|
||||
|
||||
def read_info(self):
|
||||
# info_pack = NFC_INFO()
|
||||
|
||||
ret = self.rfidm_c2_multi_read(0, 10, timout=2)
|
||||
# print("nfc info:", str(ret))
|
||||
if ret:
|
||||
memmove(addressof(self.dev_info), ret, sizeof(self.dev_info))
|
||||
# self.dev_info_analysis()
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def read_conf(self):
|
||||
# conf_pack = NFC_CONF()
|
||||
|
||||
ret1 = self.rfidm_c2_multi_read(16, 15, timout=2)
|
||||
ret2 = self.rfidm_c2_multi_read(31, 15, timout=2)
|
||||
# print("nfc info:", str(ret1), str(ret2))
|
||||
if ret1:
|
||||
if ret2:
|
||||
ret = ret1+ret2
|
||||
memmove(addressof(self.dev_conf), ret, sizeof(self.dev_conf))
|
||||
print("测点名称:", list(self.dev_conf.node_name))
|
||||
# self.dev_conf_analysis()
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def close(self):
|
||||
self.nfc_reader.close()
|
||||
|
||||
def default(self):
|
||||
conf_file = open("conf.txt", 'r')
|
||||
|
||||
def rfidm_c2_single_write(self, cmd, data):
|
||||
pass
|
||||
|
||||
def rfidm_c2_multi_write(self, block_index, block_count, wdata, timeout=2):
|
||||
wpack = self.rfidm_c2_multi_write_pack(block_index, block_count, wdata)
|
||||
|
||||
self.nfc_reader.reset_input_buffer()
|
||||
self.nfc_reader.reset_output_buffer()
|
||||
|
||||
self.nfc_reader.write(wpack)
|
||||
|
||||
|
||||
#检查返回的信息,是否写入成功
|
||||
retpack = RFIDM_C2_RET_PACK()
|
||||
ret = self.nfc_reader.read(sizeof(retpack))
|
||||
memmove(addressof(retpack), ret, sizeof(retpack))
|
||||
|
||||
if retpack.sucess_flag == 0xE7:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
def rfidm_c2_multi_read(self, block_index, block_count, timout=0.5):
|
||||
read_info_cmd = self.rfidm_c2_multi_read_pack(block_index, block_count)
|
||||
|
||||
self.nfc_reader.reset_input_buffer()
|
||||
self.nfc_reader.reset_output_buffer()
|
||||
self.nfc_reader.write(read_info_cmd)
|
||||
print("read info cmd:", [hex(data) for data in list(read_info_cmd)])
|
||||
self.nfc_reader.timeout = timout
|
||||
|
||||
ret = self.nfc_reader.read(4*block_count+4)
|
||||
print(ret)
|
||||
if len(ret) == (4*block_count+4):
|
||||
return ret[3:-1]
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
def rfidm_c2_single_read(self, cmd, retlen, timout=0.5):
|
||||
cmdpack = RFIDM_C2_WRITE_HEADER()
|
||||
cmdpack.adress = 0
|
||||
cmdpack.dlen = 0x02
|
||||
cmdpack.cmd = cmd
|
||||
|
||||
crc = self.bcc_check(bytes(cmdpack)[2:-1])
|
||||
cmdpack.crc = crc
|
||||
|
||||
self.nfc_reader.reset_input_buffer()
|
||||
self.nfc_reader.reset_output_buffer()
|
||||
|
||||
self.nfc_reader.write(bytes(cmdpack))
|
||||
self.nfc_reader.timeout = 0.5
|
||||
ret = self.nfc_reader.read(retlen)
|
||||
|
||||
if len(ret)==retlen:
|
||||
return ret
|
||||
else:
|
||||
print(ret)
|
||||
return None
|
||||
|
||||
def get_uuid(self):
|
||||
tagpack = RFIDM_C2_TAG_INFO_PACK()
|
||||
|
||||
ret = self.rfidm_c2_single_read(0x11, sizeof(tagpack)) #获取标签命令
|
||||
|
||||
if ret:
|
||||
memmove(addressof(tagpack), ret, sizeof(tagpack))
|
||||
self.nfc_uuid = tagpack.uuid
|
||||
else:
|
||||
self.nfc_uuid = False
|
||||
|
||||
def rfidm_c2_multi_write_pack(self, start_block, block_count, data):
|
||||
"""
|
||||
写多个block 数据格式
|
||||
:param start_block: 起始块序号
|
||||
:param block_count: 一共要写的块
|
||||
:param data: 要写的数据
|
||||
:return: bytes格式数据包
|
||||
"""
|
||||
mwrite_pack = RFIDM_C2_MULTI_WRITE_PACK()
|
||||
wpack = RFIDM_C2_WRITE_HEADER()
|
||||
|
||||
wpack.address = 0
|
||||
wpack.dlen = sizeof(wpack) + sizeof(mwrite_pack) + len(data) - 3
|
||||
wpack.cmd = 0x24
|
||||
|
||||
# memmove(addressof(mwrite_pack.uuid), self.nfc_uuid, sizeof(mwrite_pack.uuid))
|
||||
mwrite_pack.uuid = self.nfc_uuid
|
||||
mwrite_pack.flag = 0x22
|
||||
mwrite_pack.start_block = start_block
|
||||
mwrite_pack.block_len = block_count
|
||||
|
||||
wdata = bytes(wpack)[:-1] + bytes(mwrite_pack)+data
|
||||
crc = self.bcc_check(wdata[2:])
|
||||
|
||||
wpack.crc = crc
|
||||
|
||||
wdata = bytes(wpack)[:-1] + bytes(mwrite_pack) + data + bytes(wpack)[-1:]
|
||||
|
||||
return wdata
|
||||
|
||||
def rfidm_c2_single_write_pack(self, block_index, data):
|
||||
"""
|
||||
写入单个数据块
|
||||
:param block_index: 块序号
|
||||
:param data: 要写入的数据
|
||||
:return: bytes数据包
|
||||
"""
|
||||
wpack = RFIDM_C2_SINGLE_WRITE_PACK()
|
||||
|
||||
wpack.address = 0
|
||||
wpack.dlen = 0x10
|
||||
wpack.cmd = 0x21
|
||||
|
||||
# memmove(addressof(wpack.uuid), self.nfc_uuid, sizeof(wpack.uuid))
|
||||
wpack.uuid = self.nfc_uuid
|
||||
wpack.flag = 0x22
|
||||
wpack.block_index = block_index
|
||||
memmove(addressof(wpack.data), data, sizeof(wpack.data))
|
||||
|
||||
crc = self.bcc_check(bytes(wpack[2:-1]))
|
||||
wpack.crc = crc
|
||||
|
||||
return bytes(wpack)
|
||||
|
||||
def rfidm_c2_multi_read_pack(self, block_index, block_count):
|
||||
rpack = RFIDM_C2_MULTI_READ_PACK()
|
||||
|
||||
rpack.address = 0
|
||||
rpack.dlen = 0x0C
|
||||
rpack.cmd = 0x23
|
||||
rpack.uuid = self.nfc_uuid
|
||||
|
||||
rpack.block_index = block_index
|
||||
rpack.block_count = block_count
|
||||
|
||||
crc = self.bcc_check(bytes(rpack)[2:-1])
|
||||
rpack.crc = crc
|
||||
|
||||
return bytes(rpack)
|
||||
|
||||
def rfidm_c2_single_read_pack(self, block_index):
|
||||
rpack = RFIDM_C2_SINGLE_READ_PACK()
|
||||
|
||||
rpack.address = 0
|
||||
rpack.dlen = 0x0B
|
||||
rpack.cmd = 0x20
|
||||
|
||||
memmove(addressof(rpack.uuid), self.nfc_uuid, sizeof(rpack.uuid))
|
||||
rpack.block_index = block_index
|
||||
|
||||
crc = self.bcc_check(bytes(rpack[2:-1]))
|
||||
rpack.crc = crc
|
||||
|
||||
return bytes(rpack)
|
||||
|
||||
|
||||
def bcc_check(self, data):
|
||||
bcc = 0
|
||||
for d in data:
|
||||
bcc = bcc^d
|
||||
|
||||
return bcc
|
||||
|
||||
def rfidm_c2_init(self):
|
||||
wpack = RFIDM_C2_CMD_PACK()
|
||||
wpack.address = 0
|
||||
wpack.dlen = 0x03
|
||||
wpack.cmd = 0x02
|
||||
wpack.conf = 0x01
|
||||
wpack.crc = 0x00
|
||||
|
||||
self.nfc_reader.reset_input_buffer()
|
||||
self.nfc_reader.reset_output_buffer()
|
||||
self.nfc_reader.write(bytes(wpack))
|
||||
time.sleep(0.2)
|
||||
|
||||
wpack.cmd = 0x0D
|
||||
wpack.conf = 0x01
|
||||
wpack.crc = 0x0F
|
||||
|
||||
self.nfc_reader.reset_input_buffer()
|
||||
self.nfc_reader.reset_output_buffer()
|
||||
self.nfc_reader.write(bytes(wpack))
|
||||
time.sleep(0.2)
|
||||
|
||||
wpack.cmd = 0x0E
|
||||
wpack.conf = 100
|
||||
wpack.crc = self.bcc_check(bytes(wpack)[2:-1])
|
||||
|
||||
self.nfc_reader.reset_input_buffer()
|
||||
self.nfc_reader.reset_output_buffer()
|
||||
self.nfc_reader.write(bytes(wpack))
|
||||
time.sleep(0.2)
|
||||
|
||||
|
||||
|
||||
|
||||
def dev_info_analysis(self):
|
||||
self.dev_info_msg["初始化标志"] = self.dev_info.uInitFlag
|
||||
self.dev_info_msg["加速度传感器状态"] = self.dev_info.uAccSta
|
||||
self.dev_info_msg["Zigbee模块状态"] = self.dev_info.uZigbeeSta
|
||||
self.dev_info_msg["设备温度传感器状态"] = self.dev_info.uLowerTempSta
|
||||
self.dev_info_msg["环境温度传感器状态"] = self.dev_info.uUpperTempSta
|
||||
self.dev_info_msg["设备运行状态"] = self.dev_info.uRunningFlag
|
||||
self.dev_info_msg["MAC地址"] = hex(self.dev_info.zigbeeMac)[2:]
|
||||
self.dev_info_msg["硬件版本"] = self.dev_info.hwVersion/10
|
||||
self.dev_info_msg["软件版本"] = self.dev_info.sfVersion/10
|
||||
self.dev_info_msg["生产批号"] = self.dev_info.pn
|
||||
self.dev_info_msg["生产序列号"] = self.dev_info.sn
|
||||
self.dev_info_msg["首次上电日期"] = self.dev_info.sTime
|
||||
self.dev_info_msg["唤醒次数"] = self.dev_info.wakeupTimes
|
||||
self.dev_info_msg["特征值发送次数"] = self.dev_info.tzTimes
|
||||
self.dev_info_msg["原始波形发送次数"] = self.dev_info.wvTimes
|
||||
self.dev_info_msg["电池电压"] = self.dev_info.batVol
|
||||
self.dev_info_msg["产品型号"] = self.dev_info.productType
|
||||
self.dev_info_msg["无线信号强度"] = self.dev_info.rss
|
||||
print(bytes(self.dev_conf.node_name))
|
||||
|
||||
try:
|
||||
self.dev_info_msg["测点名称"] = bytes(self.dev_conf.node_name).decode('GB18030')
|
||||
except:
|
||||
self.dev_info_msg["测点名称"] = "解析错误"
|
||||
|
||||
def dev_conf_analysis(self):
|
||||
self.dev_conf_msg["配置标志"] = self.dev_conf.active_flag
|
||||
self.dev_conf_msg["唤醒周期"] = self.dev_conf.wakeup_period
|
||||
self.dev_conf_msg["原始波形发送周期"] = self.dev_conf.wave_period
|
||||
self.dev_conf_msg["Zigbee PID"] = hex(self.dev_conf.zig_panid)[2:]
|
||||
self.dev_conf_msg["Zigbee 信道"] = self.dev_conf.zig_channel
|
||||
self.dev_conf_msg["Zigbee 本地地址"] = hex(self.dev_conf.zig_local_addr)[2:]
|
||||
self.dev_conf_msg["Zigbee 目标地址"] = hex(self.dev_conf.zig_dst_addr)[2:]
|
||||
self.dev_conf_msg["Zigbee 发射功率"] = self.dev_conf.zig_power_level
|
||||
self.dev_conf_msg["Zigbee 重试次数"] = self.dev_conf.zig_retry_num
|
||||
self.dev_conf_msg["Zigbee 重试间隔"] = self.dev_conf.zig_retry_time
|
||||
self.dev_conf_msg["ACC采样率"] = self.acc_freq_cal(self.dev_conf.acc_acq_freq)
|
||||
self.dev_conf_msg["ACC量程"] = self.acc_range_cal(self.dev_conf.acc_acq_range)
|
||||
self.dev_conf_msg["ACC采样率时间"] = self.dev_conf.acc_acq_time
|
||||
self.dev_conf_msg["频带能量参数1 START"] = self.dev_conf.freq_power1_start
|
||||
self.dev_conf_msg["频带能量参数1 END"] = self.dev_conf.freq_power1_stop
|
||||
self.dev_conf_msg["频带能量参数2 START"] = self.dev_conf.freq_power2_start
|
||||
self.dev_conf_msg["频带能量参数2 END"] = self.dev_conf.freq_power2_stop
|
||||
self.dev_conf_msg["频带能量参数3 START"] = self.dev_conf.freq_power3_start
|
||||
self.dev_conf_msg["频带能量参数3 END"] = self.dev_conf.freq_power3_stop
|
||||
self.dev_conf_msg["频带能量参数4 START"] = self.dev_conf.freq_power4_start
|
||||
self.dev_conf_msg["频带能量参数4 END"] = self.dev_conf.freq_power4_stop
|
||||
self.dev_conf_msg["频带能量参数5 START"] = self.dev_conf.freq_power5_start
|
||||
self.dev_conf_msg["频带能量参数5 END"] = self.dev_conf.freq_power5_stop
|
||||
self.dev_conf_msg["冲击带通频率START"] = self.dev_conf.envel_freq_start
|
||||
self.dev_conf_msg["冲击带通频率END"] = self.dev_conf.envel_freq_stop
|
||||
self.dev_conf_msg["故障频率1"] = self.dev_conf.fail_freq1
|
||||
self.dev_conf_msg["故障频率2"] = self.dev_conf.fail_freq2
|
||||
self.dev_conf_msg["故障频率3"] = self.dev_conf.fail_freq3
|
||||
self.dev_conf_msg["故障频率4"] = self.dev_conf.fail_freq4
|
||||
self.dev_conf_msg["配置时间"] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(self.dev_conf.conf_date))
|
||||
self.dev_conf_msg["速度积分滤波频率"] = self.dev_conf.speed_freq_start
|
||||
|
||||
|
||||
def init_nfc_message(self):
|
||||
self.dev_info_msg = {"测点名称": None,
|
||||
"初始化标志": None,
|
||||
"加速度传感器状态": None,
|
||||
"Zigbee模块状态": None,
|
||||
"设备温度传感器状态": None,
|
||||
"环境温度传感器状态": None,
|
||||
"设备运行状态": None,
|
||||
"MAC地址": None,
|
||||
"硬件版本": None,
|
||||
"软件版本": None,
|
||||
"生产批号": None,
|
||||
"生产序列号": None,
|
||||
"首次上电日期": None,
|
||||
"唤醒次数": None,
|
||||
"特征值发送次数": None,
|
||||
"原始波形发送次数": None,
|
||||
"电池电压": None,
|
||||
"产品型号": None,
|
||||
"无线信号强度": None,
|
||||
}
|
||||
|
||||
self.dev_conf_msg = {"配置标志": None,
|
||||
"唤醒周期": None,
|
||||
"原始波形发送周期": None,
|
||||
"Zigbee PID": None,
|
||||
"Zigbee 信道": None,
|
||||
"Zigbee 本地地址": None,
|
||||
"Zigbee 目标地址": None,
|
||||
"Zigbee 发射功率": None,
|
||||
"Zigbee 重试次数": None,
|
||||
"Zigbee 重试间隔": None,
|
||||
"ACC采样率": None,
|
||||
"ACC量程": None,
|
||||
"ACC采样率时间": None,
|
||||
"频带能量参数1 START": None,
|
||||
"频带能量参数1 END": None,
|
||||
"频带能量参数2 START": None,
|
||||
"频带能量参数2 END": None,
|
||||
"频带能量参数3 START": None,
|
||||
"频带能量参数3 END": None,
|
||||
"频带能量参数4 START": None,
|
||||
"频带能量参数4 END": None,
|
||||
"频带能量参数5 START": None,
|
||||
"频带能量参数5 END": None,
|
||||
"冲击带通频率START": None,
|
||||
"冲击带通频率END": None,
|
||||
"故障频率1": None,
|
||||
"故障频率2": None,
|
||||
"故障频率3": None,
|
||||
"故障频率4": None,
|
||||
"配置时间": None,
|
||||
"速度积分滤波频率": None
|
||||
}
|
||||
def acc_range_cal(self, sdata):
|
||||
if sdata == 0b00:
|
||||
return "±8g"
|
||||
elif sdata == 0b01:
|
||||
return "±16g"
|
||||
elif sdata == 0b10:
|
||||
return "±32g"
|
||||
elif sdata == 0b11:
|
||||
return "±64g"
|
||||
|
||||
def acc_freq_cal(self, sdata):
|
||||
if sdata == 0b00:
|
||||
return "3.2kHz"
|
||||
elif sdata == 0b01:
|
||||
return "6.4kHz"
|
||||
elif sdata == 0b10:
|
||||
return "12.8kHz"
|
||||
elif sdata == 0b11:
|
||||
return "25.6kHz"
|
||||
|
||||
#传感器信息
|
||||
class NFC_INFO(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
#设备状态标志
|
||||
('uInitFlag', c_ubyte, 1),
|
||||
('uAccSta', c_ubyte, 1),
|
||||
('uZigbeeSta', c_ubyte, 1),
|
||||
('uLowerTempSta', c_ubyte, 1),
|
||||
('uUpperTempSta', c_ubyte, 1),
|
||||
('uRunningFlag', c_ubyte, 1),
|
||||
|
||||
('zigbeeMac', c_uint64), #Zigbee MAC地址
|
||||
('hwVersion', c_uint8), #硬件版本
|
||||
('sfVersion', c_uint8), #软件版本
|
||||
('pn', c_uint32), #批号
|
||||
('sn', c_uint32), #序列号
|
||||
('sTime', c_uint32), #首次上电时间
|
||||
('wakeupTimes', c_uint32), #唤醒次数
|
||||
('tzTimes', c_uint32), #特征值发送次数
|
||||
('wvTimes', c_uint32), #原始波形发送次数
|
||||
('batVol', c_uint16), #电池电压
|
||||
('productType', c_uint8), #产品型号
|
||||
('rss', c_uint8), #Zigbee信号强度
|
||||
]
|
||||
|
||||
|
||||
class NFC_CONF(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('active_flag', c_uint8), # 激活标志
|
||||
('wakeup_period', c_uint8), # 唤醒周期
|
||||
('wave_period', c_uint16), # 原始波形发送周期
|
||||
('zig_panid', c_uint16), # zigbee panid
|
||||
('zig_channel', c_uint8), # zigbee channel
|
||||
('zig_local_addr', c_uint16), # zigbee本地地址
|
||||
('zig_dst_addr', c_uint16), # zigbee目标地址
|
||||
('zig_power_level', c_uint8), # zigbee发射功率
|
||||
("zig_retry_num", c_uint8), # 重试次数
|
||||
("zig_retry_time", c_uint8), # 重试间隔
|
||||
|
||||
("reserve", c_ubyte, 4),
|
||||
("acc_acq_range", c_ubyte, 2), # 量程
|
||||
("acc_acq_freq", c_ubyte, 2), # 采样率
|
||||
|
||||
("acc_acq_time", c_uint8), # 采样时长
|
||||
|
||||
("freq_power1_start", c_uint16), # 频带能量参数1
|
||||
("freq_power1_stop", c_uint16), # 频带能量参数1
|
||||
("freq_power2_start", c_uint16), # 频带能量参数2
|
||||
("freq_power2_stop", c_uint16), # 频带能量参数2
|
||||
("freq_power3_start", c_uint16), # 频带能量参数3
|
||||
("freq_power3_stop", c_uint16), # 频带能量参数3
|
||||
("freq_power4_start", c_uint16), # 频带能量参数4
|
||||
("freq_power4_stop", c_uint16), # 频带能量参数4
|
||||
("freq_power5_start", c_uint16), # 频带能量参数5
|
||||
("freq_power5_stop", c_uint16), # 频带能量参数5
|
||||
("envel_freq_start", c_uint16), # 包络带通频率
|
||||
("envel_freq_stop", c_uint16), # 包络带通频率
|
||||
("fail_freq1", c_uint16), # 故障频率1
|
||||
("fail_freq2", c_uint16), # 故障频率2
|
||||
("fail_freq3", c_uint16), # 故障频率3
|
||||
("fail_freq4", c_uint16), # 故障频率4
|
||||
("conf_date", c_uint32), # 配置时间
|
||||
("speed_freq_start", c_uint8), # 速度积分起始频率
|
||||
("node_name", c_uint16*32), # 节点名称
|
||||
]
|
||||
|
||||
|
||||
class RFIDM_C2_WRITE_HEADER(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('address', c_uint16), # 模块地址
|
||||
('dlen', c_uint8), # 长度
|
||||
('cmd', c_uint8), # 命令
|
||||
('crc', c_uint8)
|
||||
]
|
||||
|
||||
class RFIDM_C2_READ_HEADER(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('cmd', c_uint8), # 模块地址
|
||||
('dlen', c_uint8), # 长度
|
||||
('flag', c_uint8), # 命令
|
||||
('crc', c_uint8)
|
||||
]
|
||||
|
||||
class RFIDM_C2_MULTI_WRITE_PACK(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('uuid', c_uint64), # UUID
|
||||
('flag', c_uint8), # 标志字节,固定值0x22
|
||||
('start_block', c_uint8), # 起始块号
|
||||
('block_len', c_uint8), #块数
|
||||
]
|
||||
|
||||
|
||||
class RFIDM_C2_SINGLE_WRITE_PACK(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('address', c_uint16), # 模块地址
|
||||
('dlen', c_uint8), # 长度0x10
|
||||
('cmd', c_uint8), # 命令 0x21
|
||||
('uuid', c_uint64), # UUID
|
||||
('flag', c_uint8), # 标志字节,固定值0x22
|
||||
('block_index', c_uint8), # 起始块号
|
||||
('data', c_uint8*4), # 写入的数据
|
||||
('crc', c_uint8)
|
||||
]
|
||||
|
||||
class RFIDM_C2_MULTI_READ_PACK(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('address', c_uint16), # 模块地址
|
||||
('dlen', c_uint8), # 长度0x10
|
||||
('cmd', c_uint8), # 命令 0x21
|
||||
('uuid', c_uint64), # UUID
|
||||
('block_index', c_uint8), # 起始块号
|
||||
('block_count', c_uint8), # 块数
|
||||
('crc', c_uint8)
|
||||
]
|
||||
|
||||
class RFIDM_C2_SINGLE_READ_PACK(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('address', c_uint16), # 模块地址
|
||||
('dlen', c_uint8), # 长度0x10
|
||||
('cmd', c_uint8), # 命令 0x21
|
||||
('uuid', c_uint64), # UUID
|
||||
('block_index', c_uint8), # 数据块号
|
||||
('crc', c_uint8)
|
||||
]
|
||||
|
||||
class RFIDM_C2_TAG_INFO_PACK(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('cmd', c_uint8), # 命令头 0xFE
|
||||
('dlen', c_uint8), # 长度 0x0C
|
||||
('sucess_flag', c_uint8), # 成功:0x11, 失败0xE2
|
||||
('flag', c_uint8), # flag
|
||||
('dsfid', c_uint8), # DSFID信息
|
||||
('uuid', c_uint64), # UUID
|
||||
('crc', c_uint8)
|
||||
]
|
||||
|
||||
class RFIDM_C2_RET_PACK(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('cmd', c_uint8), # 命令头 0xFE
|
||||
('dlen', c_uint8), # 长度 0x02
|
||||
('sucess_flag', c_uint8), # 成功:0x11, 失败0xE2
|
||||
('crc', c_uint8)
|
||||
]
|
||||
|
||||
class RFIDM_C2_CMD_PACK(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
('address', c_uint16), # 模块地址
|
||||
('dlen', c_uint8), # 长度
|
||||
('cmd', c_uint8), # 命令
|
||||
('conf', c_uint8), # 设置
|
||||
('crc', c_uint8)
|
||||
]
|
||||
485
20231202/频响测试/dn/DN101_ZIGBEE.py
Normal file
485
20231202/频响测试/dn/DN101_ZIGBEE.py
Normal file
@ -0,0 +1,485 @@
|
||||
from ctypes import *
|
||||
import numpy as np
|
||||
import datetime
|
||||
from zigbee_message_pack import *
|
||||
|
||||
SENSER_INF_PACK1 = 0x01
|
||||
SENSER_INF_PACK2 = 0x07
|
||||
EVEL_DATA_PACK1 = 0x02
|
||||
EVEL_DATA_PACK2 = 0x06
|
||||
WAVE_X_PACK = 0x03
|
||||
WAVE_Y_PACK = 0x04
|
||||
WAVE_Z_PACK = 0x05
|
||||
|
||||
|
||||
class EvelPack(LittleEndianStructure):
|
||||
_fields_ = [
|
||||
# 特征值
|
||||
("temp_dev", c_uint16),
|
||||
("temp_env", c_uint16),
|
||||
("angle", c_uint16),
|
||||
("bat_vol", c_uint16),
|
||||
("acc_x_pk", c_uint16),
|
||||
("acc_x_rms", c_uint16),
|
||||
("speed_x_pk", c_uint16),
|
||||
("speed_x_rms", c_uint16),
|
||||
("fpower_x_1", c_uint16),
|
||||
("fpower_x_2", c_uint16),
|
||||
("fpower_x_3", c_uint16),
|
||||
("fpower_x_4", c_uint16),
|
||||
("fpower_x_5", c_uint16),
|
||||
("envepower_x", c_uint16),
|
||||
("errpower_x_1", c_uint16),
|
||||
("errpower_x_2", c_uint16),
|
||||
("errpower_x_3", c_uint16),
|
||||
("errpower_x_4", c_uint16),
|
||||
("acc_y_pk", c_uint16),
|
||||
("acc_y_rms", c_uint16),
|
||||
("speed_y_pk", c_uint16),
|
||||
("speed_y_rms", c_uint16),
|
||||
("fpower_y_1", c_uint16),
|
||||
("fpower_y_2", c_uint16),
|
||||
("fpower_y_3", c_uint16),
|
||||
("fpower_y_4", c_uint16),
|
||||
("fpower_y_5", c_uint16),
|
||||
("envepower_y", c_uint16),
|
||||
("errpower_y_1", c_uint16),
|
||||
("errpower_y_2", c_uint16),
|
||||
("errpower_y_3", c_uint16),
|
||||
("errpower_y_4", c_uint16),
|
||||
("acc_z_pk", c_uint16),
|
||||
("acc_z_rms", c_uint16),
|
||||
("speed_z_pk", c_uint16),
|
||||
("speed_z_rms", c_uint16),
|
||||
("fpower_z_1", c_uint16),
|
||||
("fpower_z_2", c_uint16),
|
||||
("fpower_z_3", c_uint16),
|
||||
("fpower_z_4", c_uint16),
|
||||
("fpower_z_5", c_uint16),
|
||||
("envepower_z", c_uint16),
|
||||
("errpower_z_1", c_uint16),
|
||||
("errpower_z_2", c_uint16),
|
||||
("errpower_z_3", c_uint16),
|
||||
("errpower_z_4", c_uint16),
|
||||
]
|
||||
|
||||
|
||||
class WavePack(Structure):
|
||||
_fields_ = [
|
||||
("wvdata", c_uint16 * 46), # 原始波形
|
||||
]
|
||||
|
||||
|
||||
# 传感器设备信息
|
||||
class DevInfo1(BigEndianStructure):
|
||||
_pack_ = 1
|
||||
_fields_ = [
|
||||
# 设备状态标志
|
||||
('uInitFlag', c_ubyte, 1),
|
||||
('uAccSta', c_ubyte, 1),
|
||||
('uZigbeeSta', c_ubyte, 1),
|
||||
('uLowerTempSta', c_ubyte, 1),
|
||||
('uUpperTempSta', c_ubyte, 1),
|
||||
('uRunningFlag', c_ubyte, 1),
|
||||
("reserve", c_ubyte, 2),
|
||||
|
||||
('zigbeeMac', c_uint64), # Zigbee MAC地址
|
||||
('hwVersion', c_uint8), # 硬件版本
|
||||
('sfVersion', c_uint8), # 软件版本
|
||||
('pn', c_uint32), # 批号
|
||||
('sn', c_uint32), # 序列号
|
||||
('sTime', c_uint32), # 首次上电时间
|
||||
('wakeupTimes', c_uint32), # 唤醒次数
|
||||
('tzTimes', c_uint32), # 特征值发送次数
|
||||
('wvTimes', c_uint32), # 原始波形发送次数
|
||||
('batVol', c_uint16), # 电池电压
|
||||
('productType', c_uint8), # 产品型号
|
||||
('rss', c_uint8), # Zigbee信号强度
|
||||
|
||||
('active_flag', c_uint8), # 激活标志
|
||||
('wakeup_period', c_uint8), # 唤醒周期
|
||||
('wave_period', c_uint16), # 原始波形发送周期
|
||||
('zig_panid', c_uint16), # zigbee panid
|
||||
('zig_channel', c_uint8), # zigbee channel
|
||||
('zig_local_addr', c_uint16), # zigbee本地地址
|
||||
('zig_dst_addr', c_uint16), # zigbee目标地址
|
||||
('zig_power_level', c_uint8), # zigbee发射功率
|
||||
("zig_retry_num", c_uint8), # 重试次数
|
||||
("zig_retry_time", c_uint8), # 重试间隔
|
||||
|
||||
("reserve", c_ubyte, 4),
|
||||
("acc_acq_range", c_ubyte, 2), # 量程
|
||||
("acc_acq_freq", c_ubyte, 2), # 采样率
|
||||
|
||||
("acc_acq_time", c_uint8), # 采样时长
|
||||
("freq_power1_start", c_uint16), # 频带能量参数1
|
||||
("freq_power1_stop", c_uint16), # 频带能量参数1
|
||||
("freq_power2_start", c_uint16), # 频带能量参数2
|
||||
("freq_power2_stop", c_uint16), # 频带能量参数2
|
||||
("freq_power3_start", c_uint16), # 频带能量参数3
|
||||
("freq_power3_stop", c_uint16), # 频带能量参数3
|
||||
("freq_power4_start", c_uint16), # 频带能量参数4
|
||||
("freq_power4_stop", c_uint16), # 频带能量参数4
|
||||
("freq_power5_start", c_uint16), # 频带能量参数5
|
||||
("freq_power5_stop", c_uint16), # 频带能量参数5
|
||||
("envel_freq_start", c_uint16), # 包络带通频率
|
||||
("envel_freq_stop", c_uint16), # 包络带通频率
|
||||
("fail_freq1", c_uint16), # 故障频率1
|
||||
("fail_freq2", c_uint16), # 故障频率2
|
||||
("fail_freq3", c_uint16), # 故障频率3
|
||||
("fail_freq4", c_uint16), # 故障频率4
|
||||
("conf_date", c_int32), # 配置时间
|
||||
("speed_freq_start", c_int8), # 速度积分起始频率
|
||||
]
|
||||
|
||||
|
||||
# 传感器信息2
|
||||
class DevInfo2(Structure):
|
||||
_fields_ = [
|
||||
# 特征值
|
||||
("node_name", c_int16 * 32), # 节点名称
|
||||
("reserve", c_int8 * 28), # 保留
|
||||
]
|
||||
|
||||
|
||||
class ZigPack(Structure):
|
||||
_fields_ = [
|
||||
("msg_header", c_uint8 * 3), # 帧头
|
||||
("msg_addr", c_uint8 * 2), # 源地址
|
||||
("msg_type", c_uint8), # 数据类型
|
||||
("msg_index", c_uint8), # 包序号
|
||||
("data", c_uint8 * 92), # 数据
|
||||
("crc", c_uint8), # 校验
|
||||
]
|
||||
|
||||
|
||||
class Zig_Reader(object):
|
||||
def __init__(self, zig_dev):
|
||||
self.evelpack = EvelPack()
|
||||
self.wavepack = WavePack()
|
||||
self.prev_index = 0
|
||||
self.zig_reader = zig_dev # 串口设备
|
||||
# self.zig_reader = serial.Serial('com5')
|
||||
self.recv_data_buf = b''
|
||||
self.zigpack = ZigPack()
|
||||
self.senser_info1 = DevInfo1()
|
||||
self.senser_info2 = DevInfo2()
|
||||
self.senser_evel = EvelPack()
|
||||
self.senser_wave = WavePack()
|
||||
|
||||
self.init_zigbee_message()
|
||||
|
||||
def read(self):
|
||||
sdata = self.zig_reader.read(self.zig_reader.inWaiting())
|
||||
self.recv_data_buf = self.recv_data_buf + sdata
|
||||
|
||||
ret = self.data_analysis()
|
||||
|
||||
return ret
|
||||
|
||||
def data_analysis(self):
|
||||
if (len(self.recv_data_buf) >= 100): # 缓存中数据量大于等于数据包
|
||||
if ((self.recv_data_buf[:3] == b'\xaaU\xaa') | (self.crc_check(self.recv_data_buf[:100]))):
|
||||
memmove(addressof(self.zigpack), self.recv_data_buf, sizeof(self.zigpack))
|
||||
|
||||
if self.zigpack.msg_type == SENSER_INF_PACK1:
|
||||
memmove(addressof(self.senser_info1), self.zigpack.data, sizeof(self.senser_info1))
|
||||
elif self.zigpack.msg_type == SENSER_INF_PACK2:
|
||||
memmove(addressof(self.senser_info2), self.zigpack.data, sizeof(self.senser_info2))
|
||||
self.dev_info_analysis()
|
||||
self.dev_conf_analysis()
|
||||
elif (self.zigpack.msg_type == EVEL_DATA_PACK1) | (self.zigpack.msg_type == EVEL_DATA_PACK2):
|
||||
memmove(addressof(self.senser_evel), self.zigpack.data, sizeof(self.senser_evel))
|
||||
self.evel_data_analysis()
|
||||
elif self.zigpack.msg_type == WAVE_X_PACK:
|
||||
memmove(addressof(self.senser_wave), self.zigpack.data, sizeof(self.senser_wave))
|
||||
elif self.zigpack.msg_type == WAVE_Y_PACK:
|
||||
memmove(addressof(self.senser_wave), self.zigpack.data, sizeof(self.senser_wave))
|
||||
elif self.zigpack.msg_type == WAVE_Z_PACK:
|
||||
memmove(addressof(self.senser_wave), self.zigpack.data, sizeof(self.senser_wave))
|
||||
|
||||
self.recv_data_buf = self.recv_data_buf[100:]
|
||||
return self.zigpack.msg_type
|
||||
else:
|
||||
self.recv_data_buf = self.recv_data_buf[1:]
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
|
||||
def crc_check(self, sdata):
|
||||
sdata = [d for d in sdata]
|
||||
sum_vl = np.sum(sdata[:-1])
|
||||
|
||||
if (sum_vl & 0xff) == sdata[-1]:
|
||||
return True
|
||||
else:
|
||||
msg = self.get_date_time() + '\n'
|
||||
msg = msg + "CRC Cal Error\n"
|
||||
msg = msg + str([hex(d) for d in sdata]) + '\n'
|
||||
print(msg)
|
||||
return False
|
||||
|
||||
def get_date_time(self):
|
||||
now_time = datetime.datetime.now()
|
||||
time_str = now_time.strftime('%Y.%m.%d %H:%M:%S')
|
||||
return time_str
|
||||
|
||||
def close(self):
|
||||
self.zig_reader.close()
|
||||
|
||||
def dev_info_analysis(self):
|
||||
self.dev_info_msg["初始化标志"] = self.senser_info1.uInitFlag
|
||||
self.dev_info_msg["加速度传感器状态"] = self.senser_info1.uAccSta
|
||||
self.dev_info_msg["Zigbee模块状态"] = self.senser_info1.uZigbeeSta
|
||||
self.dev_info_msg["设备温度传感器状态"] = self.senser_info1.uLowerTempSta
|
||||
self.dev_info_msg["环境温度传感器状态"] = self.senser_info1.uUpperTempSta
|
||||
self.dev_info_msg["设备运行状态"] = self.senser_info1.uRunningFlag
|
||||
self.dev_info_msg["MAC地址"] = hex(self.senser_info1.zigbeeMac)[2:]
|
||||
self.dev_info_msg["硬件版本"] = self.senser_info1.hwVersion/10
|
||||
self.dev_info_msg["软件版本"] = self.senser_info1.sfVersion/10
|
||||
self.dev_info_msg["生产批号"] = self.senser_info1.pn
|
||||
self.dev_info_msg["生产序列号"] = self.senser_info1.sn
|
||||
self.dev_info_msg["首次上电日期"] = self.senser_info1.sTime
|
||||
self.dev_info_msg["唤醒次数"] = self.senser_info1.wakeupTimes
|
||||
self.dev_info_msg["特征值发送次数"] = self.senser_info1.tzTimes
|
||||
self.dev_info_msg["原始波形发送次数"] = self.senser_info1.wvTimes
|
||||
self.dev_info_msg["电池电压"] = self.senser_info1.batVol
|
||||
self.dev_info_msg["产品型号"] = self.senser_info1.productType
|
||||
self.dev_info_msg["无线信号强度"] = self.senser_info1.rss
|
||||
self.dev_info_msg["测点名称"] = bytes(self.senser_info2.node_name).decode('GB18030')
|
||||
|
||||
def dev_conf_analysis(self):
|
||||
self.dev_conf_msg["配置标志"] = self.senser_info1.active_flag
|
||||
self.dev_conf_msg["唤醒周期"] = self.senser_info1.wakeup_period
|
||||
self.dev_conf_msg["原始波形发送周期"] = self.senser_info1.wave_period
|
||||
self.dev_conf_msg["Zigbee PID"] = hex(self.senser_info1.zig_panid)[2:]
|
||||
self.dev_conf_msg["Zigbee 信道"] = self.senser_info1.zig_channel
|
||||
self.dev_conf_msg["Zigbee 本地地址"] = hex(self.senser_info1.zig_local_addr)[2:]
|
||||
self.dev_conf_msg["Zigbee 目标地址"] = hex(self.senser_info1.zig_dst_addr)[2:]
|
||||
self.dev_conf_msg["Zigbee 发射功率"] = self.senser_info1.zig_power_level
|
||||
self.dev_conf_msg["Zigbee 重试次数"] = self.senser_info1.zig_retry_num
|
||||
self.dev_conf_msg["Zigbee 重试间隔"] = self.senser_info1.zig_retry_time
|
||||
self.dev_conf_msg["ACC采样率"] = self.acc_freq_cal(self.senser_info1.acc_acq_freq)
|
||||
self.dev_conf_msg["ACC量程"] = self.acc_range_cal(self.senser_info1.acc_acq_range)
|
||||
self.dev_conf_msg["ACC采样率时间"] = self.senser_info1.acc_acq_time
|
||||
self.dev_conf_msg["频带能量参数1 START"] = self.senser_info1.freq_power1_start
|
||||
self.dev_conf_msg["频带能量参数1 END"] = self.senser_info1.freq_power1_stop
|
||||
self.dev_conf_msg["频带能量参数2 START"] = self.senser_info1.freq_power2_start
|
||||
self.dev_conf_msg["频带能量参数2 END"] = self.senser_info1.freq_power2_stop
|
||||
self.dev_conf_msg["频带能量参数3 START"] = self.senser_info1.freq_power3_start
|
||||
self.dev_conf_msg["频带能量参数3 END"] = self.senser_info1.freq_power3_stop
|
||||
self.dev_conf_msg["频带能量参数4 START"] = self.senser_info1.freq_power4_start
|
||||
self.dev_conf_msg["频带能量参数4 END"] = self.senser_info1.freq_power4_stop
|
||||
self.dev_conf_msg["频带能量参数5 START"] = self.senser_info1.freq_power5_start
|
||||
self.dev_conf_msg["频带能量参数5 END"] = self.senser_info1.freq_power5_stop
|
||||
self.dev_conf_msg["冲击带通频率START"] = self.senser_info1.envel_freq_start
|
||||
self.dev_conf_msg["冲击带通频率END"] = self.senser_info1.envel_freq_stop
|
||||
self.dev_conf_msg["故障频率1"] = self.senser_info1.fail_freq1
|
||||
self.dev_conf_msg["故障频率2"] = self.senser_info1.fail_freq2
|
||||
self.dev_conf_msg["故障频率3"] = self.senser_info1.fail_freq3
|
||||
self.dev_conf_msg["故障频率4"] = self.senser_info1.fail_freq4
|
||||
self.dev_conf_msg["配置时间"] = self.senser_info1.conf_date
|
||||
self.dev_conf_msg["速度积分滤波频率"] = self.senser_info1.speed_freq_start
|
||||
|
||||
def evel_data_analysis(self):
|
||||
self.dev_evel_msg["采集时间"] = self.get_date_time()
|
||||
self.dev_evel_msg["设备温度"] = temp_cal(self.senser_evel.temp_dev)
|
||||
self.dev_evel_msg["环境温度"] = temp_cal(self.senser_evel.temp_env)
|
||||
self.dev_evel_msg["倾角"] = self.senser_evel.angle
|
||||
self.dev_evel_msg["电池电压"] = self.senser_evel.bat_vol
|
||||
self.dev_evel_msg["X轴峰值"] = self.evel_cal(self.senser_evel.acc_x_pk)
|
||||
self.dev_evel_msg["X轴有效值"] = self.evel_cal(self.senser_evel.acc_x_rms)
|
||||
self.dev_evel_msg["X轴速度峰值"] = self.evel_cal(self.senser_evel.speed_x_pk)
|
||||
self.dev_evel_msg["X轴速度有效值"] = self.evel_cal(self.senser_evel.speed_x_rms)
|
||||
self.dev_evel_msg["X轴频带能量1"] = self.evel_cal(self.senser_evel.fpower_x_1)
|
||||
self.dev_evel_msg["X轴频带能量2"] = self.evel_cal(self.senser_evel.fpower_x_2)
|
||||
self.dev_evel_msg["X轴频带能量3"] = self.evel_cal(self.senser_evel.fpower_x_3)
|
||||
self.dev_evel_msg["X轴频带能量4"] = self.evel_cal(self.senser_evel.fpower_x_4)
|
||||
self.dev_evel_msg["X轴频带能量5"] = self.evel_cal(self.senser_evel.fpower_x_5)
|
||||
self.dev_evel_msg["X轴冲击能量"] = self.evel_cal(self.senser_evel.envepower_x)
|
||||
self.dev_evel_msg["X轴故障频率1"] = self.evel_cal(self.senser_evel.errpower_x_1)
|
||||
self.dev_evel_msg["X轴故障频率2"] = self.evel_cal(self.senser_evel.errpower_x_2)
|
||||
self.dev_evel_msg["X轴故障频率3"] = self.evel_cal(self.senser_evel.errpower_x_3)
|
||||
self.dev_evel_msg["X轴故障频率4"] = self.evel_cal(self.senser_evel.errpower_x_4)
|
||||
self.dev_evel_msg["Y轴峰值"] = self.evel_cal(self.senser_evel.acc_y_pk)
|
||||
self.dev_evel_msg["Y轴有效值"] = self.evel_cal(self.senser_evel.acc_y_rms)
|
||||
self.dev_evel_msg["Y轴速度峰值"] = self.evel_cal(self.senser_evel.speed_y_pk)
|
||||
self.dev_evel_msg["Y轴速度有效值"] = self.evel_cal(self.senser_evel.speed_y_rms)
|
||||
self.dev_evel_msg["Y轴频带能量1"] = self.evel_cal(self.senser_evel.fpower_y_1)
|
||||
self.dev_evel_msg["Y轴频带能量2"] = self.evel_cal(self.senser_evel.fpower_y_2)
|
||||
self.dev_evel_msg["Y轴频带能量3"] = self.evel_cal(self.senser_evel.fpower_y_3)
|
||||
self.dev_evel_msg["Y轴频带能量4"] = self.evel_cal(self.senser_evel.fpower_y_4)
|
||||
self.dev_evel_msg["Y轴频带能量5"] = self.evel_cal(self.senser_evel.fpower_y_5)
|
||||
self.dev_evel_msg["Y轴冲击能量"] = self.evel_cal(self.senser_evel.envepower_y)
|
||||
self.dev_evel_msg["Y轴故障频率1"] = self.evel_cal(self.senser_evel.errpower_y_1)
|
||||
self.dev_evel_msg["Y轴故障频率2"] = self.evel_cal(self.senser_evel.errpower_y_2)
|
||||
self.dev_evel_msg["Y轴故障频率3"] = self.evel_cal(self.senser_evel.errpower_y_3)
|
||||
self.dev_evel_msg["Y轴故障频率4"] = self.evel_cal(self.senser_evel.errpower_y_4)
|
||||
self.dev_evel_msg["Z轴峰值"] = self.evel_cal(self.senser_evel.acc_z_pk)
|
||||
self.dev_evel_msg["Z轴有效值"] = self.evel_cal(self.senser_evel.acc_z_rms)
|
||||
self.dev_evel_msg["Z轴速度峰值"] = self.evel_cal(self.senser_evel.speed_z_pk)
|
||||
self.dev_evel_msg["Z轴速度有效值"] = self.evel_cal(self.senser_evel.speed_z_rms)
|
||||
self.dev_evel_msg["Z轴频带能量1"] = self.evel_cal(self.senser_evel.fpower_z_1)
|
||||
self.dev_evel_msg["Z轴频带能量2"] = self.evel_cal(self.senser_evel.fpower_z_2)
|
||||
self.dev_evel_msg["Z轴频带能量3"] = self.evel_cal(self.senser_evel.fpower_z_3)
|
||||
self.dev_evel_msg["Z轴频带能量4"] = self.evel_cal(self.senser_evel.fpower_z_4)
|
||||
self.dev_evel_msg["Z轴频带能量5"] = self.evel_cal(self.senser_evel.fpower_z_5)
|
||||
self.dev_evel_msg["Z轴冲击能量"] = self.evel_cal(self.senser_evel.envepower_z)
|
||||
self.dev_evel_msg["Z轴故障频率1"] = self.evel_cal(self.senser_evel.errpower_z_1)
|
||||
self.dev_evel_msg["Z轴故障频率2"] = self.evel_cal(self.senser_evel.errpower_z_2)
|
||||
self.dev_evel_msg["Z轴故障频率3"] = self.evel_cal(self.senser_evel.errpower_z_3)
|
||||
self.dev_evel_msg["Z轴故障频率4"] = self.evel_cal(self.senser_evel.errpower_z_4)
|
||||
|
||||
def temp_cal(self, sdata):
|
||||
if sdata > 2048:
|
||||
temp = -(256 - sdata * 0.0625)
|
||||
else:
|
||||
temp = sdata * 0.0625
|
||||
|
||||
return temp
|
||||
|
||||
def evel_cal(self, sdata):
|
||||
s1 = sdata >> 14
|
||||
s2 = sdata & (0xffff >> 2)
|
||||
|
||||
if s1 == 0:
|
||||
vl = s2 * 0.0001
|
||||
elif s1 == 1:
|
||||
vl = s2 * 0.01
|
||||
elif s1 == 2:
|
||||
vl = s2
|
||||
elif s1 == 3:
|
||||
vl = s2 / 100
|
||||
else:
|
||||
vl = 16383
|
||||
|
||||
return vl
|
||||
|
||||
def acc_range_cal(self, sdata):
|
||||
if sdata == 0b00:
|
||||
return "±8g"
|
||||
elif sdata == 0b01:
|
||||
return "±16g"
|
||||
elif sdata == 0b10:
|
||||
return "±32g"
|
||||
elif sdata == 0b11:
|
||||
return "±64g"
|
||||
|
||||
def acc_freq_cal(self, sdata):
|
||||
if sdata == 0b00:
|
||||
return "3.2kHz"
|
||||
elif sdata == 0b01:
|
||||
return "6.4kHz"
|
||||
elif sdata == 0b10:
|
||||
return "12.8kHz"
|
||||
elif sdata == 0b11:
|
||||
return "25.6kHz"
|
||||
|
||||
def init_zigbee_message(self):
|
||||
self.dev_info_msg = {"测点名称": None,
|
||||
"初始化标志": None,
|
||||
"加速度传感器状态": None,
|
||||
"Zigbee模块状态": None,
|
||||
"设备温度传感器状态": None,
|
||||
"环境温度传感器状态": None,
|
||||
"设备运行状态": None,
|
||||
"MAC地址": None,
|
||||
"硬件版本": None,
|
||||
"软件版本": None,
|
||||
"生产批号": None,
|
||||
"生产序列号": None,
|
||||
"首次上电日期": None,
|
||||
"唤醒次数": None,
|
||||
"特征值发送次数": None,
|
||||
"原始波形发送次数": None,
|
||||
"电池电压": None,
|
||||
"产品型号": None,
|
||||
"无线信号强度": None,
|
||||
}
|
||||
|
||||
self.dev_conf_msg = {"配置标志": None,
|
||||
"唤醒周期": None,
|
||||
"原始波形发送周期": None,
|
||||
"Zigbee PID": None,
|
||||
"Zigbee 信道": None,
|
||||
"Zigbee 本地地址": None,
|
||||
"Zigbee 目标地址": None,
|
||||
"Zigbee 发射功率": None,
|
||||
"Zigbee 重试次数": None,
|
||||
"Zigbee 重试间隔": None,
|
||||
"ACC采样率": None,
|
||||
"ACC量程": None,
|
||||
"ACC采样率时间": None,
|
||||
"频带能量参数1 START": None,
|
||||
"频带能量参数1 END": None,
|
||||
"频带能量参数2 START": None,
|
||||
"频带能量参数2 END": None,
|
||||
"频带能量参数3 START": None,
|
||||
"频带能量参数3 END": None,
|
||||
"频带能量参数4 START": None,
|
||||
"频带能量参数4 END": None,
|
||||
"频带能量参数5 START": None,
|
||||
"频带能量参数5 END": None,
|
||||
"冲击带通频率START": None,
|
||||
"冲击带通频率END": None,
|
||||
"故障频率1": None,
|
||||
"故障频率2": None,
|
||||
"故障频率3": None,
|
||||
"故障频率4": None,
|
||||
"配置时间": None,
|
||||
"速度积分滤波频率": None,
|
||||
"原始数据": None
|
||||
}
|
||||
|
||||
self.dev_evel_msg = {"采集时间": None,
|
||||
"设备温度": None,
|
||||
"环境温度": None,
|
||||
"倾角": None,
|
||||
"电池电压": None,
|
||||
"X轴峰值": None,
|
||||
"X轴有效值": None,
|
||||
"X轴速度峰值": None,
|
||||
"X轴速度有效值": None,
|
||||
"Y轴峰值": None,
|
||||
"Y轴有效值": None,
|
||||
"Y轴速度峰值": None,
|
||||
"Y轴速度有效值": None,
|
||||
"Z轴峰值": None,
|
||||
"Z轴有效值": None,
|
||||
"Z轴速度峰值": None,
|
||||
"Z轴速度有效值": None,
|
||||
|
||||
"X轴频带能量1": None,
|
||||
"X轴频带能量2": None,
|
||||
"X轴频带能量3": None,
|
||||
"X轴频带能量4": None,
|
||||
"X轴频带能量5": None,
|
||||
"X轴冲击能量": None,
|
||||
"X轴故障频率1": None,
|
||||
"X轴故障频率2": None,
|
||||
"X轴故障频率3": None,
|
||||
"X轴故障频率4": None,
|
||||
|
||||
"Y轴频带能量1": None,
|
||||
"Y轴频带能量2": None,
|
||||
"Y轴频带能量3": None,
|
||||
"Y轴频带能量4": None,
|
||||
"Y轴频带能量5": None,
|
||||
"Y轴冲击能量": None,
|
||||
"Y轴故障频率1": None,
|
||||
"Y轴故障频率2": None,
|
||||
"Y轴故障频率3": None,
|
||||
"Y轴故障频率4": None,
|
||||
|
||||
"Z轴频带能量1": None,
|
||||
"Z轴频带能量2": None,
|
||||
"Z轴频带能量3": None,
|
||||
"Z轴频带能量4": None,
|
||||
"Z轴频带能量5": None,
|
||||
"Z轴冲击能量": None,
|
||||
"Z轴故障频率1": None,
|
||||
"Z轴故障频率2": None,
|
||||
"Z轴故障频率3": None,
|
||||
"Z轴故障频率4": None,
|
||||
# "原始数据": None
|
||||
}
|
||||
12
20231202/频响测试/dn/RFIDM_C2.py
Normal file
12
20231202/频响测试/dn/RFIDM_C2.py
Normal file
@ -0,0 +1,12 @@
|
||||
RF_ON_R_OFF = [0, 0, 3, 2, 1, 0]
|
||||
LED_ON = [0, 0, 0x03, 0x0D, 0x01, 0x0F]
|
||||
LED_OFF = [0, 0, 0x03, 0x0D, 0x00, 0x0E]
|
||||
|
||||
BEEP_50ms = [0, 0, 0x03, 0x0E, 0x32, 0x3F]
|
||||
BEEP_100ms = [0, 0, 0x03, 0x0E, 0x64, 0x69]
|
||||
|
||||
UUID_GET = [0, 0, 0x02, 0x11, 0x13]
|
||||
|
||||
|
||||
MULTI_READ = [0, 0, 0x0C, 0x23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0]
|
||||
MULTI_WRITE = [0, 0, 0, 0x24, 0, 0, 0, 0, 0, 0, 0, 0, 0x22, 0, 0]
|
||||
43
20231202/频响测试/dn/conf.ini
Normal file
43
20231202/频响测试/dn/conf.ini
Normal file
@ -0,0 +1,43 @@
|
||||
[DEFAULT]
|
||||
硬件版本 = 3.0
|
||||
产品型号 = 1
|
||||
#启停机:停用,启用,调试
|
||||
启停机 = 启用
|
||||
唤醒周期 = 5
|
||||
波形发送周期 = 120
|
||||
|
||||
Zigbee PANID = 1234
|
||||
Zigbee 信道 = 15
|
||||
Zigbee 本地地址 = 1001
|
||||
Zigbee 目标地址 = 8888
|
||||
Zigbee 发射功率 = 3
|
||||
Zigbee 重试次数 = 100
|
||||
Zigbee 重试间隔 = 3
|
||||
|
||||
#ACC量程:0=8g; 1=16g; 2=32g; 3:64g
|
||||
ACC 量程 = 3
|
||||
ACC 采样率 = 2
|
||||
ACC 采样时间 = 1
|
||||
|
||||
测点名称 = 南京凯奥思
|
||||
|
||||
频带能量1起始频率 = 0
|
||||
频带能量1截至频率 = 100
|
||||
频带能量2起始频率 = 100
|
||||
频带能量2截至频率 = 200
|
||||
频带能量3起始频率 = 200
|
||||
频带能量3截至频率 = 300
|
||||
频带能量4起始频率 = 300
|
||||
频带能量4截至频率 = 400
|
||||
频带能量5起始频率 = 400
|
||||
频带能量5截至频率 = 500
|
||||
冲击起始频率 = 3000
|
||||
冲击截至频率 = 5000
|
||||
故障频率1 = 100
|
||||
故障频率2 = 200
|
||||
故障频率3 = 300
|
||||
故障频率4 = 400
|
||||
速度积分起始频率 = 10
|
||||
|
||||
生产序号 = 200001
|
||||
生产批号 = 202201
|
||||
612
20231202/频响测试/dn/dn101_tester.py
Normal file
612
20231202/频响测试/dn/dn101_tester.py
Normal file
@ -0,0 +1,612 @@
|
||||
from PyQt5.QtWidgets import QApplication,QMessageBox,QMainWindow
|
||||
from PyQt5.QtCore import QTimer
|
||||
import serial.tools.list_ports
|
||||
import serial
|
||||
import time
|
||||
import configparser
|
||||
|
||||
from main_ui2 import *
|
||||
from DN101_NFC import *
|
||||
from DN101_ZIGBEE import *
|
||||
from text_msg import *
|
||||
|
||||
NFC_PORT_STR = 'Silicon Labs Dual CP210x USB to UART Bridge: Enhanced COM Port'
|
||||
ZIG_PORT_STR = 'Silicon Labs Dual CP210x USB to UART Bridge: Standard COM Port'
|
||||
|
||||
|
||||
"""
|
||||
mainWindow.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint)
|
||||
mainWindow.setFixedSize(mainWindow.width(), mainWindow.height())
|
||||
"""
|
||||
|
||||
class DN101_Tester(QMainWindow):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.dn101_form = Ui_mainWindow()
|
||||
self.dn101_form.setupUi(self)
|
||||
|
||||
self.init_setup()
|
||||
self.sig_setup()
|
||||
|
||||
self.timer_zig = QTimer(self)
|
||||
self.timer_zig.timeout.connect(self.zig_update)
|
||||
|
||||
self.timer_single = QTimer(self)
|
||||
self.timer_nfc = QTimer(self)
|
||||
|
||||
self.retry_time = 0 #检测重试次数
|
||||
|
||||
self.timer_count = 0 #连续检测次数
|
||||
self.timer_detect = QTimer(self)
|
||||
self.timer_detect.timeout.connect(self.auto_detect)
|
||||
|
||||
#传感器要写的配置
|
||||
self.senser_info = NFC_INFO()
|
||||
self.senser_conf = NFC_CONF()
|
||||
|
||||
|
||||
def init_setup(self):
|
||||
self.dn101_form.pB_read_nfc.setEnabled(False)
|
||||
self.dn101_form.pB_exec.setEnabled(False)
|
||||
self.dn101_form.pB_exec_auto.setEnabled(False)
|
||||
|
||||
conf_flag = ['停用', '启用', '调试']
|
||||
zig_power = ['0', '1', '2', '3']
|
||||
acc_range = ['±8G', '±16G', '±32G', '±64G']
|
||||
acc_rate = ['±3.2KHz', '±6.4KHz', '±12.8KHz', '±25.6KHz']
|
||||
self.dn101_form.cB_conf_flag.addItems(conf_flag)
|
||||
self.dn101_form.cB_zig_power.addItems(zig_power)
|
||||
self.dn101_form.cB_acc_range.addItems(acc_range)
|
||||
self.dn101_form.cB_acc_rate.addItems(acc_rate)
|
||||
|
||||
self.init_state_ui()
|
||||
|
||||
#读取传感器默认配置
|
||||
if self.read_conf_file():
|
||||
self.update_ui_senser_info()
|
||||
|
||||
#设置生产日期
|
||||
mf_time = time.strftime("%Y%m%d", time.localtime(time.time()))
|
||||
self.dn101_form.lE_first_poweron.setText(mf_time)
|
||||
|
||||
|
||||
self.burning_flag = False
|
||||
self.auto_detect_flag = False
|
||||
self.write_nfc_flag = False
|
||||
self.power_on_flag = False
|
||||
self.device_check_flag = False
|
||||
self.reset_all_flag = False
|
||||
|
||||
self.board_ready_now = True
|
||||
self.exec_flag = True
|
||||
|
||||
def sig_setup(self):
|
||||
self.dn101_form.pB_open.clicked.connect(self.open_device)
|
||||
self.dn101_form.pB_read_nfc.clicked.connect(self.read_nfc)
|
||||
self.dn101_form.pB_exec.clicked.connect(self.exec_manual)
|
||||
self.dn101_form.pB_exec_auto.clicked.connect(self.exec_auto)
|
||||
|
||||
self.dn101_form.cB_burnning.stateChanged.connect(self.setup_exec_flag)
|
||||
self.dn101_form.cB_write_nfc.stateChanged.connect(self.setup_exec_flag)
|
||||
self.dn101_form.cB_power_on.stateChanged.connect(self.setup_exec_flag)
|
||||
self.dn101_form.cB_device_check.stateChanged.connect(self.setup_exec_flag)
|
||||
self.dn101_form.cB_reset_all.stateChanged.connect(self.setup_exec_flag)
|
||||
|
||||
|
||||
def setup_exec_flag(self):
|
||||
if self.dn101_form.cB_burnning.isChecked():
|
||||
self.burning_flag = True
|
||||
else:
|
||||
self.burning_flag = False
|
||||
|
||||
if self.dn101_form.cB_write_nfc.isChecked():
|
||||
self.write_nfc_flag = True
|
||||
else:
|
||||
self.write_nfc_flag = False
|
||||
|
||||
if self.dn101_form.cB_power_on.isChecked():
|
||||
self.power_on_flag = True
|
||||
else:
|
||||
self.power_on_flag = False
|
||||
|
||||
if self.dn101_form.cB_device_check.isChecked():
|
||||
self.device_check_flag = True
|
||||
else:
|
||||
self.device_check_flag = False
|
||||
|
||||
if self.dn101_form.cB_reset_all.isChecked():
|
||||
self.reset_all_flag = True
|
||||
else:
|
||||
self.reset_all_flag = False
|
||||
|
||||
|
||||
def exec_auto(self):
|
||||
self.exec_flag = True
|
||||
self.timer_detect.setInterval(125)
|
||||
self.timer_detect.start()
|
||||
|
||||
def exec_manual(self):
|
||||
self.timer_detect.stop()
|
||||
self.execute()
|
||||
|
||||
def execute(self):
|
||||
if self.power_on_flag:
|
||||
self.power_on()
|
||||
time.sleep(0.1)
|
||||
else:
|
||||
self.power_off()
|
||||
|
||||
if self.burning_flag:
|
||||
self.burning()
|
||||
|
||||
if self.write_nfc_flag:
|
||||
self.write_nfc()
|
||||
|
||||
if self.device_check_flag:
|
||||
self.device_check()
|
||||
|
||||
self.exec_flag = False
|
||||
|
||||
def device_check(self):
|
||||
"""
|
||||
1. Reset
|
||||
2. Zigbee接收传感器状态信息
|
||||
3. 若超时从NFC读取传感器状态信息
|
||||
|
||||
:return:
|
||||
"""
|
||||
self.reset()
|
||||
self.retry_time = 5
|
||||
self.zig_conf_recv_flag = False
|
||||
self.timer_single.singleShot(1000, self.senser_st_check)
|
||||
|
||||
self.init_state_ui()
|
||||
|
||||
def auto_detect(self):
|
||||
if self.board_ready_now == True: #有电路板
|
||||
if self.is_ready() == False:
|
||||
self.timer_count = self.timer_count + 1
|
||||
else:
|
||||
self.timer_count = 0
|
||||
|
||||
if self.timer_count >= 4:
|
||||
self.board_ready_now = False
|
||||
self.exec_flag = True
|
||||
|
||||
else:
|
||||
if self.is_ready():
|
||||
self.timer_count = self.timer_count +1
|
||||
else:
|
||||
self.timer_count = 0
|
||||
|
||||
if self.timer_count >= 4:
|
||||
self.board_ready_now = True
|
||||
|
||||
if self.board_ready_now == True: #有电路板
|
||||
if self.exec_flag:
|
||||
self.execute()
|
||||
elif self.power_on_flag == False:
|
||||
if self.exec_flag:
|
||||
self.execute()
|
||||
|
||||
def init_state_ui(self):
|
||||
self.dn101_form.lB_running_state.clear()
|
||||
self.dn101_form.lB_temp_upper_state.clear()
|
||||
self.dn101_form.lB_temp_lower_state.clear()
|
||||
self.dn101_form.lB_nfc_state.clear()
|
||||
self.dn101_form.lB_acc_state.clear()
|
||||
self.dn101_form.lB_zigbee_state.clear()
|
||||
self.dn101_form.lB_vol_state.clear()
|
||||
self.dn101_form.lB_current_state.clear()
|
||||
|
||||
def senser_st_check(self):
|
||||
"""
|
||||
检查是否收到Zigbee设备信息
|
||||
:return:
|
||||
"""
|
||||
self.retry_time = self.retry_time - 1
|
||||
|
||||
if self.zig_conf_recv_flag:
|
||||
self.dn101_form.lB_nfc_state.setText(ok_msg)
|
||||
if self.zig_reader.senser_info1.uAccSta:
|
||||
self.dn101_form.lB_acc_state.setText(ok_msg)
|
||||
else:
|
||||
self.dn101_form.lB_acc_state.setText(fail_msg)
|
||||
|
||||
if self.zig_reader.senser_info1.uZigbeeSta:
|
||||
self.dn101_form.lB_zigbee_state.setText(ok_msg)
|
||||
else:
|
||||
self.dn101_form.lB_zigbee_state.setText(fail_msg)
|
||||
|
||||
if self.zig_reader.senser_info1.uLowerTempSta:
|
||||
self.dn101_form.lB_temp_lower_state.setText(ok_msg)
|
||||
else:
|
||||
self.dn101_form.lB_temp_lower_state.setText(fail_msg)
|
||||
|
||||
if self.zig_reader.senser_info1.uUpperTempSta:
|
||||
self.dn101_form.lB_temp_upper_state.setText(ok_msg)
|
||||
else:
|
||||
self.dn101_form.lB_temp_upper_state.setText(fail_msg)
|
||||
|
||||
if self.zig_reader.senser_info1.uRunningFlag:
|
||||
self.dn101_form.lB_running_state.setText(ok_msg)
|
||||
else:
|
||||
self.dn101_form.lB_running_state.setText(fail_msg)
|
||||
|
||||
QApplication.processEvents()
|
||||
if self.power_on_flag == False:
|
||||
self.timer_single.singleShot(5000, self.device_check)
|
||||
|
||||
elif self.retry_time == 0: #Zigbee接收超时
|
||||
r_nfc = self.read_nfc()
|
||||
if r_nfc&self.nfc_reader.dev_info.uInitFlag:
|
||||
self.dn101_form.lB_nfc_state.setText(ok_msg)
|
||||
if self.nfc_reader.dev_info.uAccSta:
|
||||
self.dn101_form.lB_acc_state.setText(ok_msg)
|
||||
else:
|
||||
self.dn101_form.lB_acc_state.setText(fail_msg)
|
||||
|
||||
if self.nfc_reader.dev_info.uZigbeeSta:
|
||||
self.dn101_form.lB_zigbee_state.setText(ok_msg)
|
||||
else:
|
||||
self.dn101_form.lB_zigbee_state.setText(fail_msg)
|
||||
|
||||
if self.nfc_reader.dev_info.uLowerTempSta:
|
||||
self.dn101_form.lB_temp_lower_state.setText(ok_msg)
|
||||
else:
|
||||
self.dn101_form.lB_temp_lower_state.setText(fail_msg)
|
||||
|
||||
if self.nfc_reader.dev_info.uUpperTempSta:
|
||||
self.dn101_form.lB_temp_upper_state.setText(ok_msg)
|
||||
else:
|
||||
self.dn101_form.lB_temp_upper_state.setText(fail_msg)
|
||||
|
||||
if self.nfc_reader.dev_info.uRunningFlag:
|
||||
self.dn101_form.lB_running_state.setText(ok_msg)
|
||||
else:
|
||||
self.dn101_form.lB_running_state.setText(fail_msg)
|
||||
else:
|
||||
self.dn101_form.lB_nfc_state.setText(fail_msg)
|
||||
|
||||
if self.power_on_flag == False:
|
||||
self.timer_single.singleShot(1000, self.senser_st_check)
|
||||
else:
|
||||
self.timer_single.singleShot(1000, self.senser_st_check)
|
||||
|
||||
def write_nfc(self):
|
||||
"""
|
||||
将产品信息和配置文件写入ST25DV芯片中
|
||||
:return:
|
||||
"""
|
||||
|
||||
prev_uuid = self.nfc_reader.nfc_uuid
|
||||
self.nfc_reader.get_uuid()
|
||||
time.sleep(0.5)
|
||||
|
||||
|
||||
#存在之前存在,并且与当前值不同
|
||||
if prev_uuid:
|
||||
if prev_uuid != self.nfc_reader.nfc_uuid:
|
||||
if self.dn101_form.cB_auto_increase.isChecked():
|
||||
sn = int(self.dn101_form.lE_mf_sn.text()) + 1
|
||||
self.dn101_form.lE_mf_sn.setText(str(sn))
|
||||
#完全重置
|
||||
if self.dn101_form.cB_reset_all.isChecked():
|
||||
local_addr = '{:04d}'.format(int(self.dn101_form.lE_mf_sn.text()))[-4:]
|
||||
self.dn101_form.lE_zig_local_addr.setText(local_addr)
|
||||
self.dn101_form.lE_senser_name.setText(self.conf["DEFAULT"]["测点名称"]+local_addr)
|
||||
|
||||
self.ui_conf_to_senser()
|
||||
|
||||
if self.nfc_reader.nfc_uuid:
|
||||
self.dn101_form.tE_read_log.setText("DN101 NFC UUID:" + hex(self.nfc_reader.nfc_uuid)[2:])
|
||||
|
||||
ret1 = self.nfc_reader.write_info(self.senser_info)
|
||||
ret2 = self.nfc_reader.write_conf(self.senser_conf)
|
||||
|
||||
if ret1&ret2:
|
||||
self.dn101_form.tE_read_log.append("NFC 写入信息成功")
|
||||
else:
|
||||
self.dn101_form.tE_read_log.append("NFC 写入信息失败")
|
||||
else:
|
||||
self.dn101_form.tE_read_log.setHtml(nfc_read_error)
|
||||
|
||||
#完全重置后重启,更新初始化标志
|
||||
if self.dn101_form.cB_reset_all.isChecked():
|
||||
self.power_off()
|
||||
time.sleep(0.5)
|
||||
self.power_on()
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
|
||||
def read_nfc(self):
|
||||
self.dn101_form.tE_read_log.clear()
|
||||
self.dn101_form.tE_conf_info.clear()
|
||||
QApplication.processEvents()
|
||||
self.nfc_reader.get_uuid()
|
||||
if self.nfc_reader.nfc_uuid:
|
||||
self.dn101_form.tE_read_log.setText("DN101 NFC UUID:"+ hex(self.nfc_reader.nfc_uuid)[2:])
|
||||
time.sleep(0.5)
|
||||
info = self.nfc_reader.read_info()
|
||||
conf = self.nfc_reader.read_conf()
|
||||
if info&conf:
|
||||
self.nfc_reader.dev_info_analysis()
|
||||
self.nfc_reader.dev_conf_analysis()
|
||||
self.nfc_update()
|
||||
self.dn101_form.tE_read_log.append("DN101 NFC读取成功")
|
||||
return info
|
||||
else:
|
||||
self.dn101_form.tE_read_log.append(nfc_read_error)
|
||||
return False
|
||||
else:
|
||||
self.dn101_form.tE_conf_info.clear()
|
||||
self.dn101_form.tE_read_log.setHtml(nfc_read_error)
|
||||
return False
|
||||
|
||||
def open_device(self):
|
||||
try:
|
||||
self.nfc_reader.close()
|
||||
except Exception as e:
|
||||
print(e)
|
||||
pass
|
||||
|
||||
try:
|
||||
self.zig_reader.close()
|
||||
except Exception as e:
|
||||
print(e)
|
||||
pass
|
||||
|
||||
try:
|
||||
nfc_port, zig_port = self.get_nfc_zig_port()
|
||||
print(nfc_port, zig_port)
|
||||
self.nfc_ser = serial.Serial(nfc_port, 19200, rtscts=False, dsrdtr=False)
|
||||
self.zig_ser = serial.Serial(zig_port, 115200, rtscts=False, dsrdtr=False)
|
||||
|
||||
|
||||
self.dn101_form.pB_read_nfc.setEnabled(True)
|
||||
self.dn101_form.pB_exec.setEnabled(True)
|
||||
self.dn101_form.pB_exec_auto.setEnabled(True)
|
||||
|
||||
self.nfc_reader = Nfc_Reader(self.nfc_ser)
|
||||
self.zig_reader = Zig_Reader(self.zig_ser)
|
||||
self.timer_zig.start(100) #启动串口接收分析数据
|
||||
self.nfc_reader.rfidm_c2_init()
|
||||
|
||||
self.dn101_form.tE_read_log.setText("烧录测试工具打开成功\n")
|
||||
|
||||
except Exception as e:
|
||||
print(e)
|
||||
self.dn101_form.tE_read_log.setText("烧录测试工具打开失败\n")
|
||||
|
||||
def nfc_update(self):
|
||||
msg = ''
|
||||
|
||||
for k, i in self.nfc_reader.dev_info_msg.items():
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
|
||||
for k, i in self.nfc_reader.dev_conf_msg.items():
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
|
||||
self.dn101_form.tE_conf_info.setText(msg)
|
||||
|
||||
def zig_update(self):
|
||||
msg = ""
|
||||
zig_info = self.zig_reader.read()
|
||||
|
||||
#将解析的设备信息和特征值输出到界面上
|
||||
if zig_info==SENSER_INF_PACK2:
|
||||
for k, i in self.zig_reader.dev_info_msg.items():
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
|
||||
for k, i in self.zig_reader.dev_conf_msg.items():
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
|
||||
self.zig_conf_recv_flag = True
|
||||
|
||||
elif (zig_info == EVEL_DATA_PACK1)|(zig_info == EVEL_DATA_PACK2):
|
||||
for k, i in self.zig_reader.dev_evel_msg.items():
|
||||
# print(k, " :", i)
|
||||
if isinstance(i, float):
|
||||
msg = msg + k + ":" + format(i, ".4f") + "\n"
|
||||
else:
|
||||
msg = msg + k + ":" + str(i) + "\n"
|
||||
|
||||
if zig_info:
|
||||
self.dn101_form.tE_zig_info.setText(msg)
|
||||
print(msg)
|
||||
|
||||
def read_conf_file(self):
|
||||
try:
|
||||
self.conf = configparser.ConfigParser()
|
||||
self.conf.read("conf.ini", "UTF-8")
|
||||
self.dn101_form.tE_read_log.setText("配置文件读取成功")
|
||||
return True
|
||||
except Exception as e:
|
||||
print(e)
|
||||
self.dn101_form.tE_read_log.setText(conf_file_error)
|
||||
return False
|
||||
|
||||
def update_ui_senser_info(self):
|
||||
"""
|
||||
将conf.ini 文件中的配置读取到界面上
|
||||
:return:
|
||||
"""
|
||||
self.dn101_form.lE_hw_version.setText(self.conf["DEFAULT"]["硬件版本"])
|
||||
self.dn101_form.lE_product_vesion.setText(self.conf["DEFAULT"]["产品型号"])
|
||||
self.dn101_form.cB_conf_flag.setCurrentText(self.conf["DEFAULT"]["启停机"])
|
||||
self.dn101_form.lE_wakeup_per.setText(self.conf["DEFAULT"]["唤醒周期"])
|
||||
self.dn101_form.lE_wave_per.setText(self.conf["DEFAULT"]["波形发送周期"])
|
||||
self.dn101_form.lE_zig_pid.setText(self.conf["DEFAULT"]["Zigbee PANID"])
|
||||
self.dn101_form.lE_zig_channel.setText(self.conf["DEFAULT"]["Zigbee 信道"])
|
||||
self.dn101_form.lE_zig_local_addr.setText(self.conf["DEFAULT"]["Zigbee 本地地址"])
|
||||
self.dn101_form.lE_zig_dest_addr.setText(self.conf["DEFAULT"]["Zigbee 目标地址"])
|
||||
self.dn101_form.cB_zig_power.setCurrentIndex(int(self.conf["DEFAULT"]["Zigbee 发射功率"]))
|
||||
self.dn101_form.lE_zig_retry_num.setText(self.conf["DEFAULT"]["Zigbee 重试次数"])
|
||||
self.dn101_form.lE_zig_retry_per.setText(self.conf["DEFAULT"]["Zigbee 重试间隔"])
|
||||
self.dn101_form.cB_acc_range.setCurrentIndex(int(self.conf["DEFAULT"]["ACC 量程"]))
|
||||
self.dn101_form.cB_acc_rate.setCurrentIndex(int(self.conf["DEFAULT"]["ACC 采样率"]))
|
||||
self.dn101_form.lE_acc_time.setText(self.conf["DEFAULT"]["ACC 采样时间"])
|
||||
self.dn101_form.lE_senser_name.setText(self.conf["DEFAULT"]["测点名称"])
|
||||
self.dn101_form.lE_power_freq1_start.setText(self.conf["DEFAULT"]["频带能量1起始频率"])
|
||||
self.dn101_form.lE_power_freq1_stop.setText(self.conf["DEFAULT"]["频带能量1截至频率"])
|
||||
self.dn101_form.lE_power_freq2_start.setText(self.conf["DEFAULT"]["频带能量2起始频率"])
|
||||
self.dn101_form.lE_power_freq2_stop.setText(self.conf["DEFAULT"]["频带能量2截至频率"])
|
||||
self.dn101_form.lE_power_freq3_start.setText(self.conf["DEFAULT"]["频带能量3起始频率"])
|
||||
self.dn101_form.lE_power_freq3_stop.setText(self.conf["DEFAULT"]["频带能量3截至频率"])
|
||||
self.dn101_form.lE_power_freq4_start.setText(self.conf["DEFAULT"]["频带能量4起始频率"])
|
||||
self.dn101_form.lE_power_freq4_stop.setText(self.conf["DEFAULT"]["频带能量4截至频率"])
|
||||
self.dn101_form.lE_power_freq5_start.setText(self.conf["DEFAULT"]["频带能量5起始频率"])
|
||||
self.dn101_form.lE_power_freq5_stop.setText(self.conf["DEFAULT"]["频带能量5截至频率"])
|
||||
self.dn101_form.lE_evel_freq_start.setText(self.conf["DEFAULT"]["冲击起始频率"])
|
||||
self.dn101_form.lE_evel_freq_stop.setText(self.conf["DEFAULT"]["冲击截至频率"])
|
||||
self.dn101_form.lE_error_freq1.setText(self.conf["DEFAULT"]["故障频率1"])
|
||||
self.dn101_form.lE_error_freq2.setText(self.conf["DEFAULT"]["故障频率2"])
|
||||
self.dn101_form.lE_error_freq3.setText(self.conf["DEFAULT"]["故障频率3"])
|
||||
self.dn101_form.lE_error_freq4.setText(self.conf["DEFAULT"]["故障频率4"])
|
||||
self.dn101_form.lE_speed_freq_start.setText(self.conf["DEFAULT"]["速度积分起始频率"])
|
||||
|
||||
def ui_conf_to_senser(self):
|
||||
"""
|
||||
将界面的配置文件打包到 senser_info senser_conf struct中
|
||||
:return:
|
||||
"""
|
||||
try:
|
||||
if self.reset_all_flag:
|
||||
self.senser_info.uInitFlag = 0
|
||||
self.senser_info.hwVersion = int(float(self.dn101_form.lE_hw_version.text())* 10)
|
||||
self.senser_info.pn = int(self.dn101_form.lE_mf_pn.text())
|
||||
self.senser_info.sn = int(self.dn101_form.lE_mf_sn.text())
|
||||
|
||||
self.senser_info.sTime = int(self.dn101_form.lE_first_poweron.text())
|
||||
self.senser_info.productType = int(self.dn101_form.lE_product_vesion.text())
|
||||
|
||||
#清零
|
||||
self.senser_info.wakeupTimes = 0
|
||||
self.senser_info.tzTimes = 0
|
||||
self.senser_info.wvTimes = 0
|
||||
|
||||
else:
|
||||
ret = self.read_nfc()
|
||||
time.sleep(0.5)
|
||||
if ret:
|
||||
self.senser_info.uInitFlag = self.nfc_reader.dev_info.uInitFlag
|
||||
self.senser_info.hwVersion = self.nfc_reader.dev_info.hwVersion
|
||||
self.senser_info.pn = self.nfc_reader.dev_info.pn
|
||||
self.senser_info.sn = self.nfc_reader.dev_info.pn
|
||||
|
||||
self.senser_info.sTime = self.nfc_reader.dev_info.sTime
|
||||
self.senser_info.wakeupTimes = self.nfc_reader.dev_info.wakeupTimes
|
||||
self.senser_info.tzTimes = self.nfc_reader.dev_info.tzTimes
|
||||
self.senser_info.wvTimes = self.nfc_reader.dev_info.wvTimes
|
||||
self.senser_info.productType = self.nfc_reader.dev_info.productType
|
||||
|
||||
else:
|
||||
self.dn101_form.tE_read_log.setText(nfc_read_error)
|
||||
self.dn101_form.tE_read_log.append(conf_write_error)
|
||||
return False
|
||||
|
||||
conf_flag = [0, 0xAA, 0xBB]
|
||||
self.senser_conf.active_flag = conf_flag[self.dn101_form.cB_conf_flag.currentIndex()]
|
||||
|
||||
self.senser_conf.wakeup_period = int(self.dn101_form.lE_wakeup_per.text())
|
||||
self.senser_conf.wave_period = int(self.dn101_form.lE_wave_per.text())
|
||||
self.senser_conf.zig_panid = int(self.dn101_form.lE_zig_pid.text(), 16)
|
||||
self.senser_conf.zig_channel = int(self.dn101_form.lE_zig_channel.text())
|
||||
self.senser_conf.zig_local_addr = int(self.dn101_form.lE_zig_local_addr.text(), 16)
|
||||
self.senser_conf.zig_dst_addr = int(self.dn101_form.lE_zig_dest_addr.text(), 16)
|
||||
self.senser_conf.zig_power_level = int(self.dn101_form.cB_zig_power.currentIndex())
|
||||
self.senser_conf.zig_retry_num = int(self.dn101_form.lE_zig_retry_num.text())
|
||||
self.senser_conf.zig_retry_time = int(self.dn101_form.lE_zig_retry_per.text())
|
||||
|
||||
self.senser_conf.acc_acq_range = int(self.dn101_form.cB_acc_range.currentIndex())
|
||||
self.senser_conf.acc_acq_freq = int(self.dn101_form.cB_acc_rate.currentIndex())
|
||||
|
||||
self.senser_conf.acc_acq_time = int(self.dn101_form.lE_acc_time.text())
|
||||
self.senser_conf.freq_power1_start = int(self.dn101_form.lE_power_freq1_start.text())
|
||||
self.senser_conf.freq_power1_stop = int(self.dn101_form.lE_power_freq1_stop.text())
|
||||
self.senser_conf.freq_power2_start = int(self.dn101_form.lE_power_freq2_start.text())
|
||||
self.senser_conf.freq_power2_stop = int(self.dn101_form.lE_power_freq2_stop.text())
|
||||
self.senser_conf.freq_power3_start = int(self.dn101_form.lE_power_freq3_start.text())
|
||||
self.senser_conf.freq_power3_stop = int(self.dn101_form.lE_power_freq3_stop.text())
|
||||
self.senser_conf.freq_power4_start = int(self.dn101_form.lE_power_freq4_start.text())
|
||||
self.senser_conf.freq_power4_stop = int(self.dn101_form.lE_power_freq4_stop.text())
|
||||
self.senser_conf.freq_power5_start = int(self.dn101_form.lE_power_freq5_start.text())
|
||||
self.senser_conf.freq_power5_stop = int(self.dn101_form.lE_power_freq5_stop.text())
|
||||
self.senser_conf.envel_freq_start = int(self.dn101_form.lE_evel_freq_start.text())
|
||||
self.senser_conf.envel_freq_stop = int(self.dn101_form.lE_evel_freq_stop.text())
|
||||
self.senser_conf.fail_freq1 = int(self.dn101_form.lE_error_freq1.text())
|
||||
self.senser_conf.fail_freq2 = int(self.dn101_form.lE_error_freq2.text())
|
||||
self.senser_conf.fail_freq3 = int(self.dn101_form.lE_error_freq3.text())
|
||||
self.senser_conf.fail_freq4 = int(self.dn101_form.lE_error_freq4.text())
|
||||
conf_time = int(time.time())
|
||||
self.senser_conf.conf_date = conf_time
|
||||
self.senser_conf.speed_freq_start = int(self.dn101_form.lE_speed_freq_start.text())
|
||||
|
||||
node_name = self.dn101_form.lE_senser_name.text().encode("GB18030")
|
||||
memset(addressof(self.senser_conf.node_name), 0x00, sizeof(self.senser_conf.node_name))
|
||||
memmove(addressof(self.senser_conf.node_name), node_name, len(node_name))
|
||||
|
||||
return True
|
||||
except Exception as e:
|
||||
print(e)
|
||||
self.dn101_form.tE_read_log.setText(conf_msg_error)
|
||||
return False
|
||||
|
||||
def get_nfc_zig_port(self):
|
||||
serial_ports = self.get_serial_list()
|
||||
for port in serial_ports:
|
||||
port = list(port)
|
||||
#print(port)
|
||||
if NFC_PORT_STR in port[1]:
|
||||
nfc_port = port[0]
|
||||
elif ZIG_PORT_STR in port[1]:
|
||||
zig_port = port[0]
|
||||
|
||||
return (nfc_port, zig_port)
|
||||
|
||||
def get_serial_list(self):
|
||||
serial_ports = serial.tools.list_ports.comports()
|
||||
serial_list = []
|
||||
for port in serial_ports:
|
||||
serial_list.append(list(port))
|
||||
return serial_list
|
||||
|
||||
#功能接口
|
||||
def power_on(self):
|
||||
self.nfc_ser.setRTS(False)
|
||||
|
||||
def power_off(self):
|
||||
self.nfc_ser.setRTS(True)
|
||||
|
||||
def reset(self):
|
||||
self.nfc_ser.setDTR(False)
|
||||
time.sleep(0.1)
|
||||
self.nfc_ser.setDTR(True)
|
||||
|
||||
def is_power_on(self):
|
||||
if self.nfc_ser.rts:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def burning(self):
|
||||
self.reset()
|
||||
self.zig_ser.setRTS(False)
|
||||
time.sleep(0.1)
|
||||
self.zig_ser.setRTS(True)
|
||||
time.sleep(5)
|
||||
|
||||
def is_ready(self):
|
||||
if self.nfc_ser.cts:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
app = QApplication(sys.argv)
|
||||
w = DN101_Tester()
|
||||
w.show()
|
||||
sys.exit(app.exec())
|
||||
50
20231202/频响测试/dn/dn101_tester.spec
Normal file
50
20231202/频响测试/dn/dn101_tester.spec
Normal file
@ -0,0 +1,50 @@
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
|
||||
|
||||
block_cipher = None
|
||||
|
||||
|
||||
a = Analysis(
|
||||
['dn101_tester.py'],
|
||||
pathex=[],
|
||||
binaries=[],
|
||||
datas=[],
|
||||
hiddenimports=[],
|
||||
hookspath=[],
|
||||
hooksconfig={},
|
||||
runtime_hooks=[],
|
||||
excludes=[],
|
||||
win_no_prefer_redirects=False,
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher,
|
||||
noarchive=False,
|
||||
)
|
||||
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
|
||||
|
||||
exe = EXE(
|
||||
pyz,
|
||||
a.scripts,
|
||||
[],
|
||||
exclude_binaries=True,
|
||||
name='dn101_tester',
|
||||
debug=False,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
console=False,
|
||||
disable_windowed_traceback=False,
|
||||
argv_emulation=False,
|
||||
target_arch=None,
|
||||
codesign_identity=None,
|
||||
entitlements_file=None,
|
||||
)
|
||||
coll = COLLECT(
|
||||
exe,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
strip=False,
|
||||
upx=True,
|
||||
upx_exclude=[],
|
||||
name='dn101_tester',
|
||||
)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user