Расширить обмен по шинам, CAN-адаптеры и обработку графиков

Добавить очереди операций PBUS/SBUS, общую консоль, настройки Candle и SLCAN, декодеры DSView и обработку плотных графиков. Обновить протокол Бальзам и проверки общих компонентов.
This commit is contained in:
2026-10-17 14:36:14 +03:00
parent 95c8b8ac7d
commit a5e46d4627
69 changed files with 4413 additions and 682 deletions
+4 -3
View File
@@ -10,7 +10,7 @@ are separate objects, never channels in the acquisition or measurement model.
from __future__ import annotations
import csv
from bisect import bisect_left, bisect_right
from operator import itemgetter
from .plot_decimation import PointTimes # Используем координаты X без копирования ряда и без недоступного в Python 3.8 параметра key.
from dataclasses import dataclass
from datetime import datetime, timezone
from .signal_reconstruction import METHODS, reconstruct
@@ -28,8 +28,9 @@ class FrozenPoints(tuple):
def between(self, left, right):
if self.ordered:
start = bisect_left(self, left, key=itemgetter(0))
stop = bisect_right(self, right, key=itemgetter(0))
timestamps = PointTimes(self) # Создаём индексируемое представление X, сохраняя логарифмическую сложность поиска границ.
start = bisect_left(timestamps, left) # Начинаем с первой точки X >= left, включая все повторы левой границы.
stop = bisect_right(timestamps, right) # Заканчиваем перед первой точкой X > right, включая все повторы правой границы.
if start == 0 and stop == len(self):
return self
result = tuple.__new__(type(self), self[start:stop])