read_by_name_example/
read_by_name_example.rs

1#![allow(unused_imports)]
2use rust_ads_client::client::Client;
3use ads_proto::{
4    error::AdsError,
5    proto::ams_address::{AmsAddress, AmsNetId},
6};
7use std::net::Ipv4Addr;
8
9fn main() {
10    //Create client. If route = None then targed is local machine
11    let ams_address = AmsAddress::new(AmsNetId::new(192, 168, 0, 150, 1, 1), 851);
12    //let ipv4 = Ipv4Addr::new(127, 0, 0, 1);
13    //let mut client = Client::new(ams_address, Some(ipv4));
14    let mut client = Client::new(ams_address, None);
15    //Connect client
16    client.connect().expect("Failed to connect!");
17
18    //var name and length
19    let var = "Main.counter";
20    let len = 2;
21
22    //read data by name
23    let iterations = 10;
24    println!("Read var {:?} {:?} times", var, iterations);
25    for _ in 0..iterations {
26        match client.read_by_name(var, len) {
27            Ok(r) => {
28                println!("{:?}", r);
29            }
30            Err(e) => {
31                if e.is::<AdsError>() {
32                    if let Some(e) = e.downcast_ref::<AdsError>() {
33                        println!("Ads Error{:?}", e);
34                        if client.connect().is_ok() {
35                            println!("Reconnected...");
36                        } else {
37                            println!("Reconnecting failed...");
38                        }
39                    }
40                }
41                println!("Other Error{:?}", e);
42            }
43        }
44    }
45
46    //Release handle if not needed anymore
47    let result = client.release_handle(var);
48    println!("{:?}", result.unwrap());
49}