sumup_write_by_name/
sumup_write_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::WriteResponse,
8    },
9};
10use std::{collections::HashMap, net::Ipv4Addr};
11
12fn main() {
13    //Create client. If route = None then targed is local machine
14    let ams_address = AmsAddress::new(AmsNetId::new(192, 168, 0, 150, 1, 1), 851);
15    //let ipv4 = Ipv4Addr::new(192, 168, 0, 150);
16    //let mut client = Client::new(ams_address, Some(ipv4));
17    let mut client = Client::new(ams_address, None);
18    //Connect client
19    client.connect().expect("Failed to connect!");
20
21    //var name and length
22    let mut var_names: HashMap<String, Vec<u8>> = HashMap::new();
23    var_names.insert("Main.counter".to_string(), vec![0, 0]);
24    var_names.insert("Main.mi_uint".to_string(), vec![0, 0]);
25    var_names.insert("Main.mb_bool".to_string(), vec![1]);
26
27    //write data vor all variables in the list with one (tcp) request
28    let iterations = 10;
29    let mut results: Vec<HashMap<String, WriteResponse>> = Vec::new();
30    for _ in 0..iterations {
31        match client.sumup_write_by_name(var_names.clone()) {
32            Ok(r) => {
33                results.push(r);
34            }
35            Err(e) => {
36                if e.is::<AdsError>() {
37                    if let Some(e) = e.downcast_ref::<AdsError>() {
38                        println!("Some Ads Error{:?}", e);
39                        if client.connect().is_ok() {
40                            println!("Reconnected...");
41                        } else {
42                            println!("Reconnecting failed...");
43                        }
44                    }
45                }
46                println!("Other Error{:?}", e);
47            }
48        }
49    }
50
51    for r in results {
52        println!("{:?}", r);
53    }
54
55    //Release handle if not needed anymore
56    //let result = client.release_handle(var);
57    //println!("{:?}", result.unwrap());
58}