add interrupt handler
This commit is contained in:
parent
46a0db5474
commit
01dbaf6eae
|
@ -8,6 +8,7 @@ edition = "2018"
|
||||||
sane-sys = { path = "sane-sys" }
|
sane-sys = { path = "sane-sys" }
|
||||||
image = "0.23.7"
|
image = "0.23.7"
|
||||||
gumdrop = "0.8.0"
|
gumdrop = "0.8.0"
|
||||||
|
ctrlc = "3.1.5"
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
members = [
|
members = [
|
||||||
|
|
13
src/main.rs
13
src/main.rs
|
@ -456,7 +456,6 @@ impl<'a> Acquisition<'a> {
|
||||||
return Err(err);
|
return Err(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// std::thread::sleep(std::time::Duration::from_millis(100));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assert_eq!(buffer.len(), 0);
|
assert_eq!(buffer.len(), 0);
|
||||||
|
@ -476,7 +475,6 @@ impl<'a> Acquisition<'a> {
|
||||||
};
|
};
|
||||||
let mut image = vec![0_u8; bytesize as _];
|
let mut image = vec![0_u8; bytesize as _];
|
||||||
|
|
||||||
// unsafe { checked(|| sane_set_io_mode(self.handle.0, SANE_FALSE as _))? };
|
|
||||||
#[allow(non_upper_case_globals)]
|
#[allow(non_upper_case_globals)]
|
||||||
match parameters.format() {
|
match parameters.format() {
|
||||||
SANE_Frame_SANE_FRAME_GRAY => self.read_image(&mut image[..])?,
|
SANE_Frame_SANE_FRAME_GRAY => self.read_image(&mut image[..])?,
|
||||||
|
@ -636,8 +634,19 @@ fn main() {
|
||||||
let dir = std::path::Path::new(dir);
|
let dir = std::path::Path::new(dir);
|
||||||
std::fs::create_dir_all(&dir).unwrap();
|
std::fs::create_dir_all(&dir).unwrap();
|
||||||
let scanbutton = scanbutton.unwrap();
|
let scanbutton = scanbutton.unwrap();
|
||||||
|
let shouldstop = std::sync::Arc::new(std::sync::atomic::AtomicBool::new(false));
|
||||||
|
let stop = shouldstop.clone();
|
||||||
|
ctrlc::set_handler(move || {
|
||||||
|
shouldstop.store(true, std::sync::atomic::Ordering::SeqCst);
|
||||||
|
})
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
'image_loop: loop {
|
'image_loop: loop {
|
||||||
|
println!("Scan by pushing scan, or interrupt with ctrl-c");
|
||||||
'button_loop: loop {
|
'button_loop: loop {
|
||||||
|
if stop.load(std::sync::atomic::Ordering::SeqCst) {
|
||||||
|
break 'image_loop;
|
||||||
|
}
|
||||||
if scanbutton.get_bool().unwrap() {
|
if scanbutton.get_bool().unwrap() {
|
||||||
break 'button_loop;
|
break 'button_loop;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue