-
✅ connection.rs - Zarządzanie połączeniami TCP/Serial
Connection::tcp()- tworzenie połączenia TCPConnection::serial()- tworzenie połączenia Serialconnect_tcp()- łączenie TCP z timeoutconnect_serial()- łączenie Serial z konfiguracjądisconnect()- rozłączanieis_connected()- sprawdzanie statusu
-
✅ protocol.rs - Definicje protokołów
Protocol::Rincmd- protokół RinstrumProtocol::DiniAscii- protokół Dini ArgeoProtocol::Custom- protokół niestandardowycommand_terminator()- terminator komend dla protokołu
-
✅ commands.rs - Wykonywanie komend
CommandExecutor- klasa do wykonywania komendexecute()- wysyłanie komendy i odbieranie odpowiedzisend_tcp()- implementacja TCPsend_serial()- implementacja Serial
-
✅ error.rs - Błędy Host
HostError::ConnectionErrorHostError::TimeoutHostError::ProtocolErrorHostError::IoError
-
✅ device.rs - Podstawowa implementacja Device
Device- główna klasa urządzeniaDeviceAdapter- trait dla urządzeńexecute_command()- wykonywanie komendparse_response()- parsowanie odpowiedzi na podstawie protokołu
-
✅ parsers.rs - Parsery odpowiedzi
parse_rincmd_response()- parser dla protokołu RINCMD- Pattern 1:
20050026+123.45kg - Pattern 2:
: -23 kg G - Fallback:
S 00000.000 kg
- Pattern 1:
parse_dini_ascii_response()- parser dla protokołu Dini Argeo
-
✅ devices.rs - Konkretne implementacje urządzeń
RinstrumC320- implementacja dla Rinstrum C320DiniArgeoDFW- implementacja dla Dini Argeo DFWfrom_config()- tworzenie z konfiguracji
-
✅ models.rs - Modele danych
WeightReading- odczyt wagiDeviceConfig- konfiguracja urządzenia
-
✅ error.rs - Błędy Miernik
MiernikError::DeviceErrorMiernikError::InvalidCommandMiernikError::ProtocolErrorMiernikError::HostError
- Aktualizacja
DeviceManagerdo używania nowych bibliotek - Migracja z
adapter_enum.rsdo nowych bibliotek - Aktualizacja
main.rsdo używania nowych bibliotek - Aktualizacja testów
- Konwersja z
Connection(stary) doscaleit_host::Connection - Konwersja z
DeviceAdapter(stary) doscaleit_miernik::DeviceAdapter - Aktualizacja konfiguracji JSON
src-rust/
├── host/ # Biblioteka Host ✅
│ ├── src/
│ │ ├── lib.rs
│ │ ├── connection.rs ✅
│ │ ├── protocol.rs ✅
│ │ ├── commands.rs ✅
│ │ └── error.rs ✅
│ └── Cargo.toml
├── miernik/ # Biblioteka Miernik ✅
│ ├── src/
│ │ ├── lib.rs
│ │ ├── device.rs ✅
│ │ ├── models.rs ✅
│ │ ├── parsers.rs ✅
│ │ ├── devices.rs ✅
│ │ └── error.rs ✅
│ └── Cargo.toml
└── src/ # Główna aplikacja ⏳
└── ...
use scaleit_host::{Connection, Protocol};
use scaleit_miernik::{RinstrumC320, DeviceAdapter};
use std::sync::Arc;
// 1. Utworzenie połączenia (Host)
let connection = Arc::new(Connection::tcp(
"192.168.1.254".to_string(),
4001,
5000
));
// 2. Utworzenie urządzenia (Miernik)
let mut commands = HashMap::new();
commands.insert("readGross".to_string(), "20050026".to_string());
commands.insert("zero".to_string(), "21120008:0B".to_string());
let device = RinstrumC320::new(
"scale1".to_string(),
connection,
commands
);
// 3. Użycie
device.connect().await?;
let reading = device.execute_command("readGross").await?;Postęp: ~80%
Biblioteki Host i Miernik są gotowe. Pozostaje integracja z główną aplikacją.