| Crates.io | im920_rs |
| lib.rs | im920_rs |
| version | 1.0.5 |
| created_at | 2025-08-24 01:17:24.031517+00 |
| updated_at | 2025-08-24 01:28:21.99943+00 |
| description | IM920sL library for Rust |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1807999 |
| size | 40,692 |
IM920sL Library for Rust
extern crate im920_rs;
extern crate srobo_base;
use std::{thread::sleep, time::Duration};
use im920_rs::Packet;
use srobo_base::communication::{AsyncSerial, SerialDevice};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let dev = SerialDevice::new("/dev/ttyUSB1".to_string(), 19200);
let (mut rx, mut tx) = dev.open().unwrap();
let mut time = srobo_base::time::HostTime::new();
let mut im920 = im920_rs::IM920::new(&mut tx, &mut rx, &mut time);
im920.on_data(Box::new(|data| {
println!("Received data: {:?}", data);
}));
let nn = im920.get_node_number(Duration::new(1, 0)).unwrap();
let gn = im920.get_group_number(Duration::new(1, 0)).unwrap();
let ch = im920.get_channel(Duration::new(1, 0)).unwrap();
println!("Node Number: {}", nn);
println!("Group Number: {}", gn);
println!("Channel: {}", ch);
if ch != 0x02 {
println!("Setting channel to 0x02");
im920.set_channel(0x02, Duration::new(1, 0)).unwrap();
}
loop {
let buf = [0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80] as [u8; 8];
sleep(Duration::new(1, 0));
let tx_result = im920.transmit_broadcast(
Packet {
node_id: 0,
data: &buf,
},
Duration::new(1, 0),
);
match tx_result {
Ok(_) => println!("Transmitted broadcast packet"),
Err(_) => println!("Failed to transmit broadcast packet"),
};
}
}