Initial commit
This commit is contained in:
commit
fa0ba18d12
3 changed files with 70 additions and 0 deletions
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
/target
|
||||
**/*.rs.bk
|
||||
|
||||
Cargo.lock
|
11
Cargo.toml
Normal file
11
Cargo.toml
Normal file
|
@ -0,0 +1,11 @@
|
|||
[package]
|
||||
name = "macroboard"
|
||||
version = "0.1.0"
|
||||
authors = ["hodasemi <michaelh.95@t-online.de>"]
|
||||
edition = "2018"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
serial = "*"
|
||||
utilities = { git = "http://dimov.cloud:80/hodasemi/Context.git" }
|
55
src/main.rs
Normal file
55
src/main.rs
Normal file
|
@ -0,0 +1,55 @@
|
|||
use serial;
|
||||
use serial::prelude::*;
|
||||
|
||||
use utilities::prelude::*;
|
||||
|
||||
use std::ffi::OsStr;
|
||||
use std::time::Duration;
|
||||
|
||||
fn main() -> VerboseResult<()> {
|
||||
let mut port = open("/dev/ttyACM0")?;
|
||||
|
||||
write(&mut port, "hello world")?;
|
||||
let msg = read(&mut port)?;
|
||||
|
||||
println!("{}", msg);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn open<T: AsRef<OsStr> + ?Sized>(port: &T) -> VerboseResult<impl SerialPort> {
|
||||
let mut port = serial::open(port).map_err(|_| "could not open serial port")?;
|
||||
|
||||
port.reconfigure(&|port_settings| {
|
||||
port_settings.set_baud_rate(serial::Baud9600)?;
|
||||
|
||||
port_settings.set_char_size(serial::Bits8);
|
||||
port_settings.set_parity(serial::ParityNone);
|
||||
port_settings.set_stop_bits(serial::Stop1);
|
||||
port_settings.set_flow_control(serial::FlowNone);
|
||||
|
||||
Ok(())
|
||||
})
|
||||
.map_err(|_| "failed configuring serial port")?;
|
||||
|
||||
port.set_timeout(Duration::from_millis(1000))
|
||||
.map_err(|_| "failed setting time out for serial port")?;
|
||||
|
||||
Ok(port)
|
||||
}
|
||||
|
||||
fn read<T: SerialPort>(port: &mut T) -> VerboseResult<String> {
|
||||
let mut buf: Vec<u8> = (0..255).collect();
|
||||
|
||||
port.read(&mut buf[..])
|
||||
.map_err(|_| "failed reading serial port")?;
|
||||
|
||||
Ok(String::from_utf8(buf).map_err(|_| "failed converting utf8 buffer")?)
|
||||
}
|
||||
|
||||
fn write<T: SerialPort>(port: &mut T, msg: &str) -> VerboseResult<()> {
|
||||
port.write(msg.as_bytes())
|
||||
.map_err(|_| "failed writing to serial port")?;
|
||||
|
||||
Ok(())
|
||||
}
|
Loading…
Reference in a new issue