request_example/
request_example.rs1#![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 let ams_address = AmsAddress::new(AmsNetId::new(192, 168, 0, 150, 1, 1), 851);
11 let mut client = Client::new(ams_address, None);
14 client.connect().expect("Failed to connect!");
16
17 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 let queue = request_queue.clone();
31 for request in queue {
32 let result = client.request(request);
33 println!("\n{:?}", result);
34 }
35
36 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}