Struct Transport

Source
pub struct Transport(/* private fields */);
Expand description

机械臂传输

Implementations§

Source§

impl Transport

Source

pub fn new(socket: TcpStream) -> Transport

新建一个传输

  • socket TcpStream

Methods from Deref<Target = TcpStream>§

1.0.0 · Source

pub fn peer_addr(&self) -> Result<SocketAddr, Error>

Returns the socket address of the remote peer of this TCP connection.

§Examples
use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream};

let stream = TcpStream::connect("127.0.0.1:8080")
                       .expect("Couldn't connect to the server...");
assert_eq!(stream.peer_addr().unwrap(),
           SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080)));
1.0.0 · Source

pub fn local_addr(&self) -> Result<SocketAddr, Error>

Returns the socket address of the local half of this TCP connection.

§Examples
use std::net::{IpAddr, Ipv4Addr, TcpStream};

let stream = TcpStream::connect("127.0.0.1:8080")
                       .expect("Couldn't connect to the server...");
assert_eq!(stream.local_addr().unwrap().ip(),
           IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)));
1.0.0 · Source

pub fn shutdown(&self, how: Shutdown) -> Result<(), Error>

Shuts down the read, write, or both halves of this connection.

This function will cause all pending and future I/O on the specified portions to return immediately with an appropriate value (see the documentation of Shutdown).

§Platform-specific behavior

Calling this function multiple times may result in different behavior, depending on the operating system. On Linux, the second call will return Ok(()), but on macOS, it will return ErrorKind::NotConnected. This may change in the future.

§Examples
use std::net::{Shutdown, TcpStream};

let stream = TcpStream::connect("127.0.0.1:8080")
                       .expect("Couldn't connect to the server...");
stream.shutdown(Shutdown::Both).expect("shutdown call failed");
1.0.0 · Source

pub fn try_clone(&self) -> Result<TcpStream, Error>

Creates a new independently owned handle to the underlying socket.

The returned TcpStream is a reference to the same stream that this object references. Both handles will read and write the same stream of data, and options set on one stream will be propagated to the other stream.

§Examples
use std::net::TcpStream;

let stream = TcpStream::connect("127.0.0.1:8080")
                       .expect("Couldn't connect to the server...");
let stream_clone = stream.try_clone().expect("clone failed...");
1.4.0 · Source

pub fn set_read_timeout(&self, dur: Option<Duration>) -> Result<(), Error>

Sets the read timeout to the timeout specified.

If the value specified is None, then read calls will block indefinitely. An Err is returned if the zero Duration is passed to this method.

§Platform-specific behavior

Platforms may return a different error code whenever a read times out as a result of setting this option. For example Unix typically returns an error of the kind WouldBlock, but Windows may return TimedOut.

§Examples
use std::net::TcpStream;

let stream = TcpStream::connect("127.0.0.1:8080")
                       .expect("Couldn't connect to the server...");
stream.set_read_timeout(None).expect("set_read_timeout call failed");

An Err is returned if the zero Duration is passed to this method:

use std::io;
use std::net::TcpStream;
use std::time::Duration;

let stream = TcpStream::connect("127.0.0.1:8080").unwrap();
let result = stream.set_read_timeout(Some(Duration::new(0, 0)));
let err = result.unwrap_err();
assert_eq!(err.kind(), io::ErrorKind::InvalidInput)
1.4.0 · Source

pub fn set_write_timeout(&self, dur: Option<Duration>) -> Result<(), Error>

Sets the write timeout to the timeout specified.

If the value specified is None, then write calls will block indefinitely. An Err is returned if the zero Duration is passed to this method.

§Platform-specific behavior

Platforms may return a different error code whenever a write times out as a result of setting this option. For example Unix typically returns an error of the kind WouldBlock, but Windows may return TimedOut.

§Examples
use std::net::TcpStream;

let stream = TcpStream::connect("127.0.0.1:8080")
                       .expect("Couldn't connect to the server...");
stream.set_write_timeout(None).expect("set_write_timeout call failed");

An Err is returned if the zero Duration is passed to this method:

use std::io;
use std::net::TcpStream;
use std::time::Duration;

let stream = TcpStream::connect("127.0.0.1:8080").unwrap();
let result = stream.set_write_timeout(Some(Duration::new(0, 0)));
let err = result.unwrap_err();
assert_eq!(err.kind(), io::ErrorKind::InvalidInput)
1.4.0 · Source

pub fn read_timeout(&self) -> Result<Option<Duration>, Error>

Returns the read timeout of this socket.

If the timeout is None, then read calls will block indefinitely.

§Platform-specific behavior

Some platforms do not provide access to the current timeout.

§Examples
use std::net::TcpStream;

let stream = TcpStream::connect("127.0.0.1:8080")
                       .expect("Couldn't connect to the server...");
stream.set_read_timeout(None).expect("set_read_timeout call failed");
assert_eq!(stream.read_timeout().unwrap(), None);
1.4.0 · Source

pub fn write_timeout(&self) -> Result<Option<Duration>, Error>

Returns the write timeout of this socket.

If the timeout is None, then write calls will block indefinitely.

§Platform-specific behavior

Some platforms do not provide access to the current timeout.

§Examples
use std::net::TcpStream;

let stream = TcpStream::connect("127.0.0.1:8080")
                       .expect("Couldn't connect to the server...");
stream.set_write_timeout(None).expect("set_write_timeout call failed");
assert_eq!(stream.write_timeout().unwrap(), None);
1.18.0 · Source

pub fn peek(&self, buf: &mut [u8]) -> Result<usize, Error>

Receives data on the socket from the remote address to which it is connected, without removing that data from the queue. On success, returns the number of bytes peeked.

Successive calls return the same data. This is accomplished by passing MSG_PEEK as a flag to the underlying recv system call.

§Examples
use std::net::TcpStream;

let stream = TcpStream::connect("127.0.0.1:8000")
                       .expect("Couldn't connect to the server...");
let mut buf = [0; 10];
let len = stream.peek(&mut buf).expect("peek failed");
Source

pub fn set_linger(&self, linger: Option<Duration>) -> Result<(), Error>

🔬This is a nightly-only experimental API. (tcp_linger)

Sets the value of the SO_LINGER option on this socket.

This value controls how the socket is closed when data remains to be sent. If SO_LINGER is set, the socket will remain open for the specified duration as the system attempts to send pending data. Otherwise, the system may close the socket immediately, or wait for a default timeout.

§Examples
#![feature(tcp_linger)]

use std::net::TcpStream;
use std::time::Duration;

let stream = TcpStream::connect("127.0.0.1:8080")
                       .expect("Couldn't connect to the server...");
stream.set_linger(Some(Duration::from_secs(0))).expect("set_linger call failed");
Source

pub fn linger(&self) -> Result<Option<Duration>, Error>

🔬This is a nightly-only experimental API. (tcp_linger)

Gets the value of the SO_LINGER option on this socket.

For more information about this option, see TcpStream::set_linger.

§Examples
#![feature(tcp_linger)]

use std::net::TcpStream;
use std::time::Duration;

let stream = TcpStream::connect("127.0.0.1:8080")
                       .expect("Couldn't connect to the server...");
stream.set_linger(Some(Duration::from_secs(0))).expect("set_linger call failed");
assert_eq!(stream.linger().unwrap(), Some(Duration::from_secs(0)));
1.9.0 · Source

pub fn set_nodelay(&self, nodelay: bool) -> Result<(), Error>

Sets the value of the TCP_NODELAY option on this socket.

If set, this option disables the Nagle algorithm. This means that segments are always sent as soon as possible, even if there is only a small amount of data. When not set, data is buffered until there is a sufficient amount to send out, thereby avoiding the frequent sending of small packets.

§Examples
use std::net::TcpStream;

let stream = TcpStream::connect("127.0.0.1:8080")
                       .expect("Couldn't connect to the server...");
stream.set_nodelay(true).expect("set_nodelay call failed");
1.9.0 · Source

pub fn nodelay(&self) -> Result<bool, Error>

Gets the value of the TCP_NODELAY option on this socket.

For more information about this option, see TcpStream::set_nodelay.

§Examples
use std::net::TcpStream;

let stream = TcpStream::connect("127.0.0.1:8080")
                       .expect("Couldn't connect to the server...");
stream.set_nodelay(true).expect("set_nodelay call failed");
assert_eq!(stream.nodelay().unwrap_or(false), true);
1.9.0 · Source

pub fn set_ttl(&self, ttl: u32) -> Result<(), Error>

Sets the value for the IP_TTL option on this socket.

This value sets the time-to-live field that is used in every packet sent from this socket.

§Examples
use std::net::TcpStream;

let stream = TcpStream::connect("127.0.0.1:8080")
                       .expect("Couldn't connect to the server...");
stream.set_ttl(100).expect("set_ttl call failed");
1.9.0 · Source

pub fn ttl(&self) -> Result<u32, Error>

Gets the value of the IP_TTL option for this socket.

For more information about this option, see TcpStream::set_ttl.

§Examples
use std::net::TcpStream;

let stream = TcpStream::connect("127.0.0.1:8080")
                       .expect("Couldn't connect to the server...");
stream.set_ttl(100).expect("set_ttl call failed");
assert_eq!(stream.ttl().unwrap_or(0), 100);
1.9.0 · Source

pub fn take_error(&self) -> Result<Option<Error>, Error>

Gets the value of the SO_ERROR option on this socket.

This will retrieve the stored error in the underlying socket, clearing the field in the process. This can be useful for checking errors between calls.

§Examples
use std::net::TcpStream;

let stream = TcpStream::connect("127.0.0.1:8080")
                       .expect("Couldn't connect to the server...");
stream.take_error().expect("No error was expected...");
1.9.0 · Source

pub fn set_nonblocking(&self, nonblocking: bool) -> Result<(), Error>

Moves this TCP stream into or out of nonblocking mode.

This will result in read, write, recv and send system operations becoming nonblocking, i.e., immediately returning from their calls. If the IO operation is successful, Ok is returned and no further action is required. If the IO operation could not be completed and needs to be retried, an error with kind io::ErrorKind::WouldBlock is returned.

On Unix platforms, calling this method corresponds to calling fcntl FIONBIO. On Windows calling this method corresponds to calling ioctlsocket FIONBIO.

§Examples

Reading bytes from a TCP stream in non-blocking mode:

use std::io::{self, Read};
use std::net::TcpStream;

let mut stream = TcpStream::connect("127.0.0.1:7878")
    .expect("Couldn't connect to the server...");
stream.set_nonblocking(true).expect("set_nonblocking call failed");

let mut buf = vec![];
loop {
    match stream.read_to_end(&mut buf) {
        Ok(_) => break,
        Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => {
            // wait until network socket is ready, typically implemented
            // via platform-specific APIs such as epoll or IOCP
            wait_for_fd();
        }
        Err(e) => panic!("encountered IO error: {e}"),
    };
};
println!("bytes: {buf:?}");

Trait Implementations§

Source§

impl ArmStateTrait for Transport

Source§

fn get_current_arm_state(&mut self) -> Result<ArmStateData>

查询机械臂状态 Read more
Source§

fn get_joint_degree(&mut self) -> Result<JointDegreeData>

查询机械臂关节角度 Read more
Source§

impl Debug for Transport

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deref for Transport

Source§

type Target = TcpStream

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl DerefMut for Transport

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl IOTrait for Transport

Source§

fn set_tool_voltage(&mut self, voltage_type: VoltageType) -> Result<IOData>

设置工具端电源输出 Read more
Source§

fn get_tool_voltage(&mut self) -> Result<IOVoltageQueryData>

查询工具端电源输出 Read more
Source§

impl ModbusTrait for Transport

Source§

fn set_modbus_mode( &mut self, port: PortType, baudrate: BaudrateType, timeout: u8, ) -> Result<SetStateResponse>

配置通讯端口ModbusRTU模式 Read more
Source§

fn write_single_register( &mut self, port: ModbusPortType, address: u16, data: i16, device: i32, ) -> Result<WriteStateResponse>

写单个寄存器 Read more
Source§

impl MotionTrait for Transport

Source§

fn set_pos_step( &mut self, step_type: StepType, step: isize, v: u8, ) -> Result<ReceiveStateResponse>

位置步进 控制机械臂沿 x、y、z 轴方向直线步进运动。

Source§

fn set_joint_step( &mut self, joint_step: &[i32; 2], v: u8, ) -> Result<ReceiveStateResponse>

关节步进 控制机械臂某个关节的步进运动。

Source§

fn set_ort_step( &mut self, step_type: RStepType, step: isize, v: u8, ) -> Result<ReceiveStateResponse>

姿态步进 控制机械臂沿 x、y、z 轴方向旋转步进运动。

Source§

fn set_arm_stop(&mut self) -> Result<ArmStopResponse>

轨迹急停

Source§

fn set_arm_slow_stop(&mut self) -> Result<ArmSlowStopResponse>

轨迹缓停 在当前正在运行的轨迹上停止。

Source§

fn set_arm_pause(&mut self) -> Result<ArmPauseResponse>

轨迹暂停 停在轨迹上,轨迹可恢复。

Source§

fn set_arm_continue(&mut self) -> Result<ArmContinueResponse>

轨迹暂停后恢复

Source§

fn set_joint_teach( &mut self, teach_joint: u8, direction: DirectionType, v: u8, ) -> Result<ArmJointTeachResponse>

关节示教

Source§

fn set_pos_teach( &mut self, teach_type: TeachType, direction: DirectionType, v: u8, ) -> Result<ArmPosTeachResponse>

位置示教

Source§

fn set_ort_teach( &mut self, teach_rotate_joint: TeachRotateType, direction: DirectionType, v: u8, ) -> Result<ArmOrtTeachResponse>

姿态示教

Source§

fn set_stop_teach(&mut self) -> Result<ArmStopTeachResponse>

示教停止

Source§

fn movej( &mut self, arm_type: ArmType, v: u8, r: u8, trajectory_connect: TrajectoryConnect, ) -> Result<MotionData>

关节运动 Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.