612 lines
24 KiB
Python
612 lines
24 KiB
Python
|
|
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())
|