pub struct VfdHandle { /* private fields */ }Expand description
Клонируемый потокобезопасный интерфейс отправки команд дисплею.
Каждый вызов ставит команду в bounded queue и ждёт подтверждения от worker. Если очередь заполнена, отправитель ждёт свободное место вместо бесконтрольного роста памяти. Клон handle можно передавать в другие потоки, но порядок команд гарантируется только порядком их фактического попадания в общую очередь.
Implementations§
Source§impl VfdHandle
impl VfdHandle
Sourcepub fn clear(&self) -> Result<()>
pub fn clear(&self) -> Result<()>
Ставит в очередь очистку дисплея и ждёт выполнения I/O.
§Ошибки
Возвращает VfdError::QueueClosed, если worker уже остановлен,
VfdError::WorkerStopped, если worker завершился до подтверждения, или
ошибку команды, например VfdError::Io.
Sourcepub fn set_brightness(&self, level: u8) -> Result<()>
pub fn set_brightness(&self, level: u8) -> Result<()>
Изменяет яркость и ждёт выполнения I/O.
Метод возвращается после записи US X n, flush и задержки
brightness_settle внутри worker-потока.
§Ошибки
Возвращает VfdError::UnsupportedBrightness, ошибки очереди или I/O.
Sourcepub fn print_line(&self, line: u8, text: impl Into<String>) -> Result<()>
pub fn print_line(&self, line: u8, text: impl Into<String>) -> Result<()>
Полностью перезаписывает строку.
Строка санитизируется, обрезается и дополняется пробелами до ширины дисплея.
§Ошибки
Возвращает VfdError::InvalidLine, ошибки очереди или I/O.
Sourcepub fn print_line_diff(&self, line: u8, text: impl Into<String>) -> Result<()>
pub fn print_line_diff(&self, line: u8, text: impl Into<String>) -> Result<()>
Обновляет только изменившиеся диапазоны строки.
Worker хранит кэш последнего содержимого каждой строки. Если строка уже содержит тот же текст, команда не пишет в устройство. Если изменилась часть строки, отправляются только минимальные смежные диапазоны через позиционирование.
Когда на той же строке активна бегущая строка, команда подтверждается без записи, чтобы не ломать текущую анимацию.
§Ошибки
Возвращает VfdError::InvalidLine, ошибки очереди или I/O.
Sourcepub fn print_at(&self, x: u8, y: u8, text: impl Into<String>) -> Result<()>
pub fn print_at(&self, x: u8, y: u8, text: impl Into<String>) -> Result<()>
Печатает текст с координаты (x, y).
Координаты задаются от единицы. Worker обновляет кэш строки, поэтому следующие
VfdHandle::print_line_diff учитывают частичную запись.
§Ошибки
Возвращает VfdError::InvalidCoordinate, ошибки очереди или I/O.
Sourcepub fn write_raw(&self, bytes: impl Into<Vec<u8>>) -> Result<()>
pub fn write_raw(&self, bytes: impl Into<Vec<u8>>) -> Result<()>
Записывает байты напрямую.
Байты не кодируются и не отражаются в строковом кэше worker. После raw-команд,
которые меняют видимый текст, лучше выполнить обычный print_line или clear,
чтобы синхронизировать кэш с дисплеем. Одна queued-команда ограничена
MAX_QUEUED_RAW_BYTES байтами.
§Ошибки
Возвращает ошибки очереди или VfdError::Io.
Sourcepub fn set_marquee_text(&self, text: impl Into<String>) -> Result<()>
pub fn set_marquee_text(&self, text: impl Into<String>) -> Result<()>
Заменяет текст бегущей строки.
Если marquee уже активна, поток символов перестраивается сразу. Метод сам ничего
не пишет в дисплей; следующий кадр будет записан по таймеру worker. Длина текста
ограничена MAX_MARQUEE_CHARS символами.
§Ошибки
Возвращает ошибки очереди, если worker закрыт или остановлен.
Sourcepub fn start_marquee(
&self,
line: u8,
cps: u32,
end_pause: Duration,
) -> Result<()>
pub fn start_marquee( &self, line: u8, cps: u32, end_pause: Duration, ) -> Result<()>
Запускает бегущую строку на выбранной линии.
cps - скорость в символах в секунду. Значение 0 безопасно приводится к 1,
значения выше MAX_MARQUEE_CPS отклоняются. end_pause - пауза после полного
прохода текста перед следующим циклом.
§Ошибки
Возвращает VfdError::InvalidLine, если строка вне дисплея, или ошибки очереди.
Sourcepub fn stop_marquee(&self) -> Result<()>
pub fn stop_marquee(&self) -> Result<()>
Останавливает активную бегущую строку.
Метод останавливает таймер marquee и сбрасывает кэш строки, на которой она была активна. Видимый текст не очищается автоматически.
§Ошибки
Возвращает ошибки очереди, если worker закрыт или остановлен.
Sourcepub fn shutdown(&self) -> Result<()>
pub fn shutdown(&self) -> Result<()>
Завершает worker после ранее принятых команд.
Handle-метод только отправляет команду shutdown и ждёт подтверждения. Чтобы
дождаться завершения потока и вернуть внутренний crate::Vfd, используйте
VfdWorker::shutdown.
§Ошибки
Возвращает ошибки очереди, если worker уже недоступен.