request_example/
request_example.rs

1#![allow(unused_imports)]
2use rust_ads_client::client::Client;
3use ads_proto::ads_services::system_services::GET_SYMHANDLE_BY_NAME;
4use ads_proto::proto::ams_address::{AmsAddress, AmsNetId};
5use ads_proto::proto::request::*;
6use std::net::Ipv4Addr;
7
8fn main() {
9    //Create client. If route = None then targed is local machine
10    let ams_address = AmsAddress::new(AmsNetId::new(192, 168, 0, 150, 1, 1), 851);
11    //let ipv4 = Ipv4Addr::new(192, 168, 0, 150);
12    //let mut client = Client::new(ams_address, Some(ipv4));
13    let mut client = Client::new(ams_address, None);
14    //Connect client
15    client.connect().expect("Failed to connect!");
16
17    //Create the requests manually and supply them to your request
18    let mut request_queue = Vec::new();
19    request_queue.push(Request::ReadDeviceInfo(ReadDeviceInfoRequest::new()));
20    request_queue.push(Request::ReadState(ReadStateRequest::new()));
21    let var = "Main.counter";
22    request_queue.push(Request::ReadWrite(ReadWriteRequest::new(
23        GET_SYMHANDLE_BY_NAME.index_group,
24        GET_SYMHANDLE_BY_NAME.index_offset_start,
25        4,
26        var.as_bytes().to_vec(),
27    )));
28
29    //read data directly (wait for response)
30    let queue = request_queue.clone();
31    for request in queue {
32        let result = client.request(request);
33        println!("\n{:?}", result);
34    }
35
36    //get mpsc tx channel and poll
37    let mut rx_queue = Vec::new();
38    for request in request_queue {
39        rx_queue.push(client.request_rx(request).expect("request_rx failed"));
40    }
41
42    let mut counter: u32 = 0;
43    let mut wait_count: u32 = 0;
44    while counter < 3 {
45        for rx in &rx_queue {
46            if let Ok(data) = rx.try_recv() {
47                println!("\n{:?}", data);
48                counter += 1;
49            } else {
50                wait_count += 1;
51            }
52        }
53    }
54
55    println!("\n{:?} loops while waiting for data", wait_count);
56}