pub struct Client { /* private fields */ }
Expand description
Represents a connection to a ADS server.
The Client’s communication methods use &self
, so that it can be freely
shared within one thread, or sent, between threads. Wrappers such as
Device
or symbol::Handle
use a &Client
as well.
Implementations
sourceimpl Client
impl Client
sourcepub fn new(
addr: impl ToSocketAddrs,
timeouts: Timeouts,
source: Option<AmsAddr>
) -> Result<Self>
pub fn new(
addr: impl ToSocketAddrs,
timeouts: Timeouts,
source: Option<AmsAddr>
) -> Result<Self>
Open a new connection to an ADS server.
If connecting to a server that has an AMS router, it needs to have a
route set for the source IP and NetID, otherwise the connection will be
closed immediately. The route can be added from TwinCAT, or this
crate’s udp::add_route
helper can be used to add a route via UDP
message.
source
is the AMS address to to use as the source; the NetID needs to
match the route entry in the server. If None, the NetID is constructed
from the local IP address with .1.1 appended; if there is no IPv4
address, 127.0.0.1.1.1
is used.
The AMS port of source
is not important, as long as it is not a
well-known service port; an ephemeral port number > 49152 is
recommended. If None, the port is set to 58913.
Since all communications is supposed to be handled by an ADS router, only one TCP/ADS connection can exist between two hosts. Non-TwinCAT clients should make sure to replicate this behavior, as opening a second connection will close the first.
sourcepub fn get_notification_channel(&self) -> Receiver<Notification>
pub fn get_notification_channel(&self) -> Receiver<Notification>
Get a receiver for notifications.
sourcepub fn device(&self, addr: AmsAddr) -> Device<'_>
pub fn device(&self, addr: AmsAddr) -> Device<'_>
Return a wrapper that executes operations for a target device (known by NetID and port).
sourcepub fn communicate(
&self,
cmd: Command,
target: AmsAddr,
data_in: &[&[u8]],
data_out: &mut [&mut [u8]]
) -> Result<usize>
pub fn communicate(
&self,
cmd: Command,
target: AmsAddr,
data_in: &[&[u8]],
data_out: &mut [&mut [u8]]
) -> Result<usize>
Low-level function to execute an ADS command.
Writes a data from a number of input buffers, and returns data in a number of output buffers. The latter might not be filled completely; the return value specifies the number of total valid bytes. It is up to the caller to determine what this means in terms of the passed buffers.
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for Client
impl Send for Client
impl !Sync for Client
impl Unpin for Client
impl UnwindSafe for Client
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more