Set frequency.

This commit is contained in:
mattbk
2026-09-10 19:31:15 -05:00
parent fb09318837
commit 0fffecf5b9
2 changed files with 52 additions and 21 deletions
-20
View File
@@ -1,20 +0,0 @@
time,lat,lon,000
time,lat,lon,004
time,lat,lon,008
time,lat,lon,004
time,lat,lon,010
time,lat,lon,011
time,lat,lon,002
time,lat,lon,003
time,lat,lon,009
time,lat,lon,010
time,lat,lon,006
time,lat,lon,006
time,lat,lon,008
time,lat,lon,010
time,lat,lon,007
time,lat,lon,004
time,lat,lon,003
time,lat,lon,006
time,lat,lon,006
time,lat,lon,005
1 time lat lon 000
2 time lat lon 004
3 time lat lon 008
4 time lat lon 004
5 time lat lon 010
6 time lat lon 011
7 time lat lon 002
8 time lat lon 003
9 time lat lon 009
10 time lat lon 010
11 time lat lon 006
12 time lat lon 006
13 time lat lon 008
14 time lat lon 010
15 time lat lon 007
16 time lat lon 004
17 time lat lon 003
18 time lat lon 006
19 time lat lon 006
20 time lat lon 005
+52 -1
View File
@@ -22,10 +22,15 @@ struct Cli {
com: Option<String>,
/// Format
#[arg(short = 'f', long, default_value = "result.csv")]
#[arg(short = 'o', long, default_value = "result.csv")]
file: Option<String>,
/// Frequency
#[arg(short = 'f', long)]
freq: Option<u32>,
}
// Read S-meter
fn get_smeter(comport: &str) -> String {
let mut port = serialport::new(comport, 4800)
.data_bits(DataBits::Eight)
@@ -71,6 +76,41 @@ fn get_smeter(comport: &str) -> String {
}
}
// Set frequency
fn set_freq(comport: &str, freq: u32) -> 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;"; // set VFO A frequency
let output = format!("FA{};", freq);
//println!("{output}");
match port.write(output.as_bytes()) {
Ok(_) => {
std::io::stdout().flush().unwrap();
}
Err(ref e) if e.kind() == ErrorKind::TimedOut => (),
Err(e) => eprintln!("{:?}", e)
}
let mut buf = [0u8; 1024];
match port.read(&mut buf) {
Ok(_) => {
return format!("Frequency set.");
}
Err(_) => {
return format!("Failed to set frequency.");
}
}
}
// Write row to a file
fn write_row(str_arr: [String; 4], file: &String, fmt: &str) -> Result<(), Box<dyn Error>> {
// From https://docs.rs/csv/latest/csv/tutorial/index.html#writing-csv
@@ -99,6 +139,7 @@ fn write_row(str_arr: [String; 4], file: &String, fmt: &str) -> Result<(), Box<d
}
}
// Main funtion
fn main() {
// Arguments
let cli = Cli::parse();
@@ -124,6 +165,16 @@ fn main() {
} //todo!()
};
let frequency = match cli.freq {
Some(frequency) => frequency,
None => {
return;
} //todo!()
};
// Set the requested frequency
set_freq(&com, frequency);
// Simple test loop to make sure we are getting values each time
for _i in 1..11 {
let s_val = get_smeter(&com);