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

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, ''])