1 Commits
Author SHA1 Message Date
Кобелев Андрей Андреевич 7ba5275957 Add README badges and CI checks
Rust / Test (push) Failing after 9m5s
2026-08-21 09:40:19 +05:00
2 changed files with 92 additions and 38 deletions
+49
View File
@@ -0,0 +1,49 @@
name: Rust
on:
push:
branches:
- master
- main
pull_request:
branches:
- master
- main
jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@1.85
with:
components: rustfmt, clippy
- name: Cache
uses: Swatinem/rust-cache@v2
- name: Format
run: cargo fmt --all -- --check
- name: Check
run: cargo check --all-targets --all-features
- name: Clippy
run: cargo clippy --all-targets --all-features -- -D warnings
- name: Test
run: cargo test --all-features
- name: Documentation
env:
RUSTDOCFLAGS: "-D warnings"
run: cargo doc --no-deps --all-features
- name: Package
run: cargo package --allow-dirty
+43 -38
View File
@@ -1,5 +1,10 @@
# escpos-vfd # escpos-vfd
[![crates.io](https://img.shields.io/crates/v/escpos-vfd.svg)](https://crates.io/crates/escpos-vfd)
[![docs.rs](https://docs.rs/escpos-vfd/badge.svg)](https://docs.rs/escpos-vfd)
[![rust](https://img.shields.io/badge/rust-1.85%2B-blue.svg)](https://www.rust-lang.org)
[![license](https://img.shields.io/crates/l/escpos-vfd.svg)](https://git.belvedersky.ru/belvedersky/vfd/src/branch/master/LICENSE-MIT)
`escpos-vfd` — Rust-библиотека для символьных VFD-дисплеев покупателя (customer display), `escpos-vfd` — Rust-библиотека для символьных VFD-дисплеев покупателя (customer display),
которые работают через serial-порт и понимают Epson/ESC/POS-совместимые команды. которые работают через serial-порт и понимают Epson/ESC/POS-совместимые команды.
@@ -53,15 +58,15 @@ fn main() -> escpos_vfd::Result<()> {
## Что выбрать ## Что выбрать
| Задача | API | | Задача | API |
| --- | --- | | -------------------------------------------- | ------------------------------------ |
| Запустить проверенный 20×2 CP866 дисплей | `VfdConfig::preset(...)` | | Запустить проверенный 20×2 CP866 дисплей | `VfdConfig::preset(...)` |
| Настроить другой дисплей | `SerialSettings` + `DisplaySettings` | | Настроить другой дисплей | `SerialSettings` + `DisplaySettings` |
| Писать напрямую из текущего потока | `Vfd` | | Писать напрямую из текущего потока | `Vfd` |
| Отправлять команды из нескольких потоков | `VfdWorker` + `VfdHandle` | | Отправлять команды из нескольких потоков | `VfdWorker` + `VfdHandle` |
| Писать напрямую из Tokio task | `tokio::AsyncVfd` | | Писать напрямую из Tokio task | `tokio::AsyncVfd` |
| Отправлять команды из нескольких Tokio tasks | `tokio::AsyncVfdWorker` | | Отправлять команды из нескольких Tokio tasks | `tokio::AsyncVfdWorker` |
| Отправить нестандартную команду | `write_raw(...)` | | Отправить нестандартную команду | `write_raw(...)` |
## Настройка другого дисплея ## Настройка другого дисплея
@@ -123,12 +128,12 @@ control, с тайм-аутом `100 ms`. На Unix порт по умолчан
`TextEncoding` определяет, как Rust-строка превращается в байты: `TextEncoding` определяет, как Rust-строка превращается в байты:
| Значение | Назначение | | Значение | Назначение |
| --- | --- | | ------------- | ------------------------------------------------- |
| `Cp866` | CP866 / IBM866 | | `Cp866` | CP866 / IBM866 |
| `Windows1251` | Windows-1251 / CP1251 | | `Windows1251` | Windows-1251 / CP1251 |
| `Ascii` | только ASCII, остальные символы заменяются на `?` | | `Ascii` | только ASCII, остальные символы заменяются на `?` |
| `Utf8` | UTF-8 без перекодирования | | `Utf8` | UTF-8 без перекодирования |
`code_table` отвечает за команду `ESC t n`. Например, конкретному CP866-дисплею могут `code_table` отвечает за команду `ESC t n`. Например, конкретному CP866-дисплею могут
одновременно понадобиться: одновременно понадобиться:
@@ -280,34 +285,34 @@ vfd.write_raw(&[0x1b, 0x40])?;
Библиотека использует `escpos_vfd::Result<T> = Result<T, VfdError>` и разделяет ошибки по Библиотека использует `escpos_vfd::Result<T> = Result<T, VfdError>` и разделяет ошибки по
смыслу: смыслу:
| Ошибка | Когда возникает | | Ошибка | Когда возникает |
| --- | --- | | --------------------------------- | ------------------------------------------- |
| `VfdError::Config(...)` | неверная конфигурация | | `VfdError::Config(...)` | неверная конфигурация |
| `VfdError::Serial(...)` | ошибка открытия или настройки serial-порта | | `VfdError::Serial(...)` | ошибка открытия или настройки serial-порта |
| `VfdError::Io(...)` | ошибка записи или `flush` | | `VfdError::Io(...)` | ошибка записи или `flush` |
| `VfdError::InvalidCoordinate` | координата вне дисплея | | `VfdError::InvalidCoordinate` | координата вне дисплея |
| `VfdError::InvalidLine` | строка вне `1..=rows` | | `VfdError::InvalidLine` | строка вне `1..=rows` |
| `VfdError::UnsupportedBrightness` | неподдерживаемый уровень яркости | | `VfdError::UnsupportedBrightness` | неподдерживаемый уровень яркости |
| `VfdError::QueueClosed` | очередь worker-а закрыта | | `VfdError::QueueClosed` | очередь worker-а закрыта |
| `VfdError::WorkerStopped` | worker остановился до подтверждения команды | | `VfdError::WorkerStopped` | worker остановился до подтверждения команды |
| `VfdError::WorkerPanicked` | sync worker завершился с panic | | `VfdError::WorkerPanicked` | sync worker завершился с panic |
| `VfdError::WorkerCancelled` | Tokio worker был отменён | | `VfdError::WorkerCancelled` | Tokio worker был отменён |
## Примеры ## Примеры
В репозитории есть небольшие аппаратные примеры для основных сценариев: В репозитории есть небольшие аппаратные примеры для основных сценариев:
| Пример | Что показывает | | Пример | Что показывает |
| --- | --- | | -------------- | -------------------------- |
| `preset_sync` | запуск с готовым пресетом | | `preset_sync` | запуск с готовым пресетом |
| `manual_sync` | ручную конфигурацию | | `manual_sync` | ручную конфигурацию |
| `tokio_worker` | Tokio worker | | `tokio_worker` | Tokio worker |
| `clock` | частые diff-обновления | | `clock` | частые diff-обновления |
| `marquee` | бегущую строку | | `marquee` | бегущую строку |
| `brightness` | яркость | | `brightness` | яркость |
| `position` | позиционирование | | `position` | позиционирование |
| `update_at` | частичные обновления | | `update_at` | частичные обновления |
| `blink` | повторную запись в позицию | | `blink` | повторную запись в позицию |
Например: Например: