device_info/
device_info.rs1use std::time::Duration;
6use zkteco::Zk;
7
8fn main() -> zkteco::ZkResult<()> {
9 let (ip, port) = parse_args();
10
11 let mut zk = Zk::builder(ip)
12 .port(port)
13 .timeout(Duration::from_secs(10))
14 .omit_ping(true)
16 .build();
17
18 zk.connect()?;
19 println!("connected: {zk}");
20
21 println!("firmware: {}", zk.get_firmware_version()?);
22 println!("serial: {}", zk.get_serialnumber()?);
23 println!("platform: {}", zk.get_platform()?);
24 println!("device name: {}", zk.get_device_name()?);
25 println!("mac: {}", zk.get_mac().unwrap_or_default());
26 println!("time: {}", zk.get_time()?);
27
28 let sizes = zk.read_sizes()?;
29 println!("sizes: {sizes:?}");
30
31 zk.disconnect()?;
32 Ok(())
33}
34
35fn parse_args() -> (String, u16) {
37 let mut args = std::env::args().skip(1);
38 let ip = args.next().unwrap_or_else(|| {
39 eprintln!("usage: device_info <ip> [port]");
40 std::process::exit(2);
41 });
42 let port = args.next().and_then(|p| p.parse().ok()).unwrap_or(4370);
43 (ip, port)
44}