Beispiel #1
0
class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setupUi(self)
        self.setFixedSize(960, 640)
        #不会出现对toolbar的隐藏
        self.toolBar.toggleViewAction().setVisible(False)
        self.finishingLayout()
        self.setupValue()
        self.setupSignal()
        self.setupAction(config=False,
                         start=False,
                         reset=False,
                         result=False,
                         printer=False,
                         back=False)
        self.setShow(1)
        self.setShow(3)

    def setupValue(self):
        self.__action = {
            "config": False,
            "start": False,
            "reset": False,
            "result": False,
            "print": False,
            "back": False,
            "exit": True
        }
        self.color_sheet = [
            '#0000ff', '#ff0000', '#ffff00', '#00ff40', '#00ffff', '#0080c0',
            '#8080c0', '#ff00ff', '#800000', '#ff8000', '#008040', '#800080',
            'black'
        ]
        self.lcd_group = [
            self.lcd_window.press_lcd1, self.lcd_window.press_lcd2,
            self.lcd_window.press_lcd3, self.lcd_window.press_lcd4,
            self.lcd_window.press_lcd5, self.lcd_window.press_lcd6,
            self.lcd_window.digital_lcd1, self.lcd_window.digital_lcd2,
            self.lcd_window.digital_lcd3, self.lcd_window.digital_lcd4,
            self.lcd_window.speed_lcd, self.lcd_window.acceleration_lcd,
            self.lcd_window.shift_lcd
        ]
        self.chk_group = [
            self.lcd_window.press_chk1, self.lcd_window.press_chk2,
            self.lcd_window.press_chk3, self.lcd_window.press_chk4,
            self.lcd_window.press_chk5, self.lcd_window.press_chk6,
            self.lcd_window.digital_chk1, self.lcd_window.digital_chk2,
            self.lcd_window.digital_chk3, self.lcd_window.digital_chk4,
            self.lcd_window.speed_chk, self.lcd_window.acceleration_chk,
            self.lcd_window.shift_chk
        ]
        self.tcp_link = TcpLink()
        #比例转换系数1,5,10
        self.scaleRegion = (40, 10, 5, 2, 1)
        self.scaleFactor = [10, 10, 10, 10, 10, 10]
        self.lines_data = [None] * 14
        self.report = {}
        self.report['PRESS'] = {}
        self.report['DIGITAL'] = {}
        self.ST_flag = False
        self.init_press = 0

    def setupSignal(self):
        self.connect(self.action_exit, SIGNAL("triggered()"), self.actionExit)
        self.connect(self.action_config, SIGNAL("triggered()"),
                     self.actionConfig)
        self.connect(self.action_start, SIGNAL("triggered()"),
                     self.actionStart)
        self.connect(self.action_reset, SIGNAL("triggered()"),
                     self.actionReset)
        self.connect(self.action_result, SIGNAL("triggered()"),
                     self.actionResult)
        self.connect(self.action_print, SIGNAL("triggered()"),
                     self.actionPrint)
        self.connect(self.action_back, SIGNAL("triggered()"), self.actionBack)
        self.connect(self.action_read_report, SIGNAL("triggered()"),
                     self.actionReadReport)
        self.connect(self.notice_window.default_part.connect_button,
                     SIGNAL("clicked()"), self.connectButtonClicked)
        self.connect(self.notice_window.default_part.read_file_button,
                     SIGNAL("clicked()"), self.readFileButtonClicked)
        self.notice_window.current_press.ready_button.clicked.connect(
            self.readyButtonClicked)
        self.lcd_window.st_transfer.clicked.connect(self.setShiftTimeChange)
        #不能在外界直接操作GUI只能采用信号槽方式
        self.tcp_link.signal_tips.connect(self.notice_window.setLblNotice)
        self.tcp_link.signal_noticeText.connect(
            self.notice_window.setNoticeText)
        self.tcp_link.signal_progressBar.connect(self.notice_window.setValue)
        self.tcp_link.signal_lcd.connect(self.setPress6LCDValue)
        self.tcp_link.signal_trigger.connect(self.actionStart)
        self.tcp_link.signal_result.connect(self.connectResult)
        self.tcp_link.signal_timeout.connect(self.dataTimeout)
        #右侧LCD 显示
        self.curve_window.lcd_signal.connect(self.lcdDisplay)
        for i in self.chk_group:
            i.toggled.connect(self.lcdCheck)
        #数据收集阶段定时器,根据具体情况删减
        self.draw_timer = QTimer(self)
        self.connect(self.draw_timer, SIGNAL("timeout()"), self.waitDraw)

    def finishingLayout(self):
        self.left_layout = QVBoxLayout()
        self.right_layout = QHBoxLayout()
        self.notice_window = NoticeWidget(self)
        self.curve_window = CurveWidget(self)
        self.left_layout.addWidget(self.curve_window)
        self.left_layout.addWidget(self.notice_window)
        self.curve_window.hide()
        self.widget_container.setLayout(self.left_layout)
        self.explain_window = Explain(self)
        self.configuration_window = Configuration(self)
        self.lcd_window = LCDGroup(self)
        self.right_layout.addWidget(self.explain_window)
        self.right_layout.addWidget(self.configuration_window)
        self.right_layout.addWidget(self.lcd_window)
        self.configuration_window.hide()
        self.lcd_window.hide()
        self.frame_container.setLayout(self.right_layout)

    def setShow(self, flag):
        """flag must a int"""
        if flag == 1:
            self.curve_window.hide()
            self.notice_window.show()
            self.notice_window.update()
        elif flag == 2:
            #print self.notice_window.geometry()
            self.notice_window.hide()
            self.curve_window.show()
            self.curve_window.update()
            #print self.curve_window.geometry()
            #print self.widget_container.geometry()
        elif flag == 3:
            self.explain_window.show()
            self.explain_window.update()
            self.configuration_window.hide()
            self.lcd_window.hide()
        elif flag == 4:
            self.explain_window.hide()
            self.configuration_window.show()
            self.configuration_window.update()
            self.lcd_window.hide()
        elif flag == 5:
            self.explain_window.hide()
            self.configuration_window.hide()
            self.lcd_window.show()
            self.lcd_window.update()

    def setupAction(self, **kwargs):
        """
        kwargs = {"config":False,"start":False,"reset":False,"result":False,"print":False,"back":False,
                    "exit":False}
        """
        for i in kwargs.keys():
            self.__action[i] = kwargs[i]
        self.action_config.setEnabled(self.__action["config"])
        self.action_start.setEnabled(self.__action["start"])
        self.action_reset.setEnabled(self.__action["reset"])
        self.action_result.setEnabled(self.__action["result"])
        self.action_print.setEnabled(self.__action["printer"])
        self.action_back.setEnabled(self.__action["back"])
        self.action_exit.setEnabled(self.__action["exit"])

    def actionOrder(self, order):
        if order == 'init':
            self.setupAction(config=False,
                             start=False,
                             reset=False,
                             result=False,
                             printer=False,
                             back=False)
            self.setShow(1)
            self.setShow(3)
            self.notice_window.setShow(1)
            self.notice_window.reset()
            self.notice_window.setLblNotice(u"点击[检测连接(Ctrl+Alt+L)]与下位机建立通信连接\
                                 \n点击[读取文档(Ctrl+Alt+R)]读取已保存的数据文档")
            self.action_back.setText(u"首页/断开")
        elif order == 'config':
            self.setupAction(config=True, back=True)
            self.notice_window.setShow(2)
            self.setShow(1)
            self.setShow(4)
            self.notice_window.reset()
            self.notice_window.setLblNotice(u"点击[参数设置(F1)]对要进行测量的项目进行相关参数的设置\n"
                                            u"点击[断开连接(F7)]断开与下位机的通信")
            self.action_back.setText(u"断开连接")
        elif order == 'ready':
            self.setupAction(config=False, reset=True)
            self.setShow(1)
            self.setShow(4)
            self.notice_window.setShow(3)
            self.notice_window.setLblNotice(u"点击[准备测试(Ctrl+Alt+R)]进入测量\n"
                                            u"点击[复位(F3)]对配置信息进行重新配置")
        elif order == 'reset':
            self.setupAction(config=True,
                             start=False,
                             reset=False,
                             result=False,
                             printer=False)
            self.notice_window.setShow(2)
            self.setShow(1)
            self.setShow(4)
            self.notice_window.setLblNotice(u"点击[参数设置(F1)]对要进行测量的项目进行相关参数的设置\
                                 \n点击[断开连接(F7)]断开与下位机的通信")
            self.notice_window.setNoticeText(u"对下次测试进行重新配置")
        elif order == 'trigger':
            self.notice_window.setShow(2)
            self.notice_window.setLblNotice(u'此时请勿进行其他操作,若要停止测试请点击[复位(F3)]')
            self.notice_window.setNoticeText(u'等待触发......')
        elif order == 'start':
            self.setupAction(start=True)
            self.notice_window.setShow(2)
            self.notice_window.setLblNotice(
                u'点击[开始(F2)]进行测量,若要重新测试请点击[复位(F3)]')
            self.notice_window.setNoticeText(u'手动触发方式')
        elif order == 'draw':
            self.setupAction(result=True, printer=True)
        elif order == 'tips':
            pass
        elif order == 'read':
            self.setShow(2)
            self.setShow(5)
            self.setupAction(back=True, result=True)
            self.action_back.setText(u"返回首页")

    def actionConfig(self):
        """根据配置对话框的内容获取相关参数"""
        config_dialog = ConfigDialog(self.tcp_link.getLineState)
        config_dialog.show()
        config_dialog.exec_()
        if config_dialog.getPassFlag():
            self.group_digital = [(i[0].text(), i[1].isChecked())
                                  for i in config_dialog.group_digital]
            self.group_press = [(i[0].text(), i[1].isChecked(),
                                 i[2].currentIndex())
                                for i in config_dialog.group_press]
            self.group_speed_trigger = [
                config_dialog.speed_chk.isChecked(),
                config_dialog.trigger_combo.currentIndex()
            ]
            #测试项目,项目名称,测试人员,测试日期
            self.groupNPTInfo = [
                config_dialog.testProject.currentIndex(),
                config_dialog.projectName_edit.text(),
                config_dialog.person_edit.text(),
                config_dialog.time_edit.text()
            ]
            #测试时长
            self.measure_time = config_dialog.measureTime
            #测试距离
            self.measure_distance = config_dialog.measureDistance
            #set默认通道
            self.default_press = config_dialog.default_press.currentIndex()
            #设置默认膛压通道
            self.notice_window.setDefault(self.default_press)
            self.default_digital = config_dialog.default_digital.currentIndex()
            self.tcp_link.setPressChannel(self.default_press)
            self.tcp_link.setDigitalChannel(self.default_digital)
            self.tcp_link.setThresholdPress(config_dialog.threshold_press)
            self.tcp_link.setCalibration(config_dialog.calibration)
            self.tcp_link.setSpeedFactor(self.groupNPTInfo[0])
            #需要绘制的坐标系
            self.exist_axis = []
            #需要调整宽度的坐标系
            axis_num = []
            for i, j in enumerate(self.group_press):
                if j[1]:
                    self.exist_axis.append(i)
                    axis_num.append((i, j[2]))
                    self.scaleFactor[i] = self.scaleRegion[j[2]]
                    #if j[0]:
                    #self.report['PRESS'][i] = j[0]
                    #else:
                    #self.report['PRESS'][i] = u'通道%d' %(i + 1)
                else:
                    self.scaleFactor[i] = 0
                    #self.report['PRESS'][i] = None
            for i, j in enumerate(self.group_digital):
                if j[1]:
                    self.exist_axis.append(i + 6)
                    #if j[0]:
                    #self.report['DIGITAL'][i] = j[0]
                    #else:
                    #self.report['DIGITAL'][i] = '通道%d' %(i + 1)
                #else:
                #self.report['DIGITAL'][i] = None
            if self.group_speed_trigger[0]:
                self.exist_axis.extend([10, 11, 12])
                if self.groupNPTInfo[0] == 0:
                    axis_num.append((12, 1))
                else:
                    axis_num.append((12, 4))
            self.tcp_link.setFactor(self.scaleFactor[:])
            #print self.scaleFactor
            self.curve_window.produceAxis(self.exist_axis[:])
            for i in (axis_num):
                self.curve_window.setTicker(i[0], i[1])
            #开始根据配置获取需求值并显示当前压力
            self.tcp_link.setTestFlag(False)
            self.tcp_link.setCurrentFlag(True)
            #报告关键值
            #序列号
            self.report['SERIAL'] = self.groupNPTInfo[1]
            _test_type = [u'鱼雷', u'诱饵']
            self.report['TYPE'] = _test_type[self.groupNPTInfo[0]]
            _trigger = [u'自动触发', u'手动触发', u'外触发']
            self.report['TRIGGER'] = _trigger[
                self.group_speed_trigger[1]]  #触发方式
            self.report['PERSON'] = self.groupNPTInfo[2]  #测试人员
            self.report['DATE'] = self.groupNPTInfo[3]  #测试日期
            self.tcp_link.setCurrentFlag(True)
            self.actionOrder('ready')
            #print self.measure_distance
        self.configuration_window.readConfig()

    def actionStart(self):
        #print 'start'
        self.lcd_window.check([i[1] for i in self.group_press],
                              [i[1] for i in self.group_digital],
                              self.group_speed_trigger[0])
        #print self.group_speed_trigger[0]
        self.tcp_link.setTriggerFlag(False)
        self.tcp_link.setClearFlag(False)
        self.setupAction(start=False)
        self.notice_window.reset()
        self.setShow(1)
        self.notice_window.setLblNotice(u'正在接收数据中,若想停止测量可直接点击[复位(F3)]终止本次测量')
        self.notice_window.setShow(2)
        self.notice_window.setNoticeText(u'系统正在测量,请等待......')
        self.notice_window.setValue(1)
        self.draw_count = 0
        self.draw_timer.start(100)
        self.draw_timer.setInterval(100)

    def waitDraw(self):
        self.draw_count += 0.1
        value = 100 / (self.measure_time) * self.draw_count
        self.notice_window.setValue(value)
        if self.draw_count >= self.measure_time:
            self.draw()

    def draw(self):
        #关闭时间
        self.tcp_link.setClearFlag(True)
        self.draw_timer.stop()
        self.notice_window.setNoticeText(u'数据接收完毕,处理中......')

        data = self.tcp_link.getData()
        #若无数据直接返回
        if not data:
            self.actionReset()
            return
        #print len(data), 'total data'
        speed_data = data[15::16]
        self.handle = HandleData(speed_data, self.measure_distance)
        length = len(speed_data)
        #开始运动点num
        num = self.handle.getStartTime()
        shift = self.handle.shift()
        if self.groupNPTInfo[0] == 0:
            speed_out = self.handle.getOutTime(shift)
        else:
            speed_out = self.handle.getStopTime(shift, self.measure_distance)
        #所截取数据的长度
        right_limit = speed_out + 100
        if right_limit > length:
            right_limit = speed_out + 1
        if self.group_speed_trigger[0]:
            x_data = [(i - num) * 5E-4 for i in range(length)]
        else:
            x_data = [i * 5E-4 for i in range(length)]
        self.lines_data[0] = x_data[:right_limit]
        #print self.exist_axis
        for i in range(10):
            y_data = data[i::16]
            self.lines_data[i + 1] = y_data[:right_limit]
            if i < 6:
                if i in self.exist_axis:
                    #不同测试类型取值不同
                    if self.groupNPTInfo[0] == 0:

                        _value = y_data[int(self.measure_time * 2000)]
                        #_value = max(y_data)
                        self.report['PRESS'][i + 1] = '%0.2f' % _value
                        if i == self.default_press:
                            self.report['PRESS'][
                                i + 1] = '%0.2f' % (_value - self.init_press)
                            self.handle.setChamberPressure(
                                self.lines_data[i + 1], self.init_press)
                    else:
                        # _value = y_data[speed_out]
                        _value = y_data[int(self.measure_time * 2000)]
                        self.report['PRESS'][i + 1] = '%0.2f' % _value
                    self.curve_window.drawLine2D(self.exist_axis.index(i),
                                                 self.lines_data[0],
                                                 self.lines_data[i + 1],
                                                 self.color_sheet[i])
                else:
                    self.report['PRESS'][i + 1] = '--'
            else:
                if i in self.exist_axis:
                    begin = self.handle.bleedTime(y_data)
                    #dead = length - begin
                    #self.report['DIGITAL'][i - 5] = ('%0.2f' %(begin*5E-4), '%0.2f' %(dead*5E-4))
                    self.report['DIGITAL'][i - 5] = '%0.1f' % (begin * 5E-4)
                    self.curve_window.drawLine2D(self.exist_axis.index(i),
                                                 self.lines_data[0],
                                                 self.lines_data[i + 1],
                                                 self.color_sheet[i])
                else:
                    self.report['DIGITAL'][i - 5] = ('--')
        self.lines_data[11] = speed_data[:right_limit]
        #加速度
        acceleration = self.handle.acceleration()
        self.lines_data[12] = acceleration[:right_limit]
        self.lines_data[13] = shift[:right_limit]
        if 10 in self.exist_axis:
            self.report['SPEED'] = '%0.1f' % speed_data[speed_out]
            self.curve_window.drawLine2D(self.exist_axis.index(10),
                                         self.lines_data[0],
                                         self.lines_data[11],
                                         self.color_sheet[10])
            self.report['ACCELERATION'] = '%0.1f' % acceleration[speed_out]
            self.curve_window.drawLine2D(self.exist_axis.index(11),
                                         self.lines_data[0],
                                         self.lines_data[12],
                                         self.color_sheet[11])
            self.curve_window.drawLine2D(self.exist_axis.index(12),
                                         self.lines_data[0],
                                         self.lines_data[13],
                                         self.color_sheet[12])
        else:
            self.report['SPEED'] = '--'
            self.report['ACCELERATION'] = '--'
        #图像填充全屏
        self.curve_window.setXFull(self.lines_data[0][0],
                                   self.lines_data[0][-1])
        #延迟时间
        self.report['DELAY'] = '%0.1f' % (num * 5E-4)
        #发射时间
        self.report['SHOOT'] = '%0.1f' % (speed_out * 5E-4)
        #flag = self.report['DIGITAL'].get(self.default_digital + 1, ('--', '--'))
        if self.group_digital[self.default_digital][1]:
            begin, dead = self.handle.getStartClock(
                data[6 + self.default_digital::16])
            #print begin, dead
            #泄放阀开启时间
            self.report['OPEN'] = '%0.1f' % (begin * 5E-4)
            #泄放阀开启时机
            self.report['BLEED'] = '%0.1f' % shift[dead]
        else:
            self.report['OPEN'] = '--'
            self.report['BLEED'] = '--'
        now_time = datetime.datetime.now()
        file_path = now_time.strftime("%Y%m%d%H%M%S")
        if self.groupNPTInfo[0] == 0:
            filename = u'鱼雷' + self.groupNPTInfo[1] + file_path
        else:
            filename = u'诱饵' + self.groupNPTInfo[1] + file_path
        #self.tempHTML(self.group_press, self.group_digital, './template/'+'image.png')
        self.tempPicture("./template/" + "image.png")
        self.saveReport('./report/' + filename + '.pdf')
        self.saveFile('./DigitalSheet/' + filename + '.csv')
        self.curve_window.updateDraw()
        self.curve_window._init_View()
        self.notice_window.setValue(100)
        self.setShow(2)
        self.setShow(5)
        self.actionOrder('draw')

    def tempPicture(self, filename):
        directory = os.path.dirname(filename)
        if not os.path.isdir(directory):
            os.makedirs(directory)
        self.curve_window.canvas.print_figure(filename, dpi=300)

    def saveReport(self, filename):
        directory = os.path.dirname(filename)
        if not os.path.isdir(directory):
            os.makedirs(directory)
        printer = QPrinter()
        printer.setOutputFormat(QPrinter.PdfFormat)
        printer.setOrientation(QPrinter.Landscape)
        printer.setPageSize(QPrinter.A4)
        printer.setOutputFileName(filename)
        if filename:
            self.print_(printer)

    def print_(self, printer):
        painter = QPainter(printer)
        pageRect = printer.pageRect()
        w = pageRect.width() * 0.85
        h = pageRect.height()
        painter.drawPixmap(0, 0, w, h, './template/image.png')

        sansFont = QFont("Helvetica", 10)
        painter.setFont(sansFont)
        fm = QFontMetrics(sansFont)
        height = fm.height() + 10
        vmargin = 40

        x0 = w + 1
        y = 25
        width = fm.width(u"测试编号") + 25
        x1 = x0 + width
        painter.drawText(x0, y, u"报告编号")
        painter.drawText(x1, y, self.report['SERIAL'])

        y += height
        painter.drawText(x0, y, u"测试类型")
        painter.drawText(x1, y, self.report['TYPE'])

        y += height
        painter.drawText(x0, y, u"触发方式")
        painter.drawText(x1, y, self.report['TRIGGER'])

        y += height
        painter.drawText(x0, y, u"测试人员")
        painter.drawText(x1, y, self.report['PERSON'])

        y += height
        painter.drawText(x0, y, u"测试日期")
        painter.drawText(x1, y, self.report['DATE'])

        y += vmargin
        width = fm.width(u"通道1") + 50
        x1 = x0 + width
        space = 0
        painter.drawText(x0 + 20, y, u"压力通道(Mpa)")
        for i, j in enumerate(self.group_press):
            if j[1]:
                y += height
                if j[0]:
                    painter.drawText(x0, y, j[0])
                else:
                    painter.drawText(x0, y, '通道%d'.decode("utf-8") % (i + 1))
                painter.drawText(x1, y, self.report['PRESS'][i + 1])
            else:
                space += height

        y += (vmargin + space)
        width = fm.width(u"通道计量1") + 15
        x1 = x0 + width
        #x2 = x1 + width
        painter.drawText(x0 + 20, y, u"数字量计时通道(s)")
        y += height
        painter.drawText(x0, y, u"通道")
        painter.drawText(x1, y, u"开启时间")
        #painter.drawText(x2, y, u"关闭")
        space = 0
        for i, j in enumerate(self.group_digital):
            if j[1]:
                y += height
                if j[0]:
                    painter.drawText(x0, y, j[0])
                else:
                    painter.drawText(x0, y, '通道%d'.decode("utf-8") % (i + 1))
                painter.drawText(x1, y, self.report['DIGITAL'][i + 1][0])
                #painter.drawText(x2, y, self.report['DIGITAL'][i + 1][1])
            else:
                space += height

        y += (vmargin + space)
        width = fm.width(u"出管速度(m/s)") + 25
        x1 = x0 + width
        painter.drawText(x0, y, u"加速度(g)")
        painter.drawText(x1, y, self.report['ACCELERATION'])

        y += height
        painter.drawText(x0, y, u"出管速度(m/s)")
        painter.drawText(x1, y, self.report['SPEED'])

        y += height
        painter.drawText(x0, y, u"延迟时间(s)")
        painter.drawText(x1, y, self.report['DELAY'])

        y += height
        painter.drawText(x0, y, u"发射时间(s)")
        painter.drawText(x1, y, self.report['SHOOT'])

        y += height
        painter.drawText(x0, y, u"发射深度(s)")
        painter.drawText(x1, y, self.report['DEEP'])

        width = fm.width(u"泄放装置泄放时间(s)") + 5
        y += height
        painter.drawText(x0, y, u"泄放阀开启时机(m)")
        x1 = x0 + width
        painter.drawText(x1, y, self.report['BLEED'])

        y += height
        painter.drawText(x0, y, u"泄放阀开启时间(s)")
        x1 = x0 + width + 1
        painter.drawText(x1, y, self.report['OPEN'])

    def saveFile(self, filename):
        directorys = os.path.dirname(filename)
        if not os.path.isdir(directorys):
            os.makedirs(directorys)
        if not os.path.isfile(filename):
            try:
                file = open(filename, 'w')
            except Exception, e:
                file.close()
                return
            press = '&'.join([self.report['PRESS'][i] for i in range(1, 7)])
            digital = '&'.join(
                [self.report['DIGITAL'][i] for i in range(1, 5)])
            bleed_value = '&'.join([self.report['OPEN'], self.report['BLEED']])
            #20131216对保存的数据进行修改
            datapool = [
                'startest', self.report['SERIAL'], self.report['TYPE'],
                self.report['TRIGGER'], self.report['PERSON'],
                self.report['DATE'], press, digital,
                self.report['ACCELERATION'], self.report['SPEED'],
                self.report['DELAY'], self.report['SHOOT'], bleed_value,
                self.report['DEEP']
            ]
            saveString = self.setText(','.join(datapool))
            #print saveString
            file.write(saveString)
            file.write('\n')
            datapool = []

            datapool.append('0')
            for i in range(6):
                datapool.append('%d' % self.group_press[i][2])
            for i in range(4):
                datapool.append('0')
            datapool.append('0')
            datapool.append('0')
            if self.groupNPTInfo[0] == 0:
                datapool.append('1')
            else:
                datapool.append('4')
            saveString = ','.join(['%s' % i for i in datapool])
            file.write(saveString)
            file.write('\n')
            datapool = []

            datapool.append(True)
            datapool.extend([chk[1] for chk in self.group_press])
            datapool.extend([chk[1] for chk in self.group_digital])
            datapool.extend([self.group_speed_trigger[0] for i in range(3)])
            saveString = ','.join(['%s' % i for i in datapool])
            file.write(saveString)
            file.write('\n')
            datapool = []

            for i, j in enumerate(self.lines_data[0]):
                for k in range(14):
                    datapool.append(self.lines_data[k][i])
                saveString = ','.join(['%s' % v for v in datapool])
                file.write(saveString)
                file.write('\n')
                datapool = []
            file.close()