Init.
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
/target
|
||||||
Generated
+1385
File diff suppressed because it is too large
Load Diff
+10
@@ -0,0 +1,10 @@
|
|||||||
|
[package]
|
||||||
|
name = "rfim-rust"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
clap = "4.6.6"
|
||||||
|
io = "0.0.2"
|
||||||
|
serialport = "4.10.0"
|
||||||
|
|
||||||
+61
@@ -0,0 +1,61 @@
|
|||||||
|
use serialport::DataBits;
|
||||||
|
use serialport::Parity;
|
||||||
|
use serialport::StopBits;
|
||||||
|
use std::io::ErrorKind;
|
||||||
|
use std::io::Write;
|
||||||
|
use std::thread::sleep;
|
||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
|
fn get_smeter(comport: &str) -> String {
|
||||||
|
let mut port = serialport::new(comport, 4800)
|
||||||
|
.data_bits(DataBits::Eight)
|
||||||
|
.stop_bits(StopBits::Two)
|
||||||
|
.parity(Parity::None)
|
||||||
|
.timeout(Duration::from_millis(100))
|
||||||
|
.open()
|
||||||
|
.expect("Failed to open port");
|
||||||
|
|
||||||
|
// Duh, you need the ";" on the end!
|
||||||
|
// let output = "FA14075000;";
|
||||||
|
let output = "SM;";
|
||||||
|
// What are we actually sending?
|
||||||
|
//dbg!(output.as_bytes());
|
||||||
|
// port.write(output).expect("Write failed!");
|
||||||
|
|
||||||
|
match port.write(output.as_bytes()) {
|
||||||
|
Ok(_) => {
|
||||||
|
//print!("{}", &output);
|
||||||
|
std::io::stdout().flush().unwrap();
|
||||||
|
}
|
||||||
|
Err(ref e) if e.kind() == ErrorKind::TimedOut => (),
|
||||||
|
Err(e) => eprintln!("{:?}", e),
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sleep to allow the device to switch from read to write
|
||||||
|
sleep(Duration::from_millis(50));
|
||||||
|
|
||||||
|
let mut buf = [0u8; 1024];
|
||||||
|
loop {
|
||||||
|
match port.read(&mut buf) {
|
||||||
|
Ok(n) => {
|
||||||
|
let data = String::from_utf8_lossy(&buf[..n]).to_string();
|
||||||
|
//dbg!(data.as_bytes());
|
||||||
|
//let value = data;
|
||||||
|
let value = &data[2..5];
|
||||||
|
return format!("{}", value);
|
||||||
|
// return;
|
||||||
|
}
|
||||||
|
Err(_) => {} // lol that I can just not put a return in?
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let port: &str = "/dev/tty.usbmodem1101";
|
||||||
|
|
||||||
|
// Simple test loop to make sure we are getting values each time
|
||||||
|
for _i in 1..101 {
|
||||||
|
let a = get_smeter(port);
|
||||||
|
println!("{a}");
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user