Beispiel #1
0
	def set_value(self):
		if (settings.debug_mode):
			send_logger('获取变量:' + self.c_name + ' 值' + str(self.value))
		#生产方法
		#self.value = libc.UniGetValue(c_ulong(self.hash))
		#测试方法
		self.value = self.id
Beispiel #2
0
	def put_value(self):
		#首先将输出变量约束在阈值范围内
		if (self.max_value and self.value > self.max_value):
			self.value = self.max_value
		if (self.min_value and self.value < self.min_value):
			self.value = self.min_value
		#然后执行写入dll
		if (settings.debug_mode):
			send_logger('写入变量:' + self.c_name + ' 值:' + str(self.value))
Beispiel #3
0
def finish():
    global timer_input
    global timer_global_entry
    global running_status
    global pause_flag
    send_logger('全部工况执行完毕' + ' 时间 ' +
                time.strftime('%H:%M:%S', time.localtime(time.time())))
    step_end()
    pause_flag = None
    stop_flag = False
    running_status = False
    timer_input.cancel()
    timer_input = None
    timer_global_entry.cancel()
    timer_global_entry = None
Beispiel #4
0
	def run(self, pause_flag):
		if (stop_flag['flag']):
			send_logger('用户停止工况执行'  + ' 时间 '  + time.strftime('%H:%M:%S',time.localtime(time.time())))
			return
		#工况暂停功能,线程挂起
		pause_flag.wait()
		global user_var_output
		global user_condition
		global running_status
		#向前端发送执行通知
		send_step(self.con_id, self.id, self.con_name)
		send_logger('工况 ' + self.con_name + ' 条目id ' + str(self.id) + ' 时间 '  + time.strftime('%H:%M:%S',time.localtime(time.time())))
		#执行自定义脚本
		if (self.code):
			exec(self.code)
		#执行变量赋值语句
		if (self.var_entry_list):
			for temp in self.var_entry_list:
				#code存在则执行操作
				if (temp.get('code')):
					try:
						code_str = temp.get('code')
						#处理赋值语句
						if (code_str.startswith('=')):
							#去除等号
							code_str = code_str[1:]
							#处理正负数赋值
							user_var_output[temp.get('var_id')].value = float(code_str)
						#处理计算语句(直接以加号,减号开始的语句)
						else:
							exec("user_var_output[temp.get('var_id')].value = user_var_output[temp.get('var_id')].value" + temp.get('code'))
					except:
						send_logger('工况' + self.con_name + ' 条目 ' + str(self.id) + ' 中的变量输入有误,变量ID ' + str(temp.get('var_id')) + ' 变量语句 ' + temp.get('code'))
					else:
						user_var_output[temp.get('var_id')].put_value()
		#消耗执行时间
		time.sleep(self.duration)
		if (self.next_entry):
			self.next_entry.run(pause_flag)
		else:
			send_logger('工况 ' + self.con_name + ' 条目全部执行完毕' + ' 时间 '  + time.strftime('%H:%M:%S',time.localtime(time.time())))
				
Beispiel #5
0
def init_env():
    global user_var_input
    global user_var_output
    global user_condition
    global global_entry
    global timer
    db = get_db()
    #加载输入变量
    if (settings.debug_mode):
        send_logger('输入变量清空')
    user_var_input.clear()
    if (settings.debug_mode):
        send_logger('输入变量加载中')
    input_rows = db.execute(
        'SELECT * from user_static_var WHERE is_input = 1').fetchall()
    for temp in input_rows:
        user_var_input[temp.get('id')] = User_var_input(
            temp.get('id'), temp.get('c_name'), temp.get('e_name'),
            temp.get('code'))
    if (settings.debug_mode):
        send_logger('输入变量加载完成')

    #输入变量开始循环加载
    makeTimer()

    #加载输出变量
    if (settings.debug_mode):
        send_logger('输出变量清空')
    user_var_output.clear()
    if (settings.debug_mode):
        send_logger('输出变量加载中')
    output_rows = db.execute(
        'SELECT * from user_static_var WHERE is_input = 0').fetchall()
    for temp in output_rows:
        user_var_output[temp.get('id')] = User_var_output(
            temp.get('id'), temp.get('c_name'), temp.get('e_name'),
            temp.get('code'), temp.get('min_value'), temp.get('max_value'))
    if (settings.debug_mode):
        send_logger('输出变量加载完成')

    #变量加载完毕,开始加载全局工况
    if (settings.debug_mode):
        send_logger('全局工况清空')
    global_entry.clear()
    if (settings.debug_mode):
        send_logger('全局工况加载中')
    global_entry_rows = db.execute(
        'SELECT * from user_global_entry WHERE open = 1').fetchall()
    for temp in global_entry_rows:
        #如果该时间频率的列表还未创建,则创建相应的列表
        if (global_entry.get(temp.get('multiple')) == None):
            global_entry[temp.get('multiple')] = []
        #将全局工况加载入执行列表中
        global_entry[temp.get('multiple')].append(temp)
    if (settings.debug_mode):
        send_logger('全局工况加载完成')
    #加载完毕后输出测试
    # for key in global_entry:
    # 	for temp in global_entry[key]:
    # 		send_logger('全局工况名称:' + temp.get('c_name') + ' ,执行频率:' + str(key))

    #全局工况开始运行
    runGlobalEntry()
    if (settings.debug_mode):
        send_logger('全局开始运行')

    #加载工况及条目
    if (settings.debug_mode):
        send_logger('运行工况清空')
    user_condition.clear()
    if (settings.debug_mode):
        send_logger('运行工况加载中')
    #首先将工况加载为字典,id作为其主键
    output_rows = db.execute('SELECT * FROM user_condition').fetchall()
    for temp in output_rows:
        user_condition[temp.get('id')] = User_condition(
            temp.get('id'), temp.get('c_name'))
    #循环遍历工况,为每个工况加载条目,在条目中需要加载变量计算code
    for key in user_condition:
        #按序加载工况条目,填充进入工况对象
        output_rows = db.execute(
            'SELECT * from user_condition_entry WHERE con_id = ? ORDER BY seq ASC',
            (key, )).fetchall()
        for temp in output_rows:
            #创建一个条目并填充进入工况中的list
            temp_entry = User_condition_entry(temp.get('id'),
                                              temp.get('con_id'),
                                              temp.get('duration'),
                                              temp.get('code'),
                                              user_condition[key].c_name)
            #查询条目中的变量计算,并填充进入条目
            entry_cal = db.execute(
                'SELECT * from user_var_entry WHERE con_id = ? AND entry_id = ?',
                (key, temp.get('id'))).fetchall()
            temp_entry.var_entry_list = entry_cal
            #将entry条目保存至工况
            user_condition[key].entry_list.append(temp_entry)
        #遍历本条工况中的entry_list,为所有条目制定next属性
        for x in range(len(user_condition[key].entry_list)):
            if (x < len(user_condition[key].entry_list) - 1):
                user_condition[key].entry_list[x].next_entry = user_condition[
                    key].entry_list[x + 1]
        if (settings.debug_mode):
            send_logger('工况 ' + user_condition[key].c_name + ' 加载完成')
    if (settings.debug_mode):
        send_logger('运行工况全部加载完成')

    #刷新前端的step
    refrash_step()
Beispiel #6
0
	def run(self, pause_flag):
		if (self.entry_list):
			send_logger('执行工况 ' + self.c_name + ' ' + time.strftime('%H:%M:%S',time.localtime(time.time())))
			self.entry_list[0].run(pause_flag)
		else:
			send_logger('工况 ' + self.c_name + ' 中没有内容,停止运行')