sumup_read_by_name/
sumup_read_by_name.rs

1#![allow(unused_imports)]
2use rust_ads_client::client::Client;
3use ads_proto::{
4    error::AdsError,
5    proto::{
6        ams_address::{AmsAddress, AmsNetId},
7        response::ReadResponse,
8    },
9};
10use std::{collections::HashMap, net::Ipv4Addr};
11fn main() {
12    //Create client. If route = None then targed is local machine
13    let ams_address = AmsAddress::new(AmsNetId::new(192, 168, 0, 150, 1, 1), 851);
14    //let ipv4 = Ipv4Addr::new(192, 168, 0, 150);
15    //let mut client = Client::new(ams_address, Some(ipv4));
16    let mut client = Client::new(ams_address, None);
17    //Connect client
18    client.connect().expect("Failed to connect!");
19
20    //var name and length
21    let mut var_names = HashMap::new();
22    var_names.insert("Main.counter".to_string(), 2);
23    var_names.insert("Main.mi_uint".to_string(), 2);
24    var_names.insert("Main.mb_bool".to_string(), 1);
25
26    //read data vor all variables in the list with one (tcp) request
27    let iterations = 10;
28    let mut results: Vec<HashMap<String, ReadResponse>> = Vec::new();
29    for _ in 0..iterations {
30        match client.sumup_read_by_name(&var_names) {
31            Ok(r) => {
32                results.push(r);
33            }
34            Err(e) => {
35                if e.is::<AdsError>() {
36                    if let Some(e) = e.downcast_ref::<AdsError>() {
37                        println!("Some Ads Error: {:?}", e);
38                        if client.connect().is_ok() {
39                            println!("Reconnected...");
40                        } else {
41                            println!("Reconnecting failed...");
42                        }
43                    }
44                }
45                println!("Other Error: {:?}", e);
46            }
47        }
48    }
49
50    for r in results {
51        println!("{:?}", r);
52    }
53}