You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
from PyQt5.QtCore import QThread, pyqtSignal
|
|
|
|
from communication.model import VarModel
|
|
|
|
|
|
class addVarThread(QThread):
|
|
sinOut = pyqtSignal(list)
|
|
|
|
def __init__(self, name, number, interval, describe, unit, sig_type, slot, channel, chr, reg):
|
|
super().__init__()
|
|
self.working = True
|
|
self.name = name
|
|
self.number = number
|
|
self.describe = describe
|
|
# 定值
|
|
self.interval = interval
|
|
self.unit = unit
|
|
self.sig_type = sig_type
|
|
self.slot = slot
|
|
self.channel = channel
|
|
self.reg = reg
|
|
self.chr = chr
|
|
|
|
def __del__(self):
|
|
self.working = False
|
|
self.wait()
|
|
|
|
def run(self):
|
|
i = 0
|
|
j = 0
|
|
interval = 1000 + int(self.interval)
|
|
while i < int(self.number):
|
|
name = self.name + '%d' % j
|
|
describe = self.describe + '%d' % j
|
|
reg = self.reg + str(interval)
|
|
if len(VarModel.select().where(VarModel.reg == reg)) != 0:
|
|
interval += int(self.interval)
|
|
continue
|
|
if len(VarModel.select().where(VarModel.sig_name == name)) != 0:
|
|
j += 1
|
|
continue
|
|
VarModel.create(
|
|
sig_name=name, describe=describe, engineering_unit=self.unit,
|
|
sig_type=self.sig_type, slot=self.slot, channel=self.channel,
|
|
chr=self.chr, reg=reg, initial='0', block='0', offset='0',
|
|
bit='0'
|
|
)
|
|
i += 1
|
|
j += 1
|
|
interval += int(self.interval)
|
|
id = VarModel.get(VarModel.sig_name == name).id
|
|
self.sinOut.emit([id, name, self.sig_type, self.slot, self.channel, ''])
|