def start_point(self):
        if (self.verifica_medicao()):
            return
        xyz = controle_cnc.current_pos(self.serial_cnc)
        self.start_point_x = float(xyz[0])
        self.start_point_y = float(xyz[1])

        self.lbl_par_5.config(text=(
            ("%.2f %.2f" %
             (self.start_point_x, self.start_point_y)).replace('.', ',')))
        self.atualiza_passo()
    def end_point(
        self
    ):  #da pra melhorar juntado star_point com end_point passando pra função se é start ou end
        if (self.verifica_medicao()):
            return
        xyz = controle_cnc.current_pos(self.serial_cnc)
        self.end_point_x = float(xyz[0])
        self.end_point_y = float(xyz[1])

        self.lbl_par_6.config(
            text=(("%.2f %.2f" %
                   (self.end_point_x, self.end_point_y)).replace('.', ',')))
        self.atualiza_passo()
    def meas_ponto(self, row, col):
        if (self.verifica_medicao()):
            return

        #Verifica se ponto superior esquerdo foi definido e atribui a variaveis
        #de coordenada
        try:
            if (self.start_point_x < self.end_point_x):
                x = float(self.start_point_x)
            else:
                x = float(self.end_point_x)
            if (self.start_point_y > self.end_point_y):
                y = float(self.start_point_y)
            else:
                y = float(self.end_point_y)
            print("ponto inicial= " + str(x) + ' ' + str(y))
        except AttributeError:
            messagebox.showwarning(title="Erro!!!Limites não definidos",
                                   message="Pontos não definidos    ")
            return

        self.flag_medindo = True
        print("Medir ponto x=" + str(col) + " y=" + str(row))

        xyz = controle_cnc.current_pos(self.serial_cnc)

        x = x + (self.var_step_x * col) - float(xyz[0])
        if not (x == 0):  #Vai para a coordenada do ponto no eixo x
            print("movimento x=" + str(x))
            if (x > 0): direcao = self.dict_jog['right']
            elif (x < 0): direcao = self.dict_jog['left']
            self.meas_movimento_cnc(direcao, abs(x))
            time.sleep(4)  #colocar delay

        y = y + (self.var_step_y * row) - float(xyz[1])
        if not (y == 0):  #Vai para a coordenada do ponto no eixo y
            print("movimento y=" + str(y))
            if (y > 0): direcao = self.dict_jog['up']
            elif (y < 0): direcao = self.dict_jog['down']
            self.meas_movimento_cnc(direcao, abs(y))
            time.sleep(4)  #colocar delay

        self.flag_medindo = False
    def measurement(self):
        if (self.verifica_medicao()):
            return
        #Verifica se ponto superior esquerdo foi definido e atribui a variaveis
        #de coordenada
        try:
            if (self.start_point_x < self.end_point_x):
                x = float(self.start_point_x)
            else:
                x = float(self.end_point_x)
            if (self.start_point_y > self.end_point_y):
                y = float(self.start_point_y)
            else:
                y = float(self.end_point_y)
            print("ponto inicial= " + str(x) + ' ' + str(y))
        except AttributeError:
            messagebox.showwarning(title="Erro!!!Limites não definidos",
                                   message="Pontos não definidos    ")
            return

        self.meas_time = datetime.now()
        self.flag_medindo = True

        self.var_pb.set(1)

        xyz = controle_cnc.current_pos(self.serial_cnc)

        x = x - float(xyz[0])
        if not (x == 0):  #Vai para a coordenada do ponto no eixo x
            print("movimento x=" + str(x))
            if (x > 0): direcao = self.dict_jog['right']
            elif (x < 0): direcao = self.dict_jog['left']
            self.meas_movimento_cnc(direcao, abs(x))
            time.sleep(4)  #colocar delay

        y = y - float(xyz[1])
        if not (y == 0):  #Vai para a coordenada do ponto no eixo y
            print("movimento y=" + str(y))
            if (y > 0): direcao = self.dict_jog['up']
            elif (y < 0): direcao = self.dict_jog['down']
            self.meas_movimento_cnc(direcao, abs(y))
            time.sleep(4)  #colocar delay

        self.matrix_meas = [[-80 for _ in range(self.cols)]
                            for _ in range(self.rows)]

        var_progressbar = 0
        self.var_pb.set(var_progressbar)
        step_progressbar = 100 / ((self.rows) * (self.cols))

        flag_ordem = True  #false=esquerda pra direita
        for i in range(0, self.rows):  #linha
            if (flag_ordem):
                for j in range(0, self.cols):  #coluna
                    if (self.flag_stop):
                        return
                    self.matrix_meas[i][j] = -40  # entra valor medido
                    self.button_matriz[i][j].config(text="meas+\nx=%d\ny=%d" %
                                                    (j + 1, i + 1))
                    var_progressbar = var_progressbar + step_progressbar
                    self.var_pb.set(var_progressbar)
                    self.master.update()
                    print("Mede")
                    if (j + 1 < self.cols):
                        time.sleep(self.tempo_entre_medidas
                                   )  #pra teste da tela atualizando
                        self.meas_movimento_cnc(self.dict_jog['right'],
                                                self.var_step_x)
                flag_ordem = False
            else:
                for j in reversed(range(0, self.cols)):  #coluna
                    if (self.flag_stop):
                        return
                    self.matrix_meas[i][j] = 4  # entra valor medido
                    self.button_matriz[i][j].config(text="meas-\nx=%d\ny=%d" %
                                                    (j + 1, i + 1))
                    var_progressbar = var_progressbar + step_progressbar
                    self.var_pb.set(var_progressbar)
                    self.master.update()
                    print("Mede")
                    if (j != 0):
                        time.sleep(self.tempo_entre_medidas
                                   )  #pra teste da tela atualizando
                        self.meas_movimento_cnc(self.dict_jog['left'],
                                                self.var_step_x)
                flag_ordem = True
            if (i + 1 < self.rows):
                time.sleep(
                    self.tempo_entre_medidas)  #pra teste da tela atualizando
                self.meas_movimento_cnc(self.dict_jog['down'], self.var_step_y)

        self.flag_medindo = False