def laserThreadFunc(): log.debug("laserThreadFunc 线程启动 ...") if SWITCH_DEVICE: LASER3_COM = "com3" else: LASER3_COM = "com20" LASER_REC_BUF_LEN = 11 laser3 = Laser(LASER3_COM) time.sleep(0.01) laser_min_distance = 0.1 # 激光安装最小距离 laserLed = False """ 等待数据准备 """ while True: laser_rec_buf = laser3.laser_read_data(LASER_REC_BUF_LEN) if laser_rec_buf is not None: # 校验 check_out = laserCheck(laser_rec_buf) last_val = int.from_bytes(laser_rec_buf[-1:], byteorder='little', signed=False) if check_out == last_val: laser3_dist = laser3.get_distance(laser_rec_buf) if laser3_dist > laser_min_distance: laser_data_valid_flg = True # 设置全局变量 my_lock.pSor_laser_main_lock.acquire() gl.set_value("dou_laser_len", laser3_dist) gl.set_value("laser_data_valid_flg", laser_data_valid_flg) my_lock.pSor_laser_main_lock.release() break else: print( "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLdou_laser_len:%s\n" % laser3_dist) else: print("!!!!!!!激光校验失败!!!!!!\n") time.sleep(0.05) """ 正常流程 """ while True: if laser3.com_laser.com.is_open: laser_rec_buf = laser3.laser_read_data(LASER_REC_BUF_LEN) if laser_rec_buf is not None: # 校验 check_out = laserCheck(laser_rec_buf) last_val = int.from_bytes(laser_rec_buf[-1:], byteorder='little', signed=False) if check_out == last_val: laser3_dist = laser3.get_distance(laser_rec_buf) if laser3_dist > laser_min_distance: # print("=======================挖斗激光%f" % laser3_dist) dou_laser_len = laser3_dist laserLed = True # 设置全局变量 my_lock.pSor_laser_main_lock.acquire() gl.set_value("dou_laser_len", dou_laser_len) my_lock.pSor_laser_main_lock.release() else: laserLed = False print("激光距离错误\n") else: laserLed = False print("!!!!! 激光校验失败 !!!!\n") else: laserLed = False # 设置全局变量 my_lock.laserLedLock.acquire() gl.set_value("laserLed", laserLed) my_lock.laserLedLock.release() time.sleep(0.15)
def thread_laser_dou_func(): # LASER3_COM = "com20" LASER3_COM = "com3" LASER_REC_BUF_LEN = 11 laser3 = Laser(LASER3_COM) time.sleep(0.01) laser_min_distance = 0.1 # 激光安装最小距离 laserLed = False """ 等待数据准备 """ while True: laser_rec_buf = laser3.laser_read_data(LASER_REC_BUF_LEN) if laser_rec_buf is not None: # 校验 check_out = laserCheck(laser_rec_buf) last_val = int.from_bytes(laser_rec_buf[-1:], byteorder='little', signed=False) if check_out == last_val: laser3_dist = laser3.get_distance(laser_rec_buf) if laser3_dist > laser_min_distance: laser_data_valid_flg = True # 设置全局变量 with open("lock_log.txt", "a") as file: file.write( "激光线程--laser_calc--in" + "\t" + datetime.datetime.now().strftime('%H:%M:%S') + "\n") my_lock.LaserCalculatorLock.acquire() with open("lock_log.txt", "a") as file: file.write( "激光线程--laser_calc--ing" + "\t" + datetime.datetime.now().strftime('%H:%M:%S') + "\n") gl.set_value("dou_laser_len", laser3_dist) gl.set_value("laser_data_valid_flg", laser_data_valid_flg) my_lock.LaserCalculatorLock.release() with open("lock_log.txt", "a") as file: file.write( "激光线程--laser_calc--out" + "\t" + datetime.datetime.now().strftime('%H:%M:%S') + "\n") break else: print( "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLdou_laser_len:%s\n" % laser3_dist) else: print("!!!!!!!激光校验失败!!!!!!\n") time.sleep(0.05) """ 正常流程 """ while True: if laser3.com_laser.com.is_open: laser_rec_buf = laser3.laser_read_data(LASER_REC_BUF_LEN) if laser_rec_buf is not None: # 校验 check_out = laserCheck(laser_rec_buf) last_val = int.from_bytes(laser_rec_buf[-1:], byteorder='little', signed=False) if check_out == last_val: laser3_dist = laser3.get_distance(laser_rec_buf) if laser3_dist > laser_min_distance: # print("=======================挖斗激光%f" % laser3_dist) dou_laser_len = laser3_dist laserLed = True # 设置全局变量 with open("lock_log.txt", "a") as file: file.write( "激光线程--laser_calc--in" + "\t" + datetime.datetime.now().strftime('%H:%M:%S') + "\n") my_lock.LaserCalculatorLock.acquire() with open("lock_log.txt", "a") as file: file.write( "激光线程--laser_calc--ing" + "\t" + datetime.datetime.now().strftime('%H:%M:%S') + "\n") gl.set_value("dou_laser_len", dou_laser_len) my_lock.LaserCalculatorLock.release() with open("lock_log.txt", "a") as file: file.write( "激光线程--laser_calc--out" + "\t" + datetime.datetime.now().strftime('%H:%M:%S') + "\n") else: laserLed = False print("激光距离错误\n") else: laserLed = False print("!!!!! 激光校验失败 !!!!\n") else: laserLed = False # 设置全局变量 with open("lock_log.txt", "a") as file: file.write("激光线程--laser_led--in" + "\t" + datetime.datetime.now().strftime('%H:%M:%S') + "\n") my_lock.laserLedLock.acquire() with open("lock_log.txt", "a") as file: file.write("激光线程--laser_led--ing" + "\t" + datetime.datetime.now().strftime('%H:%M:%S') + "\n") gl.set_value("laserLed", laserLed) my_lock.laserLedLock.release() with open("lock_log.txt", "a") as file: file.write("激光线程--laser_led--out" + "\t" + datetime.datetime.now().strftime('%H:%M:%S') + "\n") time.sleep(0.15) print("!!!!!laser线程!!!!!%s\n" % datetime.datetime.now().strftime('%H:%M:%S'))