use async_labjack::client::LabjackClient;
use async_labjack::TEST;
use tokio::time::{sleep, Duration};
#[tokio::main()]
async fn main() {
env_logger::init();
let socket_addr = "192.168.42.100:502".parse().unwrap();
let read_task = tokio::spawn(async move {
let client =
&mut LabjackClient::connect_with_retries(socket_addr, Duration::from_secs(3), 20)
.await
.unwrap();
client.command_response_timeout = Duration::from_millis(500);
loop {
match TEST.read(client).await {
Ok(value) => {
assert_eq!(value, 0x00112233);
println!("Got {value:?}");
}
Err(e) => {
println!("Error occurred reading: {e}");
*client = LabjackClient::connect_with_retries(
socket_addr,
Duration::from_secs(3),
20,
)
.await
.unwrap();
}
}
sleep(Duration::from_secs(1)).await;
}
});
tokio::select! {
_ = tokio::signal::ctrl_c() => {
println!("Got ctrl+c, ending...");
},
_ = read_task => {
eprintln!("something caused read_task to end early!");
},
}
}