notification_example/
notification_example.rs

1#![allow(unused_imports)]
2use rust_ads_client::client::Client;
3use ads_proto::proto::{
4    ads_transition_mode::AdsTransMode,
5    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(192, 168, 0, 150);
13    //let mut client = Client::new(ams_address, Some(ipv4));
14    let mut client = Client::new(ams_address, None);
15
16    //Connect client
17    client.connect().expect("Failed to connect!");
18
19    //var name and length
20    let var = "Main.counter";
21    let len = 2;
22
23    //Subscribe to get notifications when "Main.counter" changes
24    let rx = client
25        .add_device_notification(var, len, AdsTransMode::OnChange, 1, 1)
26        .unwrap();
27
28    //Poll the mpsc receiver for new values
29    println!("Receive data...\n");
30    let mut list = Vec::new();
31    for _ in 1..10 {
32        let result = rx.recv();
33        if let Ok(r) = result.unwrap() {
34            list.push(r.ads_stamp_headers);
35        }        
36    }
37
38    println!("Print revceived data:\n");
39    for r in list {
40        println!("{:?}", r);
41    }
42
43    //Unsubscribe notifications
44    println!("\nDelete the notification");
45    let response = client.delete_device_notification(var);
46    println!("{:?}", response);
47}