feat(card_reader): adds timeout between reads for smoother transition
This commit is contained in:
parent
cf4c4c7a65
commit
90fd1a00ab
@ -49,11 +49,16 @@ pub fn read(vid: u16, pid: u16, tx: &Sender<Arc<str>>) -> Result<(), Error> {
|
|||||||
handle.claim_interface(0)?;
|
handle.claim_interface(0)?;
|
||||||
|
|
||||||
let mut buf = [0; 128];
|
let mut buf = [0; 128];
|
||||||
|
let mut last_scan = std::time::Instant::now();
|
||||||
loop {
|
loop {
|
||||||
match handle.read_interrupt(0x81, &mut buf, Duration::from_secs(1)) {
|
match handle.read_interrupt(0x81, &mut buf, Duration::from_secs(1)) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
if let Some(card_id) = extract_card_id(&buf) {
|
if let Some(card_id) = extract_card_id(&buf) {
|
||||||
|
if last_scan.elapsed() < Duration::from_secs(2) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
tx.send(Arc::from(card_id)).map_err(Error::Send)?;
|
tx.send(Arc::from(card_id)).map_err(Error::Send)?;
|
||||||
|
last_scan = std::time::Instant::now();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(rusb::Error::Timeout) => (),
|
Err(rusb::Error::Timeout) => (),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user