POC Rust reading card with disconnect
This commit is contained in:
parent
de55f7fd49
commit
c832a15c16
@ -4,4 +4,6 @@ version = "0.1.0"
|
|||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
env_logger = "0.11.8"
|
||||||
|
futures-lite = "2.6.0"
|
||||||
nusb = "0.1.13"
|
nusb = "0.1.13"
|
||||||
|
@ -1,11 +1,38 @@
|
|||||||
use nusb;
|
use futures_lite::future::block_on;
|
||||||
|
use nusb::{transfer::{ RequestBuffer, TransferError }, Interface};
|
||||||
|
use std::{thread, time};
|
||||||
|
|
||||||
static USB_VENDOR: u16 = 0xffff;
|
static USB_VENDOR: u16 = 0xffff;
|
||||||
static USB_PRODUCT: u16 = 0x0035;
|
static USB_PRODUCT: u16 = 0x0035;
|
||||||
|
|
||||||
fn main() {
|
fn get_interface() -> Option<Interface> {
|
||||||
let dev = nusb::list_devices().unwrap().find(|dev| dev.vendor_id() == USB_VENDOR && dev.product_id() == USB_PRODUCT).expect("Device not connected!");
|
let dev = nusb::list_devices().ok()?.find(|dev| dev.vendor_id() == USB_VENDOR && dev.product_id() == USB_PRODUCT)?;
|
||||||
let device = dev.open().expect("failed to open device");
|
let device = dev.open().ok()?;
|
||||||
let interface = device.claim_interface(0).expect("failed to claim interface");
|
device.detach_and_claim_interface(0).ok()
|
||||||
println!("Success")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
env_logger::init();
|
||||||
|
let mut interface = get_interface().unwrap();
|
||||||
|
loop {
|
||||||
|
let buf = RequestBuffer::new(8);
|
||||||
|
let data = block_on(interface.interrupt_in(
|
||||||
|
0x81, buf
|
||||||
|
));
|
||||||
|
match data.status {
|
||||||
|
Err(TransferError::Disconnected) => {
|
||||||
|
interface = (||{loop{
|
||||||
|
if let Some(intfc) = get_interface(){
|
||||||
|
return intfc;
|
||||||
|
}
|
||||||
|
let ten_milis = time::Duration::from_millis(10);
|
||||||
|
thread::sleep(ten_milis);
|
||||||
|
}})()
|
||||||
|
}
|
||||||
|
Ok(()) => {
|
||||||
|
println!("{:?}", data.data);
|
||||||
|
}
|
||||||
|
_ => todo!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user