点击或拖拽改变大小

FanucInterfaceNet 类

Fanuc机器人的PC Interface实现,在R-30iB mate plus型号上测试通过,支持读写任意的数据,写入操作务必谨慎调用,写入数据不当造成生命财产损失,作者概不负责。读写任意的地址见api文档信息
The Fanuc robot's PC Interface implementation has been tested on R-30iB mate plus models. It supports reading and writing arbitrary data. The writing operation must be called carefully. Improper writing of data will cause loss of life and property. The author is not responsible. Read and write arbitrary addresses see api documentation information
继承层次
SystemObject
  HslCommunication.Core.NetBinaryCommunication
    HslCommunication.Core.DeviceDeviceCommunication
      HslCommunication.Core.DeviceDeviceTcpNet
        HslCommunication.Robot.FANUCFanucInterfaceNet

命名空间:  HslCommunication.Robot.FANUC
程序集:  HslCommunication (在 HslCommunication.dll 中) 版本:12.1.2.0 (12.1.2.0)
语法
public class FanucInterfaceNet : DeviceTcpNet, 
	IRobotNet, IReadWriteNet

FanucInterfaceNet 类型公开以下成员。

构造函数
  名称说明
公共方法FanucInterfaceNet
实例化一个默认的对象
Instantiate a default object
公共方法FanucInterfaceNet(String, Int32)
指定ip及端口来实例化一个默认的对象,端口默认60008
Specify the IP and port to instantiate a default object, the port defaults to 60008
Top
属性
  名称说明
公共属性代码示例ByteTransform
当前的数据变换机制,当你需要从字节数据转换类型数据的时候需要。
The current data transformation mechanism is required when you need to convert type data from byte data.
(继承自 DeviceCommunication。)
公共属性ClientId
获取或设置当前客户端的ID信息,默认为1024
Gets or sets the ID information of the current client. The default is 1024.
公共属性CommunicationPipe
获取或设置当前的管道信息,管道类型为CommunicationPipe的继承类,内置了PipeTcpNet管道,PipeUdpNet管道,PipeSerialPort管道等
(继承自 BinaryCommunication。)
公共属性ConnectionId
当前连接的唯一ID号,默认为长度20的guid码加随机数组成,方便列表管理,也可以自己指定
The unique ID number of the current connection. The default is a 20-digit guid code plus a random number.
(继承自 BinaryCommunication。)
公共属性代码示例ConnectTimeOut
获取或设置接收服务器反馈的时间,如果为负数,则不接收反馈
Gets or sets the time to receive server feedback, and if it is a negative number, does not receive feedback
(继承自 DeviceTcpNet。)
公共属性FanucDataRetainTime
获取或设置缓存的Fanuc数据的有效时间,对ReadString(String)方法有效,默认为100,单位毫秒。也即是在100ms内频繁读取机器人的属性数据的时候,优先读取缓存值,提高读取效率。
Gets or sets the valid time of the cached Fanuc data. It is valid for the ReadString(String) method. The default is 100, in milliseconds. That is, when the attribute data of the robot is frequently read within 100ms, the cache value is preferentially read to improve the reading efficiency.
公共属性代码示例IpAddress
获取或是设置远程服务器的IP地址,如果是本机测试,那么需要设置为127.0.0.1
Get or set the IP address of the remote server. If it is a local test, then it needs to be set to 127.0.0.1
(继承自 DeviceTcpNet。)
公共属性LocalBinding
获取或设置绑定的本地的IP地址和端口号信息,如果端口设置为0,代表任何可用的端口
Get or set the bound local IP address and port number information, if the port is set to 0, it means any available port
(继承自 DeviceTcpNet。)
公共属性代码示例LogNet
组件的日志工具,支持日志记录,只要实例化后,当前网络的基本信息,就以DEBUG等级进行输出
The component's logging tool supports logging. As long as the instantiation of the basic network information, the output will be output at DEBUG
(继承自 BinaryCommunication。)
公共属性代码示例Port
获取或设置服务器的端口号,具体的值需要取决于对方的配置
Gets or sets the port number of the server. The specific value depends on the configuration of the other party.
(继承自 DeviceTcpNet。)
公共属性代码示例ReceiveTimeOut
获取或设置接收服务器反馈的时间,如果为负数,则不接收反馈
Gets or sets the time to receive server feedback, and if it is a negative number, does not receive feedback
(继承自 BinaryCommunication。)
公共属性SendBeforeHex
获取或设置在发送通信报文前追加发送的字节信息,HEX格式,通常用于lora组网时,需要携带 00 00 00 02 四个字节的站地址功能。
Obtain or set the byte information sent before sending communication packets, HEX format, usually used for LORA networking, you need to carry 00 00 00 02 four-byte station address function.
(继承自 BinaryCommunication。)
公共属性SleepTime
获取或设置在正式接收对方返回数据前的时候,需要休息的时间,当设置为0的时候,不需要休息。
Get or set the time required to rest before officially receiving the data from the other party. When it is set to 0, no rest is required.
(继承自 BinaryCommunication。)
公共属性SocketKeepAliveTime
获取或设置客户端的Socket的心跳时间信息,这个是Socket底层自动实现的心跳包,不基于协议层实现。默认小于0,不开启心跳检测,如果需要开启,设置 60_000 比较合适,单位毫秒
Get or set the heartbeat time information of the Socket of the client. This is the heartbeat packet automatically implemented by the bottom layer of the Socket, not based on the protocol layer. The default value is less than 0, and heartbeat detection is not enabled. If you need to enable it, it is more appropriate to set 60_000, in milliseconds.
(继承自 DeviceTcpNet。)
公共属性StringEncoding
获取或设置解析当前的字符串数据时使用的编码信息,默认使用 Encoding.Default 编码。
Gets or sets the encoding information used when parsing the current string data, using Encoding.Default encoding by default.
受保护的属性WordLength
一个字单位的数据表示的地址长度,西门子为2,三菱,欧姆龙,modbusTcp就为1,AB PLC无效
The address length represented by one word of data, Siemens is 2, Mitsubishi, Omron, modbusTcp is 1, AB PLC is invalid
(继承自 DeviceCommunication。)
Top
方法
  名称说明
公共方法代码示例ConnectClose
手动断开与远程服务器的连接,如果当前是长连接模式,那么就会切换到短连接模式
Manually disconnect from the remote server, if it is currently in long connection mode, it will switch to short connection mode
(继承自 DeviceTcpNet。)
公共方法代码示例ConnectCloseAsync
手动断开与远程服务器的连接,如果当前是长连接模式,那么就会切换到短连接模式
Manually disconnect from the remote server, if it is currently in long connection mode, it will switch to short connection mode
(继承自 DeviceTcpNet。)
公共方法代码示例ConnectServer
尝试连接远程的服务器,如果连接成功,就切换短连接模式到长连接模式,后面的每次请求都共享一个通道,使得通讯速度更快速
Try to connect to a remote server. If the connection is successful, switch the short connection mode to the long connection mode. Each subsequent request will share a channel, making the communication speed faster.
(继承自 DeviceTcpNet。)
公共方法代码示例ConnectServerAsync
尝试连接远程的服务器,如果连接成功,就切换短连接模式到长连接模式,后面的每次请求都共享一个通道,使得通讯速度更快速
Try to connect to a remote server. If the connection is successful, switch the short connection mode to the long connection mode. Each subsequent request will share a channel, making the communication speed faster.
(继承自 DeviceTcpNet。)
受保护的方法DecideWhetherQAMessage
决定当前的消息是否是用于问答机制返回的消息,默认直接返回 true, 实际的情况需要根据协议进行重写方法
To determine whether the current message is the message returned by the question answering mechanism, the default is true. In actual cases, the rewriting method needs to be performed according to the protocol
(继承自 BinaryCommunication。)
公共方法Dispose
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
(继承自 DeviceCommunication。)
受保护的方法Dispose(Boolean)
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
(继承自 DeviceCommunication。)
公共方法Equals
Determines whether the specified object is equal to the current object.
(继承自 Object。)
受保护的方法ExtraAfterReadFromCoreServer
和服务器交互完成的时候调用的方法,可以根据读写结果进行一些额外的操作,具体的操作需要根据实际的需求来重写实现
The method called when the interaction with the server is completed can perform some additional operations based on the read and write results. The specific operations need to be rewritten according to actual needs.
(继承自 BinaryCommunication。)
受保护的方法代码示例ExtraOnDisconnect
根据实际的协议选择是否重写本方法,有些协议在断开连接之前,需要发送一些报文来关闭当前的网络通道
Select whether to rewrite this method according to the actual protocol. Some protocols need to send some packets to close the current network channel before disconnecting.
(继承自 BinaryCommunication。)
受保护的方法代码示例ExtraOnDisconnectAsync
根据实际的协议选择是否重写本方法,有些协议在断开连接之前,需要发送一些报文来关闭当前的网络通道
Select whether to rewrite this method according to the actual protocol. Some protocols need to send some packets to close the current network channel before disconnecting.
(继承自 BinaryCommunication。)
受保护的方法Finalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(继承自 Object。)
公共方法GetHashCode
Serves as the default hash function.
(继承自 Object。)
受保护的方法GetLogTextFromBinary
获取当前的报文进行日志记录的时候,是否使用二进制的格式记录,默认返回 LogMsgFormatBinary,重写可以根据session对象分别返回不同记录模式
Whether to log the current packet in binary format, the default return is LogMsgFormatBinary. If you want to override it, different recording modes can be returned according to session
(继承自 BinaryCommunication。)
受保护的方法GetNewNetMessage
获取一个新的消息对象的方法,需要在继承类里面进行重写
The method to get a new message object needs to be overridden in the inheritance class
(重写 BinaryCommunicationGetNewNetMessage.)
公共方法GetType
Gets the Type of the current instance.
(继承自 Object。)
受保护的方法GetWordLength
一个字单位的数据表示的地址长度,西门子为2,三菱,欧姆龙,modbusTcp就为1,AB PLC无效
The address length represented by one word of data, Siemens is 2, Mitsubishi, Omron, modbusTcp is 1, AB PLC is invalid
(继承自 DeviceCommunication。)
受保护的方法代码示例InitializationOnConnect
根据实际的协议选择是否重写本方法,有些协议在创建连接之后,需要进行一些初始化的信号握手,才能最终建立网络通道。
Whether to rewrite this method is based on the actual protocol. Some protocols require some initial signal handshake to establish a network channel after the connection is created.
(重写 BinaryCommunicationInitializationOnConnect.)
受保护的方法代码示例InitializationOnConnectAsync
根据实际的协议选择是否重写本方法,有些协议在创建连接之后,需要进行一些初始化的信号握手,才能最终建立网络通道。
Whether to rewrite this method is based on the actual protocol. Some protocols require some initial signal handshake to establish a network channel after the connection is created.
(重写 BinaryCommunicationInitializationOnConnectAsync.)
公共方法IpAddressPing
对当前设备的IP地址进行PING的操作,返回PING的结果,正常来说,返回Success
PING the IP address of the current device and return the PING result. Normally, it returns Success
(继承自 DeviceTcpNet。)
受保护的方法LogRevcMessage(Byte)
使用日志记录一个接收的报文信息
` Logs are used to record information about a received packet
(继承自 BinaryCommunication。)
受保护的方法LogRevcMessage(Byte, PipeSession)
使用日志记录一个接收的报文信息
` Logs are used to record information about a received packet
(继承自 BinaryCommunication。)
受保护的方法LogSendMessage(Byte)
使用日志记录一个发送的报文信息
Logs are used to record information about a send packet
(继承自 BinaryCommunication。)
受保护的方法LogSendMessage(Byte, PipeSession)
使用日志记录一个发送的报文信息
Logs are used to record information about a send packet
(继承自 BinaryCommunication。)
受保护的方法MemberwiseClone
Creates a shallow copy of the current Object.
(继承自 Object。)
公共方法PackCommandWithHeader
对当前的命令进行打包处理,通常是携带命令头内容,标记当前的命令的长度信息,需要进行重写,否则默认不打包
The current command is packaged, usually carrying the content of the command header, marking the length of the current command, and it needs to be rewritten, otherwise it is not packaged by default
(继承自 BinaryCommunication。)
公共方法Read(String)
根据地址读取机器人的原始的字节数据信息
Read the robot's original byte data information according to the address
公共方法Read(String, UInt16)
按照字为单位批量读取设备的原始数据,需要指定地址及长度,地址示例:D1,AI1,AQ1,共计3个区的数据,注意地址的起始为1
Read the raw data of the device in batches in units of words. You need to specify the address and length. Example addresses: D1, AI1, AQ1, a total of 3 areas of data. Note that the start of the address is 1.
(重写 DeviceCommunicationRead(String, UInt16).)
公共方法Read(Byte, UInt16, UInt16)
按照字为单位批量读取设备的原始数据,需要指定数据块地址,偏移地址及长度,主要针对08, 10, 12的数据块,注意地址的起始为1
Read the raw data of the device in batches in units of words. You need to specify the data block address, offset address, and length. It is mainly for data blocks of 08, 10, and 12. Note that the start of the address is 1.
公共方法代码示例ReadT
读取支持Hsl特性的数据内容,该特性为HslDeviceAddressAttribute,详细参考api文档说明,或是官网的详细文档
Read the data content of the Hsl attribute. The attribute is HslDeviceAddressAttribute, please refer to the api documentation for details.
(继承自 DeviceCommunication。)
公共方法ReadAsync(String)
根据地址读取机器人的原始的字节数据信息
Read the robot's original byte data information according to the address
公共方法ReadAsync(String, UInt16)
按照字为单位批量读取设备的原始数据,需要指定地址及长度,地址示例:D1,AI1,AQ1,共计3个区的数据,注意地址的起始为1
Read the raw data of the device in batches in units of words. You need to specify the address and length. Example addresses: D1, AI1, AQ1, a total of 3 areas of data. Note that the start of the address is 1.
(重写 DeviceCommunicationReadAsync(String, UInt16).)
公共方法ReadAsync(Byte, UInt16, UInt16)
按照字为单位批量读取设备的原始数据,需要指定数据块地址,偏移地址及长度,主要针对08, 10, 12的数据块,注意地址的起始为1
Read the raw data of the device in batches in units of words. You need to specify the data block address, offset address, and length. It is mainly for data blocks of 08, 10, and 12. Note that the start of the address is 1.
公共方法代码示例ReadAsyncT
异步读取支持Hsl特性的数据内容,该特性为HslDeviceAddressAttribute,详细参考api文档说明
Asynchronously read the data content of the Hsl attribute. The attribute is HslDeviceAddressAttribute, please refer to the api documentation for details.
(继承自 DeviceCommunication。)
公共方法ReadBool(String)
读取单个的Boolean数据信息
Read a single Boolean data message
(继承自 DeviceCommunication。)
公共方法ReadBool(String, UInt16)
按照位为单位批量读取设备的原始数据,需要指定地址及长度,地址示例:M1,I1,Q1,共计3个区的数据,注意地址的起始为1
Read the raw data of the device in batches in units of boolean. You need to specify the address and length. Example addresses: M1,I1,Q1, a total of 3 areas of data. Note that the start of the address is 1.
(重写 DeviceCommunicationReadBool(String, UInt16).)
公共方法ReadBool(Byte, UInt16, UInt16)
按照位为单位批量读取设备的原始数据,需要指定数据块地址,偏移地址及长度,主要针对70, 72, 76的数据块,注意地址的起始为1
公共方法ReadBoolAsync(String)
异步读取单个的Boolean数据信息
Asynchronously read a single Boolean data message
(继承自 DeviceCommunication。)
公共方法ReadBoolAsync(String, UInt16)
按照位为单位批量读取设备的原始数据,需要指定地址及长度,地址示例:M1,I1,Q1,共计3个区的数据,注意地址的起始为1
Read the raw data of the device in batches in units of boolean. You need to specify the address and length. Example addresses: M1,I1,Q1, a total of 3 areas of data. Note that the start of the address is 1.
(重写 DeviceCommunicationReadBoolAsync(String, UInt16).)
公共方法ReadBoolAsync(Byte, UInt16, UInt16)
按照位为单位批量读取设备的原始数据,需要指定数据块地址,偏移地址及长度,主要针对70, 72, 76的数据块,注意地址的起始为1
公共方法代码示例ReadCustomerT(String)
读取自定义的数据类型,需要继承自IDataTransfer接口,返回一个新的类型的实例对象。
To read a custom data type, you need to inherit from the IDataTransfer interface and return an instance object of a new type.
(继承自 DeviceCommunication。)
公共方法代码示例ReadCustomerT(String, T)
读取自定义的数据类型,需要继承自IDataTransfer接口,传入一个实例,对这个实例进行赋值,并返回该实例的对象。
To read a custom data type, you need to inherit from the IDataTransfer interface, pass in an instance, assign a value to this instance, and return the object of the instance.
(继承自 DeviceCommunication。)
公共方法代码示例ReadCustomerAsyncT(String)
读取自定义的数据类型,需要继承自IDataTransfer接口,返回一个新的类型的实例对象。
To read a custom data type, you need to inherit from the IDataTransfer interface and return an instance object of a new type.
(继承自 DeviceCommunication。)
公共方法代码示例ReadCustomerAsyncT(String, T)
读取自定义的数据类型,需要继承自IDataTransfer接口,传入一个实例,对这个实例进行赋值,并返回该实例的对象。
To read a custom data type, you need to inherit from the IDataTransfer interface, pass in an instance, assign a value to this instance, and return the object of the instance.
(继承自 DeviceCommunication。)
公共方法代码示例ReadDouble(String)
读取双浮点的数据
Read double floating point data
(继承自 DeviceCommunication。)
公共方法代码示例ReadDouble(String, UInt16)
读取双浮点数据的数组
Read double floating point data array
(继承自 DeviceCommunication。)
公共方法代码示例ReadDoubleAsync(String)
异步读取双浮点的数据
Asynchronously read double floating point data
(继承自 DeviceCommunication。)
公共方法代码示例ReadDoubleAsync(String, UInt16)
异步读取双浮点数据的数组
Asynchronously read double floating point data array
(继承自 DeviceCommunication。)
公共方法ReadFanucData
读取机器人的详细信息,返回解析后的数据类型
Read the details of the robot and return the resolved data type
公共方法ReadFanucDataAsync
读取机器人的详细信息,返回解析后的数据类型
Read the details of the robot and return the resolved data type
公共方法代码示例ReadFloat(String)
读取单浮点数据
Read single floating point data
(继承自 DeviceCommunication。)
公共方法代码示例ReadFloat(String, UInt16)
读取单浮点精度的数组
Read single floating point array
(继承自 DeviceCommunication。)
公共方法代码示例ReadFloatAsync(String)
异步读取单浮点数据
Asynchronously read single floating point data
(继承自 DeviceCommunication。)
公共方法代码示例ReadFloatAsync(String, UInt16)
异步读取单浮点精度的数组
Asynchronously read single floating point array
(继承自 DeviceCommunication。)
公共方法代码示例ReadFromCoreServer(Byte)
将二进制的数据发送到管道中去,然后从管道里接收二进制的数据回来,并返回是否成功的结果对象。
Send binary data to the pipeline, and then receive binary data back from the pipeline, and return whether the success of the result object
(继承自 BinaryCommunication。)
公共方法ReadFromCoreServer(IEnumerableByte) (继承自 BinaryCommunication。)
公共方法代码示例ReadFromCoreServer(Byte, Boolean, Boolean)
将二进制的数据发送到管道中去,然后从管道里接收二进制的数据回来,并返回是否成功的结果对象。
Send binary data to the pipeline, and then receive binary data back from the pipeline, and return whether the success of the result object
(继承自 BinaryCommunication。)
公共方法ReadFromCoreServer(CommunicationPipe, Byte, Boolean, Boolean)
使用指定的管道来进行数据通信,发送原始数据到管道,然后从管道接收相关的数据返回,本方法无锁
(继承自 BinaryCommunication。)
公共方法代码示例ReadFromCoreServerAsync(Byte)
将二进制的数据发送到管道中去,然后从管道里接收二进制的数据回来,并返回是否成功的结果对象。
Send binary data to the pipeline, and then receive binary data back from the pipeline, and return whether the success of the result object
(继承自 BinaryCommunication。)
公共方法ReadFromCoreServerAsync(IEnumerableByte) (继承自 BinaryCommunication。)
公共方法代码示例ReadFromCoreServerAsync(Byte, Boolean, Boolean)
将二进制的数据发送到管道中去,然后从管道里接收二进制的数据回来,并返回是否成功的结果对象。
Send binary data to the pipeline, and then receive binary data back from the pipeline, and return whether the success of the result object
(继承自 BinaryCommunication。)
公共方法ReadFromCoreServerAsync(CommunicationPipe, Byte, Boolean, Boolean)
使用指定的管道来进行数据通信,发送原始数据到管道,然后从管道接收相关的数据返回,本方法无锁
(继承自 BinaryCommunication。)
公共方法ReadGI
读取机器人的GI信息
公共方法ReadGIAsync
读取机器人的GI信息
公共方法ReadGO
读取机器人的GO信息
公共方法ReadGOAsync
读取机器人的GO信息
公共方法代码示例ReadInt16(String)
读取16位的有符号的整型数据
Read 16-bit signed integer data
(继承自 DeviceCommunication。)
公共方法代码示例ReadInt16(String, UInt16)
读取16位的有符号整型数组
Read 16-bit signed integer array
(继承自 DeviceCommunication。)
公共方法代码示例ReadInt16Async(String)
异步读取16位的有符号的整型数据
Asynchronously read 16-bit signed integer data
(继承自 DeviceCommunication。)
公共方法代码示例ReadInt16Async(String, UInt16)
异步读取16位的有符号整型数组
Asynchronously read 16-bit signed integer array
(继承自 DeviceCommunication。)
公共方法代码示例ReadInt32(String)
读取32位的有符号整型
Read 32-bit signed integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadInt32(String, UInt16)
读取32位有符号整型数组
Read 32-bit signed integer array
(继承自 DeviceCommunication。)
公共方法代码示例ReadInt32Async(String)
异步读取32位的有符号整型
Asynchronously read 32-bit signed integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadInt32Async(String, UInt16)
异步读取32位有符号整型数组
Asynchronously read 32-bit signed integer array
(继承自 DeviceCommunication。)
公共方法代码示例ReadInt64(String)
读取64位的有符号整型
Read 64-bit signed integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadInt64(String, UInt16)
读取64位的有符号整型数组
Read 64-bit signed integer array
(继承自 DeviceCommunication。)
公共方法代码示例ReadInt64Async(String)
异步读取64位的有符号整型
Asynchronously read 64-bit signed integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadInt64Async(String, UInt16)
异步读取64位的有符号整型数组
Asynchronously read 64-bit signed integer array
(继承自 DeviceCommunication。)
公共方法ReadPMCR2
读取机器人的PMCR2信息
公共方法ReadPMCR2Async
读取机器人的PMCR2信息
公共方法ReadRDI
读取机器人的RDI信息
公共方法ReadRDIAsync
读取机器人的RDI信息
公共方法ReadRDO
读取机器人的RDO信息
公共方法ReadRDOAsync
读取机器人的RDO信息
公共方法ReadSDI
读取机器人的SDI信息
Read the SDI information of the robot
公共方法ReadSDIAsync
读取机器人的SDI信息
Read the SDI information of the robot
公共方法ReadSDO
读取机器人的SDO信息
Read the SDO information of the robot
公共方法ReadSDOAsync
读取机器人的SDO信息
Read the SDO information of the robot
公共方法ReadSI
读取机器人的SI信息
公共方法ReadSIAsync
读取机器人的SI信息
公共方法ReadSO
读取机器人的SO信息
公共方法ReadSOAsync
读取机器人的SO信息
公共方法ReadString(String)
根据地址读取机器人的字符串的数据信息
Read the string data information of the robot based on the address
公共方法代码示例ReadString(String, UInt16)
读取字符串数据,默认为最常见的ASCII编码
Read string data, default is the most common ASCII encoding
(继承自 DeviceCommunication。)
公共方法代码示例ReadString(String, UInt16, Encoding)
使用指定的编码,读取字符串数据
Reads string data using the specified encoding
(继承自 DeviceCommunication。)
公共方法ReadStringAsync(String)
根据地址读取机器人的字符串的数据信息
Read the string data information of the robot based on the address
公共方法代码示例ReadStringAsync(String, UInt16)
异步读取字符串数据,默认为最常见的ASCII编码
Asynchronously read string data, default is the most common ASCII encoding
(继承自 DeviceCommunication。)
公共方法代码示例ReadStringAsync(String, UInt16, Encoding)
异步使用指定的编码,读取字符串数据
Asynchronously reads string data using the specified encoding
(继承自 DeviceCommunication。)
公共方法代码示例ReadStructT
读取结构体类型的数据,根据结构体自身的定义,读取原始字节数组,然后解析出实际的结构体数据,结构体需要实现HslStructAttribute特性
(继承自 DeviceCommunication。)
公共方法代码示例ReadStructAsyncT
读取结构体类型的数据,根据结构体自身的定义,读取原始字节数组,然后解析出实际的结构体数据,结构体需要实现HslStructAttribute特性
(继承自 DeviceCommunication。)
公共方法ReadUI
读取机器人的UI信息
公共方法ReadUIAsync
读取机器人的UI信息
公共方法代码示例ReadUInt16(String)
读取16位的无符号整型
Read 16-bit unsigned integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadUInt16(String, UInt16)
读取16位的无符号整型数组
Read 16-bit unsigned integer array
(继承自 DeviceCommunication。)
公共方法代码示例ReadUInt16Async(String)
异步读取16位的无符号整型
Asynchronously read 16-bit unsigned integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadUInt16Async(String, UInt16)
异步读取16位的无符号整型数组
Asynchronously read 16-bit unsigned integer array
(继承自 DeviceCommunication。)
公共方法代码示例ReadUInt32(String)
读取32位的无符号整型
Read 32-bit unsigned integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadUInt32(String, UInt16)
读取32位的无符号整型数组
Read 32-bit unsigned integer array
(继承自 DeviceCommunication。)
公共方法代码示例ReadUInt32Async(String)
异步读取32位的无符号整型
Asynchronously read 32-bit unsigned integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadUInt32Async(String, UInt16)
异步读取32位的无符号整型数组
Asynchronously read 32-bit unsigned integer array
(继承自 DeviceCommunication。)
公共方法代码示例ReadUInt64(String)
读取64位的无符号整型
Read 64-bit unsigned integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadUInt64(String, UInt16)
读取64位的无符号整型的数组
Read 64-bit unsigned integer array
(继承自 DeviceCommunication。)
公共方法代码示例ReadUInt64Async(String)
异步读取64位的无符号整型
Asynchronously read 64-bit unsigned integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadUInt64Async(String, UInt16)
异步读取64位的无符号整型的数组
Asynchronously read 64-bit unsigned integer array
(继承自 DeviceCommunication。)
公共方法ReadUO
读取机器人的UO信息
公共方法ReadUOAsync
读取机器人的UO信息
公共方法SetDtuPipe
将当前的通信对象设置DTU模式,允许传入现成的管道,并返回初始化结果,如果该设备重写了握手报文,就是返回握手结果
Set the current communication object to DTU mode, allow the existing pipe to be passed in, and return the initialization result, if the device rewrites the handshake packet, the handshake result is returned
(继承自 BinaryCommunication。)
公共方法SetDtuPipeAsync
将当前的通信对象设置DTU模式,允许传入现成的管道,并返回初始化结果,如果该设备重写了握手报文,就是返回握手结果
Set the current communication object to DTU mode, allow the existing pipe to be passed in, and return the initialization result, if the device rewrites the handshake packet, the handshake result is returned
(继承自 BinaryCommunication。)
公共方法SetPersistentConnection 已过时。
V11版本及之前设置长连接的方法,在V12版本以上中没有任何效果,默认长连接,删除调用即可,此处保留方法是为了部分用户保持兼容性升级。
The method of setting the long connection in V11 and before, has no effect in V12 and above. this method can be deleted. The method is retained here to maintain compatibility upgrades for some users.
(继承自 DeviceTcpNet。)
公共方法ToString
Returns a string that represents the current object.
(重写 DeviceTcpNetToString.)
公共方法UnpackResponseContent
根据对方返回的报文命令,对命令进行基本的拆包,例如各种Modbus协议拆包为统一的核心报文,还支持对报文的验证
According to the message command returned by the other party, the command is basically unpacked, for example, various Modbus protocols are unpacked into a unified core message, and the verification of the message is also supported
(继承自 BinaryCommunication。)
公共方法Wait(String, Boolean, Int32, Int32)
等待指定地址的Boolean值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the Boolean value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait.
(继承自 DeviceCommunication。)
公共方法Wait(String, Int16, Int32, Int32)
等待指定地址的Int16值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the Int16 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait.
(继承自 DeviceCommunication。)
公共方法Wait(String, Int32, Int32, Int32)
等待指定地址的Int32值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the Int32 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait.
(继承自 DeviceCommunication。)
公共方法Wait(String, Int64, Int32, Int32)
等待指定地址的Int64值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the Int64 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait.
(继承自 DeviceCommunication。)
公共方法Wait(String, UInt16, Int32, Int32)
等待指定地址的UInt16值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the UInt16 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait.
(继承自 DeviceCommunication。)
公共方法Wait(String, UInt32, Int32, Int32)
等待指定地址的UInt32值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the UInt32 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait.
(继承自 DeviceCommunication。)
公共方法Wait(String, UInt64, Int32, Int32)
等待指定地址的UInt64值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the UInt64 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait.
(继承自 DeviceCommunication。)
公共方法WaitAsync(String, Boolean, Int32, Int32)
等待指定地址的Boolean值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the Boolean value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait.
(继承自 DeviceCommunication。)
公共方法WaitAsync(String, Int16, Int32, Int32)
等待指定地址的Int16值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the Int16 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait.
(继承自 DeviceCommunication。)
公共方法WaitAsync(String, Int32, Int32, Int32)
等待指定地址的Int32值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the Int32 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait.
(继承自 DeviceCommunication。)
公共方法WaitAsync(String, Int64, Int32, Int32)
等待指定地址的Int64值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the Int64 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait.
(继承自 DeviceCommunication。)
公共方法WaitAsync(String, UInt16, Int32, Int32)
等待指定地址的UInt16值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the UInt16 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait.
(继承自 DeviceCommunication。)
公共方法WaitAsync(String, UInt32, Int32, Int32)
等待指定地址的UInt32值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the UInt32 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait.
(继承自 DeviceCommunication。)
公共方法WaitAsync(String, UInt64, Int32, Int32)
等待指定地址的UInt64值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the UInt64 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait.
(继承自 DeviceCommunication。)
公共方法Write(String, Boolean)
写入单个的Boolean数据,返回是否成功
Write a single Boolean data, and return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, Double)
写入double数据,返回是否成功
Write double data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, Double)
写入double数组,返回是否成功
Write double array, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, Int16)
写入short数据,返回是否成功
Write short data, returns whether success
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, Int16)
写入short数组,返回是否成功
Write short array, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, Int32)
写入int数据,返回是否成功
Write int data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, Int32)
写入int[]数组,返回是否成功
Write int array, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, Int64)
写入long数据,返回是否成功
Write long data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, Int64)
写入long数组,返回是否成功
Write long array, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, Single)
写入float数据,返回是否成功
Write float data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, Single)
写入float数组,返回是否成功
Write float array, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, String)
写入字符串信息,编码为ASCII
Write string information, encoded as ASCII
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, UInt16)
写入ushort数据,返回是否成功
Write ushort data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, UInt16)
写入ushort数组,返回是否成功
Write ushort array, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, UInt32)
写入uint数据,返回是否成功
Write uint data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, UInt32)
写入uint[]数组,返回是否成功
Write uint array, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, UInt64)
写入ulong数据,返回是否成功
Write ulong data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, UInt64)
写入ulong数组,返回是否成功
Write ulong array, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法Write(String, Boolean)
批量写入Boolean数组数据,返回是否写入成功,需要指定起始地址,地址示例:M1,I1,Q1,共计3个区的数据,注意地址的起始为1
Write Boolean array data in batches. If the write success is returned, you need to specify the starting address. Example address: M1, I1, Q1, a total of 3 areas of data. Note that the starting address is 1.
(重写 DeviceCommunicationWrite(String, Boolean).)
公共方法Write(String, Byte)
写入原始的byte数组数据到指定的地址,返回是否写入成功,地址示例:D1,AI1,AQ1,共计3个区的数据,注意起始的起始为1
Write the original byte array data to the specified address, and return whether the write was successful. Example addresses: D1, AI1, AQ1, a total of 3 areas of data. Note that the start of the address is 1.
(重写 DeviceCommunicationWrite(String, Byte).)
公共方法代码示例Write(String, String, Int32)
写入指定长度的字符串信息,如果超出,就截断字符串,如果长度不足,那就补0操作,编码为ASCII
Write string information of the specified length. If it exceeds the value, the string is truncated. If the length is not enough, it is filled with 0 and the encoding is ASCII.
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, String, Encoding)
写入字符串信息,需要指定的编码信息
Write string information, need to specify the encoding information
(继承自 DeviceCommunication。)
公共方法Write(Byte, UInt16, Byte)
写入原始的byte数组数据到指定的地址,返回是否写入成功,,需要指定数据块地址,偏移地址,主要针对08, 10, 12的数据块,注意起始的起始为1
Write the original byte array data to the specified address, and return whether the writing is successful. You need to specify the data block address and offset address, which are mainly for the data blocks of 08, 10, and 12. Note that the start of the start is 1.
公共方法代码示例Write(String, String, Int32, Encoding)
写入指定长度的字符串信息,如果超出,就截断字符串,如果长度不足,那就补0操作,编码为指定的编码信息
Write string information of the specified length. If it exceeds the value, the string is truncated. If the length is not enough, then the operation is complemented with 0 , you should specified the encoding information
(继承自 DeviceCommunication。)
公共方法代码示例WriteT(T)
写入支持Hsl特性的数据,返回是否写入成功,该特性为HslDeviceAddressAttribute,详细参考api文档说明
Write data that supports the Hsl attribute, and return whether the write was successful. The attribute is HslDeviceAddressAttribute, please refer to the api documentation for details.
(继承自 DeviceCommunication。)
公共方法WriteAsync(String, Boolean)
异步批量写入Boolean数组数据,返回是否成功
Asynchronously batch write Boolean array data, return success
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, Double)
异步写入double数据,返回是否成功
Asynchronously write double data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, Double)
异步写入double数组,返回是否成功
Asynchronously write double array, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, Int16)
异步写入short数据,返回是否成功
Asynchronously write short data, returns whether success
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, Int16)
异步写入short数组,返回是否成功
Asynchronously write short array, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, Int32)
异步写入int数据,返回是否成功
Asynchronously write int data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, Int32)
异步写入int[]数组,返回是否成功
Asynchronously write int array, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, Int64)
异步写入long数据,返回是否成功
Asynchronously write long data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, Int64)
异步写入long数组,返回是否成功
Asynchronously write long array, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, Single)
异步写入float数据,返回是否成功
Asynchronously write float data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, Single)
异步写入float数组,返回是否成功
Asynchronously write float array, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, String)
异步写入字符串信息,编码为ASCII
Asynchronously write string information, encoded as ASCII
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, UInt16)
异步写入ushort数据,返回是否成功
Asynchronously write ushort data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, UInt16)
异步写入ushort数组,返回是否成功
Asynchronously write ushort array, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, UInt32)
异步写入uint数据,返回是否成功
Asynchronously write uint data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, UInt32)
异步写入uint[]数组,返回是否成功
Asynchronously write uint array, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, UInt64)
异步写入ulong数据,返回是否成功
Asynchronously write ulong data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, UInt64)
异步写入ulong数组,返回是否成功
Asynchronously write ulong array, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法WriteAsync(String, Boolean)
批量写入Boolean数组数据,返回是否写入成功,需要指定起始地址,地址示例:M1,I1,Q1,共计3个区的数据,注意地址的起始为1
Write Boolean array data in batches. If the write success is returned, you need to specify the starting address. Example address: M1, I1, Q1, a total of 3 areas of data. Note that the starting address is 1.
(重写 DeviceCommunicationWriteAsync(String, Boolean).)
公共方法WriteAsync(String, Byte)
写入原始的byte数组数据到指定的地址,返回是否写入成功,地址示例:D1,AI1,AQ1,共计3个区的数据,注意起始的起始为1
Write the original byte array data to the specified address, and return whether the write was successful. Example addresses: D1, AI1, AQ1, a total of 3 areas of data. Note that the start of the address is 1.
(重写 DeviceCommunicationWriteAsync(String, Byte).)
公共方法WriteAsync(String, String, Int32)
异步写入指定长度的字符串信息,如果超出,就截断字符串,如果长度不足,那就补0操作,编码为ASCII
Asynchronously write string information of the specified length. If it exceeds the value, the string is truncated. If the length is not enough, it is filled with 0 and the encoding is ASCII.
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, String, Encoding)
异步写入字符串信息,需要指定的编码信息
Asynchronously write string information, need to specify the encoding information
(继承自 DeviceCommunication。)
公共方法WriteAsync(Byte, UInt16, Byte)
写入原始的byte数组数据到指定的地址,返回是否写入成功,,需要指定数据块地址,偏移地址,主要针对08, 10, 12的数据块,注意起始的起始为1
Write the original byte array data to the specified address, and return whether the writing is successful. You need to specify the data block address and offset address, which are mainly for the data blocks of 08, 10, and 12. Note that the start of the start is 1.
公共方法WriteAsync(String, String, Int32, Encoding)
异步写入指定长度的字符串信息,如果超出,就截断字符串,如果长度不足,那就补0操作,编码为指定的编码信息
Asynchronously write string information of the specified length. If it exceeds the value, the string is truncated. If the length is not enough, then the operation is complemented with 0 , you should specified the encoding information
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsyncT(T)
异步写入支持Hsl特性的数据,返回是否写入成功,该特性为HslDeviceAddressAttribute,详细参考api文档说明
Asynchronously write data that supports the Hsl attribute, and return whether the write was successful. The attribute is HslDeviceAddressAttribute, please refer to the api documentation for details.
(继承自 DeviceCommunication。)
公共方法WriteBool
批量写入Boolean数组数据,返回是否写入成功,需要指定数据块地址,偏移地址,主要针对70, 72, 76的数据块,注意起始的起始为1
公共方法WriteBoolAsync
批量写入Boolean数组数据,返回是否写入成功,需要指定数据块地址,偏移地址,主要针对70, 72, 76的数据块,注意起始的起始为1
公共方法代码示例WriteCustomerT
写入自定义类型的数据,该类型必须继承自IDataTransfer接口
Write data of a custom type, which must inherit from the IDataTransfer interface
(继承自 DeviceCommunication。)
公共方法代码示例WriteCustomerAsyncT
写入自定义类型的数据,该类型必须继承自IDataTransfer接口
Write data of a custom type, which must inherit from the IDataTransfer interface
(继承自 DeviceCommunication。)
公共方法WriteGI
写入机器人的GI信息
公共方法WriteGIAsync
写入机器人的GI信息
公共方法WriteGO
写入机器人的GO信息
公共方法WriteGOAsync
写入机器人的GO信息
公共方法WritePMCR2
写入机器人的PMCR2信息
公共方法WritePMCR2Async
写入机器人的PMCR2信息
公共方法WriteRDI
写入机器人的RDI信息
公共方法WriteRDIAsync
写入机器人的RDI信息
公共方法WriteRDO
写入机器人的RDO信息
公共方法WriteRDOAsync
写入机器人的RDO信息
公共方法WriteRJoint
写入机器人的Joint信息
公共方法WriteRJointAsync
写入机器人的Joint信息
公共方法WriteRXyzwpr
写入机器人的Rxyzwpr信息,谨慎调用,
公共方法WriteRXyzwprAsync
写入机器人的Rxyzwpr信息,谨慎调用,
公共方法WriteSDI
写入机器人的SDI信息
Write the SDI information of the robot
公共方法WriteSDIAsync
写入机器人的SDI信息
Write the SDI information of the robot
公共方法WriteSDO
写入机器人的SDO信息
Write the SDO information of the robot
公共方法WriteSDOAsync
写入机器人的SDO信息
Write the SDO information of the robot
公共方法WriteSO
写入机器人的SO信息
公共方法WriteSOAsync
写入机器人的SO信息
公共方法WriteUO
写入机器人的UO信息
公共方法WriteUOAsync
写入机器人的UO信息
Top
字段
  名称说明
受保护的字段LogMsgFormatBinary
设置日志记录报文是否二进制,如果为False,那就使用ASCII码
Set whether the log message is binary, if it is False, then use ASCII code
(继承自 BinaryCommunication。)
Top
扩展方法
  名称说明
公共扩展器方法ToJsonString
获取当前对象的JSON格式表示的字符串。
Gets the string represented by the JSON format of the current object.
(由 HslExtension 定义。)
Top
备注
注意:如果再读取机器人的数据时,发生了GB2312编码获取的异常的时候(通常是基于.net core的项目会报错),使用如下的方法进行解决
1. 从nuget安装组件 System.Text.Encoding.CodePages
2. 刚进入系统的时候,调用一行代码: System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
Note: If you read the data of the robot again, when an exception occurs in the GB2312 code acquisition (usually a project based on .net core will report an error), use the following method to solve it.
1. Install the component System.Text.Encoding.CodePages from nuget
2. When you first enter the system, call a line of code: System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
示例
我们看看实际的地址支持的情况,如果使用绝对地址进行访问的话,支持的地址格式如下:
地址名称地址代号示例地址进制字操作位操作备注
数据寄存器DD100,D20010×
R寄存器RR1-R1010×R1-R5为int类型,R6-R10为float类型,本质还是数据寄存器
输入寄存器AIAI100,AI20010×
输出寄存器AQAQ100,Q20010×
输入继电器II100,I20010×
输出继电器QQ100,Q20010×
中间继电器MM100,M20010×
我们先来看看简单的情况
简单的读取
// 实例化
private FanucInterfaceNet fanuc = new FanucInterfaceNet( "127.0.0.1" );

public void Sample1( )
{
    // 简单的读取数据
    OperateResult<FanucData> read = fanuc.ReadFanucData( );
    if (read.IsSuccess)
    {
        // 所有的数据就都在read.Content里了,可以获取到目前支持的几乎所有的数据。
    }

    // 剩下的IO数据呢?地址都是从1开始的
    OperateResult<bool[]> sdo = fanuc.ReadSDO( 1, 100 );
    if (sdo.IsSuccess)
    {
        // 这时就获取到了100长度的bool数组
    }

    // 其他的SDI,SDR,SO,UI等等,都是类似,详细参考demo
}
读取fanuc部分数据
属性读取
            // 跳过实例化的操作,现在来看看一种特殊的读取
            // 因为FanucData的数据对象很多,假设我不需要所有的属性,我只想读单个的属性,比如CurrentPose属性
            OperateResult<string> readCurrentPose = fanuc.ReadString( "CurrentPose" );
            if (readCurrentPose.IsSuccess)
            {
                // content是json的对象信息
//  "Xyzwpr": [
//    360.0015,
//    -0.00723832054,
//    279.9837,
//    177.4754,
//    -89.99734,
//    2.52343941,
//    0.0,
//    0.0,
//    0.0
//  ],
//  "Config": [
//    "N",
//    "R",
//    "U",
//    "T",
//    "0",
//    "0",
//    "0"
//  ],
//  "Joint": [
//    -0.0011520097,
//    0.000135969414,
//    -0.00257415767,
//    -1.54076552E-05,
//    -8.724436E-05,
//    0.000132751462,
//    0.0,
//    0.0,
//    0.0
//  ],
//  "UF": 0,
//  "UT": 1,
//  "ValidC": 1,
//  "ValidJ": 1
//}
            }

            // 如果我读取属性很频繁怎么办?是不是会频繁和机器人交互?(一条完整的fanucdata大小在12k左右)
            // 下面的属性就开始起作用了,我们看下面的代码
            fanuc.FanucDataRetainTime = 100; // 单位毫秒
            for (int i = 0; i < 100; i++)
            {
                OperateResult<string> read1 = fanuc.ReadString( "CurrentPose" );  // 刷新了数据
                OperateResult<string> read2 = fanuc.ReadString( "AlarmCurrent" ); // 读缓存
                OperateResult<string> read3 = fanuc.ReadString( "FAST_CLOCK" );   // 读缓存
                OperateResult<string> read4 = fanuc.ReadString( "DUTY_TEMP" );    // 读缓存
                OperateResult<string> read5 = fanuc.ReadString( "MNUTOOL1_1" );   // 读缓存
                // ... 等等,只要在read1读取的100ms内读取属性,就是读取缓存的。过了100ms后继续读取呢?又会自动刷新缓存的,如是往复循环

                System.Threading.Thread.Sleep( 200 );
            }
最后是比较高级的任意数据读写
复杂读取
// 跳过实例化的操作,现在来看看一种更加牛逼的读取
// 我现在就想读一个数据,CurrentPose的xyzwpr的第一个数,就是上面所示的360.0015,我也不想读缓存,怎么办?
// 这时候就需要最底层的读写操作了,我们就针对寄存器地址进行读写操作了,详细看下面的示例
OperateResult<float> read = fanuc.ReadFloat( "D751" );
if (read.IsSuccess)
{
    float x = read.Content; // 就是360.0015
}

// 如果xyzwpr都读取出来
OperateResult<float[]> xyzwpr = fanuc.ReadFloat( "D751", 9 );
if (xyzwpr.IsSuccess)
{
    // xyzwpr.Content 就是 "Xyzwpr":
    //    360.0015,
    //    -0.00723832054,
    //    279.9837,
    //    177.4754,
    //    -89.99734,
    //    2.52343941,
    //    0.0,
    //    0.0,
    //    0.0
}

// 如果是joint呢?
OperateResult<float[]> joint = fanuc.ReadFloat( "D777", 9 );
if (joint.IsSuccess)
{
    // joint.Content值如下[-0.00115201,0.0001359694,-0.002574158,-1.540766E-05,-8.724436E-05,0.0001327515,0,0,0]
}

// 那么问题来了,我们怎么知道偏移地址呢?
//"Index Length    1 500 ALARM*5",                                // 1.
//"Index Length  501 100 ALM[1] 1",                               // 2.
//"Index Length  601 100 ALM[P1] 1",                              // 3.
//"Index Length  701 50 POS[15] 0.0",                             // 4.
//"Index Length  751 50 POS[15] 0.0",                             // 5.
//"Index Length  801 50 POS[G2: 15] 0.0",                         // 6.
//"Index Length  851 50 POS[G3: 0] 0.0",                          // 7.
//"Index Length  901 50 POS[G4:0] 0.0",                           // 8.
//"Index Length  951 50 POS[G5:0] 0.0",                           // 9.
//"Index Length 1001 18 PRG[1] 1",                                // 10.
//"Index Length 1019 18 PRG[M1] 1",                               // 11.
//"Index Length 1037 18 PRG[K1] 1",                               // 12.
//"Index Length 1055 18 PRG[MK1] 1",                              // 13.
//"Index Length 1073 500 PR[1] 0.0",                              // 14.
//"Index Length 1573 200 PR[G2:1] 0.0",                           // 15.
//"Index Length 1773 500 PR[G3:1] 0.0",                           // 16.
//"Index Length 2273 500 PR[G4: 1] 0.0",                          // 17.
//"Index Length 2773 500 PR[G5: 1] 0.0",                          // 18.
//"Index Length 3273 2 $FAST_CLOCK 1",                            // 19.
//"Index Length 3275 2 $TIMER[10].$TIMER_VAL 1",                  // 20.
//"Index Length 3277 2 $MOR_GRP[1].$CURRENT_ANG[1] 0",            // 21.
//"Index Length 3279 2 $DUTY_TEMP 0",                             // 22.
//"Index Length 3281 40 $TIMER[10].$COMMENT 1",                   // 23.
//"Index Length 3321 40 $TIMER[2].$COMMENT 1",                    // 24.
//"Index Length 3361 50 $MNUTOOL[1,1] 0.0",                       // 25.
//"Index Length 3411 40 $[HTTPKCL]CMDS[1] 1",                     // 26.
//"Index Length 3451 10 R[1] 1.0",                                // 27.
//"Index Length 3461 10 R[6] 0",                                  // 28.
//"Index Length 3471 250 PR[1]@1.25 0.0",                         // 29.
//"Index Length 3721 250 PR[1]@1.25 0.0",                         // 30.
//"Index Length 3971 120 PR[G2:1]@27.12 0.0",                     // 31.
//"Index Length 4091 120 DI[C1] 1",                               // 32.
//"Index Length 4211 120 DO[C1] 1",                               // 33.
//"Index Length 4331 120 RI[C1] 1",                               // 34.
//"Index Length 4451 120 RO[C1] 1",                               // 35.
//"Index Length 4571 120 UI[C1] 1",                               // 36.
//"Index Length 4691 120 UO[C1] 1",                               // 37.
//"Index Length 4811 120 SI[C1] 1",                               // 38.
//"Index Length 4931 120 SO[C1] 1",                               // 39.
//"Index Length 5051 120 WI[C1] 1",                               // 40.
//"Index Length 5171 120 WO[C1] 1",                               // 41.
//"Index Length 5291 120 WSI[C1] 1",                              // 42.
//"Index Length 5411 120 AI[C1] 1",                               // 43.
//"Index Length 5531 120 AO[C1] 1",                               // 44.
//"Index Length 5651 120 GI[C1] 1",                               // 45.
//"Index Length 5771 120 GO[C1] 1",                               // 46.
//"Index Length 5891 120 SR[1] 1",                                // 47.
//"Index Length 6011 120 SR[C1] 1",                               // 48.
//"Index Length 6131 10 R[1] 1.0",                                // 49.    DataTable2 起始位置 也即是 D6131
//"Index Length 6141 2 $TIMER[1].$TIMER_VAL 1",                   // 50.
//"Index Length 6143 2 $TIMER[2].$TIMER_VAL 1",                   // 51.
//"Index Length 6145 2 $TIMER[3].$TIMER_VAL 1",                   // 52.
//"Index Length 6147 2 $TIMER[4].$TIMER_VAL 1",                   // 53.
//"Index Length 6149 2 $TIMER[5].$TIMER_VAL 1",                   // 54.
//"Index Length 6151 2 $TIMER[6].$TIMER_VAL 1",                   // 55.
//"Index Length 6153 2 $TIMER[7].$TIMER_VAL 1",                   // 56.
//"Index Length 6155 2 $TIMER[8].$TIMER_VAL 1",                   // 57.
//"Index Length 6157 2 $TIMER[9].$TIMER_VAL 1",                   // 58.
//"Index Length 6159 2 $TIMER[10].$TIMER_VAL 1",                  // 59

// 对于POSE数据,一个POSE共计站100个字节内部的信息如下:
// [0-35]      [36-49]     [50-51]   [52-87]   [88-89]  [90-91]  [92-93]
// xyzwpr*9    config*7    validC    Joints*9  ValidJ   UF       UT

// 同理,我们也可以针对指定的地址进行写入操作   注意,防止出现意外。
OperateResult write = fanuc.Write( "D751", 123.456f );
参见