Ejemplo n.º 1
0
    def TransformSignal(self):
        # Как должна выглядеть оптимизированная
        # Трапеция, если все времёна != 0

        y_optimized = [
            None,
            self.SignalData.HighLevelFrequency,
            None,  # Повторяющаяся точка на плато
            self.SignalData.LowLevelFrequency,
            None,
            None
        ]

        if self.SignalData.PlateauTime == 0:
            del y_optimized[2]
        if self.SignalData.StartTime == 0:
            del y_optimized[0]
        if self.SignalData.EndTime == 0:
            del y_optimized[-1]

        point_arr = self.SignalData.transformed_point_array
        if len(self.SignalData.point_array) >= len(y_optimized):
            for i in range (len(y_optimized)):
                if y_optimized[i] is None:
                    p = Point(x=self.SignalData.point_array[i].x, y=y_optimized[i], to_send=False)
                else:
                    p = Point(x=self.SignalData.point_array[i].x, y=y_optimized[i], to_send=True)
                point_arr.append(p)
Ejemplo n.º 2
0
 def get_point_array(self):
     res = []
     X_arr = self.get_X_arr()  # TODO: Дублируемый код с EdgeSignal. Они оба наследуются модели, поэтому часть методов сделать абстрактными (например, get_X_arr, get_Y_arr)
     Y_arr = self.get_Y_arr()
     for x, y in zip(X_arr, Y_arr):
         res.append(Point(x=x, y=y, to_send=True))
     return res
Ejemplo n.º 3
0
    def get_point_array(self):
        res = []
        X_arr = self.get_X_arr()
        Y_arr = self.get_Y_arr()

        for x, y in zip(X_arr, Y_arr):
            res.append(Point(x=x, y=y, to_send=True))
        return res
Ejemplo n.º 4
0
 def TestTimer(self):
     t0 = time.time()
     if not self.SendingStopped:
         current_point = self.current_point
         self.tasks_queue.put(
             Point(x=current_point.x,
                   y=current_point.y,
                   to_send=current_point.to_send))
     self.CommandExecutionTime = time.time() - t0
     self.FunctionWasCalled = True
Ejemplo n.º 5
0
    def TransformSignal(self):
        # В функции UpdateSignalData мы создали
        # начальный сигнал, который записан в SignalData.point_array
        # надо его оптимизировать - какие точки отправлять, а какие нет
        point_arr = self.SignalData.point_array
        transformed_point_arr = self.SignalData.transformed_point_array

        points_len = len(point_arr)
        for i in range(points_len):
            if i == points_len - 1:  # Первую и последнюю точки отправлять не надо
                p = Point(x=point_arr[i].x, y=point_arr[i].y, to_send=False)
            else:
                # Структура сигнала - набор "полочек", плато
                # В начале каждой полочки (чётный i-индекс) надо задавать частоту
                if i % 2 == 0:
                    # Чётный индекс, по нему отправка значения
                    p = Point(x=point_arr[i].x, y=point_arr[i].y, to_send=True)
                else:
                    p = Point(x=point_arr[i].x, y=point_arr[i].y, to_send=False)
            transformed_point_arr.append(p)
Ejemplo n.º 6
0
 def extend_edge_points(list_x, list_y, to_send_list):
     pts_arr = []
     for x, y, to_send in zip(list_x, list_y, to_send_list):
         point = Point(x=x, y=y, to_send=to_send)
         pts_arr.append(point)
     SignalData.point_array_with_requests.extend(pts_arr)