def on_btn_pause_clicked(self): printlog('btn_pause click') if self.btn_pause.text() == '继续' or self.btn_pause.text() == '开始': self.timer.start(port_time * 10) self.port_worker.pause = False self.btn_pause.setText("暂停") else: self.timer.stop() self.port_worker.pause = True self.btn_pause.setText("继续")
def get_data_from_interface(self): if not self.ser.is_open: printlog('端口开启') self.ser.open() # enable port else: printlog('端口已经开启') while True: line_str = self.ser.readline() # print(line_str) yield line_str
def cbb_port_init(self): ''' init of combobox (select port) :return: ''' self.cbb_group.setEnabled(False) # data self.cbb_port.clear() # for i in range(self.cbb_port.count() + 1): # print(i) # print(self.cbb_port.removeItem(i)) self.port_list = list(serial.tools.list_ports.comports()) printlog('串口列表:%s' % self.port_list) if len(self.port_list) != 0: for port in self.port_list: self.cbb_port.addItem(port.__str__())
def update(self): # get data from queue and show it # get data printlog('主线程开始收数据') current_data = self.phone_queue.receive_message() if current_data: data_1, data_2 = current_data printlog('主线程收到数据:%s,%s' % (data_1, data_2)) self.x_data.append(data_1) self.y_data.append(data_2) # printlog('x_data:%s' % self.x_data) # printlog('y_data:%s' % self.y_data) self.curve.setData(self.x_data, self.y_data)
def run(self): # open port with PortManager(self.port_num) as pm: source_data = pm.get_data_from_interface() i = 0 # open excel with ExcelOperation() as eo: for d in source_data: # print('串口传来的原始数据:%s\n其长度为:%s' % (d, len(d))) if len(d) >= 53: # try: # print('读一行数据:%s' % d.decode('utf-8')) # # except Exception as ex: # print("读取出错:%s" % ex) if self.working: s = d.decode('utf-8') search = re.match( r'air pressure:(.*)\s*force:(.*)\s*displacement:(.*)\s*', s, re.M | re.I) if search: save_data = '%s %s %s' % (search.group(1), search.group(2), search.group(3)) # print(save_data) printlog('get data from port:%s' % save_data) # save data into excel eo.write_data(save_data) # i++ i += 1 # if not pause return data or '' if not self.pause and i >= 10: i = 0 self.paint_queue.send_message(save_data) else: printlog('break') break
def getdata(self): if self.type == 1: printlog('air_pressure,force') return self.air_pressure, self.force elif self.type == 2: printlog('displacement,force') return self.displacement, self.force elif self.type == 3: printlog('air_pressure,displacement') return self.air_pressure, self.displacement else: return 0, 0
def port_check(self): printlog('端口检测') if len(self.port_list) != len(list( serial.tools.list_ports.comports())): self.cbb_port_init()
def on_btn_clear_paint_clicked(self): printlog('on_btn_clear_paint_clicked') self.x_data.clear() self.y_data.clear() self.curve.setData(self.x_data, self.y_data) QApplication.processEvents()
def on_btn_refresh_port_clicked(self): printlog('on_btn_refresh_port_clicked') self.cbb_port_init()