mirror of
https://codeberg.org/icewind/hlk_ld6002.git
synced 2026-06-03 08:34:17 +02:00
embedded-io
This commit is contained in:
parent
83ea02403f
commit
64f3a6ad4c
4 changed files with 256 additions and 129 deletions
|
|
@ -1,17 +1,18 @@
|
|||
use embedded_io::{ErrorType, Read, ReadExactError};
|
||||
use hlk_ld6002::{Data, MessageStream};
|
||||
use serialport::ClearBuffer;
|
||||
use std::env::args;
|
||||
use std::time::{Duration, Instant};
|
||||
use serialport::ClearBuffer;
|
||||
use hlk_ld6002::{Data, MessageStream};
|
||||
|
||||
|
||||
fn main() {
|
||||
let port = args().nth(1).expect("no port provided");
|
||||
let port = serialport::new(&port, 1_382_400)
|
||||
.timeout(Duration::from_millis(50))
|
||||
.open().expect("Failed to open port");
|
||||
.open()
|
||||
.expect("Failed to open port");
|
||||
port.clear(ClearBuffer::All).expect("clear");
|
||||
|
||||
let mut messages = MessageStream::new(port);
|
||||
let mut messages = MessageStream::new(ReadAdapter(port));
|
||||
|
||||
let mut data = Data::default();
|
||||
|
||||
|
|
@ -21,11 +22,29 @@ fn main() {
|
|||
|
||||
loop {
|
||||
if let Some(message) = messages.next() {
|
||||
data.update(message);
|
||||
if last.elapsed() > Duration::from_millis(100) {
|
||||
last = Instant::now();
|
||||
print!("{:?}{}", data, termion::cursor::Restore);
|
||||
if let Ok(message) = message {
|
||||
data.update(message);
|
||||
if last.elapsed() > Duration::from_millis(100) {
|
||||
last = Instant::now();
|
||||
print!("{:?}{}", data, termion::cursor::Restore);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct ReadAdapter<R>(R);
|
||||
|
||||
impl<R: std::io::Read> ErrorType for ReadAdapter<R> {
|
||||
type Error = std::io::Error;
|
||||
}
|
||||
|
||||
impl<R: std::io::Read> Read for ReadAdapter<R> {
|
||||
fn read(&mut self, buf: &mut [u8]) -> Result<usize, Self::Error> {
|
||||
self.0.read(buf)
|
||||
}
|
||||
|
||||
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), ReadExactError<Self::Error>> {
|
||||
self.0.read_exact(buf).map_err(ReadExactError::Other)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue