HslCommunication 一个基于傅立叶变换的一个滤波算法 非常感谢来自北京的monk网友,提供了完整的解决方法。 对指定的数据进行填充,方便的进行傅立叶计算 数据的数据类型 数据源 输出的长度 填充结果 对指定的原始数据进行滤波,并返回成功的数据值 数据源,数组的长度需要为2的n次方。 滤波值:最大值为1,不能低于0,越接近1,滤波强度越强,也可能会导致失去真实信号,为0时没有滤波效果。 滤波后的数据值 对指定的原始数据进行滤波,并返回成功的数据值 数据源,数组的长度需要为2的n次方。 滤波值:最大值为1,不能低于0,越接近1,滤波强度越强,也可能会导致失去真实信号,为0时没有滤波效果。 滤波后的数据值 对指定的原始数据进行滤波,并返回成功的数据值 数据源,数组的长度需要为2的n次方。 滤波值:最大值为1,不能低于0,越接近1,滤波强度越强,也可能会导致失去真实信号,为0时没有滤波效果。 滤波后的数据值 对指定的原始数据进行滤波,并返回成功的数据值 数据源,数组的长度需要为2的n次方。 滤波值:最大值为1,不能低于0,越接近1,滤波强度越强,也可能会导致失去真实信号,为0时没有滤波效果。 滤波后的数据值 离散傅氏变换的快速算法,处理的信号,适合单周期信号数为2的N次方个,支持变换及逆变换 快速傅立叶变换 实数部分 变换后的数组值 获取FFT变换后的显示图形,需要指定图形的相关参数 实数部分的值 图形的宽度 图形的高度 线条颜色 是否开两次根,显示的噪点信息会更新明显 等待呈现的图形 .net standrard2.0 下不支持。 快速傅立叶变换 实数部分,数组长度最好为2的n次方 虚数部分,数组长度最好为2的n次方 是否开两次根,显示的噪点信息会更新明显 变换后的数组值 快速傅立叶变换 实数部分,数组长度最好为2的n次方 虚数部分,数组长度最好为2的n次方 变换后的数组值 快速傅立叶变换 实数部分,数组长度最好为2的n次方 虚数部分,数组长度最好为2的n次方 变换后的数组值 快速傅立叶变换的逆变换 实数部分,数组长度最好为2的n次方 虚数部分,数组长度最好为2的n次方 2的多少次方 快速傅立叶变换的逆变换 实数部分,数组长度最好为2的n次方 虚数部分,数组长度最好为2的n次方 2的多少次方 一个PID的辅助类,可以设置 P,I,D 三者的值,用来模拟信号波动的时候,信号的收敛情况 实例化一个默认的对象 初始化PID的数据信息 -rando 比例的参数信息 积分的参数信息 微分的参数信息 获取或设置死区的值 获取或设置输出的上限,默认为没有设置 获取或设置输出的下限,默认为没有设置 获取或设置当前设置的值 计算Pid数据的值 计算值 Pid的模式选择 增量模式 一个连接池管理器,负责维护多个可用的连接,并且自动清理,扩容,用于快速读写服务器或是PLC时使用。
A connection pool manager is responsible for maintaining multiple available connections, and automatically cleans up, expands, and is used to quickly read and write servers or PLCs.
管理的连接类,需要支持IConnector接口 需要先实现 接口的对象,然后就可以实现真正的连接池了,理论上可以实现任意的连接对象,包括modbus连接对象,各种PLC连接对象,数据库连接对象,redis连接对象,SimplifyNet连接对象等等。下面的示例就是modbus-tcp的实现 要想真正的支持连接池访问,还需要服务器支持一个端口的多连接操作,三菱PLC的端口就不支持,如果要测试示例代码的连接池对象,需要使用本组件的来创建服务器对象 下面举例实现一个modbus的连接池对象,先实现接口化的操作 然后就可以实现真正的连接池了
实例化一个连接池对象,需要指定如果创建新实例的方法
To instantiate a connection pool object, you need to specify how to create a new instance
创建连接对象的委托
获取一个可用的连接对象,如果已经达到上限,就进行阻塞等待。当使用完连接对象的时候,需要调用方法归还连接对象。
Get an available connection object, if the upper limit has been reached, block waiting. When the connection object is used up, you need to call the method to return the connection object.
可用的连接对象
使用完之后需要通知连接池的管理器,本方法调用之前需要获取到连接对象信息。
After using it, you need to notify the manager of the connection pool, and you need to get the connection object information before calling this method.
连接对象
将目前连接中的所有对象进行关闭,然后移除队列。
Close all objects in the current connection, and then remove the queue.
获取或设置最大的连接数,当实际的连接数超过最大的连接数的时候,就会进行阻塞,直到有新的连接对象为止。
Get or set the maximum number of connections. When the actual number of connections exceeds the maximum number of connections, it will block until there is a new connection object.
获取或设置当前连接过期的时间,单位秒,默认30秒,也就是说,当前的连接在设置的时间段内未被使用,就进行释放连接,减少内存消耗。
Get or set the expiration time of the current connection, in seconds, the default is 30 seconds, that is, if the current connection is not used within the set time period, the connection will be released to reduce memory consumption.
当前已经使用的连接数,会根据使用的频繁程度进行动态的变化。
The number of currently used connections will dynamically change according to the frequency of use.
当前已经使用的连接数的峰值,可以用来衡量当前系统的适用的连接池上限。
The current peak value of the number of connections used can be used to measure the upper limit of the applicable connection pool of the current system.
连接池的接口,连接池的管理对象必须实现此接口 为了使用完整的连接池功能,需要先实现本接口,然后配合来使用 下面举例实现一个modbus的连接池对象 指示当前的连接是否在使用用 唯一的GUID码 最新一次使用的时间 打开连接 关闭并释放 系统的基本授权类 商业授权则返回true,否则返回false 是否成功进行商业授权 设置本组件系统的授权信息,如果激活失败,只能使用24小时,24小时后所有的网络通信不会成功
Set the authorization information of this component system. If the activation fails, it can only be used for 8 hours. All network communication will not succeed after 8 hours
授权码
一个高效的数组管理类,用于高效控制固定长度的数组实现
An efficient array management class for efficient control of fixed-length array implementations
泛型类型
实例化一个对象,需要指定数组的最大数据对象 数据的个数 是否从最后一个数添加 获取数组的个数
Get the number of arrays
新增一个数据值
Add a data value
数据值
批量的增加数据
Increase data in batches
批量数据信息
获取数据的数组值
Get array value of data
数组值
获取或设置指定索引的位置的数据
Gets or sets the data at the specified index
索引位置 数据值
用来测试版软件授权的窗口 实例化授权注册窗口 提示关于怎么获取注册码的信息 加密的方法 Required designer variable. Clean up any resources being used. true if managed resources should be disposed; otherwise, false. Required method for Designer support - do not modify the contents of this method with the code editor. 一个用于消息弹出显示的类 新增一个显示的弹出窗口 重置所有弹出窗口的位置 实例化一个窗口信息弹出的对象 实例化一个窗口信息弹出的对象 需要显示的文本 实例化一个窗口信息弹出的对象 需要显示的文本 文本的颜色 实例化一个窗口信息弹出的对象 需要显示的文本 文本的颜色 指定窗口多少时间后消失,单位毫秒 窗体的位置进行向上调整 窗体的位置进行向上调整 Required designer variable. Clean up any resources being used. true if managed resources should be disposed; otherwise, false. Required method for Designer support - do not modify the contents of this method with the code editor. 一个正方形图形选择窗口,可以获取指定的分辨率 实例化一个对象 是否有图片存在 已选择的图形大小 在控件显示的图片的大小,按照比例缩放以后 增加一张图片的路径 获取指定大小的图片,该图片将会按照比例压缩 图片的横向分辨率 缩放后的图形 Required designer variable. Clean up any resources being used. true if managed resources should be disposed; otherwise, false. Required method for Designer support - do not modify the contents of this method with the code editor. 作者的技术支持的窗口界面 实例化一个默认的界面 Required designer variable. Clean up any resources being used. true if managed resources should be disposed; otherwise, false. Required method for Designer support - do not modify the contents of this method with the code editor. 系统框架支持的一些常用的动画特效 最小的时间片段 调整控件背景色,采用了线性的颜色插补方式,实现了控件的背景色渐变,需要指定控件,颜色,以及渐变的时间 控件 设置的颜色 时间 软件授权类 实例化一个软件授权类 是否使用管理员模式 注册码描述文本 最终的注册秘钥信息,注意是只读的。 时间:2018年9月1日 23:01:54,来自 洛阳-LYG 的建议,公开了本属性信息,只读。 是否正式发行版,是的话就取消授权 指示是否加载过文件信息 指示系统是否处于试用运行 获取本机的机器码 机器码字符串 获取需要保存的数据内容 实际保存的内容 从字符串加载数据 文件存储的数据 使用特殊加密算法加密数据 使用特殊解密算法解密数据 检查该注册码是否是正确的注册码 注册码信息 数据加密的方法,必须用户指定 是否注册成功 检测授权是否成功 数据加密的方法,必须用户指定 是否成功授权 获取本计算机唯一的机器码 字符串形式的机器码 获得硬盘信息 硬盘序号 硬盘信息 by sunmast for everyone thanks lu0 for his great works 在Windows Array8/ME中,S.M.A.R.T并不缺省安装,请将SMARTVSD.VXD拷贝到%SYSTEM%\IOSUBSYS目录下。 在Windows 2000/2003下,需要Administrators组的权限。 AtapiDevice.GetHddInfo() 执行打开/建立资源的功能。 指定要打开的设备或文件的名称。 Win32 常量,用于控制对设备的读访问、写访问或读/写访问的常数。内容如下表:

名称 说明 GENERIC_READ指定对设备进行读取访问。 GENERIC_WRITE指定对设备进行写访问。 0如果值为零,则表示只允许获取与一个设备有关的信息。

指定打开设备时的文件共享模式 Win32 常量,指定操作系统打开文件的方式。内容如下表:

名称说明 CREATE_NEW 指定操作系统应创建新文件。如果文件存在,则抛出 异常。 CREATE_ALWAYS指定操作系统应创建新文件。如果文件已存在,它将被改写。

使用函数打开的设备的句柄。 本函数可以执行打开或建立文件、文件流、目录/文件夹、物理磁盘、卷、系统控制的缓冲区、磁带设备、 通信资源、邮件系统和命名管道。
关闭一个指定的指针对象指向的设备。。 要关闭的句柄 对象。 成功返回 0 ,不成功返回非零值。 对设备执行指定的操作。 要执行操作的设备句柄。 Win32 API 常数,输入的是以 FSCTL_ 为前缀的常数,定义在 WinIoCtl.h 文件内,执行此重载方法必须输入 SMART_GET_VERSION当参数为指针时,默认的输入值是 0输入缓冲区的字节数量。 一个 GetVersionOutParams ,表示执行函数后输出的设备检查。 输出缓冲区的字节数量。 实际装载到输出缓冲区的字节数量。 同步操作控制,一般不使用,默认值为 0非零表示成功,零表示失败。 对设备执行指定的操作。 要执行操作的设备句柄。 Win32 API 常数,输入的是以 FSCTL_ 为前缀的常数,定义在 WinIoCtl.h 文件内,执行此重载方法必须输入 SMART_SEND_DRIVE_COMMANDSMART_RCV_DRIVE_DATA一个 SendCmdInParams 结构,它保存向系统发送的查询要求具体命令的数据结构。 输入缓冲区的字节数量。 一个 SendCmdOutParams 结构,它保存系统根据命令返回的设备相信信息二进制数据。 输出缓冲区的字节数量。 实际装载到输出缓冲区的字节数量。 同步操作控制,一般不使用,默认值为 0非零表示成功,零表示失败。 硬盘信息 型号 固件版本 序列号 容量,以M为单位 支持字符串信息加载存储的接口,定义了几个通用的方法 获取需要保存的数据,需要重写实现 需要存储的信息 从字符串加载数据,需要重写实现 字符串数据 不使用解密方法从文件读取数据 不使用加密方法保存数据到文件 文件路径的存储 文件存储功能的基类,包含了文件存储路径,存储方法等 需要继承才能实现你想存储的数据,比较经典的例子就是存储你的应用程序的配置信息,通常的格式就是xml文件或是json文件。具体请看例子: 下面举例实现两个字段的普通数据存储 然后怎么调用呢? 如果你想实现加密存储,这样就不用关心被用户看到了。 如果还是担心被反编译获取数据,那么这个密钥就要来自服务器的数据,本地不做存储。 实例化一个文件存储的基类 在日志保存时的标记当前调用类的信息 使用用户自定义的解密方法从文件读取数据 用户自定义的解密方法 使用用户自定义的加密方法保存数据到文件 用户自定义的加密方法 文件存储的路径 日志记录类 一个软件基础类,提供常用的一些静态方法,比如字符串转换,字节转换的方法
A software-based class that provides some common static methods,Such as string conversion, byte conversion method
获取文件的md5码
Get the MD5 code of the file
文件的路径,既可以是完整的路径,也可以是相对的路径 -> The path to the file Md5字符串 下面举例实现获取一个文件的md5码
获取数据流的md5码
Get the MD5 code for the data stream
数据流,可以是内存流,也可以是文件流 Md5字符串 下面举例实现获取一个流的md5码
获取文本字符串信息的Md5码,编码为UTF8
Get the Md5 code of the text string information, using the utf-8 encoding
文本数据信息 Md5字符串
获取文本字符串信息的Md5码,使用指定的编码
Get the Md5 code of the text string information, using the specified encoding
文本数据信息 编码信息 Md5字符串
获取内存图片的md5码
Get the MD5 code of the memory picture
内存图片 Md5字符串 下面举例实现获取一个图像的md5码
从一个字节大小返回带单位的描述,主要是用于显示操作
Returns a description with units from a byte size, mainly for display operations
实际的大小值 最终的字符串值 比如说我们获取了文件的长度,这个长度可以来自于本地,也可以来自于数据库查询
从一个时间差返回带单位的描述,主要是用于显示操作。
Returns a description with units from a time difference, mainly for display operations.
实际的时间差 最终的字符串值 比如说我们获取了一个时间差信息
将数组格式化为显示的字符串的信息,支持所有的类型对象
Formats the array into the displayed string information, supporting all types of objects
数组的类型 数组信息 最终显示的信息
将数组格式化为显示的字符串的信息,支持所有的类型对象
Formats the array into the displayed string information, supporting all types of objects
数组的类型 数组信息 格式化的信息 最终显示的信息
将数组格式化为显示的字符串的信息,支持所有的类型对象
Formats the array into the displayed string information, supporting all types of objects
数组的类型 数组信息 最终显示的信息
将数组格式化为显示的字符串的信息,支持所有的类型对象
Formats the array into the displayed string information, supporting all types of objects
数组的类型 数组信息 格式化的信息 最终显示的信息
一个通用的数组新增个数方法,会自动判断越界情况,越界的情况下,会自动的截断或是填充
A common array of new methods, will automatically determine the cross-border situation, in the case of cross-border, will be automatically truncated or filled
数据类型 原数据 等待新增的数据 原数据的最大值
将一个数组进行扩充到指定长度,或是缩短到指定长度
Extend an array to a specified length, or shorten to a specified length or fill
数组的类型 原先数据的数据 新数组的长度 新数组长度信息
将一个数组进行扩充到偶数长度
Extend an array to even lengths
数组的类型 原先数据的数据 新数组长度信息
将指定的数据按照指定长度进行分割,例如int[10],指定长度4,就分割成int[4],int[4],int[2],然后拼接list
Divide the specified data according to the specified length, such as int [10], and specify the length of 4 to divide into int [4], int [4], int [2], and then concatenate the list
数组的类型 等待分割的数组 指定的长度信息 分割后结果内容
将整数进行有效的拆分成数组,指定每个元素的最大值
Effectively split integers into arrays, specifying the maximum value for each element
整数信息 单个的数组长度 拆分后的数组长度
判断两个字节的指定部分是否相同
Determines whether the specified portion of a two-byte is the same
第一个字节 第一个字节的起始位置 第二个字节 第二个字节的起始位置 校验的长度 返回是否相等
判断两个字节的指定部分是否相同
Determines whether the specified portion of a two-byte is the same
第一个字节 第二个字节 返回是否相等
判断两个数据的令牌是否相等
Determines whether the tokens of two data are equal
字节数据 GUID数据 返回是否相等
判断两个数据的令牌是否相等
Determines whether the tokens of two data are equal
第一个令牌 第二个令牌 返回是否相等
获取一个枚举类型的所有枚举值,可直接应用于组合框数据
Gets all the enumeration values of an enumeration type that can be applied directly to the combo box data
枚举的类型值 枚举值数组
从字符串的枚举值数据转换成真实的枚举值数据
Convert enumeration value data from strings to real enumeration value data
枚举的类型值 枚举的字符串的数据值 真实的枚举值
一个泛型方法,提供json对象的数据读取
A generic method that provides data read for a JSON object
读取的泛型 json对象 值名称 默认值 值对象
一个泛型方法,提供json对象的数据写入
A generic method that provides data writing to a JSON object
写入的泛型 json对象 值名称 值数据
显示一个完整的错误信息
Displays a complete error message
异常对象 调用本方法可以显示一个异常的详细信息
显示一个完整的错误信息,和额外的字符串描述信息
Displays a complete error message, and additional string description information
额外的描述信息 调用本方法可以显示一个异常的详细信息 异常对象
获取一个异常的完整错误信息
Gets the complete error message for an exception
异常对象 完整的字符串数据 获取异常的完整信息 ex不能为空
获取一个异常的完整错误信息,和额外的字符串描述信息
Gets the complete error message for an exception, and additional string description information
额外的信息 异常对象 完整的字符串数据
字节数据转化成16进制表示的字符串
Byte data into a string of 16 binary representations
字节数组 返回的字符串
字节数据转化成16进制表示的字符串
Byte data into a string of 16 binary representations
字节数组 分割符 返回的字符串
字节数据转化成16进制表示的字符串
Byte data into a string of 16 binary representations
字节数组 分割符 每隔指定数量的时候进行换行 返回的字符串
字符串数据转化成16进制表示的字符串
String data into a string of 16 binary representations
输入的字符串数据 返回的字符串
将16进制的字符串转化成Byte数据,将检测每2个字符转化,也就是说,中间可以是任意字符
Converts a 16-character string into byte data, which will detect every 2 characters converted, that is, the middle can be any character
十六进制的字符串,中间可以是任意的分隔符 转换后的字节数组 参数举例:AA 01 34 A8
将byte数组按照双字节进行反转,如果为单数的情况,则自动补齐
Reverses the byte array by double byte, or if the singular is the case, automatically
输入的字节信息 反转后的数据
将字节数组显示为ASCII格式的字符串,当遇到0x20以下的不可见字符时,使用十六进制的数据显示
Display the byte array as a string in ASCII format, and use hexadecimal data display when encountering invisible characters below 0x20
字节数组信息 ASCII格式的字符串信息
将原始的byte数组转换成ascii格式的byte数组
Converts the original byte array to an ASCII-formatted byte array
等待转换的byte数组 转换后的数组
将ascii格式的byte数组转换成原始的byte数组
Converts an ASCII-formatted byte array to the original byte array
等待转换的byte数组 转换后的数组
从字节构建一个ASCII格式的数据内容
Build an ASCII-formatted data content from bytes
数据 ASCII格式的字节数组
从short构建一个ASCII格式的数据内容
Constructing an ASCII-formatted data content from a short
数据 ASCII格式的字节数组
从ushort构建一个ASCII格式的数据内容
Constructing an ASCII-formatted data content from ushort
数据 ASCII格式的字节数组
从uint构建一个ASCII格式的数据内容
Constructing an ASCII-formatted data content from uint
数据 ASCII格式的字节数组
从字节数组构建一个ASCII格式的数据内容
Byte array to construct an ASCII format data content
字节信息 ASCII格式的地址
获取byte数据类型的第offset位,是否为True
Gets the index bit of the byte data type, whether it is True
byte数值 索引位置 结果
设置取byte数据类型的第offset位,是否为True
Set the offset bit of the byte data type, whether it is True
byte数值 索引位置 写入的结果值 结果
将bool数组转换到byte数组
Converting a bool array to a byte array
bool数组 转换后的字节数组
从Byte数组中提取位数组,length代表位数
Extracts a bit array from a byte array, length represents the number of digits
原先的字节数组 想要转换的长度,如果超出自动会缩小到数组最大长度 转换后的bool数组
从Byte数组中提取所有的位数组
Extracts a bit array from a byte array, length represents the number of digits
原先的字节数组 转换后的bool数组
将一个数组的前后移除指定位数,返回新的一个数组
Removes a array before and after the specified number of bits, returning a new array
数组 前面的位数 后面的位数 新的数组
将一个数组的前面指定位数移除,返回新的一个数组
Removes the preceding specified number of bits in a array, returning a new array
数组 等待移除的长度 新的数组
将一个数组的后面指定位数移除,返回新的一个数组
Removes the specified number of digits after a array, returning a new array
数组 等待移除的长度 新的数组
获取到数组里面的中间指定长度的数组
Get an array of the specified length in the array
数组 起始索引 数据的长度 新的数组值
选择一个数组的前面的几个数据信息
Select the begin few items of data information of a array
数组 数据的长度 新的数组
选择一个数组的后面的几个数据信息
Select the last few items of data information of a array
数组 数据的长度 新的数组信息
拼接任意个泛型数组为一个总的泛型数组对象,采用深度拷贝实现。
Splicing any number of generic arrays into a total generic array object is implemented using deep copy.
数组的类型信息 任意个长度的数组 拼接之后的最终的结果对象
将一个的数组和多个 类型的对象整合成一个数组
Combine an array of and multiple objects of type into an array
第一个数组对象 字符串数组信息 总的数组对象
将两个的数组和多个 类型的对象整合成一个数组
Combine two arrays of and multiple objects of type into one array
第一个数据对象 第二个数据对象 字符串数组信息 总的数组对象
将两个的数组和多个 类型的对象整合成一个数组
Combine two arrays of and multiple objects of type into one array
第一个数据对象 第二个数据对象 第三个数据对象 字符串数组信息 总的数组对象
设置或获取系统框架的版本号
Set or get the version number of the system framework
当你要显示本组件框架的版本号的时候,就可以用这个属性来显示
使用序列化反序列化深度克隆一个对象,该对象需要支持序列化特性
Cloning an object with serialization deserialization depth that requires support for serialization attributes
源对象,支持序列化 新的一个实例化的对象 参数必须实现序列化的特性
获取一串唯一的随机字符串,长度为20,由Guid码和4位数的随机数组成,保证字符串的唯一性
Gets a string of unique random strings with a length of 20, consisting of a GUID code and a 4-digit random number to guarantee the uniqueness of the string
随机字符串数据
一个线程安全的缓存数据块,支持批量动态修改,添加,并获取快照
A thread-safe cache data block that supports batch dynamic modification, addition, and snapshot acquisition
这个类可以实现什么功能呢,就是你有一个大的数组,作为你的应用程序的中间数据池,允许你往byte[]数组里存放指定长度的子byte[]数组,也允许从里面拿数据, 这些操作都是线程安全的,当然,本类扩展了一些额外的方法支持,也可以直接赋值或获取基本的数据类型对象。 此处举例一些数据的读写说明,可以此处的数据示例。
使用默认的大小初始化缓存空间
Initialize cache space with default size
使用指定的容量初始化缓存数据块
Initialize the cache data block with the specified capacity
初始化的容量
设置指定的位置bool值,如果超出,则丢弃数据,该位置是指按照位为单位排序的
Set the bool value at the specified position, if it is exceeded, the data is discarded, the position refers to sorting in units of bits
bool值 目标存储的索引
设置指定的位置的bool数组,如果超出,则丢弃数据,该位置是指按照位为单位排序的
Set the bool array at the specified position, if it is exceeded, the data is discarded, the position refers to sorting in units of bits
bool数组值 目标存储的索引
获取指定的位置的bool值,如果超出,则引发异常
Get the bool value at the specified position, if it exceeds, an exception is thrown
目标存储的索引 获取索引位置的bool数据值
获取指定位置的bool数组值,如果超过,则引发异常
Get the bool array value at the specified position, if it exceeds, an exception is thrown
目标存储的索引 读取的数组长度 bool数组值
设置指定的位置的数据块,如果超出,则丢弃数据
Set the data block at the specified position, if it is exceeded, the data is discarded
数据块信息 目标存储的索引
设置指定的位置的数据块,如果超出,则丢弃数据 Set the data block at the specified position, if it is exceeded, the data is discarded 数据块信息 目标存储的索引 准备拷贝的数据长度 设置指定的位置的数据块,如果超出,则丢弃数据
Set the data block at the specified position, if it is exceeded, the data is discarded
数据块信息 Data中的起始位置 目标存储的索引 准备拷贝的数据长度
获取内存指定长度的数据信息
Get data information of specified length in memory
起始位置 数组长度 返回实际的数据信息
获取内存所有的数据信息
Get all data information in memory
实际的数据信息
设置byte类型的数据到缓存区
Set byte type data to the cache area
byte数值 索引位置
设置short数组的数据到缓存区
Set short array data to the cache area
short数组 索引位置
设置short类型的数据到缓存区
Set short type data to the cache area
short数值 索引位置
设置ushort数组的数据到缓存区
Set ushort array data to the cache area
ushort数组 索引位置
设置ushort类型的数据到缓存区
Set ushort type data to the cache area
ushort数值 索引位置
设置int数组的数据到缓存区
Set int array data to the cache area
int数组 索引位置
设置int类型的数据到缓存区
Set int type data to the cache area
int数值 索引位置
设置uint数组的数据到缓存区
Set uint array data to the cache area
uint数组 索引位置
设置uint类型的数据到缓存区
Set uint byte data to the cache area
uint数值 索引位置
设置float数组的数据到缓存区
Set float array data to the cache area
float数组 索引位置
设置float类型的数据到缓存区
Set float type data to the cache area
float数值 索引位置
设置long数组的数据到缓存区
Set long array data to the cache area
long数组 索引位置
设置long类型的数据到缓存区
Set long type data to the cache area
long数值 索引位置
设置ulong数组的数据到缓存区
Set long array data to the cache area
ulong数组 索引位置
设置ulong类型的数据到缓存区
Set ulong byte data to the cache area
ulong数值 索引位置
设置double数组的数据到缓存区
Set double array data to the cache area
double数组 索引位置
设置double类型的数据到缓存区
Set double type data to the cache area
double数值 索引位置
获取byte类型的数据
Get byte data
索引位置 byte数值
获取short类型的数组到缓存区
Get short type array to cache
索引位置 数组长度 short数组
获取short类型的数据到缓存区
Get short data to the cache
索引位置 short数据
获取ushort类型的数组到缓存区
Get ushort type array to cache
索引位置 数组长度 ushort数组
获取ushort类型的数据到缓存区
Get ushort type data to cache
索引位置 ushort数据
获取int类型的数组到缓存区
Get int type array to cache
索引位置 数组长度 int数组
获取int类型的数据到缓存区
Get int type data to cache
索引位置 int数据
获取uint类型的数组到缓存区
Get uint type array to cache
索引位置 数组长度 uint数组
获取uint类型的数据到缓存区
Get uint type data to cache
索引位置 uint数据
获取float类型的数组到缓存区
Get float type array to cache
索引位置 数组长度 float数组
获取float类型的数据到缓存区
Get float type data to cache
索引位置 float数据
获取long类型的数组到缓存区
Get long type array to cache
索引位置 数组长度 long数组
获取long类型的数据到缓存区
Get long type data to cache
索引位置 long数据
获取ulong类型的数组到缓存区
Get ulong type array to cache
索引位置 数组长度 ulong数组
获取ulong类型的数据到缓存区
Get ulong type data to cache
索引位置 ulong数据
获取double类型的数组到缓存区
Get double type array to cache
索引位置 数组长度 double数组
获取double类型的数据到缓存区
Get double type data to cache
索引位置 double数据
读取自定义类型的数据,需要规定解析规则
Read custom types of data, need to specify the parsing rules
类型名称 起始索引 自定义的数据类型
写入自定义类型的数据到缓存中去,需要规定生成字节的方法
Write custom type data to the cache, need to specify the method of generating bytes
自定义类型 实例对象 起始地址
获取或设置当前的bool操作是否按照字节反转
Gets or sets whether the current bool operation is reversed by bytes
释放当前的对象 内存队列的基类 字节数据流 数据的长度 数据数组变动时的数据锁 用于从保存的数据对象初始化的 获取原本的数据字节 字节数组 一个内存队列缓存的类,数据类型为Int64 数据的本身面貌 实例化一个数据对象 用于从保存的数据对象初始化的 线程安全的添加数据 一个内存队列缓存的类,数据类型为Int32 数据的本身面貌 实例化一个数据对象 用于从保存的数据对象初始化的 线程安全的添加数据 安全的获取数组队列 一个自定义的支持序列化反序列化的异常类,具体用法参照第四版《CLR Via C#》P414 泛型异常 用于反序列化的 消息 实例化一个异常对象 消息 内部异常类 实例化一个异常对象 异常消息 消息 内部异常类 获取存储对象的序列化数据 序列化的信息 流的上下文 获取描述当前异常的消息 确定指定的object是否等于当前的object 异常对象 是否一致 异常消息基类 软件的邮箱类,用于发送邮箱数据 如果您想实现自己的邮件发送中心,就可以去对应的邮件服务器注册,如果是想快速实现邮件的发送,本系统提供了2个静态的已经注册好了的邮箱发送器。 以下的代码演示了通过静态的发送对象来发送邮件,包含了发送普通的邮件,和发送html邮件。 系统连续发送失败的次数,为了不影响系统,连续三次失败就禁止发送 系统提供一个默认的163邮箱发送账号,只要更改接收地址即可发送服务,可能会被拦截 系统提供一个默认的QQ邮箱发送账号,只要更改接收地址即可发送服务,发送成功概率比较高 实例化一个邮箱发送类,需要指定初始化信息 初始化的方法 发送地址,应该和账户匹配 邮件接收地址 初始化的方法比较复杂,需要参照示例代码。 系统的邮件发送客户端 发送邮件的地址 邮件发送的地址 发生BUG至邮件地址,需要提前指定发送地址,否则失败 异常的BUG,同样试用兼容类型 是否发送成功,内容不正确会被视为垃圾邮件 发送邮件至地址,需要提前指定发送地址,否则失败 邮件主题 邮件内容 是否发送成功,内容不正确会被视为垃圾邮件 发送邮件至地址,需要提前指定发送地址,否则失败 邮件主题 邮件内容 是否是html格式化文本 是否发送成功,内容不正确会被视为垃圾邮件 发生BUG至邮件地址,需要提前指定发送地址,否则失败 异常的BUG,同样试用兼容类型 额外信息 是否发送成功,内容不正确会被视为垃圾邮件 发送邮件的方法,需要指定接收地址,主题及内容 接收地址 邮件主题 邮件内容 是否发送成功,内容不正确会被视为垃圾邮件 发送邮件的方法,默认发送别名,优先级,是否HTML 接收地址 邮件主题 邮件内容 是否是html格式的内容 是否发送成功,内容不正确会被视为垃圾邮件 发送邮件的方法,需要提供完整的参数信息 发送地址 发送别名 接收地址 邮件主题 邮件内容 优先级 邮件内容是否是HTML语言 发生是否成功,内容不正确会被视为垃圾邮件 一个简单通用的消息队列 类型 实例化一个对象 所有临时存储的数据 临时消息存储的最大条数,必须大于10 获取最新添加进去的数据 将集合进行锁定 新增一条数据 获取存储字符串 获取加载字符串 系统的消息类,用来发送消息,和确认消息的 发送方名称 接收方名称 发送时间 发送的消息内容 消息是否已经被查看 一个用于自动流水号生成的类,必须指定保存的文件,实时保存来确认安全 序号生成器软件,当获取序列号,清空序列号操作后,会自动的将ID号存储到本地的文件中,存储方式采用乐观并发模型实现。 此处举个例子,也是Demo程序的源代码,包含了2个按钮的示例和瞬间调用100万次的性能示例。 百万次调用的实际耗时取决于计算机的性能,不同的计算机的表现存在差异,比如作者的:i5-4590cpu,内存ddr3-8G表示差不多在800毫秒左右 实例化一个流水号生成的对象 流水号的头文本 流水号带的时间信息 流水号数字的标准长度,不够补0 流水号存储的文本位置 当前的生成序列号 流水号的文本头 时间格式默认年月日 流水号数字应该显示的长度 获取流水号的值 字符串信息 加载流水号 源字符串信息 清除流水号计数,进行重新计数 获取流水号数据 新增计数后的信息 获取流水号数据 指定一个新的文本头 带头信息的计数后的信息 单纯的获取数字形式的流水号 新增计数后的信息 高性能存储块 一个简单的不持久化的序号自增类,采用线程安全实现,并允许指定最大数字,将包含该最大值,到达后清空从指定数开始
A simple non-persistent serial number auto-increment class, which is implemented with thread safety, and allows the maximum number to be specified, which will contain the maximum number, and will be cleared from the specified number upon arrival.
先来看看一个简单的应用的 再来看看一些复杂的情况 其他一些特殊的设定
实例化一个自增信息的对象,包括最大值,初始值,增量值
Instantiate an object with incremental information, including the maximum value and initial value, IncreaseTick
数据的最大值,必须指定 数据的起始值,默认为0 每次的增量值
获取自增信息,获得数据之后,下一次获取将会自增,如果自增后大于最大值,则会重置为最小值,如果小于最小值,则会重置为最大值。
Get the auto-increment information. After getting the data, the next acquisition will auto-increase. If the auto-increment is greater than the maximum value, it will reset to the minimum value. If the auto-increment is smaller than the minimum value, it will reset to the maximum value.
计数自增后的值
重置当前序号的最大值,最大值应该大于初始值,如果当前值大于最大值,则当前值被重置为最大值
Reset the maximum value of the current serial number. The maximum value should be greater than the initial value. If the current value is greater than the maximum value, the current value is reset to the maximum value.
最大值
重置当前序号的初始值,需要小于最大值,如果当前值小于初始值,则当前值被重置为初始值。
To reset the initial value of the current serial number, it must be less than the maximum value. If the current value is less than the initial value, the current value is reset to the initial value.
初始值
将当前的值重置为初始值。
Reset the current value to the initial value.
将当前的值重置为指定值,该值不能大于max,如果大于max值,就会自动设置为max
Reset the current value to the specified value. The value cannot be greater than max. If it is greater than max, it will be automatically set to max.
指定的数据值
增加的单元,如果设置为0,就是不增加。如果为小于0,那就是减少,会变成负数的可能。
Increased units, if set to 0, do not increase. If it is less than 0, it is a decrease and it may become a negative number.
获取当前的计数器的最大的设置值。
Get the maximum setting value of the current counter.
图形的方向 向上 向下 向左 向右 包含整型和字符串描述的数据类型 数量 描述 图形的呈现方式 直方图 饼图 折线图 静态类,包含了几个常用的画图方法,获取字符串,绘制小三角等 获取一个直方图 数据数组 宽度 高度 刻度划分等级 线条颜色 计算绘图时的相对偏移值 0-100分的最大值,就是指准备绘制的最大值 0-100分的最小值,就是指准备绘制的最小值 实际绘图区域的高度 需要绘制数据的当前值 相对于0的位置,还需要增加上面的偏值 计算绘图时的相对偏移值 0-100分的最大值,就是指准备绘制的最大值 0-100分的最小值,就是指准备绘制的最小值 实际绘图区域的高度 需要绘制数据的当前值 相对于0的位置,还需要增加上面的偏值 绘制坐标系中的刻度线 根据指定的方向绘制一个箭头 根据数据生成一个可视化的图形 数据集合 需要绘制图形的宽度 需要绘制图形的高度 指定绘制成什么样子的图形 返回一个bitmap对象 字符串加密解密相关的自定义类 加密数据,采用对称加密的方式 待加密的数据 加密后的数据 加密数据,采用对称加密的方式 待加密的数据 密钥,长度为8,英文或数字 加密后的数据 解密过程,使用的是对称的加密 等待解密的字符 返回原密码,如果解密失败,返回‘解密失败’ 解密过程,使用的是对称的加密 等待解密的字符 密钥,长度为8,英文或数字 返回原密码,如果解密失败,返回‘解密失败’ 数据库操作的相关类,包含了常用的方法,避免大量的重复代码 普通的执行SQL语句,并返回影响行数,该方法应该放到try-catch代码块中 数据库的连接字符串 sql语句,适合插入,更新,删除 返回受影响的行数 普通的执行SQL语句,并返回影响行数,该方法应该放到try-catch代码块中 数据库的连接对象 sql语句,适合插入,更新,删除 返回受影响的行数 选择数据表的执行SQL语句,并返回最终数据表,该方法应该放到try-catch代码块中 数据库的连接字符串 sql语句,选择数据表的语句 结果数据表 选择数据表的执行SQL语句,并返回最终数据表,该方法应该放到try-catch代码块中 数据库连接对象 sql语句,选择数据表的语句 结果数据表 选择指定类型数据集合执行SQL语句,并返回指定类型的数据集合,该方法应该放到try-catch代码块中 数据库的连接字符串 sql语句,选择数据表的语句 结果数据集合 选择指定类型数据集合执行SQL语句,并返回指定类型的数据集合,该方法应该放到try-catch代码块中 数据库的连接对象 sql语句,选择数据表的语句 结果数据集合 更新指定类型数据执行SQL语句,并返回指定类型的数据集合,该方法应该放到try-catch代码块中 数据库的连接字符串 sql语句,选择数据表的语句 结果数据 更新指定类型数据执行SQL语句,并返回指定类型的数据集合,该方法应该放到try-catch代码块中 数据库的连接对象 sql语句,选择数据表的语句 结果数据 用于选择聚合函数值的方法,例如Count,Average,Max,Min,Sum等最终只有一个结果值的对象 数据库的连接字符串 sql语句,选择数据表的语句 返回的int数据 用于选择聚合函数值的方法,例如Count,Average,Max,Min,Sum等最终只有一个结果值的对象 数据库的连接对象 sql语句,选择数据表的语句 返回的int数据 数据库对应类的读取接口 根据sdr对象初始化数据的方法 数据库reader对象 系统版本类,由三部分组成,包含了一个大版本,小版本,修订版,还有一个开发者维护的内部版
System version class, consisting of three parts, including a major version, minor version, revised version, and an internal version maintained by the developer
根据格式化字符串的版本号初始化,例如:1.0或1.0.0或1.0.0.0503
Initialize according to the version number of the formatted string, for example: 1.0 or 1.0.0 or 1.0.0.0503
格式化的字符串,例如:1.0或1.0.0或1.0.0.0503
根据指定的主版本,次版本,修订版来实例化一个对象
Instantiate an object based on the specified major, minor, and revision
主版本 次版本 修订版
根据指定的主版本,次版本,修订版,内部版本来实例化一个对象
Instantiate an object based on the specified major, minor, revision, and build
主版本 次版本 修订版 内部版本号
主版本 次版本 修订版 内部版本号,或者是版本号表示为年月份+内部版本的表示方式 根据格式化为支持返回的不同信息的版本号
C返回1.0.0.0
N返回1.0.0
S返回1.0
格式化信息 版本号信息
获取版本号的字符串形式,如果内部版本号为0,则显示时不携带 版本号信息 判断两个实例是否相等 版本号 是否一致 获取哈希值 哈希值 判断是否相等 第一个版本 第二个版本 是否相同 判断是否不相等 第一个版本号 第二个版本号 是否相同 判断一个版本是否大于另一个版本 第一个版本 第二个版本 是否相同 判断第一个版本是否小于第二个版本 第一个版本号 第二个版本号 是否小于 版本信息类,用于展示版本发布信息 版本的发行日期 版本的更新细节 版本号 一个负责压缩解压数据字节的类 压缩字节数据 等待被压缩的数据 压缩之后的字节数据 解压压缩后的数据 压缩后的数据 压缩前的原始字节数据 Fanuc床子的消息对象 CNC的运行状态 重置 停止 等待 启动 MSTR 设备的工作模式 手动输入 自动循环 程序编辑 ×100 连续进给 ??? 示教 ??? 机床回零 ??? 刀具信息 长度形状补偿 长度磨损补偿 半径形状补偿 半径磨损补偿 一个FANUC的机床通信类对象 根据IP及端口来实例化一个对象内容 Ip地址信息 端口号 获取或设置当前的文本的字符编码信息,如果你不清楚,可以调用方法来自动匹配。
Get or set the character encoding information of the current text. If you are not sure, you can call the method to automatically match.
主轴转速及进给倍率
Spindle speed and feedrate override
主轴转速及进给倍率
读取程序名及程序号
Read program name and program number
程序名及程序号
读取机床的语言设定信息,具体值的含义参照API文档说明
Read the language setting information of the machine tool, refer to the API documentation for the meaning of the specific values
此处举几个常用值 0: 英语 1: 日语 2: 德语 3: 法语 4: 中文繁体 6: 韩语 15: 中文简体 16: 俄语 17: 土耳其语 返回的语言代号
读取宏变量,可以用来读取刀具号
Read macro variable, can be used to read tool number
刀具号 读宏变量信息
读取宏变量,可以用来读取刀具号
Read macro variable, can be used to read tool number
宏变量地址 读取的长度信息 是否成功
写宏变量,需要指定地址及写入的数据
Write macro variable, need to specify the address and write data
地址 数据值 是否成功
根据刀具号写入长度形状补偿,刀具号为1-24
Write length shape compensation according to the tool number, the tool number is 1-24
刀具号,范围为1-24 补偿值 是否写入成功
根据刀具号写入长度磨损补偿,刀具号为1-24
Write length wear compensation according to the tool number, the tool number is 1-24
刀具号,范围为1-24 补偿值 是否写入成功
根据刀具号写入半径形状补偿,刀具号为1-24
Write radius shape compensation according to the tool number, the tool number is 1-24
刀具号,范围为1-24 补偿值 是否写入成功
根据刀具号写入半径磨损补偿,刀具号为1-24
Write radius wear compensation according to the tool number, the tool number is 1-24
刀具号,范围为1-24 补偿值 是否写入成功
读取伺服负载
Read servo load
轴负载
读取机床的坐标,包括机械坐标,绝对坐标,相对坐标
Read the coordinates of the machine tool, including mechanical coordinates, absolute coordinates, and relative coordinates
数控机床的坐标信息,包括机械坐标,绝对坐标,相对坐标
读取报警信息
Read alarm information
机床的当前的所有的报警信息
读取fanuc机床的时间,0是开机时间,1是运行时间,2是切割时间,3是循环时间,4是空闲时间,返回秒为单位的信息
Read the time of the fanuc machine tool, 0 is the boot time, 1 is the running time, 2 is the cutting time, 3 is the cycle time, 4 is the idle time, and returns the information in seconds.
读取的时间类型 秒为单位的结果
读取报警状态信息
Read alarm status information
报警状态数据
读取系统的基本信息状态,工作模式,运行状态,是否急停等等操作
Read the basic information status of the system, working mode, running status, emergency stop, etc.
结果信息数据
读取设备的程序列表
Read the program list of the device
读取结果信息
读取当前的刀具补偿信息
Read current tool compensation information
刀具数量 结果内容
读取当前的正在使用的刀具号
Read the tool number currently in use
刀具号信息
读取R数据,需要传入起始地址和结束地址,返回byte[]数据信息
To read R data, you need to pass in the start address and end address, and return byte[] data information
起始地址 结束地址 读取结果
读取工件尺寸
Read workpiece size
结果数据信息
读取当前的程序内容,只能读取程序的片段,返回程序内容。
Read the current program content, only read the program fragments, and return the program content.
程序内容
设置指定的程序号为当前的主程序,如果程序号不存在,返回错误信息
Set the specified program number as the current main program, if the program number does not exist, an error message will be returned
程序号信息 是否设置成功
启动加工程序
Start the processing program
是否启动成功
[商业授权] 将指定文件的NC加工程序,下载到数控机床里,返回是否下载成功
[Authorization] Download the NC machining program of the specified file to the CNC machine tool, and return whether the download is successful
程序文件的内容必须%开始,%结束,下面是一个非常简单的例子:
%
O0006
G90G10L2P1
M30
%
程序文件的路径 是否下载成功
[商业授权] 将指定程序内容的NC加工程序,写入到数控机床里,返回是否下载成功
[Authorization] Download the NC machining program to the CNC machine tool, and return whether the download is successful
程序文件的内容必须%开始,%结束,下面是一个非常简单的例子:
%
O0006
G90G10L2P1
M30
%
程序内容信息 每次写入的长度信息 是否下载成功
[商业授权] 读取指定程序号的程序内容
[Authorization] Read the program content of the specified program number
程序号 程序内容
根据指定的程序号信息,删除当前的程序信息
According to the designated program number information, delete the current program information
程序号 是否删除成功
读取当前程序的前台路径
Read the foreground path of the current program
程序的路径信息
设置指定路径为当前路径
Set the specified path as the current path
程序名 结果信息
读取机床的当前时间信息
Read the current time information of the machine tool
时间信息
读取当前的已加工的零件数量
Read the current number of processed parts
已经加工的零件数量
读取期望的加工的零件数量
Read the expected number of processed parts
期望的加工的零件数量
构建读取一个命令的数据内容 命令码 第一个参数内容 第二个参数内容 第三个参数内容 第四个参数内容 第五个参数内容 总报文信息 构建读取多个命令的数据内容 模式 命令码 第一个参数内容 第二个参数内容 第三个参数内容 第四个参数内容 第五个参数内容 总报文信息 创建写入byte[]数组的报文信息 命令码 第一个参数内容 第二个参数内容 第三个参数内容 第四个参数内容 等待写入的byte数组信息 总报文信息 创建写入单个double数组的报文信息 功能码 第一个参数内容 第二个参数内容 第三个参数内容 第四个参数内容 等待写入的double数组信息 总报文信息 创建多个命令报文的总报文信息 报文命令的数组 总报文信息 创建读取运行程序的报文信息 程序号 总报文 从机床返回的数据里解析出实际的数据内容,去除了一些多余的信息报文。 返回的报文信息 解析之后的报文信息 当前机床的报警信息 当前报警的ID信息 当前的报警类型 报警的轴信息 报警的消息 系统的坐标信息 绝对坐标 机械坐标 相对坐标 系统状态信息 dummy T/M mode selected automatic mode running status axis, dwell status m, s, t, b status emergency stop status,为1就是急停,为0就是正常 alarm status editting status 瓶子控件 实例化一个新的控件对象 获取或设置瓶子的液位值。 获取或设置瓶子是否处于打开的状态。 获取或设置瓶子的标签信息,用于绘制在瓶子上的信息。 获取或设置瓶子的备注信息,用于绘制在瓶子顶部的信息。 重写消息处理机制 系统消息 重新绘制界面图形 绘制消息 必需的设计器变量。 清理所有正在使用的资源。 如果应释放托管资源,为 true;否则为 false。 设计器支持所需的方法 - 不要修改 使用代码编辑器修改此方法的内容。 一个自定义的按钮控件 实例化一个按钮对象 设置或获取显示的文本 设置或获取显示文本的颜色 设置按钮的圆角 用来设置按钮的选中状态 已经弃用 已经弃用 按钮的背景色 按钮的背景色 鼠标挪动时的活动颜色 设置按钮的边框是否可见 存放用户需要保存的一些额外的信息 触发一次点击的事件 重绘数据区 点击按钮的触发事件 点击的时候触发事件 必需的设计器变量。 清理所有正在使用的资源。 如果应释放托管资源,为 true;否则为 false。 设计器支持所需的方法 - 不要修改 使用代码编辑器修改此方法的内容。 一个时钟控件 实例化一个时钟控件 获取时钟的当前时间 获取或设置时钟指针的颜色 获取或设置时钟分钟指针颜色 获取或设置秒钟指针颜色 获取或设置时钟的个性化文本 字体 重绘控件显示 必需的设计器变量。 清理所有正在使用的资源。 如果应释放托管资源,为 true;否则为 false。 设计器支持所需的方法 - 不要 使用代码编辑器修改此方法的内容。 曲线控件对象 详细参照如下的博客: 实例化一个曲线显示的控件 获取或设置图形的纵坐标的最大值,该值必须大于最小值 获取或设置图形的纵坐标的最小值,该值必须小于最大值 获取或设置图形的纵坐标的最大值,该值必须大于最小值 获取或设置图形的纵坐标的最小值,该值必须小于最大值 获取或设置图形的纵轴分段数 获取或设置所有的数据是否强制在一个界面里显示 获取或设置拉伸模式下的最大数据量 获取或设置虚线是否进行显示 获取或设置坐标轴及相关信息文本的颜色 获取或设置虚线的颜色 获取或设置纵向虚线的分隔情况,单位为多少个数据 获取或设置实时数据新增时文本相对应于时间的格式化字符串,默认HH:mm 获取或设置图标的标题信息 设置曲线的横坐标文本,适用于显示一些固定的曲线信息 应该和曲线的点数一致 新增或修改一条指定关键字的左参考系曲线数据,需要指定数据,颜色随机,没有数据上限,线条宽度为1 曲线关键字 曲线的具体数据 新增或修改一条指定关键字的左参考系曲线数据,需要指定数据,颜色,没有数据上限,线条宽度为1 曲线关键字 新增或修改一条指定关键字的右参考系曲线数据,需要指定数据,颜色随机,没有数据上限,线条宽度为1 曲线关键字 新增或修改一条指定关键字的右参考系曲线数据,需要指定数据,颜色,没有数据上限,线条宽度为1 曲线关键字 新增或修改一条指定关键字的曲线数据,需要指定参考系及数据,颜色,线条宽度 曲线关键字 是否以左侧坐标轴为参照系 数据 线条颜色 线条宽度 移除指定关键字的曲线 曲线关键字 移除指定关键字的曲线 新增指定关键字曲线的一个数据,注意该关键字的曲线必须存在,否则无效 新增曲线的关键字 是否刷新界面 新增指定关键字曲线的一个数据,注意该关键字的曲线必须存在,否则无效 曲线的关键字 数据值 新增指定关键字曲线的一组数据,注意该关键字的曲线必须存在,否则无效 曲线的关键字 数组值 新增指定关键字数组曲线的一组数据,注意该关键字的曲线必须存在,否则无效,一个数据对应一个数组 曲线的关键字数组 数组值 设置一条曲线是否是可见的,如果该曲线不存在,则无效。 关键字 是否可见 设置多条曲线是否是可见的,如果该曲线不存在,则无效。 关键字 是否可见 新增一条左侧的辅助线,使用默认的文本颜色 数据值 新增一条左侧的辅助线,使用指定的颜色 数据值 线条颜色 新增一条左侧的辅助线 数据值 线条颜色 线条宽度 新增一条右侧的辅助线,使用默认的文本颜色 数据值 新增一条右侧的辅助线,使用指定的颜色 数据值 线条颜色 新增一条右侧的辅助线 数据值 线条颜色 线条宽度 移除所有的指定值的辅助曲线,包括左边的和右边的 移除所有的辅助线 必需的设计器变量。 清理所有正在使用的资源。 如果应释放托管资源,为 true;否则为 false。 设计器支持所需的方法 - 不要修改 使用代码编辑器修改此方法的内容。 曲线数据对象 实例化一个对象 数据 线条的宽度 曲线颜色 是否左侧参考系,True为左侧,False为右侧 本曲线是否显示出来,默认为显示 辅助线对象 实际的数据值 实际的数据绘制 辅助线的颜色 辅助线的画笔资源 辅助线的宽度 辅助线文本的画刷 是否左侧参考系,True为左侧,False为右侧 释放内存信息 一个罐子形状的控件 实例化一个罐子形状的控件 获取或设置容器罐的背景色。 获取或设置容器罐的边框色。 获取或设置显示的文本信息 获取或设置文本的颜色 获取或设置文本的背景色 必需的设计器变量。 清理所有正在使用的资源。 如果应释放托管资源,为 true;否则为 false。 设计器支持所需的方法 - 不要修改 使用代码编辑器修改此方法的内容。 仪表盘控件类 实例化一个仪表盘控件 获取中心点的坐标 获取或设置仪表盘的背景色 获取或设置指针的颜色 获取或设置数值的起始值,默认为0 获取或设置数值的最大值,默认为100 获取或设置数值的当前值,应该处于最小值和最大值之间 获取或设置数值的上限报警值,设置为超过最大值则无上限报警 获取或设置数值的下限报警值,设置为超过最大值则无上限报警 获取或设置仪表盘的分割段数,最小为2,最大1000 获取或设置仪表盘的单位描述文本 获取或设置文本是否是指针的下面 通常情况,仪表盘不会大于半个圆,除非本属性设置为 True 必需的设计器变量。 清理所有正在使用的资源。 如果应释放托管资源,为 true;否则为 false。 设计器支持所需的方法 - 不要修改 使用代码编辑器修改此方法的内容。 信号灯的控件类 实例化一个信号灯控件的对象 获取或设置开关按钮的背景色 必需的设计器变量。 清理所有正在使用的资源。 如果应释放托管资源,为 true;否则为 false。 设计器支持所需的方法 - 不要修改 使用代码编辑器修改此方法的内容。 一个饼图的控件 实例化一个饼图的控件 是否显示百分比信息 是否在图形上显示占比非常小的文本信息 随机生成颜色,该颜色相对于白色为深色颜色 设置显示的数据源 特殊的显示对象 根据名称和值进行数据源的显示,两者的长度需要一致 名称 必需的设计器变量。 清理所有正在使用的资源。 如果应释放托管资源,为 true;否则为 false。 设计器支持所需的方法 - 不要修改 使用代码编辑器修改此方法的内容。 管道控件信息 获取或设置管道线的宽度。 获取或设置管道线是否处于活动状态。 获取或设置管道活动状态的颜色。 获取或设置管道的背景色 获取或设置管道线的移动速度。该速度和管道的宽度有关 获取或设置管道线的坐标。 绘制 必需的设计器变量。 清理所有正在使用的资源。 如果应释放托管资源,为 true;否则为 false。 设计器支持所需的方法 - 不要修改 使用代码编辑器修改此方法的内容。 一个开关按钮类 实例化一个开关按钮对象 开关按钮发生变化的事件 获取或设置开关按钮的背景色 获取或设置开关按钮的前景色 获取或设置开关按钮的开合状态 获取或设置两种开关状态的文本描述,例如:new string[]{"Off","On"} 必需的设计器变量。 清理所有正在使用的资源。 如果应释放托管资源,为 true;否则为 false。 设计器支持所需的方法 - 不要修改 使用代码编辑器修改此方法的内容。 一个直立的进度条控件,满足不同的情况使用 实例化一个对象 获取或设置光标在控件上显示的信息 获取或设置控件的背景颜色值 获取或设置进度的颜色 进度条的最大值,默认为100 当前进度条的值,不能大于最大值或小于0 是否显示进度 设置进度条的边框颜色 设置进度变更的速度 获取或设置进度条变化的时候是否采用动画效果 进度条的样式 必需的设计器变量。 清理所有正在使用的资源。 如果应释放托管资源,为 true;否则为 false。 设计器支持所需的方法 - 不要修改 使用代码编辑器修改此方法的内容。 进度条的样式 竖直的,纵向的进度条 水平进度条 Cnet协议的地址数据信息,未完成 数据的代号,通常是 P,M,L,K,F,T,C,D,R,I,Q,W 等 数据的类型,通常是 X,B,W,D,L 从实际的PLC的地址里面解析出地址对象
Resolve the address object from the actual PLC address
西门子的地址数据信息 是否成功的结果对象
从实际的PLC的地址里面解析出地址对象
Resolve the address object from the actual PLC address
PLC的地址数据信息 读取的数据长度 是否成功的结果对象
所有设备通信类的地址基础类
Address basic class of all device communication classes
获取或设置起始地址
Get or set the starting address
解析字符串的地址
Parse the address of the string
地址信息
设备地址数据的信息,通常包含起始地址,数据类型,长度
Device address data information, usually including the starting address, data type, length
数字的起始地址,也就是偏移地址
The starting address of the number, which is the offset address
读取的数据长度,单位是字节还是字取决于设备方
The length of the data read, the unit is byte or word depends on the device side
从指定的地址信息解析成真正的设备地址信息
Parsing from the specified address information into real device address information
地址信息 数据长度
永宏编程口的地址类对象 数据的类型 从普通的PLC的地址转换为HSL标准的地址信息 地址信息 数据长度 是否成功的地址结果 FujiSPB的地址信息,可以携带数据类型,起始地址操作 数据的类型代码 当是位地址的时候,用于标记的信息 获取读写字数据的时候的地址信息内容 报文信息 获取命令,写入字地址的某一位的命令内容 报文信息 按照位为单位获取相关的索引信息 位数据信息 从实际的Fuji的地址里面解析出地址对象
Resolve the address object from the actual Fuji address
富士的地址数据信息 是否成功的结果对象
从实际的Fuji的地址里面解析出地址对象
Resolve the address object from the actual Fuji address
富士的地址数据信息 读取的数据长度 是否成功的结果对象
富士SPH地址类对象 数据的类型代码 当前地址的位索引信息 从实际的Fuji的地址里面解析出地址对象
Resolve the address object from the actual Fuji address
富士的地址数据信息 是否成功的结果对象
从实际的Fuji的地址里面解析出地址对象
Resolve the address object from the actual Fuji address
富士的地址数据信息 读取的数据长度 是否成功的结果对象
GE的SRTP协议的地址内容,主要包含一个数据代码信息,还有静态的解析地址的方法
The address content of GE's SRTP protocol mainly includes a data code information, as well as a static method of address resolution
获取或设置等待读取的数据的代码
Get or set the code of the data waiting to be read
从GE的地址里,解析出实际的带数据码的 地址信息,起始地址会自动减一,和实际的地址相匹配 实际的地址数据 读取的长度信息 是否位操作 是否成功的GE地址对象 三菱的数据地址表示形式
Mitsubishi's data address representation
实例化一个默认的对象 三菱的数据类型及地址信息 从指定的地址信息解析成真正的设备地址信息,默认是三菱的地址 地址信息 数据长度 从实际三菱的地址里面解析出我们需要的地址类型
Resolve the type of address we need from the actual Mitsubishi address
三菱的地址数据信息 读取的数据长度 是否成功的结果对象
从实际基恩士的地址里面解析出我们需要的地址信息
Resolve the address information we need from the actual Keyence address
基恩士的地址数据信息 读取的数据长度 是否成功的结果对象
从实际松下的地址里面解析出 松下的地址数据信息 读取的数据长度 是否成功的结果对象 欧姆龙的Fins协议的地址类对象 进行位操作的指令 进行字操作的指令 从指定的地址信息解析成真正的设备地址信息 地址信息 数据长度 从实际的欧姆龙的地址里面解析出地址对象
Resolve the address object from the actual Omron address
欧姆龙的地址数据信息 是否成功的结果对象
从实际的欧姆龙的地址里面解析出地址对象
Resolve the address object from the actual Omron address
欧姆龙的地址数据信息 读取的数据长度 是否成功的结果对象
西门子的地址数据信息,主要包含数据代码,DB块,偏移地址(偏移地址对于不是CT类型而已,是位为单位的),当处于写入时,Length无效
Address data information of Siemens, mainly including data code, DB block, offset address, when writing, Length is invalid
获取或设置等待读取的数据的代码
Get or set the code of the data waiting to be read
获取或设置PLC的DB块数据信息
Get or set PLC DB data information
从指定的地址信息解析成真正的设备地址信息 地址信息 数据长度 计算特殊的地址信息
Calculate Special Address information
字符串地址 -> String address 是否是定时器和计数器的地址 实际值 -> Actual value
从实际的西门子的地址里面解析出地址对象
Resolve the address object from the actual Siemens address
西门子的地址数据信息 是否成功的结果对象
从实际的西门子的地址里面解析出地址对象
Resolve the address object from the actual Siemens address
西门子的地址数据信息 读取的数据长度 是否成功的结果对象
横河PLC的地址表示类
Yokogawa PLC address display class
获取或设置等待读取的数据的代码
Get or set the code of the data waiting to be read
获取当前横河PLC的地址的二进制表述方式
Obtain the binary representation of the current Yokogawa PLC address
二进制数据信息
从普通的PLC的地址转换为HSL标准的地址信息 地址信息 数据长度 是否成功的地址结果 Modbus协议地址格式,可以携带站号,功能码,地址信息
Modbus protocol address format, can carry station number, function code, address information
实例化一个默认的对象
Instantiate a default object
实例化一个对象,使用指定的地址初始化
Instantiate an object, initialize with the specified address
传入的地址信息,支持富地址,例如s=2;x=3;100
实例化一个对象,使用指定的地址及功能码初始化
Instantiate an object and initialize it with the specified address and function code
传入的地址信息,支持富地址,例如s=2;x=3;100 默认的功能码信息
实例化一个对象,使用指定的地址,站号,功能码来初始化
Instantiate an object, use the specified address, station number, function code to initialize
传入的地址信息,支持富地址,例如s=2;x=3;100 站号信息 默认的功能码信息
获取或设置当前地址的站号信息
Get or set the station number information of the current address
获取或设置当前地址携带的功能码
Get or set the function code carried by the current address
地址偏移指定的位置,返回一个新的地址对象
The address is offset by the specified position and a new address object is returned
数据值信息 新增后的地址信息
地址偏移1,返回一个新的地址对象
The address is offset by 1 and a new address object is returned
新增后的地址信息
文件服务器的目录管理类的基本信息 文件目录的名称信息 获取或设置文件的总大小 获取或设置文件的总数量 获取或设置最后一次文件更新的时间,如果不存在文件,则为理论最小值 当前MQTT服务器文件操作的对象类
Object class of current MQTT server file operation
指示上传还是下载的操作,Upload上传,Download下载,Delete删除文件,DeleteFolder删除目录
Indicate upload or download operation, "Upload": upload, "Download": download, "Delete": delete file, "DeleteFolder": delete directory
文件上传或是下载的类别 上传,下载或是删除的文件名
File name uploaded, downloaded or deleted
当前操作消耗的时间
Time consumed by current operation
监控上传和下载文件的信息 实例化一个默认的对象 增加一个文件监控的对象信息 文件监控对象 根据唯一的ID信息,移除相关的文件监控对象 获取当前所有的监控文件数据的快照 文件监控列表 单个的监控文件对象,用来监控客户端的信息以及上传下载的速度 实例化一个默认的对象 当前对象的唯一ID信息 当前对象的远程的IP及端口 当前对象的客户端ID 当前对象的客户端用户名 当前的操作,Upload是上传,Download是下载 当前的操作的目录信息 当前操作的文件名 上传或下载的速度 当前操作的起始时间 最后一次更新数据的时间 文件的总大小 上一次的更新数据时的进度信息 更新当前的文件的状态 当前的进度信息 当前的总大小 倍福的ADS协议的信息 异形消息对象,用于异形客户端的注册包接收以及验证使用 用于和 AllenBradley PLC 交互的消息协议类 用于和 AllenBradley PLC 交互的消息协议类 南京自动化研究所推出的DCS设备的消息类 DLT 645协议的串口透传的消息类 埃夫特机器人的消息对象 旧版的机器人的消息类对象,保留此类为了实现兼容 发那科机器人的网络消息类 西门子Fetch/Write消息解析协议 用于欧姆龙通信的Fins协议的消息解析规则 富士SPB的消息内容 富士SPH协议的报文消息 通用电气公司的SRIP协议的消息 本组件系统使用的默认的消息规则,说明解析和反解析规则的 本系统的消息类,包含了各种解析规则,数据信息提取规则
The message class of this system contains various parsing rules and data information extraction rules
消息头的指令长度,第一次接受数据的长度
Instruction length of the message header, the length of the first received data
从当前的头子节文件中提取出接下来需要接收的数据长度
Extract the length of the data to be received from the current header file
返回接下来的数据内容长度
检查头子节的合法性
Check the legitimacy of the head subsection
特殊的令牌,有些特殊消息的验证 是否成功的结果
获取头子节里的消息标识
Get the message ID in the header subsection
消息标识
消息头字节
Message header byte
消息内容字节
Message content byte
发送的字节信息
Byte information sent
Kuka机器人的 KRC4 控制器中的服务器KUKAVARPROXY LSIS的PLC的FastEnet的消息定义 三菱的A兼容1E帧ASCII协议解析规则 三菱的A兼容1E帧协议解析规则 基于MC协议的Qna兼容3E帧协议的ASCII通讯消息机制 三菱的Qna兼容3E帧协议解析规则 Memobus协议的消息定义 Modbus-Tcp协议支持的消息解析类 获取或设置是否进行检查返回的消息ID和发送的消息ID是否一致,默认为true,也就是检查
Get or set whether to check whether the returned message ID is consistent with the sent message ID, the default is true, that is, check
OpenProtocol协议的消息 西门子S7协议的消息解析规则 SAM身份证通信协议的消息 横河PLC的以太网的二进制协议 用于读写的设备接口,相较于,增加了相关的方法,可以用来和设备进行额外的交互。
The device interface used for reading and writing. Compared with , a method related to is added, which can be used for additional interaction with the device .
将当前的数据报文发送到设备去,具体使用什么通信方式取决于设备信息,然后从设备接收数据回来,并返回给调用者。
Send the current data message to the device, the specific communication method used depends on the device information, and then receive the data back from the device and return it to the caller.
发送的完整的报文信息 接收的完整的报文信息 本方法用于实现本组件还未实现的一些报文功能,例如有些modbus服务器会有一些特殊的功能码支持,需要收发特殊的报文,详细请看示例
所有的和设备或是交互类统一读写标准,公开了如何读写对方的一些api接口,并支持基于特性的读写操作
All unified read and write standards for devices and interaction classes, expose how to read and write some API interfaces of each other, and support feature-based read and write operations
Modbus类,PLC类均实现了本接口,可以基于本接口实现统一所有的不同种类的设备的数据交互 此处举例实现modbus,三菱,西门子三种设备的统一的数据交互
组件的日志工具,支持日志记录,只要实例化后,当前网络的基本信息,就以等级进行输出
The component's logging tool supports logging. As long as the instantiation of the basic network information, the output will be output at
只要实例化即可以记录日志,实例化的对象需要实现接口 ,本组件提供了三个日志记录类,你可以实现基于 的对象。 如下的实例化适用于所有的Network及其派生类,以下举两个例子,三菱的设备类及服务器类
当前连接的唯一ID号,默认为长度20的guid码加随机数组成,方便列表管理,也可以自己指定
The unique ID number of the current connection. The default is a 20-digit guid code plus a random number.
批量读取字节数组信息,需要指定地址和长度,返回原始的字节数组
Batch read byte array information, need to specify the address and length, return the original byte array
数据地址 数据长度 带有成功标识的byte[]数组
写入原始的byte数组数据到指定的地址,返回是否写入成功
Write the original byte array data to the specified address, and return whether the write was successful
起始地址 写入值 是否写入成功
批量读取数组信息,需要指定地址和长度,返回 数组
Batch read array information, need to specify the address and length, return array
数据地址 数据长度 带有成功标识的 bool[] 数组
读取单个的数据信息
Read a single data message
数据地址 带有成功标识的 bool 值
批量写入数组数据,返回是否成功
Batch write array data, return whether the write was successful
起始地址 写入值 是否写入成功
写入单个的数据,返回是否成功
Write a single data, and return whether the write was successful
起始地址 写入值 是否写入成功
读取16位的有符号的整型数据
Read 16-bit signed integer data
起始地址 带有成功标识的short数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
读取16位的有符号整型数组
Read 16-bit signed integer array
起始地址 读取的数组长度 带有成功标识的short数组 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
读取16位的无符号整型
Read 16-bit unsigned integer
起始地址 带有成功标识的ushort数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
读取16位的无符号整型数组
Read 16-bit unsigned integer array
起始地址 读取的数组长度 带有成功标识的ushort数组 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
读取32位的有符号整型
Read 32-bit signed integer
起始地址 带有成功标识的int数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
读取32位有符号整型数组
Read 32-bit signed integer array
起始地址 数组长度 带有成功标识的int数组 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
读取32位的无符号整型
Read 32-bit unsigned integer
起始地址 带有成功标识的uint数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
读取32位的无符号整型数组
Read 32-bit unsigned integer array
起始地址 数组长度 带有成功标识的uint数组 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
读取64位的有符号整型
Read 64-bit signed integer
起始地址 带有成功标识的long数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
读取64位的有符号整型数组
Read 64-bit signed integer array
起始地址 数组长度 带有成功标识的long数组 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
读取64位的无符号整型
Read 64-bit unsigned integer
起始地址 带有成功标识的ulong数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
读取64位的无符号整型的数组
Read 64-bit unsigned integer array
起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
读取单浮点数据
Read single floating point data
起始地址 带有成功标识的float数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
读取单浮点精度的数组
Read single floating point array
起始地址 数组长度 带有成功标识的float数组 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
读取双浮点的数据
Read double floating point data
起始地址 带有成功标识的double数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
读取双浮点数据的数组
Read double floating point data array
起始地址 数组长度 带有成功标识的double数组 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
读取字符串数据,默认为最常见的ASCII编码
Read string data, default is the most common ASCII encoding
起始地址 数据长度 带有成功标识的string数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
使用指定的编码,读取字符串数据
Reads string data using the specified encoding
起始地址 数据长度 指定的自定义的编码 带有成功标识的string数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
等待指定地址的值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the 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.
其实地址 等待检测是值 读取的频率 等待的超时时间,如果超时时间为-1的话,则是无期限等待。 是否等待成功的结果对象,一旦通信失败,或是等待超时就返回失败。否则返回成功,并告知调用方等待了多久。
等待指定地址的值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the 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.
其实地址 等待检测是值 读取的频率 等待的超时时间,如果超时时间为-1的话,则是无期限等待。 是否等待成功的结果对象,一旦通信失败,或是等待超时就返回失败。否则返回成功,并告知调用方等待了多久。
等待指定地址的值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the 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.
其实地址 等待检测是值 读取的频率 等待的超时时间,如果超时时间为-1的话,则是无期限等待。 是否等待成功的结果对象,一旦通信失败,或是等待超时就返回失败。否则返回成功,并告知调用方等待了多久。
等待指定地址的值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the 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.
其实地址 等待检测是值 读取的频率 等待的超时时间,如果超时时间为-1的话,则是无期限等待。 是否等待成功的结果对象,一旦通信失败,或是等待超时就返回失败。否则返回成功,并告知调用方等待了多久。
等待指定地址的值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the 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.
其实地址 等待检测是值 读取的频率 等待的超时时间,如果超时时间为-1的话,则是无期限等待。 是否等待成功的结果对象,一旦通信失败,或是等待超时就返回失败。否则返回成功,并告知调用方等待了多久。
等待指定地址的值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the 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.
其实地址 等待检测是值 读取的频率 等待的超时时间,如果超时时间为-1的话,则是无期限等待。 是否等待成功的结果对象,一旦通信失败,或是等待超时就返回失败。否则返回成功,并告知调用方等待了多久。
等待指定地址的值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
Waiting for the 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.
其实地址 等待检测是值 读取的频率 等待的超时时间,如果超时时间为-1的话,则是无期限等待。 是否等待成功的结果对象,一旦通信失败,或是等待超时就返回失败。否则返回成功,并告知调用方等待了多久。
写入short数据,返回是否成功
Write short data, returns whether success
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入short数组,返回是否成功
Write short array, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入ushort数据,返回是否成功
Write ushort data, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入ushort数组,返回是否成功
Write ushort array, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入int数据,返回是否成功
Write int data, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入int[]数组,返回是否成功
Write int array, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入uint数据,返回是否成功
Write uint data, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入uint[]数组,返回是否成功
Write uint array, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入long数据,返回是否成功
Write long data, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入long数组,返回是否成功
Write long array, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入ulong数据,返回是否成功
Write ulong data, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入ulong数组,返回是否成功
Write ulong array, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入float数据,返回是否成功
Write float data, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入float数组,返回是否成功
Write float array, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入double数据,返回是否成功
Write double data, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入double数组,返回是否成功
Write double array, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入字符串信息,编码为ASCII
Write string information, encoded as ASCII
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入字符串信息,需要指定的编码信息
Write string information, need to specify the encoding information
起始地址 写入值 指定的编码信息 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入指定长度的字符串信息,如果超出,就截断字符串,如果长度不足,那就补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.
起始地址 写入值 字符串的长度 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
写入指定长度的字符串信息,如果超出,就截断字符串,如果长度不足,那就补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
起始地址 写入值 字符串的长度 指定的编码信息 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
读取自定义的数据类型,需要继承自IDataTransfer接口
Read custom data types, need to inherit from IDataTransfer interface
自定义的类型 起始地址 带有成功标识的自定义类型数据 需要是定义一个类,选择好相对于的ByteTransform实例,才能调用该方法。 此处演示三菱的读取示例,先定义一个类,实现接口 接下来就可以实现数据的读取了
写入自定义类型的数据,该类型必须继承自IDataTransfer接口
Write data of a custom type, which must inherit from the IDataTransfer interface
类型对象 起始地址 写入值 带有成功标识的结果类对象 需要是定义一个类,选择好相对于的实例,才能调用该方法。 此处演示三菱的读取示例,先定义一个类,实现接口 接下来就可以实现数据的读取了
读取支持Hsl特性的数据内容,该特性为,详细参考api文档说明
Read the data content of the Hsl attribute. The attribute is , please refer to the api documentation for details.
自定义的数据类型对象 包含是否成功的结果对象 此处演示西门子的读取示例,先定义一个类,重点是将需要读取的数据,写入到属性的特性中去。 接下来就可以实现数据的读取了
写入支持Hsl特性的数据,返回是否写入成功,该特性为,详细参考api文档说明
Write data that supports the Hsl attribute, and return whether the write was successful. The attribute is , please refer to the api documentation for details.
自定义的数据类型对象 包含是否成功的结果对象 此处演示西门子的读取示例,先定义一个类,重点是将需要读取的数据,写入到属性的特性中去。 接下来就可以实现数据的写入了
异步批量读取字节数组信息,需要指定地址和长度,返回原始的字节数组
Asynchronous batch read byte array information, need to specify the address and length, return the original byte array
数据地址 数据长度 带有成功标识的byte[]数组
异步写入原始的byte数组数据到指定的地址,返回是否写入成功
Asynchronously writes the original byte array data to the specified address, and returns whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步批量读取数组信息,需要指定地址和长度,返回 数组
Asynchronously batch read array information, need to specify the address and length, return array
数据地址 数据长度 带有成功标识的byte[]数组
异步读取单个的数据信息
Asynchronously read a single data message
数据地址 带有成功标识的byte[]数组
异步批量写入数组数据,返回是否成功
Asynchronously batch write array data, return success
起始地址 写入值 带有成功标识的结果类对象
异步批量写入数组数据,返回是否成功
Asynchronously batch write array data, return success
起始地址 写入值 带有成功标识的结果类对象
异步读取16位的有符号的整型数据
Asynchronously read 16-bit signed integer data
起始地址 带有成功标识的short数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步读取16位的有符号整型数组
Asynchronously read 16-bit signed integer array
起始地址 读取的数组长度 带有成功标识的short数组 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步读取16位的无符号整型
Asynchronously read 16-bit unsigned integer
起始地址 带有成功标识的ushort数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步读取16位的无符号整型数组
Asynchronously read 16-bit unsigned integer array
起始地址 读取的数组长度 带有成功标识的ushort数组 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步读取32位的有符号整型
Asynchronously read 32-bit signed integer
起始地址 带有成功标识的int数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步读取32位有符号整型数组
Asynchronously read 32-bit signed integer array
起始地址 数组长度 带有成功标识的int数组 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步读取32位的无符号整型
Asynchronously read 32-bit unsigned integer
起始地址 带有成功标识的uint数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步读取32位的无符号整型数组
Asynchronously read 32-bit unsigned integer array
起始地址 数组长度 带有成功标识的uint数组 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步读取64位的有符号整型
Asynchronously read 64-bit signed integer
起始地址 带有成功标识的long数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步读取64位的有符号整型数组
Asynchronously read 64-bit signed integer array
起始地址 数组长度 带有成功标识的long数组 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步读取64位的无符号整型
Asynchronously read 64-bit unsigned integer
起始地址 带有成功标识的ulong数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步读取64位的无符号整型的数组
Asynchronously read 64-bit unsigned integer array
起始地址 数组长度 带有成功标识的ulong数组 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步读取单浮点数据
Asynchronously read single floating point data
起始地址 带有成功标识的float数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步读取单浮点精度的数组
Asynchronously read single floating point array
起始地址 数组长度 带有成功标识的float数组 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步读取双浮点的数据
Asynchronously read double floating point data
起始地址 带有成功标识的double数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步读取双浮点数据的数组
Asynchronously read double floating point data array
起始地址 数组长度 带有成功标识的double数组 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步读取字符串数据,默认为最常见的ASCII编码
Asynchronously read string data, default is the most common ASCII encoding
起始地址 数据长度 带有成功标识的string数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步使用指定的编码,读取字符串数据
Asynchronously reads string data using the specified encoding
起始地址 数据长度 指定的自定义的编码 带有成功标识的string数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入short数据,返回是否成功
Asynchronously write short data, returns whether success
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入short数组,返回是否成功
Asynchronously write short array, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入ushort数据,返回是否成功
Asynchronously write ushort data, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入ushort数组,返回是否成功
Asynchronously write ushort array, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入int数据,返回是否成功
Asynchronously write int data, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入int[]数组,返回是否成功
Asynchronously write int array, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入uint数据,返回是否成功
Asynchronously write uint data, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入uint[]数组,返回是否成功
Asynchronously write uint array, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入long数据,返回是否成功
Asynchronously write long data, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入long数组,返回是否成功
Asynchronously write long array, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入ulong数据,返回是否成功
Asynchronously write ulong data, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入ulong数组,返回是否成功
Asynchronously write ulong array, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入float数据,返回是否成功
Asynchronously write float data, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入float数组,返回是否成功
Asynchronously write float array, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入double数据,返回是否成功
Asynchronously write double data, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入double数组,返回是否成功
Asynchronously write double array, return whether the write was successful
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入字符串信息,编码为ASCII
Asynchronously write string information, encoded as ASCII
起始地址 写入值 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入字符串信息,需要指定的编码信息
Asynchronously write string information, need to specify the encoding information
起始地址 写入值 指定的编码信息 带有成功标识的结果类对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
异步写入指定长度的字符串信息,如果超出,就截断字符串,如果长度不足,那就补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.
起始地址 写入值 字符串的长度 带有成功标识的结果类对象
异步写入指定长度的字符串信息,如果超出,就截断字符串,如果长度不足,那就补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
起始地址 写入值 字符串的长度 指定的编码信息 带有成功标识的结果类对象
异步读取自定义的数据类型,需要继承自IDataTransfer接口
Asynchronously read custom data types, need to inherit from IDataTransfer interface
自定义的类型 起始地址 带有成功标识的自定义类型数据 需要是定义一个类,选择好相对于的ByteTransform实例,才能调用该方法。 此处演示三菱的读取示例,先定义一个类,实现接口 接下来就可以实现数据的读取了
异步写入自定义类型的数据,该类型必须继承自IDataTransfer接口
Asynchronously write data of a custom type, which must inherit from the IDataTransfer interface
类型对象 起始地址 写入值 带有成功标识的结果类对象 需要是定义一个类,选择好相对于的实例,才能调用该方法。 此处演示三菱的读取示例,先定义一个类,实现接口 接下来就可以实现数据的读取了
异步读取支持Hsl特性的数据内容,该特性为,详细参考api文档说明
Asynchronously read the data content of the Hsl attribute. The attribute is , please refer to the api documentation for details.
自定义的数据类型对象 包含是否成功的结果对象 此处演示西门子的读取示例,先定义一个类,重点是将需要读取的数据,写入到属性的特性中去。 接下来就可以实现数据的读取了
异步写入支持Hsl特性的数据,返回是否写入成功,该特性为,详细参考api文档说明
Asynchronously write data that supports the Hsl attribute, and return whether the write was successful. The attribute is , please refer to the api documentation for details.
自定义的数据类型对象 包含是否成功的结果对象 此处演示西门子的读取示例,先定义一个类,重点是将需要读取的数据,写入到属性的特性中去。 接下来就可以实现数据的写入了
所有的机器人的统一读写标准,统一的基本的读写操作
Unified reading and writing standards for all robots, unified basic reading and writing operations
根据地址读取机器人的原始的字节数据信息
Read the robot's original byte data information according to the address
指定的地址信息,对于某些机器人无效 带有成功标识的byte[]数组
根据地址读取机器人的字符串的数据信息
Read the string data information of the robot based on the address
地址信息 带有成功标识的字符串数据
根据地址,来写入设备的相关的字节数据
According to the address, to write the device related bytes data
指定的地址信息,有些机器人可能不支持 原始的字节数据信息 是否成功的写入
根据地址,来写入设备相关的字符串数据
According to the address, to write the device related string data
指定的地址信息,有些机器人可能不支持 字符串的数据信息 是否成功的写入
异形客户端的基类,提供了基础的异形操作
The base class of the profiled client provides the basic profiled operation
默认的无参构造方法
The default parameterless constructor
当接收到了新的请求的时候执行的操作
An action performed when a new request is received
异步对象 终结点
是否返回响应,默认为 True
The default is True
是否统一检查密码,如果每个会话需要自己检查密码,就需要设置为false
Whether to check the password uniformly, if each session needs to check the password by itself, it needs to be set to false
客户上线的委托事件 异形客户端的会话信息 当有服务器连接上来的时候触发
Triggered when a server is connected
获取返回的命令信息 状态 回发的指令信息 检测当前的DTU是否在线 当前的会话信息 当前的会话是否在线 检测当前的dtu是否允许登录 当前的会话信息 当前的id是否可允许登录 设置密码,需要传入长度为6的字节数组
To set the password, you need to pass in an array of bytes of length 6
密码信息
设置可信任的客户端列表,传入一个DTU的列表信息
Set up the list of trusted clients, passing in the list information for a DTU
客户端列表
释放当前的对象 状态登录成功 重复登录 禁止登录 密码错误 获取错误的描述信息 dtu信息 错误码 错误信息 带登录认证的服务器类,可以对连接的客户端进行筛选,放行用户名密码正确的连接
Server class with login authentication, which can filter connected clients and allow connections with correct username and password
当客户端的socket登录的时候额外检查的信息,检查当前会话的用户名和密码
Additional check information when the client's socket logs in, check the username and password of the current session
套接字 终结点 验证的结果
获取或设置是否对客户端启动账号认证
Gets or sets whether to enable account authentication on the client
新增账户,如果想要启动账户登录,必须将设置为True
Add an account. If you want to activate account login, you must set to True
账户名称 账户名称
删除一个账户的信息
Delete an account's information
账户名称
释放当前的对象 是否托管对象 本系统所有网络类的基类,该类为抽象类,无法进行实例化,如果想使用里面的方法来实现自定义的网络通信,请通过继承使用。
The base class of all network classes in this system. This class is an abstract class and cannot be instantiated. If you want to use the methods inside to implement custom network communication, please use it through inheritance.
本类提供了丰富的底层数据的收发支持,包含消息的接收,MQTT以及Redis,websocket协议的实现
实例化一个NetworkBase对象,令牌的默认值为空,都是0x00
Instantiate a NetworkBase object, the default value of the token is empty, both are 0x00
组件的日志工具,支持日志记录,只要实例化后,当前网络的基本信息,就以等级进行输出
The component's logging tool supports logging. As long as the instantiation of the basic network information, the output will be output at
只要实例化即可以记录日志,实例化的对象需要实现接口 ,本组件提供了三个日志记录类,你可以实现基于 的对象。 如下的实例化适用于所有的Network及其派生类,以下举两个例子,三菱的设备类及服务器类
网络类的身份令牌,在hsl协议的模式下会有效,在和设备进行通信的时候是无效的
Network-type identity tokens will be valid in the hsl protocol mode and will not be valid when communicating with the device
适用于Hsl协议相关的网络通信类,不适用于设备交互类。 此处以 服务器类及 客户端类的令牌设置举例
对客户端而言是的通讯用的套接字,对服务器来说是用于侦听的套接字
A communication socket for the client, or a listening socket for the server
文件传输的时候的缓存大小,直接影响传输的速度,值越大,传输速度越快,越占内存,默认为100K大小
The size of the cache during file transfer directly affects the speed of the transfer. The larger the value, the faster the transfer speed and the more memory it takes. The default size is 100K.
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,buffer长度的缓存数据
Receiving a fixed-length byte array, allowing a specified timeout time. The default is 60 seconds. When length is greater than 0, fixed-length data content is received. When length is less than 0, random data information of a length not greater than 2048 is received.
网络通讯的套接字
Network communication socket 等待接收的数据缓存信息 开始接收数据的偏移地址 准备接收的数据长度,当length大于0时,接收固定长度的数据内容,当length小于0时,接收不大于1024长度的随机数据信息 单位:毫秒,超时时间,默认为60秒,如果设置小于0,则不检查超时时间 当前接收数据的进度报告,有些协议支持传输非常大的数据内容,可以给与进度提示的功能 包含了字节数据的结果类
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,接收不大于2048长度的随机数据信息
Receiving a fixed-length byte array, allowing a specified timeout time. The default is 60 seconds. When length is greater than 0, fixed-length data content is received. When length is less than 0, random data information of a length not greater than 2048 is received.
网络通讯的套接字
Network communication socket 准备接收的数据长度,当length大于0时,接收固定长度的数据内容,当length小于0时,接收不大于1024长度的随机数据信息 单位:毫秒,超时时间,默认为60秒,如果设置小于0,则不检查超时时间 当前接收数据的进度报告,有些协议支持传输非常大的数据内容,可以给与进度提示的功能 包含了字节数据的结果类
接收一行命令数据,需要自己指定这个结束符,默认超时时间为60秒,也即是60000,单位是毫秒
To receive a line of command data, you need to specify the terminator yourself. The default timeout is 60 seconds, which is 60,000, in milliseconds.
网络套接字 结束符信息 超时时间,默认为60000,单位为毫秒,也就是60秒 带有结果对象的数据信息
接收一行命令数据,需要自己指定这个结束符,默认超时时间为60秒,也即是60000,单位是毫秒
To receive a line of command data, you need to specify the terminator yourself. The default timeout is 60 seconds, which is 60,000, in milliseconds.
网络套接字 结束符1信息 结束符2信息 /// 超时时间,默认无穷大,单位毫秒 带有结果对象的数据信息
接收一条完整的 数据内容,需要指定超时时间,单位为毫秒。
Receive a complete data content, Need to specify a timeout period in milliseconds
网络的套接字 超时时间,单位:毫秒 消息的格式定义 接收消息的时候的进度报告 带有是否成功的byte数组对象
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。
Send a message to the socket until it returns when completed. After testing, this method is thread-safe.
网络套接字 字节数据 发送是否成功的结果
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。
Send a message to the socket until it returns when completed. After testing, this method is thread-safe.
网络套接字 字节数据 偏移的位置信息 发送的数据总数 发送是否成功的结果
创建一个新的socket对象并连接到远程的地址,默认超时时间为10秒钟,需要指定ip地址以及端口号信息
Create a new socket object and connect to the remote address. The default timeout is 10 seconds. You need to specify the IP address and port number.
Ip地址 端口号 返回套接字的封装结果对象
创建一个新的socket对象并连接到远程的地址,需要指定ip地址以及端口号信息,还有超时时间,单位是毫秒
To create a new socket object and connect to a remote address, you need to specify the IP address and port number information, and the timeout period in milliseconds
Ip地址 端口号 连接的超时时间 返回套接字的封装结果对象
创建一个新的socket对象并连接到远程的地址,需要指定远程终结点,超时时间(单位是毫秒),如果需要绑定本地的IP或是端口,传入 local对象
To create a new socket object and connect to the remote address, you need to specify the remote endpoint, the timeout period (in milliseconds), if you need to bind the local IP or port, pass in the local object
连接的目标终结点 连接的超时时间 如果需要绑定本地的IP地址,就需要设置当前的对象 返回套接字的封装结果对象
读取流中的数据到缓存区,读取的长度需要按照实际的情况来判断
Read the data in the stream to the buffer area. The length of the read needs to be determined according to the actual situation.
数据流 缓冲区 带有成功标志的读取数据长度
将缓冲区的数据写入到流里面去
Write the buffer data to the stream
数据流 缓冲区 是否写入成功
检查当前的头子节信息的令牌是否是正确的,仅用于某些特殊的协议实现
Check whether the token of the current header subsection information is correct, only for some special protocol implementations
头子节数据 令牌是验证成功
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send the byte data and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
网络套接字 头指令 用户指令 发送的数据 是否发送成功
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send the byte data and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
网络套接字 用户指令 发送的数据 是否发送成功
[自校验] 直接发送字符串数据并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-checking] Send string data directly and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
网络套接字 用户指令 发送的数据 是否发送成功
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send string array directly and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
网络套接字 用户指令 发送的字符串数组 是否发送成功
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send string array directly and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
网络套接字 用户指令 用户名 密码 是否发送成功
[自校验] 接收一条完整的同步数据,包含头子节和内容字节,基础的数据,如果结果异常,则结束通讯
[Self-checking] Receive a complete synchronization data, including header subsection and content bytes, basic data, if the result is abnormal, the communication ends
套接字 超时时间设置,如果为负数,则不检查超时 包含是否成功的结果对象 result
[自校验] 从网络中接收一个字符串数据,如果结果异常,则结束通讯
[Self-checking] Receive a string of data from the network. If the result is abnormal, the communication ends.
套接字 接收数据的超时时间 包含是否成功的结果对象
[自校验] 从网络中接收一个字符串数组,如果结果异常,则结束通讯
[Self-check] Receive an array of strings from the network. If the result is abnormal, the communication ends.
套接字 接收数据的超时时间 包含是否成功的结果对象
[自校验] 从网络中接收一串字节数据,如果结果异常,则结束通讯
[Self-checking] Receive a string of byte data from the network. If the result is abnormal, the communication ends.
套接字的网络 超时时间 包含是否成功的结果对象
从网络中接收Long数据
Receive Long data from the network
套接字网络 long数据结果
将long数据发送到套接字
Send long data to the socket
网络套接字 long数据 是否发送成功
发送一个流的所有数据到指定的网络套接字,需要指定发送的数据长度,支持按照百分比的进度报告
Send all the data of a stream to the specified network socket. You need to specify the length of the data to be sent. It supports the progress report in percentage.
套接字 内存流 发送的数据长度 进度报告的委托 进度报告是否按照百分比报告 是否成功的结果对象
从套接字中接收所有的数据然后写入到指定的流当中去,需要指定数据的长度,支持按照百分比进行进度报告
Receives all data from the socket and writes it to the specified stream. The length of the data needs to be specified, and progress reporting is supported in percentage.
套接字 数据流 所有数据的长度 进度报告 进度报告是否按照百分比 是否成功的结果对象
从socket接收一条完整的websocket数据,返回的数据信息
Receive a complete websocket data from the socket, return the data information of the
网络套接字 包含websocket消息的结果内容
从socket接收一条片段数据,返回的数据信息和是否最后一条数据内容
Receive a piece of fragment data from the socket, return the data information of and whether the last data content
网络套接字 包含websocket消息的结果内容
基于MQTT协议,从网络套接字中接收剩余的数据长度
Receives the remaining data length from the network socket based on the MQTT protocol
网络套接字 网络中剩余的长度数据
接收一条完整的MQTT协议的报文信息,包含控制码和负载数据
Receive a message of a completed MQTT protocol, including control code and payload data
网络套接字 超时时间 进度报告,第一个参数是已完成的字节数量,第二个参数是总字节数量。 结果数据内容
使用MQTT协议从socket接收指定长度的字节数组,然后全部写入到流中,可以指定进度报告
Use the MQTT protocol to receive a byte array of specified length from the socket, and then write all of them to the stream, and you can specify a progress report
网络套接字 数据流 数据大小 超时时间 进度报告,第一个参数是已完成的字节数量,第二个参数是总字节数量。 是否操作成功
使用MQTT协议将流中的数据读取到字节数组,然后都写入到socket里面,可以指定进度报告,主要用于将文件发送到网络。
Use the MQTT protocol to read the data in the stream into a byte array, and then write them all into the socket. You can specify a progress report, which is mainly used to send files to the network.
网络套接字 总的数据大小 超时信息 进度报告,第一个参数是已完成的字节数量,第二个参数是总字节数量。 是否操作成功
使用MQTT协议将一个文件发送到网络上去,需要指定文件名,保存的文件名,可选指定文件描述信息,进度报告
To send a file to the network using the MQTT protocol, you need to specify the file name, the saved file name, optionally specify the file description information, and the progress report
网络套接字 文件名称 对方接收后保存的文件名 文件的描述信息 进度报告,第一个参数是已完成的字节数量,第二个参数是总字节数量。 是否操作成功
使用MQTT协议将一个数据流发送到网络上去,需要保存的文件名,可选指定文件描述信息,进度报告
Use the MQTT protocol to send a data stream to the network, the file name that needs to be saved, optional file description information, progress report
网络套接字 数据流 对方接收后保存的文件名 文件的描述信息 进度报告,第一个参数是已完成的字节数量,第二个参数是总字节数量。 是否操作成功
使用MQTT协议从网络接收字节数组,然后写入文件或流中,支持进度报告
Use MQTT protocol to receive byte array from the network, and then write it to file or stream, support progress report
网络套接字 文件名或是流 进度报告 是否操作成功,如果成功,携带文件基本信息
接收一行基于redis协议的字符串的信息,需要指定固定的长度
Receive a line of information based on the redis protocol string, you need to specify a fixed length
网络套接字 字符串的长度 带有结果对象的数据信息
从网络接收一条完整的redis报文的消息
Receive a complete redis message from the network
网络套接字 接收的结果对象
接收一条hsl协议的数据信息,自动解析,解压,解码操作,获取最后的实际的数据,接收结果依次为暗号,用户码,负载数据
Receive a piece of hsl protocol data information, automatically parse, decompress, and decode operations to obtain the last actual data. The result is a opCode, user code, and payload data in order.
网络套接字 接收结果,依次为暗号,用户码,负载数据
删除文件的操作
Delete file operation
完整的真实的文件路径 是否删除成功
预处理文件夹的名称,除去文件夹名称最后一个'\'或'/',如果有的话
Preprocess the name of the folder, removing the last '\' or '/' in the folder name
文件夹名称 返回处理之后的名称
通过主机名或是IP地址信息,获取到真实的IP地址信息
Obtain the real IP address information through the host name or IP address information
主机名或是IP地址 IP地址信息
所有虚拟的数据服务器的基类,提供了基本的数据读写,存储加载的功能方法,具体的字节读写需要继承重写。
The base class of all virtual data servers provides basic methods for reading and writing data and storing and loading. Specific byte reads and writes need to be inherited and override.
实例化一个默认的数据服务器的对象
Instantiate an object of the default data server
将本系统的数据池数据存储到指定的文件
Store the data pool data of this system to the specified file
指定文件的路径
从文件加载数据池信息
Load datapool information from a file
文件路径
从字节数据加载数据信息,需要进行重写方法
Loading data information from byte data requires rewriting method
字节数据
将数据信息存储到字节数组去,需要进行重写方法
To store data information into a byte array, a rewrite method is required
所有的内容
获取或设置当前的服务器是否允许远程客户端进行写入数据操作,默认为True
Gets or sets whether the current server allows remote clients to write data, the default is True
如果设置为False,那么所有远程客户端的操作都会失败,直接返回错误码或是关闭连接。
当接收到来自客户的数据信息时触发的对象,该数据可能来自tcp或是串口
The object that is triggered when receiving data information from the customer, the data may come from tcp or serial port
触发的服务器对象 消息的来源对象 实际的数据信息
接收到数据的时候就触发的事件,示例详细参考API文档信息
An event that is triggered when data is received
事件共有三个参数,sender指服务器本地的对象,例如 对象,source 指会话对象,网口对象为 , 串口为 对象,需要根据实际判断,data 为收到的原始数据 byte[] 对象 我们以Modbus的Server为例子,其他的虚拟服务器同理,因为都集成自本服务器对象
触发一个数据接收的事件信息
Event information that triggers a data reception
数据的发送方 接收数据信息
数据发送的时候委托
Show DataSend To PLC
数据发送对象 数据内容
数据发送的时候就触发的事件
Events that are triggered when data is sent
获取或设置两次数据交互时的最小时间间隔,默认为24小时。
Get or set the minimum time interval between two data interactions, the default is 24 hours.
触发一个数据发送的事件信息
Event information that triggers a data transmission
数据内容
当客户端登录后,在Ip信息的过滤后,然后触发本方法,进行后续的数据接收,处理,并返回相关的数据信息
When the client logs in, after filtering the IP information, this method is then triggered to perform subsequent data reception, processing, and return related data information
网络套接字 终端节点
当接收到了新的请求的时候执行的操作,此处进行账户的安全验证
The operation performed when a new request is received, and the account security verification is performed here
异步对象 终结点
设置并启动受信任的客户端登录并读写,如果为null,将关闭对客户端的ip验证
Set and start the trusted client login and read and write, if it is null, the client's IP verification will be turned off
受信任的客户端列表
检查该Ip地址是否是受信任的
Check if the IP address is trusted
Ip地址信息 是受信任的返回True,否则返回False
获取受信任的客户端列表
Get a list of trusted clients
字符串数据信息
获取在线的客户端的数量
Get the number of clients online
获取当前所有在线的客户端信息,包括IP地址和端口号信息
Get all current online client information, including IP address and port number information
新增一个在线的客户端信息
Add an online client information
会话内容
移除一个在线的客户端信息
Remove an online client message
会话内容 下线的原因
关闭之后进行的操作 释放当前的对象 是否托管对象 设备交互类的基类,实现了接口的基础方法方法,需要使用继承重写来实现字节读写,bool读写操作。
The base class of the device interaction class, which implements the basic methods of the interface, requires inheritance rewriting to implement byte read and write, and bool read and write operations.
需要继承实现采用使用。
一个字单位的数据表示的地址长度,西门子为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
对设备来说,一个地址的数据对应的字节数,或是1个字节或是2个字节,通常是这两个选择
支持长连接,短连接两个模式的通用客户端基类
Universal client base class that supports long connections and short connections to two modes
无,请使用继承类实例化,然后进行数据交互,当前的类并没有具体的实现。
默认的无参构造函数
Default no-parameter constructor
接收数据的超时时间,单位:毫秒
Timeout for receiving data, unit: millisecond
是否是长连接的状态
Whether it is a long connection state
交互的混合锁,保证交互操作的安全性
Interactive hybrid locks to ensure the security of interactive operations
指示长连接的套接字是否处于错误的状态
Indicates if the long-connected socket is in the wrong state
设置日志记录报文是否二进制,如果为False,那就使用ASCII码
Set whether the log message is binary, if it is False, then use ASCII code
获取一个新的消息对象的方法,需要在继承类里面进行重写
The method to get a new message object needs to be overridden in the inheritance class
消息类对象
当前的数据变换机制,当你需要从字节数据转换类型数据的时候需要。
The current data transformation mechanism is required when you need to convert type data from byte data.
主要是用来转换数据类型的,下面仅仅演示了2个方法,其他的类型转换,类似处理。
获取或设置连接的超时时间,单位是毫秒
Gets or sets the timeout for the connection, in milliseconds
设置1秒的超时的示例 不适用于异形模式的连接。
获取或设置接收服务器反馈的时间,如果为负数,则不接收反馈
Gets or sets the time to receive server feedback, and if it is a negative number, does not receive feedback
设置1秒的接收超时的示例 超时的通常原因是服务器端没有配置好,导致访问失败,为了不卡死软件,所以有了这个超时的属性。
获取或是设置远程服务器的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
最好实在初始化的时候进行指定,当使用短连接的时候,支持动态更改,切换;当使用长连接后,无法动态更改 以下举例modbus-tcp的短连接及动态更改ip地址的示例
获取或设置服务器的端口号,具体的值需要取决于对方的配置
Gets or sets the port number of the server. The specific value depends on the configuration of the other party.
最好实在初始化的时候进行指定,当使用短连接的时候,支持动态更改,切换;当使用长连接后,无法动态更改 动态更改请参照IpAddress属性的更改。
获取或设置在正式接收对方返回数据前的时候,需要休息的时间,当设置为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.
获取或设置绑定的本地的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
当前的异形连接对象,如果设置了异形连接的话,仅用于异形模式的情况使用
The current alien connection object, if alien connection is set, is only used in the case of alien mode
具体的使用方法请参照Demo项目中的异形modbus实现。
在读取数据之前可以调用本方法将客户端设置为长连接模式,相当于跳过了ConnectServer的结果验证,对异形客户端无效,当第一次进行通信时再进行创建连接请求。
Before reading the data, you can call this method to set the client to the long connection mode, which is equivalent to skipping the result verification of ConnectServer, and it is invalid for the alien client. When the first communication is performed, the connection creation request is performed.
以下的方式演示了另一种长连接的机制
对当前设备的IP地址进行PING的操作,返回PING的结果,正常来说,返回
PING the IP address of the current device and return the PING result. Normally, it returns
返回PING的结果
尝试连接远程的服务器,如果连接成功,就切换短连接模式到长连接模式,后面的每次请求都共享一个通道,使得通讯速度更快速
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.
返回连接结果,如果失败的话(也即IsSuccess为False),包含失败信息 简单的连接示例,调用该方法后,连接设备,创建一个长连接的对象,后续的读写操作均公用一个连接对象。 如果想知道是否连接成功,请参照下面的代码。
使用指定的套接字创建异形客户端,在异形客户端的模式下,网络通道需要被动创建。
Use the specified socket to create the alien client. In the alien client mode, the network channel needs to be created passively.
异形客户端对象,查看类型创建的客户端 通常都为成功 简单的创建示例。 如果想知道是否创建成功。通常都是成功。 不能和之前的长连接和短连接混用,详细参考 Demo程序
手动断开与远程服务器的连接,如果当前是长连接模式,那么就会切换到短连接模式
Manually disconnect from the remote server, if it is currently in long connection mode, it will switch to short connection mode
关闭连接,不需要查看IsSuccess属性查看 直接关闭连接即可,基本上是不需要进行成功的判定
根据实际的协议选择是否重写本方法,有些协议在创建连接之后,需要进行一些初始化的信号握手,才能最终建立网络通道。
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.
网络套接字 是否初始化成功,依据具体的协议进行重写 有些协议不需要握手信号,比如三菱的MC协议,Modbus协议,西门子和欧姆龙就存在握手信息,此处的例子是继承本类后重写的西门子的协议示例
根据实际的协议选择是否重写本方法,有些协议在断开连接之前,需要发送一些报文来关闭当前的网络通道
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.
网络套接字 目前暂无相关的示例,组件支持的协议都不用实现这个方法。 当断开连接时额外的操作结果
和服务器交互完成的时候调用的方法,可以根据读写结果进行一些额外的操作,具体的操作需要根据实际的需求来重写实现
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.
读取结果
是否使用账号登录,这个账户登录的功能是HSL组件创建的服务器特有的功能。
Whether to log in using an account. The function of this account login is a server-specific function created by the HSL component.
设置当前的登录的账户名和密码信息,并启用账户验证的功能,账户名为空时设置不生效
Set the current login account name and password information, and enable the account verification function. The account name setting will not take effect when it is empty
账户名 密码
认证账号,根据已经设置的用户名和密码,进行发送服务器进行账号认证。
Authentication account, according to the user name and password that have been set, sending server for account authentication.
套接字 认证结果
对当前的命令进行打包处理,通常是携带命令头内容,标记当前的命令的长度信息,需要进行重写,否则默认不打包
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
发送的数据命令内容 打包之后的数据结果信息
根据对方返回的报文命令,对命令进行基本的拆包,例如各种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
发送的原始报文数据 设备方反馈的原始报文内容 返回拆包之后的报文信息,默认不进行任何的拆包操作
获取本次操作的可用的网络通道,如果是短连接,就重新生成一个新的网络通道,如果是长连接,就复用当前的网络通道。
Obtain the available network channels for this operation. If it is a short connection, a new network channel is regenerated. If it is a long connection, the current network channel is reused.
是否成功,如果成功,使用这个套接字
尝试连接服务器,如果成功,并执行的初始化方法,并返回最终的结果。
Attempt to connect to the server, if successful, and execute the initialization method of , and return the final result.
带有socket的结果对象
将数据报文发送指定的网络通道上,根据当前指定的类型,返回一条完整的数据指令
Sends a data message to the specified network channel, and returns a complete data command according to the currently specified type
指定的套接字 发送的完整的报文信息 是否有等待的数据返回,默认为 true 是否需要对命令重新打包,在重写方法后才会有影响 无锁的基于套接字直接进行叠加协议的操作。 假设你有一个自己的socket连接了设备,本组件可以直接基于该socket实现modbus读取,三菱读取,西门子读取等等操作,前提是该服务器支持多协议,虽然这个需求听上去比较变态,但本组件支持这样的操作。 接收的完整的报文信息
将数据发送到当前的网络通道中,并从网络通道中接收一个指定的完整的报文,网络通道将根据方法自动获取,本方法是线程安全的。
Send data to the current network channel and receive a complete message specified by from the network channel. The network channel will be automatically obtained according to the method This method is thread-safe.
发送的完整的报文信息 是否有等待的数据返回,默认为 true 是否需要对命令重新打包,在重写方法后才会有影响 接收的完整的报文信息 本方法用于实现本组件还未实现的一些报文功能,例如有些modbus服务器会有一些特殊的功能码支持,需要收发特殊的报文,详细请看示例 此处举例有个modbus服务器,有个特殊的功能码0x09,后面携带子数据0x01即可,发送字节为 0x00 0x00 0x00 0x00 0x00 0x03 0x01 0x09 0x01
释放当前的资源,并自动关闭长连接,如果设置了的话 是否释放托管的资源信息 释放当前的资源 文件服务器类的基类,为直接映射文件模式和间接映射文件模式提供基础的方法支持,主要包含了对文件的一些操作的功能
The base class of the file server class, which provides basic method support for the direct mapping file mode and the indirect mapping file mode, and mainly includes the functions of some operations on files
实例化一个默认的对象 获取当前文件的读写锁,如果没有会自动创建,文件名应该是guid文件名,例如 b35a11ec533147ca80c7f7d1713f015b7909
Acquire the read-write lock of the current file. If not, it will be created automatically. The file name should be the guid file name, for example, b35a11ec533147ca80c7f7d1713f015b7909
完整的文件路径 返回携带文件信息的读写锁
接收本次操作的信息头数据 网络套接字 是否成功的结果对象 接收本次操作的信息头数据 网络套接字 是否成功的结果对象 获取一个随机的文件名,由GUID码和随机数字组成 文件名 返回服务器的绝对路径,包含根目录的信息 [Root Dir][Factory][Group][Id] 信息 第一大类 第二大类 第三大类 是否成功的结果对象 返回服务器的绝对路径,包含根目录的信息 [Root Dir][Factory][Group][Id][FileName] 信息 第一大类 第二大类 第三大类 文件名 是否成功的结果对象 返回相对路径的名称 第一大类 第二大类 第三大类 文件名 是否成功的结果对象 移动一个文件到新的文件去 旧的文件名称 新的文件名称 是否成功 删除文件并回发确认信息,如果结果异常,则结束通讯 网络套接字 完整路径的文件名称 是否成功的结果对象 文件上传的委托 文件的基本信息 文件上传的事件,当文件上传的时候触发。 触发一个文件上传的事件。 文件的基本信息 服务器启动时的操作 检查文件夹是否存在,不存在就创建 文件所存储的路径 获取当前的文件标记的对象数量
Get the number of objects marked by the current file
获取文件夹的所有文件列表 第一大类 第二大类 第三大类 文件列表 获取文件夹的所有文件夹列表 第一大类 第二大类 第三大类 文件夹列表 Udp服务器程序的基础类,提供了启动服务器的基本实现,方便后续的扩展操作。
The basic class of the udp server program provides the basic implementation of starting the server to facilitate subsequent expansion operations.
实例化一个默认的对象
Instantiate a default object
服务器引擎是否启动
Whether the server engine is started
获取或设置服务器的端口号,如果是设置,需要在服务器启动前设置完成,才能生效。
Gets or sets the port number of the server. If it is set, it needs to be set before the server starts to take effect.
需要在服务器启动之前设置为有效
后台接收数据的线程 当客户端的socket登录的时候额外检查的操作,并返回操作的结果信息。
The operation is additionally checked when the client's socket logs in, and the result information of the operation is returned.
套接字 终结点 验证的结果
服务器启动时额外的初始化信息,可以用于启动一些额外的服务的操作。
The extra initialization information when the server starts can be used to start some additional service operations.
需要在派生类中重写
指定端口号来启动服务器的引擎
Specify the port number to start the server's engine
指定一个端口号
使用已经配置好的端口启动服务器的引擎
Use the configured port to start the server's engine
服务器关闭的时候需要做的事情
Things to do when the server is down
关闭服务器的引擎
Shut down the server's engine
服务器程序的基础类,提供了启动服务器的基本实现,方便后续的扩展操作。
The basic class of the server program provides the basic implementation of starting the server to facilitate subsequent expansion operations.
实例化一个默认的对象
Instantiate a default object
服务器引擎是否启动
Whether the server engine is started
获取或设置服务器的端口号,如果是设置,需要在服务器启动前设置完成,才能生效。
Gets or sets the port number of the server. If it is set, it needs to be set before the server starts to take effect.
需要在服务器启动之前设置为有效
异步传入的连接申请请求
Asynchronous incoming connection request
异步对象
当客户端连接到服务器,并听过额外的检查后,进行回调的方法
Callback method when the client connects to the server and has heard additional checks
socket对象 远程的终结点
当客户端的socket登录的时候额外检查的操作,并返回操作的结果信息。
The operation is additionally checked when the client's socket logs in, and the result information of the operation is returned.
套接字 终结点 验证的结果
服务器启动时额外的初始化信息,可以用于启动一些额外的服务的操作。
The extra initialization information when the server starts can be used to start some additional service operations.
需要在派生类中重写
指定端口号来启动服务器的引擎
Specify the port number to start the server's engine
指定一个端口号
使用已经配置好的端口启动服务器的引擎
Use the configured port to start the server's engine
服务器关闭的时候需要做的事情
Things to do when the server is down
关闭服务器的引擎
Shut down the server's engine
创建一个指定的异形客户端连接,使用Hsl协议来发送注册包
Create a specified profiled client connection and use the Hsl protocol to send registration packets
Ip地址 端口号 设备唯一ID号,最长11 是否成功连接
基于Udp的应答式通信类
Udp - based responsive communication class
实例化一个默认的方法
Instantiate a default method
获取或设置一次接收时的数据长度,默认2KB数据长度,特殊情况的时候需要调整
Gets or sets the length of data received at a time. The default length is 2KB
核心的数据交互读取,发数据发送到通道上去,然后从通道上接收返回的数据
The core data is read interactively, the data is sent to the serial port, and the returned data is received from the serial port
完整的报文内容 是否有等待的数据返回,默认为 true 是否需要对命令重新打包,在重写方法后才会有影响 是否成功的结果对象
Udp报文协议的内容传送 实例化一个默认的对象 基于webapi的数据访问的基类,提供了基本的http接口的交互功能
A base class for data access based on webapi that provides basic HTTP interface interaction
当前的基类在.net framework上存在问题,在.net framework4.5及.net standard上运行稳定而且正常
使用指定的ip地址来初始化对象
Initializes the object using the specified IP address
Ip地址信息
使用指定的ip地址及端口号来初始化对象
Initializes the object with the specified IP address and port number
Ip地址信息 端口号信息
使用指定的ip地址,端口号,用户名,密码来初始化对象
Initialize the object with the specified IP address, port number, username, and password
Ip地址信息 端口号信息 用户名 密码
针对请求的头信息进行额外的处理 头信息 使用GET操作从网络中获取到数据信息 除去ip地址和端口的地址 返回的数据内容 使用POST命令去提交数据内容,然后返回相关的数据信息 已经去除ip地址,端口号的api信息 数据内容 从服务器返回的内容 获取或设置远程服务器的IP地址
Gets or sets the IP address of the remote server
获取或设置远程服务器的端口号信息
Gets or sets the port number information for the remote server
获取或设置当前的用户名
Get or set the current username
获取或设置当前的密码
Get or set the current password
是否启用Https的协议访问 默认的内容类型,如果为空,则不进行设置操作。 获取当前的HttpClinet的客户端 一个基于WebApi协议的设备类对象 实例化一个默认的对象,使用127.0.0.1和端口80 指定ip地址和端口号来实例化一个对象 ip地址 端口号 一个字单位的数据表示的地址长度,西门子为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
对设备来说,一个地址的数据对应的字节数,或是1个字节或是2个字节,通常是这两个选择
机器人的基于webapi接口的基础类信息 等待重写的额外的指令信息的支持。除了url的形式之外,还支持基于命令的数据交互
Additional instruction information waiting for rewriting is supported.In addition to the url format, command based data interaction is supported
地址信息 是否读取成功的内容
读取对方信息的的数据信息,通常是针对GET的方法信息设计的。如果使用了url=开头,就表示是使用了原生的地址访问
Read the other side of the data information, usually designed for the GET method information.If you start with url=, you are using native address access
无效参数 带有成功标识的byte[]数组
读取对方信息的的字符串数据信息,通常是针对GET的方法信息设计的。如果使用了url=开头,就表示是使用了原生的地址访问
The string data information that reads the other party information, usually designed for the GET method information.If you start with url=, you are using native address access
地址信息 带有成功标识的字符串数据
使用POST的方式来向对方进行请求数据信息,需要使用url=开头,来表示是使用了原生的地址访问
Using POST to request data information from the other party, we need to start with url= to indicate that we are using native address access
指定的地址信息,有些设备可能不支持 原始的字节数据信息 是否成功的写入
使用POST的方式来向对方进行请求数据信息,需要使用url=开头,来表示是使用了原生的地址访问
Using POST to request data information from the other party, we need to start with url= to indicate that we are using native address access
指定的地址信息 字符串的数据信息 是否成功的写入
包含了主动异步接收的方法实现和文件类异步读写的实现
Contains the implementation of the active asynchronous receiving method and the implementation of asynchronous reading and writing of the file class
默认的无参构造方法
The default parameterless constructor
[自校验] 将文件数据发送至套接字,如果结果异常,则结束通讯
[Self-check] Send the file data to the socket. If the result is abnormal, the communication is ended.
网络套接字 完整的文件路径 文件的长度 进度报告器 是否发送成功
[自校验] 将文件数据发送至套接字,具体发送细节将在继承类中实现,如果结果异常,则结束通讯
[Self-checking] Send the file data to the socket. The specific sending details will be implemented in the inherited class. If the result is abnormal, the communication will end
套接字 文件名称,文件必须存在 远程端的文件名称 文件的额外标签 文件的上传人 发送进度报告 是否发送成功
[自校验] 将流数据发送至套接字,具体发送细节将在继承类中实现,如果结果异常,则结束通讯
[Self-checking] Send stream data to the socket. The specific sending details will be implemented in the inherited class. If the result is abnormal, the communication will be terminated
套接字 文件名称,文件必须存在 远程端的文件名称 文件的额外标签 文件的上传人 发送进度报告 是否成功的结果对象
[自校验] 从套接字中接收文件头信息
[Self-checking] Receive file header information from socket
套接字的网络 包含文件信息的结果对象
[自校验] 从网络中接收一个文件,如果结果异常,则结束通讯
[Self-checking] Receive a file from the network. If the result is abnormal, the communication ends.
网络套接字 接收文件后保存的文件名 接收进度报告 包含文件信息的结果对象
[自校验] 从网络中接收一个文件,写入数据流,如果结果异常,则结束通讯,参数顺序文件名,文件大小,文件标识,上传人
[Self-checking] Receive a file from the network. If the result is abnormal, the communication ends.
网络套接字 等待写入的数据流 接收进度报告 文件头结果
读写网络的辅助类 通信对象 通信对象 通信对象 通信对象 通信对象 通信对象 通信对象 通信对象 通信对象 通信对象 通信对象 通信对象 通信对象 通信对象 异形客户端的连接对象 实例化一个默认的参数 网络套接字 唯一的标识 密码信息 指示当前的网络状态 上线时间 最后一次下线的时间 进行下线操作 当前的网络会话信息,还包含了一些客户端相关的基本的参数信息
The current network session information also contains some basic parameter information related to the client
实例化一个构造方法 传输数据的对象 IP地址 此连接对象连接的远程客户端 远程对象的别名 心跳验证的时间点 客户端的类型 客户端唯一的标识 UDP通信中的远程端 指令头缓存 已经接收的指令头长度 数据内容缓存 已经接收的数据内容长度 用于关键字分类使用 清除本次的接收内容 传输数据的对象 发送的数据内容 已经发送长度 关键字 客户端的标识 文件传送的异步对象 操作的流 网络中的异步对象 实例化一个对象 实例化一个对象,指定接收或是发送的数据长度 数据长度 唯一的一串信息 网络套接字 是否关闭了通道 清空旧的数据 携带TaskCompletionSource属性的异步对象 类型 实例化一个对象 实例化一个对象,指定接收或是发送的数据长度 数据长度 异步消息的对象 本次接收或是发送的数据长度 已经处理的字节长度 操作完成的信号 缓存器 是否发生了错误 错误消息 静态的方法支持类,提供一些网络的静态支持,支持从套接字从同步接收指定长度的字节数据,并支持报告进度。
The static method support class provides some static support for the network, supports receiving byte data of a specified length from the socket from synchronization, and supports reporting progress.
在接收指定数量的字节数据的时候,如果一直接收不到,就会发生假死的状态。接收的数据时保存在内存里的,不适合大数据块的接收。
Socket传输中的缓冲池大小
Buffer pool size in socket transmission
从socket的网络中读取数据内容,需要指定数据长度和超时的时间,为了防止数据太大导致接收失败,所以此处接收到新的数据之后就更新时间。
To read the data content from the socket network, you need to specify the data length and timeout period. In order to prevent the data from being too large and cause the reception to fail, the time is updated after new data is received here.
网络套接字 接收的长度 当前接收数据的进度报告,有些协议支持传输非常大的数据内容,可以给与进度提示的功能 最终接收的指定长度的byte[]数据
从socket的网络中读取数据内容,需要指定数据长度和超时的时间,为了防止数据太大导致接收失败,所以此处接收到新的数据之后就更新时间。
To read the data content from the socket network, you need to specify the data length and timeout period. In order to prevent the data from being too large and cause the reception to fail, the time is updated after new data is received here.
网络套接字 缓存的字节数组 偏移信息 接收长度 当前接收数据的进度报告,有些协议支持传输非常大的数据内容,可以给与进度提示的功能
线程的协调逻辑状态 所有项完成 超时 任务取消 一个线程协调逻辑类,详细参考书籍《CLR Via C#》page:681 这个类可惜没有报告进度的功能 每次的操作任务开始前必须调用该方法 在一次任务处理好操作之后,必须调用该方法 该方法必须在发起所有的操作之后调用 回调方法 超时时间 超时的方法 取消任务的执行 生成一次报告 报告的状态 乐观的并发方法模型,具体参照《CLR Via C#》page:686 唯一的目标数据 修改数据的算法 一个用于高性能,乐观并发模型控制操作的类,允许一个方法(隔离方法)的安全单次执行 实例化一个对象,需要传入隔离执行的方法 隔离执行的方法 启动线程池执行隔离方法 一个高性能的读写锁,支持写锁定,读灵活,读时写锁定,写时读锁定 返回本对象的描述字符串 对象的描述字符串 实例化一个读写锁的对象 释放资源 根据读写情况请求锁 True为写请求,False为读请求 释放锁,将根据锁状态自动区分读写锁 一个简单的混合线程同步锁,采用了基元用户加基元内核同步构造实现
A simple hybrid thread editing lock, implemented by the base user plus the element kernel synchronization.
当前的锁适用于,竞争频率比较低,锁部分的代码运行时间比较久的情况,当前的简单混合锁可以达到最大性能。 以下演示常用的锁的使用方式,还包含了如何优雅的处理异常锁
基元用户模式构造同步锁 基元内核模式构造同步锁 获取锁 离开锁 获取当前锁是否在等待当中 获取当前总的所有进入锁的信息
Get the current total information of all access locks
当前正在等待的锁的统计信息,此时已经发生了竞争了 一个用于多线程并发处理数据的模型类,适用于处理数据量非常庞大的情况 等待处理的数据类型 实例化一个数据处理对象 数据处理列表 数据操作方法,应该是相对耗时的任务 需要使用的线程数 操作总数,判定操作是否完成 判断是否所有的线程是否处理完成 准备启动的处理数据的线程数量 指示多线程处理是否在运行中,防止冗余调用 列表数据 需要操作的方法 一个双参数委托 用于报告进度的委托,当finish等于count时,任务完成 已完成操作数量 总数量 成功数量 失败数量 异常发生时事件 报告处理进度时发生 已处理完成数量,无论是否异常 处理完成并实现操作数量 处理过程中异常数量 用于触发事件的混合线程锁 指示处理状态是否为暂停状态 指示系统是否需要强制退出 在发生错误的时候是否强制退出后续的操作 启动多线程进行数据处理 暂停当前的操作 恢复暂停的操作 直接手动强制结束操作 在发生错误的时候是否强制退出后续的操作 一个双检锁的示例,适合一些占内存的静态数据对象,获取的时候才实例化真正的对象 一个高级的混合线程同步锁,采用了基元用户加基元内核同步构造实现,并包含了自旋和线程所有权 当竞争的频率很高的时候,锁的时间很短的时候,当前的锁可以获得最大性能。 释放资源 自旋锁的自旋周期,当竞争频率小,就要设置小,当竞争频率大,就要设置大,锁时间长就设置小,锁时间短就设置大,这样才能达到真正的高性能,默认为1000 获取锁 离开锁 数据转换类的基础,提供了一些基础的方法实现.
The basis of the data conversion class provides some basic method implementations.
实例化一个默认的对象
Instantiate a default object
使用指定的数据解析来实例化对象
Instantiate the object using the specified data parsing
数据规则
反转多字节的数据信息 数据字节 起始索引,默认值为0 实际字节信息 反转多字节的数据信息 数据字节 起始索引,默认值为0 实际字节信息 所有数据转换类的静态辅助方法
Static helper method for all data conversion classes
结果转换操作的基础方法,需要支持类型,及转换的委托,并捕获转换时的异常方法 结果类型 实际转换的委托 转换结果 结果转换操作的基础方法,需要支持类型,及转换的委托 结果类型 源结果 转换结果 使用指定的转换方法,来获取到实际的结果对象内容,所转换的规则 结果类型 输入类型 原始的结果对象 转换方法,从类型TIn转换拿到TResult的泛型委托 类型为TResult的对象 使用指定的转换方法,来获取到实际的结果对象内容 输入类型 原始的结果对象 转换方法,从类型TIn转换拿到OperateResult的TResult的泛型委托 类型为TResult的对象 使用指定的转换方法,来获取到实际的结果对象内容 结果类型 输入类型 原始的结果对象 转换方法,从类型TIn转换拿到OperateResult的TResult的泛型委托 类型为TResult的对象 使用指定的转换方法,来获取到实际的结果对象内容 结果类型 输入类型1 输入类型2 原始的结果对象 转换方法1,从类型TIn1转换拿到OperateResult的TIn2的泛型委托 转换方法2,从类型TIn2转换拿到OperateResult的TResult的泛型委托 类型为TResult的对象 使用指定的转换方法,来获取到实际的结果对象内容 结果类型 输入类型1 输入类型2 输入类型3 原始的结果对象 转换方法1,从类型TIn1转换拿到OperateResult的TIn2的泛型委托 转换方法2,从类型TIn2转换拿到OperateResult的TIn3的泛型委托 转换方法3,从类型TIn3转换拿到OperateResult的TResult的泛型委托 类型为TResult的对象 使用指定的转换方法,来获取到实际的结果对象内容 结果类型 输入类型1 输入类型2 输入类型3 输入类型4 原始的结果对象 转换方法1,从类型TIn1转换拿到OperateResult的TIn2的泛型委托 转换方法2,从类型TIn2转换拿到OperateResult的TIn3的泛型委托 转换方法3,从类型TIn3转换拿到OperateResult的TIn4的泛型委托 转换方法4,从类型TIn4转换拿到OperateResult的TResult的泛型委托 类型为TResult的对象 使用指定的转换方法,来获取到实际的结果对象内容 结果类型 输入类型1 输入类型2 输入类型3 输入类型4 输入类型5 原始的结果对象 转换方法1,从类型TIn1转换拿到OperateResult的TIn2的泛型委托 转换方法2,从类型TIn2转换拿到OperateResult的TIn3的泛型委托 转换方法3,从类型TIn3转换拿到OperateResult的TIn4的泛型委托 转换方法4,从类型TIn4转换拿到OperateResult的TIn5的泛型委托 转换方法5,从类型TIn5转换拿到OperateResult的TResult的泛型委托 类型为TResult的对象 使用指定的转换方法,来获取到实际的结果对象内容 结果类型 输入类型1 输入类型2 输入类型3 输入类型4 输入类型5 输入类型6 原始的结果对象 转换方法1,从类型TIn1转换拿到OperateResult的TIn2的泛型委托 转换方法2,从类型TIn2转换拿到OperateResult的TIn3的泛型委托 转换方法3,从类型TIn3转换拿到OperateResult的TIn4的泛型委托 转换方法4,从类型TIn4转换拿到OperateResult的TIn5的泛型委托 转换方法5,从类型TIn5转换拿到OperateResult的TIn6的泛型委托 转换方法6,从类型TIn6转换拿到OperateResult的TResult的泛型委托 类型为TResult的对象 使用指定的转换方法,来获取到实际的结果对象内容 结果类型 输入类型1 输入类型2 输入类型3 输入类型4 输入类型5 输入类型6 输入类型7 原始的结果对象 转换方法1,从类型TIn1转换拿到OperateResult的TIn2的泛型委托 转换方法2,从类型TIn2转换拿到OperateResult的TIn3的泛型委托 转换方法3,从类型TIn3转换拿到OperateResult的TIn4的泛型委托 转换方法4,从类型TIn4转换拿到OperateResult的TIn5的泛型委托 转换方法5,从类型TIn5转换拿到OperateResult的TIn6的泛型委托 转换方法6,从类型TIn6转换拿到OperateResult的TIn7的泛型委托 转换方法7,从类型TIn7转换拿到OperateResult的TResult的泛型委托 类型为TResult的对象 使用指定的转换方法,来获取到实际的结果对象内容 结果类型 输入类型1 输入类型2 输入类型3 输入类型4 输入类型5 输入类型6 输入类型7 输入类型8 原始的结果对象 转换方法1,从类型TIn1转换拿到OperateResult的TIn2的泛型委托 转换方法2,从类型TIn2转换拿到OperateResult的TIn3的泛型委托 转换方法3,从类型TIn3转换拿到OperateResult的TIn4的泛型委托 转换方法4,从类型TIn4转换拿到OperateResult的TIn5的泛型委托 转换方法5,从类型TIn5转换拿到OperateResult的TIn6的泛型委托 转换方法6,从类型TIn6转换拿到OperateResult的TIn7的泛型委托 转换方法7,从类型TIn7转换拿到OperateResult的TIn8的泛型委托 转换方法8,从类型TIn8转换拿到OperateResult的TResult的泛型委托 类型为TResult的对象 使用指定的转换方法,来获取到实际的结果对象内容 结果类型 输入类型1 输入类型2 输入类型3 输入类型4 输入类型5 输入类型6 输入类型7 输入类型8 输入类型9 原始的结果对象 转换方法1,从类型TIn1转换拿到OperateResult的TIn2的泛型委托 转换方法2,从类型TIn2转换拿到OperateResult的TIn3的泛型委托 转换方法3,从类型TIn3转换拿到OperateResult的TIn4的泛型委托 转换方法4,从类型TIn4转换拿到OperateResult的TIn5的泛型委托 转换方法5,从类型TIn5转换拿到OperateResult的TIn6的泛型委托 转换方法6,从类型TIn6转换拿到OperateResult的TIn7的泛型委托 转换方法7,从类型TIn7转换拿到OperateResult的TIn8的泛型委托 转换方法8,从类型TIn8转换拿到OperateResult的TIn9的泛型委托 转换方法9,从类型TIn9转换拿到OperateResult的TResult的泛型委托 类型为TResult的对象 使用指定的转换方法,来获取到实际的结果对象内容 结果类型 输入类型1 输入类型2 输入类型3 输入类型4 输入类型5 输入类型6 输入类型7 输入类型8 输入类型9 输入类型10 原始的结果对象 转换方法1,从类型TIn1转换拿到OperateResult的TIn2的泛型委托 转换方法2,从类型TIn2转换拿到OperateResult的TIn3的泛型委托 转换方法3,从类型TIn3转换拿到OperateResult的TIn4的泛型委托 转换方法4,从类型TIn4转换拿到OperateResult的TIn5的泛型委托 转换方法5,从类型TIn5转换拿到OperateResult的TIn6的泛型委托 转换方法6,从类型TIn6转换拿到OperateResult的TIn7的泛型委托 转换方法7,从类型TIn7转换拿到OperateResult的TIn8的泛型委托 转换方法8,从类型TIn8转换拿到OperateResult的TIn9的泛型委托 转换方法9,从类型TIn9转换拿到OperateResult的TIn10的泛型委托 转换方法10,从类型TIn10转换拿到OperateResult的TResult的泛型委托 类型为TResult的对象 应用于多字节数据的解析或是生成格式
Parsing or generating format for multibyte data
按照顺序排序 按照单字反转 按照双字反转 按照倒序排序 支持转换器的基础接口,规定了实际的数据类型和字节数组进行相互转换的方法。 所有的设备通讯类都内置了该转换的模型,并且已经配置好数据的高地位模式,可以方便的转换信息 从缓存中提取出bool结果 缓存数据 位的索引 bool对象 从缓存中提取出bool数组结果 缓存数据 位的索引 bool长度 bool数组 从缓存中提取byte结果 缓存数据 索引位置 byte对象 从缓存中提取byte数组结果 缓存数据 索引位置 读取的数组长度 byte数组对象 从缓存中提取short结果 缓存数据 索引位置 short对象 从缓存中提取short数组结果 缓存数据 索引位置 读取的数组长度 short数组对象 从缓存中提取short二维数组结果 缓存数据 索引位置 二维数组行 二维数组列 二维short数组 从缓存中提取ushort结果 缓存数据 索引位置 ushort对象 从缓存中提取ushort数组结果 缓存数据 索引位置 读取的数组长度 ushort数组对象 从缓存中提取ushort二维数组结果 缓存数据 索引位置 二维数组行 二维数组列 二维ushort数组 从缓存中提取int结果 缓存数据 索引位置 int对象 从缓存中提取int数组结果 缓存数据 索引位置 读取的数组长度 int数组对象 从缓存中提取int二维数组结果 缓存数据 索引位置 二维数组行 二维数组列 二维int数组 从缓存中提取uint结果 缓存数据 索引位置 uint对象 从缓存中提取uint数组结果 缓存数据 索引位置 读取的数组长度 uint数组对象 从缓存中提取uint二维数组结果 缓存数据 索引位置 二维数组行 二维数组列 uint二维数组对象 从缓存中提取long结果 缓存数据 索引位置 long对象 从缓存中提取long数组结果 缓存数据 索引位置 读取的数组长度 long数组对象 从缓存中提取long二维数组结果 缓存数据 索引位置 二维数组行 二维数组列 long二维数组对象 从缓存中提取ulong结果 缓存数据 索引位置 ulong对象 从缓存中提取ulong数组结果 缓存数据 索引位置 读取的数组长度 ulong数组对象 从缓存中提取ulong二维数组结果 缓存数据 索引位置 二维数组行 二维数组列 ulong二维数组对象 从缓存中提取float结果 缓存对象 索引位置 float对象 从缓存中提取float数组结果 缓存数据 索引位置 读取的数组长度 float数组 从缓存中提取float二维数组结果 缓存数据 索引位置 二维数组行 二维数组列 float二维数组对象 从缓存中提取double结果 缓存对象 索引位置 double对象 从缓存中提取double数组结果 缓存对象 索引位置 读取的数组长度 double数组 从缓存中提取double二维数组结果 缓存数据 索引位置 二维数组行 二维数组列 double二维数组对象 从缓存中提取string结果,使用指定的编码 缓存对象 字符串的编码 string对象 从缓存中提取string结果,使用指定的编码 缓存对象 索引位置 byte数组长度 字符串的编码 string对象 bool变量转化缓存数据 等待转化的数据 buffer数据 bool数组变量转化缓存数据 等待转化的数组 buffer数据 byte变量转化缓存数据 等待转化的数据 buffer数据 short变量转化缓存数据 等待转化的数据 buffer数据 short数组变量转化缓存数据 等待转化的数组 buffer数据 ushort变量转化缓存数据 等待转化的数据 buffer数据 ushort数组变量转化缓存数据 等待转化的数组 buffer数据 int变量转化缓存数据 等待转化的数据 buffer数据 int数组变量转化缓存数据 等待转化的数组 buffer数据 uint变量转化缓存数据 等待转化的数据 buffer数据 uint数组变量转化缓存数据 等待转化的数组 buffer数据 long变量转化缓存数据 等待转化的数据 buffer数据 long数组变量转化缓存数据 等待转化的数组 buffer数据 ulong变量转化缓存数据 等待转化的数据 buffer数据 ulong数组变量转化缓存数据 等待转化的数组 buffer数据 float变量转化缓存数据 等待转化的数据 buffer数据 float数组变量转化缓存数据 等待转化的数组 buffer数据 double变量转化缓存数据 等待转化的数据 buffer数据 double数组变量转化缓存数据 等待转化的数组 buffer数据 使用指定的编码字符串转化缓存数据 等待转化的数据 字符串的编码方式 buffer数据 使用指定的编码字符串转化缓存数据 等待转化的数据 转换之后的数据长度 字符串的编码方式 buffer数据 获取或设置数据解析的格式,可选ABCD, BADC,CDAB,DCBA格式,对int,uint,float,double,long,ulong类型有作用
Get or set the format of the data analysis, optional ABCD, BADC, CDAB, DCBA format, effective for int, uint, float, double, long, ulong type
获取或设置在解析字符串的时候是否将字节按照字单位反转
Gets or sets whether to reverse the bytes in word units when parsing strings
根据指定的格式,来实例化一个新的对象,除了不同,其他都相同
According to the specified format, to instantiate a new object, except that is different, everything else is the same
数据格式 新的对象
常规的字节转换类
Regular byte conversion class
字节倒序的转换类
Byte reverse order conversion class
buffer数据 按照字节错位的数据转换类
Data conversion class according to byte misalignment
按照字节错位的方法 实际的字节数据 起始字节位置 数据长度 处理过的数据信息 证书等级 只允许读取数据的等级 允许同时读写数据的等级 HslCommunication的一些静态辅助方法
Some static auxiliary methods of HslCommunication
解析地址的附加参数方法,比如你的地址是s=100;D100,可以提取出"s"的值的同时,修改地址本身,如果"s"不存在的话,返回给定的默认值
The method of parsing additional parameters of the address, for example, if your address is s=100;D100, you can extract the value of "s" and modify the address itself. If "s" does not exist, return the given default value
复杂的地址格式,比如:s=100;D100 等待提取的参数名称 如果提取的参数信息不存在,返回的默认值信息 解析后的新的数据值或是默认的给定的数据值
解析地址的附加参数方法,比如你的地址是s=100;D100,可以提取出"s"的值的同时,修改地址本身,如果"s"不存在的话,返回错误的消息内容
The method of parsing additional parameters of the address, for example, if your address is s=100;D100, you can extract the value of "s" and modify the address itself. If "s" does not exist, return the wrong message content
复杂的地址格式,比如:s=100;D100 等待提取的参数名称 解析后的参数结果内容
解析地址的起始地址的方法,比如你的地址是 A[1] , 那么将会返回 1,地址修改为 A,如果不存在起始地址,那么就不修改地址,返回 -1
The method of parsing the starting address of the address, for example, if your address is A[1], then it will return 1, and the address will be changed to A. If the starting address does not exist, then the address will not be changed and return -1
复杂的地址格式,比如:A[0] 如果存在,就起始位置,不存在就返回 -1
解析地址的附加参数方法,比如你的地址是format=ABCD;D100,可以提取出"format"的值的同时,修改地址本身,如果"format"不存在的话,返回默认的对象
Parse the additional parameter method of the address. For example, if your address is format=ABCD;D100, you can extract the value of "format" and modify the address itself. If "format" does not exist, Return the default object
复杂的地址格式,比如:format=ABCD;D100 默认的数据转换信息 解析后的参数结果内容
切割当前的地址数据信息,根据读取的长度来分割成多次不同的读取内容,需要指定地址,总的读取长度,切割读取长度
Cut the current address data information, and divide it into multiple different read contents according to the read length. You need to specify the address, the total read length, and the cut read length
整数的地址信息 读取长度信息 切割长度信息 切割结果
根据指定的长度切割数据数组,返回地址偏移量信息和数据分割信息 数组类型 起始的地址 实际的数据信息 分割的基本长度 一个地址代表的数据长度 切割结果内容 获取地址信息的位索引,在地址最后一个小数点的位置 地址信息 位索引的位置 从当前的字符串信息获取IP地址数据,如果是ip地址直接返回,如果是域名,会自动解析IP地址,否则抛出异常
Get the IP address data from the current string information, if it is an ip address, return directly, if it is a domain name, it will automatically resolve the IP address, otherwise an exception will be thrown
输入的字符串信息 真实的IP地址信息
从流中接收指定长度的字节数组 数据长度 二进制的字节数组 将字符串的内容写入到流中去 数据流 字符串内容 从流中读取一个字符串内容 数据流 字符串信息 将二进制的内容写入到数据流之中 数据流 原始字节数组 从流中读取二进制的内容 数据流 字节数组 从字符串的内容提取UTF8编码的字节,加了对空的校验 字符串内容 结果 将多个路径合成一个更完整的路径,这个方法是多平台适用的 路径的集合 总路径信息 [商业授权] 将原始的字节数组,转换成实际的结构体对象,需要事先定义好结构体内容,否则会转换失败
[Authorization] To convert the original byte array into an actual structure object, the structure content needs to be defined in advance, otherwise the conversion will fail
自定义的结构体 原始的字节内容 是否成功的结果对象
根据当前的位偏移地址及读取位长度信息,计算出实际的字节索引,字节数,字节位偏移 起始地址 读取的长度 返回的新的字节的索引,仍然按照位单位 字节长度 当前偏移的信息 根据字符串内容,获取当前的位索引地址,例如输入 6,返回6,输入15,返回15,输入B,返回11 位字符串 结束数据 将一个一维数组中的所有数据按照行列信息拷贝到二维数组里,返回当前的二维数组 数组的类型对象 一维数组信息 饼图的基本元素 实例化一个饼图基本元素的对象 名称 背景颜色 连接会话信息的上下文,主要是对账户信息的验证 当前的用户名信息 当前的会话的ID信息 远程对象关闭的异常信息
Exception information of remote object close
实例化一个默认的对象 一个数据范围管理的的类型对象,可以方便的管理一个数据值的最大值,最小值,平均值信息。
A type object managed by a data range can conveniently manage the maximum, minimum, and average information of a data value.
当前的数据的最大值
The maximum value of the current data
当前的数据的最小值
The minimum value of the current data
当前的数据的平均值
Average value of current data
当前的数据的起始值
The starting value of the current data
当前的数据的当前值,也是最后一次更新的数据值
The current value of the current data is also the last updated data value
当前的数据的更新总个数
The total number of current data updates
重新设置当前的最新值,然后计算新的最大值,最小值,平均值等信息
Reset the current latest value, and then calculate the new maximum, minimum, average and other information
新的数据值信息 新的值对象
判断是否相等 第一个数据值 第二个数据值 是否相同 判断是否相等 第一个数据值 第二个数据值 是否相同 文件的基础信息 文件名称 文件大小 文件的标识,注释 文件上传人的名称 文件的分类信息 命令码 文件名 文件名列表 第一级分类信息 第二级分类信息 第三级分类信息 文件在服务器上的信息 文件的真实路径 文件标记对象类,标记了一个文件的当前状态,是否处于下载中,删除的操作信息
File tag object class, which marks the current status of a file, whether it is downloading, or delete operation information
实例化一个文件标记对象,需要传入日志信息和文件名
To instantiate a file tag object, you need to pass in log information and file name
日志对象 完整的文件名称
当前的对象创建的时间
Current object creation time
当前的对象最后一次活跃的时间
Last active time of the current object
当前的文件的读取次数,通常也是下载次数。
The current number of reads of the file, usually also the number of downloads.
新增一个对当前的文件的操作,如果没有读取,就直接执行,如果有读取,就等待读取完成的时候执行。
Add an operation on the current file. If there is no read, it will be executed directly. If there is a read, it will be executed when the read is completed.
对当前文件的操作内容
获取该对象是否能被清除
Gets whether the object can be cleared
是否能够删除
进入文件的读取状态
Enter the read state of the file
离开本次的文件读取状态,如果没有任何的客户端在读取了,就执行缓存队列里的操作信息。
Leaving the current file reading status, if no client is reading, the operation information in the cache queue is executed.
文件集容器,绑定一个文件夹的文件信息组,提供了文件夹的文件信息的获取,更新接口
File set container, which binds the file information group of a folder, provides the file information acquisition and update interface of the folder
实例化一个新的指定目录的文件管理容器
Instantiates a new file management container for the specified directory
日志记录对象,可以为空 文件的路径
包含所有文件列表信息的json文本缓存
JSON text cache containing all file list information
获取文件的数量
Get the number of files
当前的目录信息
Current catalog information
获取当前目录所有文件的大小之和
Get the sum of the size of all files in the current directory
文件数量变化的委托信息
Order information for changes in the number of files
文件列表容器 文件的数量
当文件数量发生变化的时候触发的事件
Event triggered when the number of files changes
下载文件时调用,根据当前的文件名称,例如 123.txt 获取到在文件服务器里映射的文件名称,例如返回 b35a11ec533147ca80c7f7d1713f015b7909
Called when downloading a file. Get the file name mapped in the file server according to the current file name, such as 123.txt. For example, return b35a11ec533147ca80c7f7d1713f015b7909.
文件的实际名称 文件名映射过去的实际的文件名字
上传文件时掉用,通过比对现有的文件列表,如果没有,就重新创建列表信息
Used when uploading files, by comparing existing file lists, if not, re-creating list information
文件名,带后缀,不带任何的路径 文件的大小 文件映射名称 文件的拥有者 文件的额外描述 映射的文件名称
删除一个文件信息,传入文件实际的名称,例如 123.txt 返回被删除的文件的guid名称,例如返回 b35a11ec533147ca80c7f7d1713f015b7909 此方法存在同名文件删除的风险
Delete a file information. Pass in the actual name of the file. For example, 123.txt returns the guid name of the deleted file. For example, it returns b35a11ec533147ca80c7f7d1713f015b7909. There is a risk of deleting the file with the same name
实际的文件名称,如果 123.txt 映射之后的文件名,例如 b35a11ec533147ca80c7f7d1713f015b7909
判断当前的文件名是否在文件的列表里,传入文件实际的名称,例如 123.txt,如果文件存在,返回 true, 如果不存在,返回 false
Determine whether the current file name is in the file list, and pass in the actual file name, such as 123.txt, if it exists, return true, if it does not exist, return false
实际的文件名称,如果 123.txt 如果文件存在,返回 true, 如果不存在,返回 false
删除一个文件信息,传入文件唯一的guid的名称,例如 b35a11ec533147ca80c7f7d1713f015b7909 返回被删除的文件的guid名称
Delete a file information, pass in the unique GUID name of the file, for example b35a11ec533147ca80c7f7d1713f015b7909 return the GUID name of the deleted file
实际的文件名称,如果 b35a11ec533147ca80c7f7d1713f015b7909 映射之后的文件名,例如 b35a11ec533147ca80c7f7d1713f015b7909
删除当前目录下所有的文件信息,返回等待被删除的文件列表,是映射文件名:b35a11ec533147ca80c7f7d1713f015b7909
Delete all file information in the current directory, and return to the list of files waiting to be deleted, which is the mapping file name: b35a11ec533147ca80c7f7d1713f015b7909
映射之后的文件列表,例如 b35a11ec533147ca80c7f7d1713f015b7909
缓存JSON文本的方法,该机制使用乐观并发模型完成
Method for caching JSON text, which is done using an optimistic concurrency model
从目录进行加载数据,必须实例化的时候加载,加载失败会导致系统异常,旧的文件丢失
Load data from the directory, it must be loaded when instantiating. Failure to load will cause system exceptions and old files will be lost
当前的文件夹路径信息
单个文件的存储信息,用来表示在文件目录管理器里表示所有的文件信息的
Storage information of a single file, used to represent all file information in the file directory manager
文件的名称 文件的大小 文件的映射名称 文件的下载次数 文件的上传时间 文件的上传人,拥有者 文件的额外描述 获取文件的大小描述
Get file size description
文件大小的字符串描述形式
用于网络传递的信息头,使用上等同于int 通常用于之间的通信,以及通讯 使用上等同于int,只是本结构体允许将4字节的int拆分成3部分单独访问 赋值操作,可以直接赋值int数据 int数值 等值的消息对象 也可以赋值给int数据 netHandle对象 等值的消息对象 判断是否相等 第一个数 第二个数 等于返回True,否则False 判断是否不相等 第一个对象 第二个对象 等于返回False,否则True 两个数值相加 第一个对象 第二个对象 返回两个指令的和 两个数值相减 第一个对象 第二个对象 返回两个指令的差 判断是否小于另一个数值 第一个对象 第二个对象 小于则返回True,否则返回False 判断是否大于另一个数值 第一个对象 第二个对象 大于则返回True,否则返回False 初始化一个暗号对象 使用一个默认的数值进行初始化 根据三个值来初始化暗号对象 主暗号 次暗号 暗号编号 完整的暗号值 主暗号分类0-255 次要的暗号分类0-255 暗号的编号分类0-65535 完整的暗号值 主暗号分类0-255 次要的暗号分类0-255 暗号的编号分类0-65535 获取完整的暗号数据 返回暗号的字符串表示形式 判断两个实例是否相同 对比的对象 相同返回True,否则返回False 获取哈希值 返回当前对象的哈希值 用于本程序集访问通信的暗号说明 规定所有的网络传输指令头都为32字节 所有网络通信中的缓冲池数据信息 用于心跳程序的暗号信息 客户端退出消息 因为客户端达到上限而拒绝登录 允许客户端登录到服务器 客户端登录的暗号信息 客户端拒绝登录的暗号信息 说明发送的只是文本信息 发送的数据就是普通的字节数组 发送的数据就是普通的图片数据 发送的数据是一条异常的数据,字符串为异常消息 说明发送的数据是字符串的数组 请求文件下载的暗号 请求文件上传的暗号 请求删除文件的暗号 文件校验成功 文件校验失败 文件保存失败 请求文件列表的暗号 请求子文件的列表暗号 进度返回暗号 返回的错误信息 请求删除多个文件的暗号 请求删除文件夹的暗号 请求当前的文件是否存在 请求删除文件夹的暗号 请求指定文件夹的文件大小 指定目录的所有子目录的文件统计信息,每个文件夹的文件数量,所有文件大小,最后更新时间 不压缩数据字节 压缩数据字节 生成终极传送指令的方法,所有的数据均通过该方法出来 命令头 自用自定义 令牌 字节数据 包装后的数据信息 解析接收到数据,先解压缩后进行解密 指令头 指令的内容 真实的数据内容 获取发送字节数据的实际数据,带指令头 用户数据 令牌 字节信息 包装后的指令信息 获取发送字节数据的实际数据,带指令头 用户数据 令牌 字符串数据信息 包装后的指令信息 获取发送字节数据的实际数据,带指令头 用户数据 令牌 字符串数据信息 包装后的指令信息 将字符串打包成字节数组内容 字符串数组 打包后的原始数据内容 将字节数组还原成真实的字符串数组 原始字节数组 解析后的字符串内容 从接收的数据内容提取出用户的暗号和数据内容 数据内容 包含结果对象的信息 应用于Hsl组件库读取的动态地址解析,具体用法为创建一个类,创建数据属性,如果这个属性需要绑定PLC的真实数据,就在属性的特性上应用本特性。
Applied to the dynamic address resolution read by the Hsl component library, the specific usage is to create a class and create data attributes. If this attribute needs to be bound to the real data of the PLC, this feature is applied to the characteristics of the attribute.
设备的类型,如果指定了特殊的PLC,那么该地址就可以支持多种不同PLC
The type of equipment, if a special PLC is specified, then the address can support a variety of different PLCs
数据的地址信息,真实的设备的地址信息
Data address information, real device address information
读取的数据长度
Length of data read
实例化一个地址特性,指定地址信息,用于单变量的数据
Instantiate an address feature, specify the address information, for single variable data
真实的地址信息
实例化一个地址特性,指定地址信息,用于单变量的数据,并指定设备类型
Instantiate an address feature, specify address information, data for a single variable, and specify the device type
真实的地址信息 设备的地址信息
实例化一个地址特性,指定地址信息和数据长度,通常应用于数组的批量读取
Instantiate an address feature, specify address information and data length, usually used in batch reading of arrays
真实的地址信息 读取的数据长度
实例化一个地址特性,指定地址信息和数据长度,通常应用于数组的批量读取,并指定设备的类型,可用于不同种类的PLC
Instantiate an address feature, specify address information and data length, usually used in batch reading of arrays, and specify the type of equipment, which can be used for different types of PLCs
真实的地址信息 读取的数据长度 设备类型
可以指定方法变成对外公开的API接口,如果方法不实现该特性,将不对外公开方法,无法获取相关的接口权限
You can specify the method to become an externally public API interface. If the method does not implement this feature, the method will not be publicly disclosed, and the related interface permissions cannot be obtained
当前指定的ApiTopic信息,如果当前的方法接口不指定别名,那么就使用当前的方法名称
The currently specified ApiTopic information, if the current method interface does not specify an alias, then the current method name is used
当前方法的注释内容
The comment content of the current method
当前的属性是否需要展开API信息,默认不展开 如果当前的API接口是支持Http的请求方式,当前属性有效,例如GET,POST 指定描述内容来实例化一个的对象 当前接口的描述信息 指定描述内容来实例化一个的对象 指重新定当前接口的路由信息 当前接口的描述信息 实例化一个默认的对象 可以指定方法的权限内容,可以限定MQTT会话的ClientID信息或是UserName内容
ClientId的限定内容 UserName的限定内容 检查当前的客户端ID是否通过 ID信息 是否检测成功 检查当前的用户名是否通过 用户名 是否检测成功 对应redis的一个键值信息的内容 键值的名称 根据键名来读取写入当前的数据信息 键名 对应redis的一个列表信息的内容 列表键值的名称 当前的位置的索引 根据键名来读取写入当前的列表中的单个信息 列表键名 当前的索引位置 对应redis的一个列表信息的内容 列表键值的名称 当前的位置的索引 当前位置的结束索引 根据键名来读取写入当前的列表中的多个信息 列表键名 根据键名来读取写入当前的列表中的多个信息 列表键名 开始的索引信息 根据键名来读取写入当前的列表中的多个信息 列表键名 开始的索引信息 结束的索引位置,-1为倒数第一个,以此类推。 对应redis的一个哈希信息的内容 哈希键值的名称 当前的哈希域名称 根据键名来读取写入当前的哈希的单个信息 哈希键名 哈希域名称 反射的辅助类 从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 读写接口的实现 包含是否成功的结果对象 从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 自定义的数据对象 数据读写对象 包含是否成功的结果对象 使用表达式树的方式来给一个属性赋值 属性信息 对象信息 实际的值 从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 读写接口的实现 包含是否成功的结果对象 从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 自定义的数据对象 数据读写对象 包含是否成功的结果对象 从设备里读取支持Hsl特性的数据内容, 该特性为 详细参考代码示例的操作说明。 自定义的数据类型对象 Redis的数据对象 包含是否成功的结果对象 从设备里写入支持Hsl特性的数据内容, 该特性为 需要注意的是写入并不支持特性,详细参考代码示例的操作说明。 自定义的数据类型对象 等待写入的数据参数 Redis的数据对象 包含是否成功的结果对象 从设备里读取支持Hsl特性的数据内容, 该特性为 详细参考代码示例的操作说明。 自定义的数据类型对象 Redis的数据对象 包含是否成功的结果对象 从设备里写入支持Hsl特性的数据内容, 该特性为 需要注意的是写入并不支持特性,详细参考代码示例的操作说明。 自定义的数据类型对象 等待写入的数据参数 Redis的数据对象 包含是否成功的结果对象 从Json数据里解析出真实的数据信息,根据方法参数列表的类型进行反解析,然后返回实际的数据数组
Analyze the real data information from the Json data, perform de-analysis according to the type of the method parameter list, and then return the actual data array
当前的会话内容 提供的参数列表信息 参数变量信息 已经填好的实际数据的参数数组对象
从url数据里解析出真实的数据信息,根据方法参数列表的类型进行反解析,然后返回实际的数据数组
Analyze the real data information from the url data, perform de-analysis according to the type of the method parameter list, and then return the actual data array
当前的会话内容 提供的参数列表信息 参数变量信息 已经填好的实际数据的参数数组对象
从方法的参数列表里,提取出实际的示例参数信息,返回一个json对象,注意:该数据是示例的数据,具体参数的限制参照服务器返回的数据声明。
From the parameter list of the method, extract the actual example parameter information, and return a json object. Note: The data is the example data, and the specific parameter restrictions refer to the data declaration returned by the server.
当前需要解析的方法名称 当前的参数对象信息
将一个对象转换成 的string 类型的对象,用于远程RPC的数据交互 自定义的对象 转换之后的结果对象 加密方法,只对当前的程序集开放 等待加密的数据 加密后的字节数据 解密方法,只对当前的程序集开放 等待解密的数据 解密后的字节数据 扩展的辅助类方法 获取当前数组的倒序数组,这是一个新的实例,不改变原来的数组值
Get the reversed array of the current byte array, this is a new instance, does not change the original array value
输入的原始数组 反转之后的数组信息
获取Byte数组的第 bytIndex 个位置的,boolIndex偏移的bool值
Get the bool value of the bytIndex position of the Byte array and the boolIndex offset
字节数组信息 字节的偏移位置 指定字节的位偏移 bool值
获取Byte数组的第 boolIndex 偏移的bool值,这个偏移值可以为 10,就是第 1 个字节的 第3位
Get the bool value of the boolIndex offset of the Byte array. The offset value can be 10, which is the third bit of the first byte
字节数组信息 指定字节的位偏移 bool值
获取Byte的第 boolIndex 偏移的bool值,比如3,就是第4位
Get the bool value of Byte's boolIndex offset, such as 3, which is the 4th bit
字节信息 指定字节的位偏移 bool值
设置Byte的第 boolIndex 位的bool值,可以强制为 true 或是 false, 不影响其他的位
Set the bool value of the boolIndex bit of Byte, which can be forced to true or false, without affecting other bits
字节信息 指定字节的位偏移 bool的值 修改之后的byte值
将指定的数据添加到数组的每个元素上去,使用表达式树的形式实现,将会修改原数组。不适用byte类型 数组的类型 原始数据 数据值 返回的结果信息 拷贝当前的实例数组,是基于引用层的浅拷贝,如果类型为值类型,那就是深度拷贝,如果类型为引用类型,就是浅拷贝 类型对象 数组对象 拷贝的结果内容 将字符串数组转换为实际的数据数组。例如字符串格式[1,2,3,4,5],可以转成实际的数组对象
Converts a string array into an actual data array. For example, the string format [1,2,3,4,5] can be converted into an actual array object
类型对象 字符串数据 转换方法 实际的数组
将字符串数组转换为实际的数据数组。支持byte,sbyte,bool,short,ushort,int,uint,long,ulong,float,double,使用默认的十进制,例如字符串格式[1,2,3,4,5],可以转成实际的数组对象
Converts a string array into an actual data array. Support byte, sbyte, bool, short, ushort, int, uint, long, ulong, float, double, use the default decimal, such as the string format [1,2,3,4,5], which can be converted into an actual array Object
类型对象 字符串数据 实际的数组
启动接收数据,需要传入回调方法,传递对象
To start receiving data, you need to pass in a callback method and pass an object
socket对象 回调方法 数据对象 是否启动成功
启动接收数据,需要传入回调方法,传递对象默认为socket本身
To start receiving data, you need to pass in a callback method. The default object is the socket itself.
socket对象 回调方法 是否启动成功
结束挂起的异步读取,返回读取的字节数,如果成功的情况。
Ends the pending asynchronous read and returns the number of bytes read, if successful.
socket对象 回调方法 是否启动成功
根据英文小数点进行切割字符串,去除空白的字符
Cut the string according to the English decimal point and remove the blank characters
字符串本身 切割好的字符串数组,例如输入 "100.5",返回 "100", "5"
获取当前对象的JSON格式表示的字符串。
Gets the string represented by the JSON format of the current object.
字符串对象
超时操作的类
a class use to indicate the time-out of the connection
本类自动启动一个静态线程来处理
实例化一个默认的对象
Instantiate a default object
当前超时对象的唯一ID信息,没实例化一个对象,id信息就会自增1
The unique ID information of the current timeout object. If an object is not instantiated, the id information will increase by 1
操作的开始时间
Start time of operation
操作是否成功,当操作完成的时候,需要设置为True,超时检测自动结束。如果一直为False,超时检测到超时,设置True
Whether the operation is successful, when the operation is completed, it needs to be set to True, and the timeout detection will automatically end. If it is always False, the timeout is detected by the timeout, set to True
延时的时间,单位毫秒
Delay time, in milliseconds
连接超时用的Socket,本超时对象主要针对套接字的连接,接收数据的超时检测,也可以设置为空,用作其他用途的超时检测。
Socket used for connection timeout. This timeout object is mainly for socket connection and timeout detection of received data. It can also be set to empty for other purposes.
是否发生了超时的操作,当调用方因为异常结束的时候,需要对进行判断,是否因为发送了超时导致的异常
Whether a timeout operation has occurred, when the caller ends abnormally, it needs to judge , whether it is an exception caused by a timeout sent
获取到目前为止所花费的时间
Get the time spent so far
时间信息
新增一个超时检测的对象,当操作完成的时候,需要自行标记对象的True
Add a new object for timeout detection. When the operation is completed, you need to mark the of the object as True
超时对象
获取当前检查超时对象的个数
Get the number of current check timeout objects
获取当前的所有的等待超时检查对象列表,请勿手动更改对象的属性值
Get the current list of all waiting timeout check objects, do not manually change the property value of the object
HslTimeOut数组,请勿手动更改对象的属性值
新增一个超时检测的对象,需要指定socket,超时时间,返回对象,用作标记完成信息
Add a new object for timeout detection, you need to specify the socket, the timeout period, and return the object for marking completion information
网络套接字 超时时间,单位为毫秒
Timeout period, in milliseconds
整个HslCommunication的检测超时的核心方法,由一个单独的线程运行,线程的优先级很高,当前其他所有的超时信息都可以放到这里处理
The core method of detecting the timeout of th e entire HslCommunication is run by a separate thread. The priority of the thread is very high. All other timeout information can be processed here.
需要传入线程的id信息
用于PLC通讯及ModBus自定义数据类型的读写操作 主要应用于设备实现设备类的自定义的数据类型读写,以此达到简化代码的操作,但是有一个前提,该数据处于连续的数据区块 此处举例读取三菱的自定义的数据,先实现接口,然后再读写操作 接下来就可以实现数据的读取了 读取的数据长度,对于西门子,等同于字节数,对于三菱和Modbus为字节数的一半 从字节数组进行解析实际的对象 从远程读取的数据源 将对象生成字符源,写入PLC中 准备写入到远程的数据 操作结果的类,只带有成功标志和错误信息
The class that operates the result, with only success flags and error messages
为 True 时,忽略 的值
实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 指示本次操作是否成功。
Indicates whether this operation was successful.
具体的错误描述。
Specific error description.
具体的错误代码。
The specific error code.
获取错误代号及文本描述。
Get the error code and text description.
包含错误码及错误消息
从另一个结果类中拷贝错误信息,主要是针对错误码和错误消息。
Copy error information from another result class, mainly for error codes and error messages.
支持结果类及派生类 结果类及派生类的对象
将当前的结果对象转换到指定泛型的结果类对象,如果当前结果为失败,则返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, if the current result is a failure, then return the result class object of the specified generic type failure
结果类型 如果操作成功将赋予的结果内容 最终的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,直接返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, and directly return the result class object of the specified generic type failure
结果类型 最终失败的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,如果当前结果为失败,则返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, if the current result is a failure, then return the result class object of the specified generic type failure
泛型参数一 泛型参数二 如果操作成功将赋予的结果内容一 如果操作成功将赋予的结果内容二 最终的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,直接返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, and directly return the result class object of the specified generic type failure
泛型参数一 泛型参数二 最终失败的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,如果当前结果为失败,则返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, if the current result is a failure, then return the result class object of the specified generic type failure
泛型参数一 泛型参数二 泛型参数三 如果操作成功将赋予的结果内容一 如果操作成功将赋予的结果内容二 如果操作成功将赋予的结果内容三 最终的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,直接返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, and directly return the result class object of the specified generic type failure
泛型参数一 泛型参数二 泛型参数三 最终失败的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,如果当前结果为失败,则返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, if the current result is a failure, then return the result class object of the specified generic type failure
泛型参数一 泛型参数二 泛型参数三 泛型参数四 如果操作成功将赋予的结果内容一 如果操作成功将赋予的结果内容二 如果操作成功将赋予的结果内容三 如果操作成功将赋予的结果内容四 最终的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,直接返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, and directly return the result class object of the specified generic type failure
泛型参数一 泛型参数二 泛型参数三 泛型参数四 最终失败的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,如果当前结果为失败,则返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, if the current result is a failure, then return the result class object of the specified generic type failure
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 如果操作成功将赋予的结果内容一 如果操作成功将赋予的结果内容二 如果操作成功将赋予的结果内容三 如果操作成功将赋予的结果内容四 如果操作成功将赋予的结果内容五 最终的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,直接返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, and directly return the result class object of the specified generic type failure
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 最终失败的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,如果当前结果为失败,则返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, if the current result is a failure, then return the result class object of the specified generic type failure
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 如果操作成功将赋予的结果内容一 如果操作成功将赋予的结果内容二 如果操作成功将赋予的结果内容三 如果操作成功将赋予的结果内容四 如果操作成功将赋予的结果内容五 如果操作成功将赋予的结果内容六 最终的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,直接返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, and directly return the result class object of the specified generic type failure
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 最终失败的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,如果当前结果为失败,则返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, if the current result is a failure, then return the result class object of the specified generic type failure
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 如果操作成功将赋予的结果内容一 如果操作成功将赋予的结果内容二 如果操作成功将赋予的结果内容三 如果操作成功将赋予的结果内容四 如果操作成功将赋予的结果内容五 如果操作成功将赋予的结果内容六 如果操作成功将赋予的结果内容七 最终的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,直接返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, and directly return the result class object of the specified generic type failure
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 最终失败的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,如果当前结果为失败,则返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, if the current result is a failure, then return the result class object of the specified generic type failure
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 如果操作成功将赋予的结果内容一 如果操作成功将赋予的结果内容二 如果操作成功将赋予的结果内容三 如果操作成功将赋予的结果内容四 如果操作成功将赋予的结果内容五 如果操作成功将赋予的结果内容六 如果操作成功将赋予的结果内容七 如果操作成功将赋予的结果内容八 最终的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,直接返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, and directly return the result class object of the specified generic type failure
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 最终失败的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,如果当前结果为失败,则返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, if the current result is a failure, then return the result class object of the specified generic type failure
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 如果操作成功将赋予的结果内容一 如果操作成功将赋予的结果内容二 如果操作成功将赋予的结果内容三 如果操作成功将赋予的结果内容四 如果操作成功将赋予的结果内容五 如果操作成功将赋予的结果内容六 如果操作成功将赋予的结果内容七 如果操作成功将赋予的结果内容八 如果操作成功将赋予的结果内容九 最终的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,直接返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, and directly return the result class object of the specified generic type failure
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 最终失败的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,如果当前结果为失败,则返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, if the current result is a failure, then return the result class object of the specified generic type failure
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 泛型参数十 如果操作成功将赋予的结果内容一 如果操作成功将赋予的结果内容二 如果操作成功将赋予的结果内容三 如果操作成功将赋予的结果内容四 如果操作成功将赋予的结果内容五 如果操作成功将赋予的结果内容六 如果操作成功将赋予的结果内容七 如果操作成功将赋予的结果内容八 如果操作成功将赋予的结果内容九 如果操作成功将赋予的结果内容十 最终的结果类对象
将当前的结果对象转换到指定泛型的结果类对象,直接返回指定泛型的失败结果类对象
Convert the current result object to the result class object of the specified generic type, and directly return the result class object of the specified generic type failure
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 泛型参数十 最终失败的结果类对象
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 泛型参数十 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 目标数据类型三 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 目标数据类型三 目标数据类型四 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 目标数据类型三 目标数据类型四 目标数据类型五 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 目标数据类型三 目标数据类型四 目标数据类型五 目标数据类型六 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 目标数据类型三 目标数据类型四 目标数据类型五 目标数据类型六 目标数据类型七 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 目标数据类型三 目标数据类型四 目标数据类型五 目标数据类型六 目标数据类型七 目标数据类型八 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 目标数据类型三 目标数据类型四 目标数据类型五 目标数据类型六 目标数据类型七 目标数据类型八 目标数据类型九 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 目标数据类型三 目标数据类型四 目标数据类型五 目标数据类型六 目标数据类型七 目标数据类型八 目标数据类型九 目标数据类型十 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个成功的结果对象 成功的结果对象 创建并返回一个成功的结果对象,并带有一个参数对象 参数类型 类型的值对象 成功的结果对象 创建并返回一个成功的结果对象,并带有两个参数对象 第一个参数类型 第二个参数类型 类型一对象 类型二对象 成的结果对象 创建并返回一个成功的结果对象,并带有三个参数对象 第一个参数类型 第二个参数类型 第三个参数类型 类型一对象 类型二对象 类型三对象 成的结果对象 创建并返回一个成功的结果对象,并带有四个参数对象 第一个参数类型 第二个参数类型 第三个参数类型 第四个参数类型 类型一对象 类型二对象 类型三对象 类型四对象 成的结果对象 创建并返回一个成功的结果对象,并带有五个参数对象 第一个参数类型 第二个参数类型 第三个参数类型 第四个参数类型 第五个参数类型 类型一对象 类型二对象 类型三对象 类型四对象 类型五对象 成的结果对象 创建并返回一个成功的结果对象,并带有六个参数对象 第一个参数类型 第二个参数类型 第三个参数类型 第四个参数类型 第五个参数类型 第六个参数类型 类型一对象 类型二对象 类型三对象 类型四对象 类型五对象 类型六对象 成的结果对象 创建并返回一个成功的结果对象,并带有七个参数对象 第一个参数类型 第二个参数类型 第三个参数类型 第四个参数类型 第五个参数类型 第六个参数类型 第七个参数类型 类型一对象 类型二对象 类型三对象 类型四对象 类型五对象 类型六对象 类型七对象 成的结果对象 创建并返回一个成功的结果对象,并带有八个参数对象 第一个参数类型 第二个参数类型 第三个参数类型 第四个参数类型 第五个参数类型 第六个参数类型 第七个参数类型 第八个参数类型 类型一对象 类型二对象 类型三对象 类型四对象 类型五对象 类型六对象 类型七对象 类型八对象 成的结果对象 创建并返回一个成功的结果对象,并带有九个参数对象 第一个参数类型 第二个参数类型 第三个参数类型 第四个参数类型 第五个参数类型 第六个参数类型 第七个参数类型 第八个参数类型 第九个参数类型 类型一对象 类型二对象 类型三对象 类型四对象 类型五对象 类型六对象 类型七对象 类型八对象 类型九对象 成的结果对象 创建并返回一个成功的结果对象,并带有十个参数对象 第一个参数类型 第二个参数类型 第三个参数类型 第四个参数类型 第五个参数类型 第六个参数类型 第七个参数类型 第八个参数类型 第九个参数类型 第十个参数类型 类型一对象 类型二对象 类型三对象 类型四对象 类型五对象 类型六对象 类型七对象 类型八对象 类型九对象 类型十对象 成的结果对象 操作结果的泛型类,允许带一个用户自定义的泛型对象,推荐使用这个类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据 返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 检查失败的错误消息 如果检查成功,则返回对象本身,如果失败,返回错误信息。
返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 如果检查成功,则返回对象本身,如果失败,返回错误信息。
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。 Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails. 泛型参数 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果 指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 泛型参数十 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
操作结果的泛型类,允许带两个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 可以自由指定的错误信息 如果检查成功,则返回对象本身,如果失败,返回错误信息。
返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 如果检查成功,则返回对象本身,如果失败,返回错误信息。
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。 泛型参数 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果 指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 泛型参数十 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
操作结果的泛型类,允许带三个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 用户自定义的泛型数据3 返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 检查失败的错误消息 如果检查成功,则返回对象本身,如果失败,返回错误信息。
返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 如果检查成功,则返回对象本身,如果失败,返回错误信息。
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。 泛型参数 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果 指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 泛型参数十 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
操作结果的泛型类,允许带四个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 用户自定义的泛型数据3 用户自定义的泛型数据4 返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 检查失败的错误消息 如果检查成功,则返回对象本身,如果失败,返回错误信息。
返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 如果检查成功,则返回对象本身,如果失败,返回错误信息。
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。 泛型参数 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果 指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 泛型参数十 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
操作结果的泛型类,允许带五个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 泛型类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 用户自定义的泛型数据3 用户自定义的泛型数据4 用户自定义的泛型数据5 返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 检查失败的错误消息 如果检查成功,则返回对象本身,如果失败,返回错误信息。
返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 如果检查成功,则返回对象本身,如果失败,返回错误信息。
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。 泛型参数 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果 指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 泛型参数十 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
操作结果的泛型类,允许带六个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 用户自定义的泛型数据3 用户自定义的泛型数据4 用户自定义的泛型数据5 用户自定义的泛型数据5 返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 检查失败的错误消息 如果检查成功,则返回对象本身,如果失败,返回错误信息。
返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 如果检查成功,则返回对象本身,如果失败,返回错误信息。
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。 泛型参数 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果 指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 泛型参数十 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
操作结果的泛型类,允许带七个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 用户自定义的泛型数据3 用户自定义的泛型数据4 用户自定义的泛型数据5 用户自定义的泛型数据6 用户自定义的泛型数据7 返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 检查失败的错误消息 如果检查成功,则返回对象本身,如果失败,返回错误信息。
返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 如果检查成功,则返回对象本身,如果失败,返回错误信息。
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。 泛型参数 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果 指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 泛型参数十 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
操作结果的泛型类,允许带八个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 用户自定义的泛型数据3 用户自定义的泛型数据4 用户自定义的泛型数据5 用户自定义的泛型数据6 用户自定义的泛型数据7 用户自定义的泛型数据8 返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 检查失败的错误消息 如果检查成功,则返回对象本身,如果失败,返回错误信息。
返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 如果检查成功,则返回对象本身,如果失败,返回错误信息。
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。 泛型参数 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果 指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 泛型参数十 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
操作结果的泛型类,允许带九个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 用户自定义的泛型数据3 用户自定义的泛型数据4 用户自定义的泛型数据5 用户自定义的泛型数据6 用户自定义的泛型数据7 用户自定义的泛型数据8 用户自定义的泛型数据9 返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 检查失败的错误消息 如果检查成功,则返回对象本身,如果失败,返回错误信息。
返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 如果检查成功,则返回对象本身,如果失败,返回错误信息。
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。 泛型参数 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果 指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 泛型参数十 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
操作结果的泛型类,允许带十个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 用户自定义的泛型数据3 用户自定义的泛型数据4 用户自定义的泛型数据5 用户自定义的泛型数据6 用户自定义的泛型数据7 用户自定义的泛型数据8 用户自定义的泛型数据9 用户自定义的泛型数据10 返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 检查失败的错误消息 如果检查成功,则返回对象本身,如果失败,返回错误信息。
返回一个检查结果对象,可以进行自定义的数据检查。
Returns a check result object that allows you to perform custom data checks.
检查的委托方法 如果检查成功,则返回对象本身,如果失败,返回错误信息。
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。 泛型参数 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果 指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
指定接下来要做的是内容,当前对象如果成功,就返回接下来的执行结果,如果失败,就返回当前对象本身。
Specify what you want to do next, return the result of the execution of the current object if it succeeds, and return the current object itself if it fails.
泛型参数一 泛型参数二 泛型参数三 泛型参数四 泛型参数五 泛型参数六 泛型参数七 泛型参数八 泛型参数九 泛型参数十 等待当前对象成功后执行的内容 返回整个方法链最终的成功失败结果
南京自动化研究所的DCS系统,基于modbus实现,但是不是标准的实现 实例化一个默认的对象
Instantiate a default object
DTU的服务器信息,本服务器支持任意的hsl支持的网络对象,包括plc信息,modbus设备等等,通过DTU来连接, 然后支持多个连接对象。如果需要支持非hsl的注册报文,需要重写相关的方法
DTU server information, the server supports any network objects supported by hsl, including plc information, modbus devices, etc., connected through DTU, and then supports multiple connection objects. If you need to support non-HSL registration messages, you need to rewrite the relevant methods
针对异形客户端进行扩展信息
根据配置的列表信息来实例化相关的DTU服务器
Instantiate the relevant DTU server according to the configured list information
DTU的配置信息
根据配置的列表信息来实例化相关的DTU服务器
Instantiate the relevant DTU server according to the configured list information
Dtu信息 设备信息
根据DTU信息获取设备的连接对象
Obtain the connection object of the device according to the DTU information
设备的id信息 设备的对象
获取所有的会话信息,是否在线,上线的基本信息
Get all the session information, whether it is online, online basic information
会话列表
获取所有的设备的信息,可以用来读写设备的数据信息
Get all device information, can be used to read and write device data information
设备数组
DTU的类型设置器 设备的唯一ID信息 当前的设备的类型 额外的参数都存放在json里面 根据类型,获取连接对象 获取设备的连接对象 一个基于异步高性能的客户端网络类,支持主动接收服务器的消息 详细的使用说明,请参照博客http://www.cnblogs.com/dathlin/p/7697782.html 此处贴上了Demo项目的服务器配置的示例代码 实例化一个对象 客户端系统是否启动 重连接失败的次数 客户端登录的标识名称,可以为ID号,也可以为登录名 远程服务器的IP地址和端口 服务器的时间,自动实现和服务器同步 系统与服务器的延时时间,单位毫秒 客户端启动成功的事件,重连成功也将触发此事件 连接失败时触发的事件 服务器的异常,启动,等等一般消息产生的时候,出发此事件 在客户端断开后并在重连服务器之前触发,用于清理系统资源 当接收到文本数据的时候,触发此事件 当接收到字节数据的时候,触发此事件 关闭该客户端引擎 启动客户端引擎,连接服务器系统 连接服务器之前的消息提示,如果是重连的话,就提示10秒等待信息 服务器端用于数据发送文本的方法 用户自定义的命令头 发送的文本 服务器端用于发送字节的方法 用户自定义的命令头 实际发送的数据 心跳线程的方法 高性能的异步网络服务器类,适合搭建局域网聊天程序,消息推送程序 详细的使用说明,请参照博客http://www.cnblogs.com/dathlin/p/8097897.html 此处贴上了Demo项目的服务器配置的示例代码 实例化一个网络服务器类对象 所支持的同时在线客户端的最大数量,默认为10000个 获取或设置服务器是否记录客户端上下线信息,默认为true 所有在线客户端的数量 初始化操作 关闭网络时的操作 让客户端正常下线,调用本方法即可自由控制会话客户端强制下线操作。 会话对象 客户端的上下限状态变更时触发,仅作为在线客户端识别 当客户端上线的时候,触发此事件 当客户端下线的时候,触发此事件 当接收到文本数据的时候,触发此事件 当接收到字节数据的时候,触发此事件 当接收到了新的请求的时候执行的操作 异步对象 终结点 服务器端用于数据发送文本的方法 数据发送对象 用户自定义的数据对象,如不需要,赋值为0 发送的文本 服务器端用于发送字节的方法 数据发送对象 用户自定义的数据对象,如不需要,赋值为0 实际发送的数据 服务端用于发送所有数据到所有的客户端 用户自定义的命令头 需要传送的实际的数据 服务端用于发送所有数据到所有的客户端 用户自定义的命令头 需要群发客户端的字节数据 根据客户端设置的别名进行发送消息 客户端上线的别名 用户自定义的命令头 需要传送的实际的数据 根据客户端设置的别名进行发送消息 客户端上线的别名 用户自定义的命令头 需要传送的实际的数据 通用设备的基础网络信息 实例化一个通用的设备类 当客户端上线的时候,触发此事件 当客户端下线的时候,触发此事件 按照ASCII文本的方式进行触发接收的数据 按照字节的方式进行触发接收的数据 当接收到了新的请求的时候执行的操作 异步对象 终结点 通用设备的基础状态 设备的连接地址 设备的连接时间 网络套接字 上次接收到信息的时间 设备的ip地址 缓冲内存块 文件管理类服务器,负责服务器所有分类文件的管理,特点是不支持文件附加数据,但是支持直接访问文件名 本文件的服务器不支持存储文件携带的额外信息,是直接将文件存放在服务器指定目录下的,文件名不更改,特点是服务器查看方便。 以下的示例来自Demo项目,创建了一个简单的服务器对象。 实例化一个对象 从网络套接字接收文件并移动到目标的文件夹中,如果结果异常,则结束通讯 用于接收上传文件时的临时文件夹,临时文件使用结束后会被删除
Used to receive the temporary folder when uploading files. The temporary files will be deleted after use
文件传输客户端基类,提供上传,下载,删除的基础服务
File transfer client base class, providing basic services for uploading, downloading, and deleting
文件管理服务器的ip地址及端口
IP address and port of the file management server
获取或设置连接的超时时间,默认10秒
Gets or sets the connection timeout time. The default is 10 seconds.
发送三个文件分类信息到服务器端,方便后续开展其他的操作。
Send the three file classification information to the server to facilitate subsequent operations.
套接字对象 一级分类 二级分类 三级分类 是否成功的结果对象
删除服务器上的文件,需要传入文件信息,以及文件绑定的分类信息。
To delete a file on the server, you need to pass in the file information and the classification information of the file binding.
文件的名称 一级分类 二级分类 三级分类 是否成功的结果对象
删除服务器上的文件列表,需要传入文件信息,以及文件绑定的分类信息。
To delete a file on the server, you need to pass in the file information and the classification information of the file binding.
所有等待删除的文件的名称 一级分类 二级分类 三级分类 是否成功的结果对象
删除服务器上的指定目录的所有文件,需要传入分类信息。
To delete all files in the specified directory on the server, you need to input classification information
一级分类 二级分类 三级分类 是否成功的结果对象
删除服务器上的指定目录的所有空文件目录,需要传入分类信息。
Delete all the empty file directories in the specified directory on the server, need to input classification information
一级分类 二级分类 三级分类 是否成功的结果对象
下载服务器的文件数据,并且存储到对应的内容里去。
Download the file data of the server and store it in the corresponding content.
一级分类 二级分类 三级分类 服务器的文件名称 下载的进度报告,第一个数据是已完成总接字节数,第二个数据是总字节数。 数据源信息,决定最终存储到哪里去 是否成功的结果对象
上传文件给服务器,需要指定上传的数据内容,上传到服务器的分类信息,支持进度汇报功能。
To upload files to the server, you need to specify the content of the uploaded data, the classification information uploaded to the server, and support the progress report function.
数据源,可以是文件名,也可以是数据流 在服务器保存的文件名,不包含驱动器路径 一级分类 二级分类 三级分类 文件的描述 文件的上传人 汇报进度,第一个数据是已完成总接字节数,第二个数据是总字节数。 是否成功的结果对象
与服务器文件引擎交互的客户端类,支持操作Advanced引擎和Ultimate引擎,用来上传,下载,删除服务器中的文件操作。
The client class that interacts with the server file engine, supports the operation of the Advanced engine and the Ultimate engine, and is used to upload, download, and delete file operations on the server.
这里需要需要的是,本客户端支持Advanced引擎和Ultimate引擎文件服务器,服务的类型需要您根据自己的需求来选择。 需要注意的是,三个分类信息,factory, group, id 的字符串是不区分大小写的。 此处只演示创建实例,具体的上传,下载,删除的例子请参照对应的方法
实例化一个默认的对象,需要提前指定服务器的远程地址
Instantiate a default object, you need to specify the remote address of the server in advance
通过指定的Ip地址及端口号实例化一个对象
Instantiate an object with the specified IP address and port number
服务器的ip地址 端口号信息
删除服务器的文件操作,需要指定文件名称,文件的三级分类信息
Delete the file operation of the server, you need to specify the file name and the three-level classification information of the file
文件名称,带后缀 第一大类 第二大类 第三大类 是否成功的结果对象
删除服务器的文件操作,此处文件的分类为空
Delete the file operation of the server, the classification of the file is empty here
文件名称,带后缀 是否成功的结果对象
删除服务器的文件数组操作,需要指定文件名称,文件的三级分类信息
Delete the file operation of the server, you need to specify the file names and the three-level classification information of the file
文件名称数组,带后缀 第一大类 第二大类 第三大类 是否成功的结果对象
删除服务器的文件夹的所有文件操作,文件的三级分类信息
Delete all file operations of the server folder, the three-level classification information of the file
第一大类 第二大类 第三大类 是否成功的结果对象
删除服务器的文件夹的所有空的子文件目录操作,需要传入文件的三级分类信息
To delete all empty sub-file directories of the server's folder, you need to pass in the three-level classification information of the file
第一大类 第二大类 第三大类 是否成功的结果对象
获取服务器文件夹的指定目录的文件统计信息,包括文件数量,总大小,最后更新时间
Get the file statistics of the specified directory of the server folder, including the number of files, the total size, and the last update time
第一大类 第二大类 第三大类 返回路径的信息,包含文件大小,数量,最后更新时间
获取服务器文件夹的指定目录的所有子目录的文件信息,包括每个子目录的文件数量,总大小,最后更新时间
Get the file information of all subdirectories of the specified directory of the server folder, including the number of files in each subdirectory, the total size, and the last update time
第一大类 第二大类 第三大类 返回路径的信息,包含文件大小,数量,最后更新时间
下载服务器的文件到本地的文件操作,需要指定下载的文件的名字,三级分类信息,本次保存的文件名,支持进度报告。
To download a file from the server to a local file, you need to specify the name of the downloaded file, the three-level classification information, the name of the file saved this time, and support for progress reports.
文件名称,带后缀 第一大类 第二大类 第三大类 下载的进度报告,第一个数据是已完成总接字节数,第二个数据是总字节数。 准备本地保存的名称 是否成功的结果对象 用于分类的参数中间不需要的可以为空,对应的是服务器上的路径系统。

失败的原因大多数来自于网络的接收异常,或是服务器不存在文件。
上传本地的文件到服务器操作,如果该文件已经存在,那么就更新这个文件。
Upload a local file to the server. If the file already exists, update the file.
本地的完整路径的文件名称 服务器存储的文件名称,带后缀,例如123.txt 第一大类 第二大类 第三大类 文件的额外描述 文件的上传人 上传的进度报告 是否成功的结果对象 用于分类的参数中间不需要的可以为空,对应的是服务器上的路径系统。

失败的原因大多数来自于网络的接收异常,或是客户端不存在文件。
上传本地的文件到服务器操作,服务器存储的文件名就是当前文件默认的名称 本地的完整路径的文件名称 第一大类 第二大类 第三大类 文件的额外描述 文件的上传人 上传的进度报告 是否成功的结果对象 上传本地的文件到服务器操作,服务器存储的文件名就是当前文件默认的名称 本地的完整路径的文件名称 第一大类 第二大类 第三大类 上传的进度报告 是否成功的结果对象 上传本地的文件到服务器操作,服务器存储的文件名就是当前文件默认的名称,其余参数默认为空 本地的完整路径的文件名称 上传的进度报告 是否成功的结果对象 上传数据流到服务器操作 数据流内容 服务器存储的文件名称,带后缀 第一大类 第二大类 第三大类 文件的额外描述 文件的上传人 上传的进度报告 是否成功的结果对象 用于分类的参数中间不需要的可以为空,对应的是服务器上的路径系统。

失败的原因大多数来自于网络的接收异常,或是客户端不存在文件。
上传内存图片到服务器操作 内存图片,不能为空 服务器存储的文件名称,带后缀 第一大类 第二大类 第三大类 文件的额外描述 文件的上传人 上传的进度报告 是否成功的结果对象 用于分类的参数中间不需要的可以为空,对应的是服务器上的路径系统。

失败的原因大多数来自于网络的接收异常,或是客户端不存在文件。
获取指定路径下的所有的文档
Get all documents in the specified path
第一大类 第二大类 第三大类 是否成功的结果对象 用于分类的参数中间不需要的可以为空,对应的是服务器上的路径系统。

失败的原因大多数来自于网络的接收异常。
获取指定路径下的所有的目录
Get all directories under the specified path
第一大类 第二大类 第三大类 是否成功的结果对象 用于分类的参数中间不需要的可以为空,对应的是服务器上的路径系统。

失败的原因大多数来自于网络的接收异常。
检查当前的文件是否在服务器端存在,列表中需要存在文件的名称,映射的文件也需要存在。
Check whether the current file exists on the server side, the name of the file must exist in the list, and the mapped file must also exist.
当前的文件名称,举例123.txt 第一级分类信息 第二级分类信息 第三级分类信息 是否存在,存在返回true, 否则,返回false
获取指定路径下的所有的路径或是文档信息 指令 第一大类 第二大类 第三大类 数组的类型 是否成功的结果对象 一个终极文件管理服务器,可以实现对所有的文件分类管理,本服务器支持读写分离,支持同名文件, 客户端使用进行访问,支持上传,下载,删除,请求文件列表,校验文件是否存在操作。
An ultimate file management server, which can realize classified management of all files. This server supports read-write separation, supports files with the same name, and the client uses to access, supports upload, download, delete, and request files List, check whether the file exists operation.
本文件的服务器支持存储文件携带上传人的信息,备注信息,文件名被映射成了新的名称,无法在服务器直接查看文件信息。 以下的示例来自Demo项目,创建了一个简单的服务器对象。
实例化一个默认的对象
Instantiate a default object
获取当前的针对文件夹的文件管理容器的数量
Get the current number of file management containers for the folder
所有文件组操作的词典锁 词典的锁 获取当前目录的文件列表管理容器,如果没有会自动创建,通过该容器可以实现对当前目录的文件进行访问
Get the file list management container of the current directory. If not, it will be created automatically. Through this container, you can access files in the current directory.
路径信息 文件管理容器信息
清除系统中所有空的路径信息 从套接字接收文件并保存,更新文件列表 套接字 保存的文件名 是否成功的结果对象 从套接字接收文件并保存,更新文件列表 套接字 保存的文件名 是否成功的结果对象 根据文件的显示名称转化为真实存储的名称,例如 123.txt 获取到在文件服务器里映射的文件名称,例如返回 b35a11ec533147ca80c7f7d1713f015b7909 第一大类 第二大类 第三大类 文件显示名称 是否成功的结果对象 删除已经存在的文件信息,文件的名称需要是guid名称,例如 b35a11ec533147ca80c7f7d1713f015b7909 文件的路径 文件的guid名称,例如 b35a11ec533147ca80c7f7d1713f015b7909 删除已经存在的文件信息,文件的名称需要是guid名称,例如 b35a11ec533147ca80c7f7d1713f015b7909 文件的路径 文件的guid名称,例如 b35a11ec533147ca80c7f7d1713f015b7909 一个支持完全自定义的Http服务器,支持返回任意的数据信息,方便调试信息,详细的案例请查看API文档信息
A Http server that supports fully customized, supports returning arbitrary data information, which is convenient for debugging information. For detailed cases, please refer to the API documentation information
我们先来看看一个最简单的例子,如何进行实例化的操作。 通常来说,基本的实例化,返回固定的数据并不能满足我们的需求,我们需要返回自定义的数据,有一个委托,我们需要自己指定方法. 我们实际的需求可能会更加的复杂,不同的网址会返回不同的数据,所以接下来我们需要对网址信息进行判断。 如果我们想增加安全性的验证功能,比如我们的api接口需要增加用户名和密码的功能,那么我们也可以实现 当然了,如果我们想反回一个完整的html网页,也是可以实现的,甚至添加一些js的脚本,下面的例子就简单的说明了如何操作 如果需要实现跨域的操作,可以将属性 设置为True
实例化一个默认的对象,当前的运行,需要使用管理员的模式运行
Instantiate a default object, the current operation, you need to use the administrator mode to run
启动服务器,正常调用该方法时,应该使用try...catch...来捕获错误信息
Start the server and use try...catch... to capture the error message when calling this method normally
端口号信息
关闭服务器
Shut down the server
根据客户端的请求进行处理的核心方法,可以返回自定义的数据内容,只需要集成重写即可。
The core method of processing according to the client's request can return custom data content, and only needs to be integrated and rewritten.
请求 回应 Body数据 返回的内容
获取当前的日志统计信息,可以获取到每个API的每天的调度次数信息,缓存60天数据,如果需要存储本地,需要调用方法。
Get the current log statistics, you can get the daily scheduling times information of each API, and cache 60-day data. If you need to store it locally, you need to call the method.
获取或设置当前服务器的编码信息,默认为UTF8编码
Get or set the encoding information of the current server, the default is UTF8 encoding
获取或设置是否支持跨域操作
Get or set whether to support cross-domain operations
获取或设置当前的自定义的处理信息,如果不想继承实现方法,可以使用本属性来关联你自定义的方法。
Get or set the current custom processing information. If you don't want to inherit the implementation method, you can use this attribute to associate your custom method.
获取当前的端口号信息
Get current port number information
获取当前所有注册的RPC接口信息,将返回一个数据列表。
Get all currently registered RPC interface information, and a data list will be returned.
信息列表
注册一个RPC的服务接口,可以指定当前的控制器名称,以及提供RPC服务的原始对象
Register an RPC service interface, you can specify the current controller name, and the original object that provides the RPC service
前置的接口信息,可以理解为MVC模式的控制器 原始对象信息
设置登录的账户信息,如果需要自己控制,可以自己实现委托
Set the login account information, if you need to control by yourself, you can implement the delegation by yourself
用户名的列表信息
使用指定的对象来返回网络的API接口,前提是传入的数据为json参数,返回的数据为json数据,详细参照说明
Use the specified object to return the API interface of the network, provided that the incoming data is json parameters and the returned data is json data, please refer to the description for details
当前的请求信息 已经解码过的Url地址信息 json格式的参数信息 等待解析的api解析的对象 等待返回客户的结果
根据完整的地址获取当前的url地址信息 地址信息 方法名称 使用指定的对象来返回网络的API接口,前提是传入的数据为json参数,返回的数据为json数据,详细参照说明
Use the specified object to return the API interface of the network, provided that the incoming data is json parameters and the returned data is json data, please refer to the description for details
当前的请求信息 已经解码过的Url地址信息 json格式的参数信息 等待解析的api解析的对象 等待返回客户的结果
一个基于明文的socket中心 实例化一个默认的对象 使用指定的ip地址和端口号来实例化这个对象 Ip地址 端口号 连接服务器 返回是否连接成功 关闭当前的连接对象 错误信息 发送字符串到网络上去 文本信息 发送是否成功 是否是处于重连的状态 无用的对象 当接收到字符串时候的触发事件 当前的编码器 返回表示当前对象的字符串 字符串 当前的推送的会话的基本信息 发布订阅类的客户端,使用指定的关键订阅相关的数据推送信息 详细的使用说明,请参照博客http://www.cnblogs.com/dathlin/p/8992315.html 此处贴上了Demo项目的服务器配置的示例代码 实例化一个发布订阅类的客户端,需要指定ip地址,端口,及订阅关键字 服务器的IP地址 服务器的端口号 订阅关键字 创建数据推送服务 触发数据推送的委托 是否创建成功 创建数据推送服务,使用事件绑定的机制实现 是否创建成功 关闭消息推送的界面 本客户端的关键字 获取或设置重连服务器的间隔时间,单位:毫秒 当接收到数据的事件信息,接收到数据的时候触发。 发布订阅服务器的类,支持按照关键字进行数据信息的订阅 详细的使用说明,请参照博客http://www.cnblogs.com/dathlin/p/8992315.html 此处贴上了Demo项目的服务器配置的示例代码 实例化一个对象 主动推送数据内容 关键字 数据内容 移除关键字信息,通常应用于一些特殊临时用途的关键字 关键字 创建一个远程服务器的数据推送操作,以便推送给子客户端 远程的IP地址 远程的端口号 订阅的关键字 在线客户端的数量 在客户端上线之后,是否推送缓存的数据,默认设置为true 移除客户端的数据信息 指定的客户端 指定的客户端唯一的id信息 订阅分类的核心组织对象 实例化一个默认的对象 新增一个订阅的会话 会话 移除一个订阅的会话 客户端唯一的ID信息 使用固定的发送方法将数据发送出去 数据内容 指定的推送方法 移除并关闭所有的客户端 获取是否推送过数据 True代表有,False代表没有 释放当前的程序所占用的资源 是否释放资源 释放当前的对象所占用的资源 关于Redis实现的接口,从而实现了数据连接池的操作信息 Redis的连接对象 [商业授权] Redis客户端的连接池类对象,用于共享当前的连接池,合理的动态调整连接对象,然后进行高效通信的操作,默认连接数无限大。
[Authorization] The connection pool class object of the Redis client is used to share the current connection pool, reasonably dynamically adjust the connection object, and then perform efficient communication operations, The default number of connections is unlimited
本连接池的实现仅对商业授权用户开放,用于提供服务器端的与Redis的并发读写能力。使用上和普通的 没有区别, 但是在高并发上却高性能的多,占用的连接也更少,这一切都是连接池自动实现的。
实例化一个默认的客户端连接池对象,需要指定实例Redis对象时的IP,端口,密码信息
To instantiate a default client connection pool object, you need to specify the IP, port, and password information when the Redis object is instantiated
IP地址信息 端口号信息 密码,如果没有,请输入空字符串
实例化一个默认的客户端连接池对象,需要指定实例Redis对象时的IP,端口,密码信息,以及可以指定额外的初始化操作
To instantiate a default client connection pool object, you need to specify the IP, port, and password information when the Redis object is instantiated, and you can specify additional initialization operations
IP地址信息 端口号信息 密码,如果没有,请输入空字符串 额外的初始化信息,比如修改db块的信息。
获取当前的连接池管理对象信息
Get current connection pool management object information
提供了redis辅助类的一些方法 将字符串数组打包成一个redis的报文信息 字节数据信息 结果报文信息 生成一个订阅多个主题的报文信息 多个的主题信息 结果报文信息 生成一个取消订阅多个主题的报文信息 多个的主题信息 结果报文信息 从原始的结果数据对象中提取出数字数据 原始的字节数据 带有结果对象的数据信息 从原始的结果数据对象中提取出数字数据 原始的字节数据 带有结果对象的数据信息 从结果的数据对象里提取字符串的信息 原始的字节数据 带有结果对象的数据信息 从redis的结果数据中分析出所有的字符串信息 结果数据 带有结果对象的数据信息 Redis协议的订阅操作,一个对象订阅一个或是多个频道的信息,当发生网络异常的时候,内部会进行自动重连,并恢复之前的订阅信息。
In the subscription operation of the Redis protocol, an object subscribes to the information of one or more channels. When a network abnormality occurs, the internal will automatically reconnect and restore the previous subscription information.
实例化一个发布订阅类的客户端,需要指定ip地址,端口。
To instantiate a publish and subscribe client, you need to specify the ip address and port.
服务器的IP地址 服务器的端口号
实例化一个发布订阅类的客户端,需要指定ip地址,端口,及订阅关键字。
To instantiate a publish-subscribe client, you need to specify the ip address, port, and subscription keyword.
服务器的IP地址 服务器的端口号 订阅关键字
实例化一个发布订阅类的客户端,需要指定ip地址,端口,及订阅关键字。
To instantiate a publish-subscribe client, you need to specify the ip address, port, and subscription keyword.
服务器的IP地址 服务器的端口号 订阅关键字
如果Redis服务器设置了密码,此处就需要进行设置。必须在 方法调用前设置。
If the Redis server has set a password, it needs to be set here. Must be set before the method is called.
获取或设置当前连接超时时间,主要对 方法有影响,默认值为 5000,也即是5秒。
Get or set the current connection timeout period, which mainly affects the method. The default value is 5000, which is 5 seconds.
从Redis服务器订阅一个或多个主题信息
Subscribe to one or more topics from the redis server
主题信息 订阅结果
取消订阅多个主题信息,取消之后,当前的订阅数据就不在接收到。
Unsubscribe from multiple topic information. After cancellation, the current subscription data will not be received.
主题信息 取消订阅结果
取消已经订阅的主题信息 主题信息 取消订阅结果 连接Redis的服务器,如果已经初始化了订阅的Topic信息,那么就会直接进行订阅操作。 是否创建成功 关闭消息推送的界面 当接收到Redis订阅的信息的时候触发
Triggered when receiving Redis subscription information
主题信息 数据信息
当接收到Redis订阅的信息的时候触发 这是一个redis的客户端类,支持读取,写入,发布订阅,但是不支持订阅,如果需要订阅,请使用另一个类 本类库的API指令的参考及注释来源:http://doc.redisfans.com/index.html 基本的操作如下所示,举例了几个比较常见的指令,更多的需要参考api接口描述 如下是基于特性的操作,有必要说明以下: 总的来说,当读取的数据种类比较多的时候,读取的关键字比较多的时候,处理起来就比较的麻烦,此处推荐一个全新的写法,为了更好的对比,我们假设实现一种需求 为此我们只需要实现一个特性类即可。代码如下:(注意,实际是很灵活的,类型都是自动转换的) 实例化一个客户端的对象,用于和服务器通信 服务器的ip地址 服务器的端口号 密码,如果服务器没有设置,密码设置为null 实例化一个客户端对象,需要手动指定Ip地址和端口 密码,如果服务器没有设置,密码设置为null 自定义的指令交互方法,该指令用空格分割,举例:LTRIM AAAAA 0 999 就是收缩列表,GET AAA 就是获取键值,需要对返回的数据进行二次分析 举例:LTRIM AAAAA 0 999 就是收缩列表,GET AAA 就是获取键值 从服务器返回的结果数据对象 向服务器请求指定,并返回数字的结果对象 命令数组 数字的结果对象 向服务器请求指令,并返回long数字的结果对象 命令数组 long数字的结果对象 向服务器请求指令,并返回字符串的结果对象 命令数组 字符串的结果对象 向服务器请求指令,并返回字符串数组的结果对象 命令数组 字符串数组的结果对象 向服务器请求指令,并返回状态的结果对象,通常用于写入的判断,或是请求类型的判断 命令数组 是否成功的结果对象 删除给定的一个或多个 key 。不存在的 key 会被忽略。 关键字 被删除 key 的数量。 删除给定的一个或多个 key 。不存在的 key 会被忽略。 关键字 被删除 key 的数量。 检查给定 key 是否存在。若 key 存在,返回 1 ,否则返回 0 。 关键字 若 key 存在,返回 1 ,否则返回 0 。 为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。设置成功返回 1 。当 key 不存在或者不能为 key 设置生存时间时,返回 0 。 关键字 当前key的生存时间,单位为秒 设置成功返回 1 。当 key 不存在或者不能为 key 设置生存时间时,返回 0 。 在 Redis 中,带有生存时间的 key 被称为『易失的』(volatile)。
生存时间可以通过使用 DEL 命令来删除整个 key 来移除,或者被 SET 和 GETSET 命令覆写( overwrite),这意味着,如果一个命令只是修改( alter)一个带生存时间的 key 的值而不是用一个新的 key 值来代替( replace)它的话,那么生存时间不会被改变。
比如说,对一个 key 执行 INCR 命令,对一个列表进行 LPUSH 命令,或者对一个哈希表执行 HSET 命令,这类操作都不会修改 key 本身的生存时间。
另一方面,如果使用 RENAME 对一个 key 进行改名,那么改名后的 key 的生存时间和改名前一样。
RENAME 命令的另一种可能是,尝试将一个带生存时间的 key 改名成另一个带生存时间的 another_key ,这时旧的 another_key( 以及它的生存时间)会被删除,然后旧的 key 会改名为 another_key ,因此,新的 another_key 的生存时间也和原本的 key 一样。
使用 PERSIST 命令可以在不删除 key 的情况下,移除 key 的生存时间,让 key 重新成为一个『持久的』(persistent) key 。
更新生存时间
可以对一个已经带有生存时间的 key 执行 EXPIRE 命令,新指定的生存时间会取代旧的生存时间。
过期时间的精确度
在 Redis 2.4 版本中,过期时间的延迟在 1 秒钟之内 —— 也即是,就算 key 已经过期,但它还是可能在过期之后一秒钟之内被访问到,而在新的 Redis 2.6 版本中,延迟被降低到 1 毫秒之内。
Redis 2.1.3 之前的不同之处
在 Redis 2.1.3 之前的版本中,修改一个带有生存时间的 key 会导致整个 key 被删除,这一行为是受当时复制( replication)层的限制而作出的,现在这一限制已经被修复。
查找所有符合给定模式 pattern 的 key 。 * 匹配数据库中所有 key。 h?llo 匹配 hello , hallo 和 hxllo 等。 h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。 给定模式 符合给定模式的 key 列表。 将当前数据库的 key 移动到给定的数据库 db 当中。 如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定 key ,或者 key 不存在于当前数据库,那么 MOVE 没有任何效果。 因此,也可以利用这一特性,将 MOVE 当作锁(locking)原语(primitive)。 关键字 数据块 是否移动成功 移除给定 key 的生存时间,将这个 key 从『易失的』(带生存时间 key )转换成『持久的』(一个不带生存时间、永不过期的 key )。 当生存时间移除成功时,返回 1 . 如果 key 不存在或 key 没有设置生存时间,返回 0 。 关键字 当生存时间移除成功时,返回 1 . 如果 key 不存在或 key 没有设置生存时间,返回 0 。 从当前数据库中随机返回(不删除)一个 key 。 当数据库不为空时,返回一个 key 。 当数据库为空时,返回 nil 。 当数据库不为空时,返回一个 key 。 当数据库为空时,返回 nil 。 将 key 改名为 newkey 。 当 key 和 newkey 相同,或者 key 不存在时,返回一个错误。 当 newkey 已经存在时, RENAME 命令将覆盖旧值。 旧的key 新的key 改名成功时提示 OK ,失败时候返回一个错误。 返回 key 所储存的值的类型。none (key不存在),string (字符串),list (列表),set (集合),zset (有序集),hash (哈希表) 关键字 类型 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。 关键字 当 key 不存在时,返回 -2 。当 key 存在但没有设置剩余生存时间时,返回 -1 。否则,以秒为单位,返回 key 的剩余生存时间。 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。 如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。 返回追加 value 之后, key 中字符串的长度。 关键字 数值 追加 value 之后, key 中字符串的长度。 将 key 中储存的数字值减一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 本操作的值限制在 64 位(bit)有符号数字表示之内。 返回执行 DECR 命令之后 key 的值。 关键字 执行 DECR 命令之后 key 的值。 将 key 所储存的值减去减量 decrement 。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 本操作的值限制在 64 位(bit)有符号数字表示之内。 返回减去 decrement 之后, key 的值。 关键字 操作的值 返回减去 decrement 之后, key 的值。 返回 key 所关联的字符串值。如果 key 不存在那么返回特殊值 nil 。 假如 key 储存的值不是字符串类型,返回一个错误,因为 GET 只能用于处理字符串值。 关键字 当 key 不存在时,返回 nil ,否则,返回 key 的值。 返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。 负数偏移量表示从字符串最后开始计数, -1 表示最后一个字符, -2 表示倒数第二个,以此类推。 返回截取得出的子字符串。 关键字 截取开始的位置 截取结束的位置 返回截取得出的子字符串。 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。当 key 存在但不是字符串类型时,返回一个错误。 关键字 新的值 返回给定 key 的旧值。当 key 没有旧值时,也即是, key 不存在时,返回 nil 。 将 key 中储存的数字值增一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 返回执行 INCR 命令之后 key 的值。 关键字 返回执行 INCR 命令之后 key 的值。 将 key 所储存的值加上增量 increment 。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 关键字 增量数据 加上 increment 之后, key 的值。 将 key 所储存的值加上增量 increment 。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBYFLOAT 操作。 如果命令执行成功,那么 key 的值会被更新为(执行加法之后的)新值,并且新值会以字符串的形式返回给调用者 关键字 增量数据 执行命令之后 key 的值。 返回所有(一个或多个)给定 key 的值。 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 null 。因此,该命令永不失败。 关键字数组 一个包含所有给定 key 的值的列表。 同时设置一个或多个 key-value 对。 如果某个给定 key 已经存在,那么 MSET 会用新值覆盖原来的旧值,如果这不是你所希望的效果,请考虑使用 MSETNX 命令:它只会在所有给定 key 都不存在的情况下进行设置操作。 关键字数组 值数组 总是返回 OK (因为 MSET 不可能失败) 将字符串值 value 关联到 key 。 如果 key 已经持有其他值, SET 就覆写旧值,无视类型。 对于某个原本带有生存时间(TTL)的键来说, 当 SET 命令成功在这个键上执行时, 这个键原有的 TTL 将被清除。 关键字 数据值 SET 在设置操作成功完成时,才返回 OK 。 将字符串值 value 关联到 key 。并发布一个订阅的频道数据,都成功时,才返回成功 关键字 数据值 是否成功的结果对象 将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。如果 key 已经存在, SETEX 命令将覆写旧值。 关键字 数值 生存时间,单位秒 设置成功时返回 OK 。当 seconds 参数不合法时,返回一个错误。 将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作。设置成功,返回 1 。设置失败,返回 0 。 关键字 数据值 设置成功,返回 1 。设置失败,返回 0 。 用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始。不存在的 key 当作空白字符串处理。返回被 SETRANGE 修改之后,字符串的长度。 关键字 数值 起始的偏移量 被 SETRANGE 修改之后,字符串的长度。 返回 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。返回符串值的长度。当 key 不存在时,返回 0 。 关键字 字符串值的长度。当 key 不存在时,返回 0 。 将值 value 插入到列表 key 当中,位于值 pivot 之前。 当 pivot 不存在于列表 key 时,不执行任何操作。 当 key 不存在时, key 被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。 关键字 数值 原先的值 如果命令执行成功,返回插入操作完成之后,列表的长度。 如果没有找到 pivot ,返回 -1 。 如果 key 不存在或为空列表,返回 0 。 将值 value 插入到列表 key 当中,位于值 pivot 之后。 当 pivot 不存在于列表 key 时,不执行任何操作。 当 key 不存在时, key 被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。 关键字 数值 原先的值 如果命令执行成功,返回插入操作完成之后,列表的长度。 如果没有找到 pivot ,返回 -1 。 如果 key 不存在或为空列表,返回 0 。 返回列表 key 的长度。如果 key 不存在,则 key 被解释为一个空列表,返回 0 .如果 key 不是列表类型,返回一个错误。 关键字 列表 key 的长度。 返回列表 key 中,下标为 index 的元素。下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。如果 key 不是列表类型,返回一个错误。 关键字 索引位置 列表中下标为 index 的元素。如果 index 参数的值不在列表的区间范围内(out of range),返回 nil 。 移除并返回列表 key 的头元素。列表的头元素。当 key 不存在时,返回 nil 。 关键字信息 列表的头元素。 将一个或多个值 value 插入到列表 key 的表头,如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。当 key 存在但不是列表类型时,返回一个错误。返回执行 LPUSH 命令后,列表的长度。 关键字 执行 LPUSH 命令后,列表的长度。 将一个或多个值 value 插入到列表 key 的表头,如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。当 key 存在但不是列表类型时,返回一个错误。返回执行 LPUSH 命令后,列表的长度。 关键字 执行 LPUSH 命令后,列表的长度。 将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表。和 LPUSH 命令相反,当 key 不存在时, LPUSHX 命令什么也不做。 返回LPUSHX 命令执行之后,表的长度。 关键字 是否插入数据成功 返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。 下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。 返回一个列表,包含指定区间内的元素。 关键字 开始的索引 结束的索引 返回一个列表,包含指定区间内的元素。 根据参数 count 的值,移除列表中与参数 value 相等的元素。count 的值可以是以下几种: count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。 count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。 count = 0 : 移除表中所有与 value 相等的值。 返回被移除的数量。 关键字 移除参数 匹配的值 被移除元素的数量。因为不存在的 key 被视作空表(empty list),所以当 key 不存在时, LREM 命令总是返回 0 。 设置数组的某一个索引的数据信息,当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误。 关键字 索引位置 操作成功返回 ok ,否则返回错误信息。 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 举个例子,执行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三个元素,其余元素全部删除。 下标( index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。 当 key 不是列表类型时,返回一个错误。 关键字信息 起始的索引信息 结束的索引信息 操作成功返回 ok ,否则返回错误信息。 移除并返回列表 key 的尾元素。当 key 不存在时,返回 nil 。 关键字信息 列表的尾元素。 命令 RPOPLPUSH 在一个原子时间内,执行以下两个动作:
1. 将列表 source 中的最后一个元素( 尾元素)弹出,并返回给客户端。
2. 将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。

举个例子,你有两个列表 source 和 destination , source 列表有元素 a, b, c , destination 列表有元素 x, y, z ,执行 RPOPLPUSH source destination 之后, source 列表包含元素 a, b , destination 列表包含元素 c, x, y, z ,并且元素 c 会被返回给客户端。 如果 source 不存在,值 nil 被返回,并且不执行其他动作。 如果 source 和 destination 相同,则列表中的表尾元素被移动到表头,并返回该元素,可以把这种特殊情况视作列表的旋转( rotation)操作。
第一个关键字 第二个关键字 返回的移除的对象
将一个或多个值 value 插入到列表 key 的表尾(最右边)。 如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。当 key 存在但不是列表类型时,返回一个错误。 关键字 返回执行 RPUSH 操作后,表的长度。 将一个或多个值 value 插入到列表 key 的表尾(最右边)。 如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾:比如对一个空列表 mylist 执行 RPUSH mylist a b c ,得出的结果列表为 a b c , 如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。当 key 存在但不是列表类型时,返回一个错误。 返回执行 RPUSH 操作后,表的长度。 关键字 返回执行 RPUSH 操作后,表的长度。 将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表。 和 RPUSH 命令相反,当 key 不存在时, RPUSHX 命令什么也不做。 关键字 RPUSHX 命令执行之后,表的长度。 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。 关键字 被成功移除的域的数量,不包括被忽略的域。 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。返回被成功移除的域的数量,不包括被忽略的域。 关键字 所有的域 返回被成功移除的域的数量,不包括被忽略的域。 查看哈希表 key 中,给定域 field 是否存在。如果哈希表含有给定域,返回 1 。 如果哈希表不含有给定域,或 key 不存在,返回 0 。 关键字 如果哈希表含有给定域,返回 1 。如果哈希表不含有给定域,或 key 不存在,返回 0 。 返回哈希表 key 中给定域 field 的值。当给定域不存在或是给定 key 不存在时,返回 nil 关键值 给定域的值。 当给定域不存在或是给定 key 不存在时,返回 nil 。 返回哈希表 key 中,所有的域和值。在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。 关键值 以列表形式返回哈希表的域和域的值。 若 key 不存在,返回空列表。 为哈希表 key 中的域 field 的值加上增量 increment 。增量也可以为负数,相当于对给定域进行减法操作。 如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。返回执行 HINCRBY 命令之后,哈希表 key 中域 field 的值。 关键字 增量值 返回执行 HINCRBY 命令之后,哈希表 key 中域 field 的值。 为哈希表 key 中的域 field 的值加上增量 increment 。增量也可以为负数,相当于对给定域进行减法操作。 如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。返回执行 HINCRBY 命令之后,哈希表 key 中域 field 的值。 关键字 增量值 返回执行 HINCRBY 命令之后,哈希表 key 中域 field 的值。 返回哈希表 key 中的所有域。当 key 不存在时,返回一个空表。 关键值 一个包含哈希表中所有域的表。 当 key 不存在时,返回一个空表。 返回哈希表 key 中域的数量。 关键字 哈希表中域的数量。当 key 不存在时,返回 0 。 返回哈希表 key 中,一个或多个给定域的值。如果给定的域不存在于哈希表,那么返回一个 nil 值。 因为不存在的 key 被当作一个空哈希表来处理,所以对一个不存在的 key 进行 HMGET 操作将返回一个只带有 nil 值的表。 关键值 指定的域 一个包含多个给定域的关联值的表,表值的排列顺序和给定域参数的请求顺序一样。 将哈希表 key 中的域 field 的值设为 value 。 如果 key 不存在,一个新的哈希表被创建并进行 HSET 操作。 如果域 field 已经存在于哈希表中,旧值将被覆盖。 如果 field 是哈希表中的一个新建域,并且值设置成功,返回 1 。 如果哈希表中域 field 已经存在且旧值已被新值覆盖,返回 0 。 关键字 数据值 如果 field 是哈希表中的一个新建域,并且值设置成功,返回 1 。 如果哈希表中域 field 已经存在且旧值已被新值覆盖,返回 0 。 同时将多个 field-value (域-值)对设置到哈希表 key 中。 此命令会覆盖哈希表中已存在的域。 如果 key 不存在,一个空哈希表被创建并执行 HMSET 操作。 关键字 数据值 如果命令执行成功,返回 OK 。 当 key 不是哈希表(hash)类型时,返回一个错误 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。若域 field 已经存在,该操作无效。 设置成功,返回 1 。如果给定域已经存在且没有操作被执行,返回 0 。 关键字 数据值 设置成功,返回 1 。如果给定域已经存在且没有操作被执行,返回 0 。 返回哈希表 key 中所有域的值。当 key 不存在时,返回一个空表。 关键值 返回哈希表 key 中所有域的值。 当 key 不存在时,返回一个空表。 将一个member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。假如 key 不存在,则创建一个只包含 member 元素作成员的集合。当 key 不是集合类型时,返回一个错误。 关键字信息 等待添加的元素 被添加到集合中的新元素的数量,不包括被忽略的元素。 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。假如 key 不存在,则创建一个只包含 member 元素作成员的集合。当 key 不是集合类型时,返回一个错误。 关键字信息 等待添加的元素 被添加到集合中的新元素的数量,不包括被忽略的元素。 返回集合 key 的基数(集合中元素的数量)。当 key 不存在时,返回 0 。 集合 key 的名称 集合的基数。 返回一个集合的全部成员,该集合是所有给定集合之间的差集。 集合关键字 集合关键字 交集成员的列表。 返回一个集合的全部成员,该集合是所有给定集合之间的差集。 集合关键字 集合关键字 交集成员的列表。 这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 集合已经存在,则将其覆盖。destination 可以是 key 本身。 目标集合 等待操作的集合 运算的集合 结果集中的元素数量。 这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 集合已经存在,则将其覆盖。destination 可以是 key 本身。 目标集合 等待操作的集合 运算的集合 结果集中的元素数量。 返回一个集合的全部成员,该集合是所有给定集合的交集。不存在的 key 被视为空集。当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。 集合关键字 运算的集合 交集成员的列表。 返回一个集合的全部成员,该集合是所有给定集合的交集。不存在的 key 被视为空集。当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。 集合关键字 运算的集合 交集成员的列表。 这个命令类似于 SINTER 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 集合已经存在,则将其覆盖。destination 可以是 key 本身。 目标集合 等待操作的集合 运算的集合 结果集中的成员数量。 这个命令类似于 SINTER 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 集合已经存在,则将其覆盖。destination 可以是 key 本身。 目标集合 等待操作的集合 运算的集合 结果集中的成员数量。 判断 member 元素是否集合 key 的成员。如果 member 元素是集合的成员,返回 1 。如果 member 元素不是集合的成员,或 key 不存在,返回 0 。 集合key 元素 如果 member 元素是集合的成员,返回 1 。如果 member 元素不是集合的成员,或 key 不存在,返回 0 。 返回集合 key 中的所有成员。不存在的 key 被视为空集合。 集合key 集合中的所有成员。 将 member 元素从 source 集合移动到 destination 集合。如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。 否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。 当 source 或 destination 不是集合类型时,返回一个错误。 原集合 目标集合 元素 如果 member 元素被成功移除,返回 1 。如果 member 元素不是 source 集合的成员,并且没有任何操作对 destination 集合执行,那么返回 0 。 移除并返回集合中的一个随机元素。如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用 SRANDMEMBER 命令。 集合关键字 被移除的随机元素。当 key 不存在或 key 是空集时,返回 nil 。 那么返回集合中的一个随机元素。 集合关键字 返回一个元素;如果集合为空,返回 nil 。 返回集合中的多个随机元素。
如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。
如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
集合关键字 元素个数 返回一个数组;如果集合为空,返回空数组。
移除集合 key 中的一个元素,不存在的 member 元素会被忽略。 集合关键字 等待移除的元素 被成功移除的元素的数量,不包括被忽略的元素。 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。 集合关键字 等待移除的元素 被成功移除的元素的数量,不包括被忽略的元素。 返回一个集合的全部成员,该集合是所有给定集合的并集。不存在的 key 被视为空集。 集合关键字 并集的集合 并集成员的列表。 返回一个或多个集合的全部成员,该集合是所有给定集合的并集。不存在的 key 被视为空集。 集合关键字 并集的集合 并集成员的列表。 这个命令类似于 SUNION 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 已经存在,则将其覆盖。destination 可以是 key 本身。 存储的目标集合 集合关键字 并集的集合 结果集中的元素数量。 这个命令类似于 SUNION 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 已经存在,则将其覆盖。destination 可以是 key 本身。 存储的目标集合 集合关键字 并集的集合 结果集中的元素数量。 将一个 member 元素及其 score 值加入到有序集 key 当中。如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。 score 值可以是整数值或双精度浮点数。
如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。当 key 存在但不是有序集类型时,返回一个错误。
有序集合的关键字 有序集合的元素 每个元素的得分 被成功添加的新成员的数量,不包括那些被更新的、已经存在的成员。
将一个或多个 member 元素及其 score 值加入到有序集 key 当中。如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。 score 值可以是整数值或双精度浮点数。
如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。当 key 存在但不是有序集类型时,返回一个错误。
有序集合的关键字 有序集合的元素 每个元素的得分 被成功添加的新成员的数量,不包括那些被更新的、已经存在的成员。
返回有序集 key 的基数。 有序集合的关键字 当 key 存在且是有序集类型时,返回有序集的基数。当 key 不存在时,返回 0 。 返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量。 有序集合的关键字 最小值,包含 最大值,包含 score 值在 min 和 max 之间的成员的数量。 为有序集 key 的成员 member 的 score 值加上增量 increment 。可以通过传递一个负数值 increment ,让 score 减去相应的值,比如 ZINCRBY key -5 member ,就是让 member 的 score 值减去 5 。 当 key 不存在,或 member 不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 。当 key 不是有序集类型时,返回一个错误。 有序集合的关键字 成员名称 增量数据,可以为负数 member 成员的新 score 值,以字符串形式表示。 返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递增(从小到大)来排序。具有相同 score 值的成员按字典序来排列。 下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。 超出范围的下标并不会引起错误。比如说,当 start 的值比有序集的最大下标还要大,或是 start > stop 时, ZRANGE 命令只是简单地返回一个空列表。另一方面,假如 stop 参数的值比有序集的最大下标还要大,那么 Redis 将 stop 当作最大下标来处理。 可以通过使用 WITHSCORES 选项,来让成员和它的 score 值一并返回,返回列表以 value1,score1, ..., valueN,scoreN 的格式表示。客户端库可能会返回一些更复杂的数据类型,比如数组、元组等。 有序集合的关键字 起始的下标 结束的下标 是否带有 score 返回 指定区间内,根据参数 withScore 来决定是否带 score 值的有序集成员的列表。 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。 min 和 max 可以是 -inf 和 +inf ,这样一来,你就可以在不知道有序集的最低和最高 score 值的情况下,使用 ZRANGEBYSCORE 这类命令。 默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 "(" 符号来使用可选的开区间 (小于或大于)。"(5"代表不包含5 有序集合的关键字 最小值,可以为-inf,代表最高,如果为5,代表大于等于5,如果是(5,代表大于5 最大值,可以为+inf,代表最低,如果为10,代表小于等于5,如果是(10,代表小于10 是否带有 score 返回 指定区间内,带有 score 值(根据参数 withScore 来决定)的有序集成员的列表。 返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列。排名以 0 为底,也就是说, score 值最小的成员排名为 0 。 有序集合的关键字 成员 member 的名称 如果 member 是有序集 key 的成员,返回 member 的排名。如果 member 不是有序集 key 的成员,返回 nil 。 移除有序集 key 中的指定成员,不存在的成员将被忽略。当 key 存在但不是有序集类型时,返回一个错误。 有序集合的关键字 等待被移除的成员 被成功移除的成员的数量,不包括被忽略的成员。 移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。当 key 存在但不是有序集类型时,返回一个错误。 有序集合的关键字 等待被移除的成员 被成功移除的成员的数量,不包括被忽略的成员。 移除有序集 key 中,指定排名(rank)区间内的所有成员。区间分别以下标参数 start 和 stop 指出,包含 start 和 stop 在内。 下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。 有序集合的关键 开始的下标 结束的下标 被移除成员的数量。 移除有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。 min 和 max 可以是 -inf 和 +inf ,这样一来,你就可以在不知道有序集的最低和最高 score 值的情况下,使用 ZRANGEBYSCORE 这类命令。 默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 "(" 符号来使用可选的开区间 (小于或大于)。例如"(5"代表不包括5 有序集合的关键字 最小值,可以为-inf,代表最低,如果为5,代表大于等于5,如果是(5,代表大于5 最大值,可以为+inf,代表最低,如果为10,代表小于等于5,如果是(10,代表小于10 被移除成员的数量。 返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递减(从大到小)来排列。具有相同 score 值的成员按字典序来排列。 下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。 超出范围的下标并不会引起错误。比如说,当 start 的值比有序集的最大下标还要大,或是 start > stop 时, ZRANGE 命令只是简单地返回一个空列表。另一方面,假如 stop 参数的值比有序集的最大下标还要大,那么 Redis 将 stop 当作最大下标来处理。 可以通过使用 WITHSCORES 选项,来让成员和它的 score 值一并返回,返回列表以 value1,score1, ..., valueN,scoreN 的格式表示。客户端库可能会返回一些更复杂的数据类型,比如数组、元组等。 有序集合的关键字 起始的下标 结束的下标 是否带有 score 返回 指定区间内,根据参数 withScore 来决定是否带 score 值的有序集成员的列表。 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。序集成员按 score 值递减(从大到小)的次序排列。 min 和 max 可以是 -inf 和 +inf ,这样一来,你就可以在不知道有序集的最低和最高 score 值的情况下,使用 ZRANGEBYSCORE 这类命令。 默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 ( 符号来使用可选的开区间 (小于或大于)。(5代表不包含5 有序集合的关键字 最大值,可以为+inf,代表最高,如果为10,代表小于等于5,如果是(10,代表小于10 最小值,可以为-inf,代表最低,如果为5,代表大于等于5,如果是(5,代表大于5 是否带有 score 返回 指定区间内,带有 score 值(根据参数 withScore 来决定)的有序集成员的列表。 返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递减(从大到小)排序。排名以 0 为底,也就是说,score 值最大的成员排名为 0 。 有序集合的关键字 成员 member 的名称 如果 member 是有序集 key 的成员,返回 member 的排名。如果 member 不是有序集 key 的成员,返回 nil 。 返回有序集 key 中,成员 member 的 score 值。如果 member 元素不是有序集 key 的成员,或 key 不存在,返回 nil 。 有序集合的关键字 成员的名称 member 成员的 score 值,以字符串形式表示。 从设备里读取支持Hsl特性的数据内容, 该特性为 详细参考代码示例的操作说明。 自定义的数据类型对象 包含是否成功的结果对象 我们来说明下这个方法到底是怎么用的,当我们需要读取redis好几个数据的时候,我们很可能写如下的代码: 总的来说,当读取的数据种类比较多的时候,读取的关键字比较多的时候,处理起来就比较的麻烦,此处推荐一个全新的写法,为了更好的对比,我们假设实现一种需求 为此我们只需要实现一个特性类即可。代码如下:(注意,实际是很灵活的,类型都是自动转换的) 当然了,异步也是一样的,异步的代码就不重复介绍了。 从设备里写入支持Hsl特性的数据内容, 该特性为 需要注意的是写入并不支持特性,详细参考代码示例的操作说明。 自定义的数据类型对象 等待写入的数据参数 包含是否成功的结果对象 SAVE 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。 保存成功时返回 OK 。 在后台异步(Asynchronously)保存当前数据库的数据到磁盘。 BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。 反馈信息。 获取服务器的时间戳信息,可用于本地时间的数据同步问题 带有服务器时间的结果对象 向服务器进行PING的操作,服务器会返回PONG操作 是否成功 返回当前数据库的 key 的数量。 当前数据库的 key 的数量。 清空当前的数据库的key信息 总是返回 OK 。 修改Redis的密码信息,如果不需要密码,则传入空字符串即可 密码信息 是否更新了密码信息 将信息 message 发送到指定的频道 channel,返回接收到信息 message 的订阅者数量。 频道,和关键字不是一回事 消息 接收到信息 message 的订阅者数量。 切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。默认使用 0 号数据库。 索引值 是否切换成功 当接收到Redis订阅的信息的时候触发
Triggered when receiving Redis subscription information
主题信息 数据信息
当接收到Redis订阅的信息的时候触发 从Redis服务器订阅一个或多个主题信息
Subscribe to one or more topics from the redis server
主题信息 订阅结果
取消订阅一个或多个主题信息,取消之后,当前的订阅数据就不在接收到。
Unsubscribe from multiple topic information. After cancellation, the current subscription data will not be received.
主题信息 取消订阅结果
同步访问数据的客户端类,用于向服务器请求一些确定的数据信息 详细的使用说明,请参照博客http://www.cnblogs.com/dathlin/p/7697782.html 此处贴上了Demo项目的服务器配置的示例代码 实例化一个客户端的对象,用于和服务器通信 服务器的ip地址 服务器的端口号 实例化一个客户端的对象,用于和服务器通信 服务器的ip地址 服务器的端口号 实例化一个客户端对象,需要手动指定Ip地址和端口 客户端向服务器进行请求,请求字符串数据,忽略了自定义消息反馈 用户的指令头 发送数据 带返回消息的结果对象 客户端向服务器进行请求,请求字符串数组,忽略了自定义消息反馈 用户的指令头 发送数据 带返回消息的结果对象 客户端向服务器进行请求,请求字节数据 用户的指令头 发送的字节内容 带返回消息的结果对象 客户端向服务器进行请求,请求字符串数据,并返回状态信息 用户的指令头 发送数据 带返回消息的结果对象 客户端向服务器进行请求,请求字符串数据,并返回状态信息 用户的指令头 发送数据 带返回消息的结果对象 客户端向服务器进行请求,请求字符串数据,并返回状态信息 用户的指令头 发送数据 带返回消息的结果对象 需要发送的底层数据 需要发送的底层数据 带返回消息的结果对象 需要发送的底层数据 需要发送的底层数据 带返回消息的结果对象 消息处理服务器,主要用来实现接收客户端信息并进行消息反馈的操作,适用于客户端进行远程的调用,要求服务器反馈数据。
The message processing server is mainly used to implement the operation of receiving client information and performing message feedback. It is applicable to remote calls made by clients and requires the server to feedback data.
详细的使用说明,请参照博客http://www.cnblogs.com/dathlin/p/7697782.html 此处贴上了Demo项目的服务器配置的示例代码
实例化一个默认的对象
Instantiate a default object
接收字符串信息的事件 接收字符串数组信息的事件 接收字节信息的事件 向指定的通信对象发送字符串数据 通信对象 用户的指令头 实际发送的字符串数据 向指定的通信对象发送字符串数组 通信对象 用户的指令头 实际发送的字符串数组 向指定的通信对象发送字节数据 连接对象 用户的指令头 实际的数据 关闭网络的操作 当接收到了新的请求的时候执行的操作 异步对象 终结点 让客户端正常下线,调用本方法即可自由控制会话客户端强制下线操作。 会话对象 当前在线的客户端数量 用于服务器支持软件全自动更新升级的类
Class for server support software full automatic update and upgrade
实例化一个默认的对象
Instantiate a default object
更新程序的名称
系统升级时客户端所在的目录,默认为C:\HslCommunication 获取所有的文件信息 目标路径 日志信息 文件名的列表 UDP客户端的类,负责发送数据到服务器,然后从服务器接收对应的数据信息,该数据经过HSL封装
UDP client class, responsible for sending data to the server, and then receiving the corresponding data information from the server, the data is encapsulated by HSL
实例化对象,指定发送的服务器地址和端口号
Instantiated object, specifying the server address and port number to send
服务器的Ip地址 端口号
客户端向服务器进行请求,请求字符串数据,忽略了自定义消息反馈
The client makes a request to the server, requesting string data, and ignoring custom message feedback
用户的指令头 发送数据 带返回消息的结果对象
客户端向服务器进行请求,请求字节数据
The client makes a request to the server, requesting byte data
用户的指令头 发送的字节内容 带返回消息的结果对象
客户端向服务器进行请求,请求字符串数据,并返回状态信息
The client makes a request to the server, requests string data, and returns status information
用户的指令头 发送数据 带返回消息的结果对象
客户端向服务器进行请求,请求字节数据,并返回状态信息
The client makes a request to the server, requests byte data, and returns status information
用户的指令头 发送数据 带返回消息的结果对象
发送的底层数据,然后返回结果数据
Send the underlying data and then return the result data
需要发送的底层数据 带返回消息的结果对象
发送的底层数据,然后返回结果数据,该结果是带Handle信息的。
Send the underlying data, and then return the result data, the result is with Handle information.
需要发送的底层数据 带返回消息的结果对象
Udp网络的服务器端类,您可以使用本类构建一个简单的,高性能的udp服务器,接收来自其他客户端的数据,当然,您也可以自定义返回你要返回的数据
Server-side class of Udp network. You can use this class to build a simple, high-performance udp server that receives data from other clients. Of course, you can also customize the data you want to return.
获取或设置一次接收时的数据长度,默认2KB数据长度 重新开始接收数据 数据处理中心 会话信息 暗号 向指定的通信对象发送字符串数据 通信对象 用户的指令头 实际发送的字符串数据 向指定的通信对象发送字节数据 连接对象 用户的指令头 实际的数据 当接收到文本数据的时候,触发此事件 当接收到字节数据的时候,触发此事件 DTSU6606型三相四线电子式电能表的Modbus-RTU通信协议 实例化一个Modbus-Rtu协议的客户端对象
Instantiate a client object of the Modbus-Rtu protocol
指定客户端自己的站号来初始化
Specify the client's own station number to initialize
客户端自身的站号
读取电表的电参数类,主要包含电压,电流,频率,有功功率,无功功率,视在功率,功率因数
Read the electrical parameters of the meter, including voltage, current, frequency, active power, reactive power, apparent power, and power factor
包含是否成功的电表结果对象
电参数类 A相电压,单位V B相电压,单位V C相电压,单位V A相电流,单位A B相电流,单位A C相电流,单位A 瞬时A相有功功率,单位 kw 瞬时B相有功功率,单位 kw 瞬时C相有功功率,单位 kw 瞬时总有功功率,单位 kw 瞬时A相无功功率,单位 kvar 瞬时B相无功功率,单位 kvar 瞬时C相无功功率,单位 kvar 瞬时总无功功率,单位 kvar 瞬时A相视在功率,单位 kVA 瞬时B相视在功率,单位 kVA 瞬时C相视在功率,单位 kVA 瞬时总视在功率,单位 kVA A相功率因数 B相功率因数 C相功率因数 总功率因数 频率,Hz 根据德力西电表的原始字节数据,解析出真实的电量参数信息 原始的字节数据 字节变换操作 掂量参数信息 基于多功能电能表通信协议实现的通讯类,参考的文档是DLT645-2007,主要实现了对电表数据的读取和一些功能方法, 在点对点模式下,需要在打开串口后调用 方法,数据标识格式为 00-00-00-00,具体参照文档手册。
The communication type based on the communication protocol of the multifunctional electric energy meter. The reference document is DLT645-2007, which mainly realizes the reading of the electric meter data and some functional methods. In the point-to-point mode, you need to call method after opening the serial port. the data identification format is 00-00-00-00, refer to the documentation manual for details.
如果一对多的模式,地址可以携带地址域访问,例如 "s=2;00-00-00-00",主要使用 方法来读取浮点数, 方法来读取字符串 具体的地址请参考相关的手册内容,如果没有,可以联系HSL作者或者,下面列举一些常用的地址
对于电能来说,DI0是结算日的信息,现在的就是写0,上一结算日的就写 01,上12结算日就写 0C DI3 DI2 DI1 DI0 地址示例 读取方式 数据项名称 备注 00 00 00 00 00-00-00-00 ReadDouble (当前)组合有功总电能(kwh) 00-00-01-00到00-00-3F-00分别是组合有功费率1~63电能 00 01 00 00 00-01-00-00 ReadDouble (当前)正向有功总电能(kwh) 00-01-01-00到00-01-3F-00分别是正向有功费率1~63电能 00 02 00 00 00-02-00-00 ReadDouble (当前)反向有功总电能(kwh) 00-02-01-00到00-02-3F-00分别是反向有功费率1~63电能 00 03 00 00 00-03-00-00 ReadDouble (当前)组合无功总电能(kvarh) 00-03-01-00到00-03-3F-00分别是组合无功费率1~63电能 00 09 00 00 00-09-00-00 ReadDouble (当前)正向视在总电能(kvah) 00-09-01-00到00-09-3F-00分别是正向视在费率1~63电能 00 0A 00 00 00-0A-00-00 ReadDouble (当前)反向视在总电能(kvah) 00-0A-01-00到00-0A-3F-00分别是反向视在费率1~63电能 02 01 01 00 02-01-01-00 ReadDouble A相电压(V) 02 01 02 00 02-01-02-00 ReadDouble B相电压(V) 02 01 03 00 02-01-03-00 ReadDouble C相电压(V) 02 02 01 00 02-02-01-00 ReadDouble A相电流(A) 02 02 02 00 02-02-02-00 ReadDouble B相电流(A) 02 02 03 00 02-02-03-00 ReadDouble C相电流(A) 02 03 00 00 02-03-00-00 ReadDouble 瞬时总有功功率(kw) DI1=1时表示A相,2时表示B相,3时表示C相 02 04 00 00 02-04-00-00 ReadDouble 瞬时总无功功率(kvar) DI1=1时表示A相,2时表示B相,3时表示C相 02 05 00 00 02-05-00-00 ReadDouble 瞬时总视在功率(kva) DI1=1时表示A相,2时表示B相,3时表示C相 02 06 00 00 02-06-00-00 ReadDouble 总功率因素 DI1=1时表示A相,2时表示B相,3时表示C相 02 07 01 00 02-07-01-00 ReadDouble A相相角(°) DI1=1时表示A相,2时表示B相,3时表示C相 02 08 01 00 02-08-01-00 ReadDouble A相电压波形失真度(%) DI1=1时表示A相,2时表示B相,3时表示C相 02 80 00 01 02-80-00-01 ReadDouble 零线电流(A) 02 80 00 02 02-80-00-02 ReadDouble 电网频率(HZ) 02 80 00 03 02-80-00-03 ReadDouble 一分钟有功总平均功率(kw) 02 80 00 04 02-80-00-04 ReadDouble 当前有功需量(kw) 02 80 00 05 02-80-00-05 ReadDouble 当前无功需量(kvar) 02 80 00 06 02-80-00-06 ReadDouble 当前视在需量(kva) 02 80 00 07 02-80-00-07 ReadDouble 表内温度(摄氏度) 02 80 00 08 02-80-00-08 ReadDouble 时钟电池电压(V) 02 80 00 09 02-80-00-09 ReadDouble 停电抄表电池电压(V) 02 80 00 0A 02-80-00-0A ReadDouble 内部电池工作时间(分钟) 04 00 04 03 04-00-04-03 ReadString("04-00-04-03", 32) 资产管理编码 04 00 04 0B 04-00-04-0B ReadString("04-00-04-0B", 10) 电表型号 04 00 04 0C 04-00-04-0C ReadString("04-00-04-0C", 10) 生产日期 直接串口初始化,打开串口,就可以对数据进行读取了,地址如上图所示。
指定地址域,密码,操作者代码来实例化一个对象
Get or set the current address domain information, which is a 12-character BCD code, for example: 149100007290
设备的站号信息 密码,写入的时候进行验证的信息 操作者代码
激活设备的命令,只发送数据到设备,不等待设备数据返回
The command to activate the device, only send data to the device, do not wait for the device data to return
是否发送成功
根据指定的数据标识来读取相关的原始数据信息,地址标识根据手册来,从高位到地位,例如 00-00-00-00,分割符可以任意特殊字符或是没有分隔符。
Read the relevant original data information according to the specified data identifier. The address identifier is based on the manual, from high to position, such as 00-00-00-00. The separator can be any special character or no separator.
地址可以携带地址域信息,例如 "s=2;00-00-00-00" 或是 "s=100000;00-00-02-00",关于数据域信息,需要查找手册,例如:00-01-00-00 表示: (当前)正向有功总电能 数据标识,具体需要查找手册来对应 数据长度信息 结果信息
根据指定的数据标识来写入相关的原始数据信息,地址标识根据手册来,从高位到地位,例如 00-00-00-00,分割符可以任意特殊字符或是没有分隔符。
Read the relevant original data information according to the specified data identifier. The address identifier is based on the manual, from high to position, such as 00-00-00-00. The separator can be any special character or no separator.
地址可以携带地址域信息,例如 "s=2;00-00-00-00" 或是 "s=100000;00-00-02-00",关于数据域信息,需要查找手册,例如:00-01-00-00 表示: (当前)正向有功总电能
注意:本命令必须与编程键配合使用
地址信息 写入的数据值 是否写入成功
读取设备的通信地址,仅支持点对点通讯的情况,返回地址域数据,例如:149100007290
Read the communication address of the device, only support point-to-point communication, and return the address field data, for example: 149100007290
设备的通信地址
写入设备的地址域信息,仅支持点对点通讯的情况,需要指定地址域信息,例如:149100007290
Write the address domain information of the device, only support point-to-point communication, you need to specify the address domain information, for example: 149100007290
等待写入的地址域 是否写入成功
广播指定的时间,强制从站与主站时间同步,传入时间对象,没有数据返回。
Broadcast the specified time, force the slave station to synchronize with the master station time, pass in the time object, and no data will be returned.
时间对象 是否成功
对设备发送冻结命令,默认点对点操作,地址域为 99999999999999 时为广播,数据域格式说明:MMDDhhmm(月日时分), 99DDhhmm表示月为周期定时冻结,9999hhmm表示日为周期定时冻结,999999mm表示以小时为周期定时冻结,99999999表示瞬时冻结
Send a freeze command to the device, the default point-to-point operation, when the address field is 9999999999999, it is broadcast, and the data field format description: MMDDhhmm (month, day, hour and minute), 99DDhhmm means the month is the periodic fixed freeze, 9999hhmm means the day is the periodic periodic freeze, and 999999mm means the hour It is periodic timed freezing, 99999999 means instantaneous freezing
数据域信息 是否成功冻结
更改通信速率,波特率可选 600,1200,2400,4800,9600,19200,其他值无效,可以携带地址域信息,s=1;9600
Change the communication rate, the baud rate can be 600, 1200, 2400, 4800, 9600, 19200, other values are invalid, you can carry address domain information, s=1;9600
波特率的信息 是否更改成功
获取或设置当前的地址域信息,是一个12个字符的BCD码,例如:149100007290
Get or set the current address domain information, which is a 12-character BCD code, for example: 149100007290
将地址解析成BCD码的地址,并且扩充到12位,不够的补0操作 地址域信息 实际的结果 将指定的地址信息,控制码信息,数据域信息打包成完整的报文命令 地址域信息,地址域由6个字节构成,每字节2位BCD码,地址长度可达12位十进制数。地址域支持锁位寻址,即从若干低位起,剩余高位补AAH作为通配符进行读表操作 控制码信息 数据域的内容 返回是否报文创建成功 从用户输入的地址信息中解析出真实的地址及数据标识 用户输入的地址信息 默认的地址域 数据长度信息 解析结果信息 根据不同的数据地址,返回实际的数据格式,然后解析出正确的数据 数据标识地址,实际的byte数组,地位在前,高位在后 实际的数据格式信息 从用户输入的地址信息中解析出真实的地址及数据标识 用户输入的地址信息 默认的地址域 解析结果信息 检查当前的反馈数据信息是否正确 从仪表反馈的数据信息 是否校验成功 基于多功能电能表通信协议实现的通讯类,参考的文档是DLT645-2007,主要实现了对电表数据的读取和一些功能方法, 在点对点模式下,需要在连接后调用 方法,数据标识格式为 00-00-00-00,具体参照文档手册。
The communication type based on the communication protocol of the multifunctional electric energy meter. The reference document is DLT645-2007, which mainly realizes the reading of the electric meter data and some functional methods. In the point-to-point mode, you need to call method after connect the device. the data identification format is 00-00-00-00, refer to the documentation manual for details.
如果一对多的模式,地址可以携带地址域访问,例如 "s=2;00-00-00-00",主要使用 方法来读取浮点数, 方法来读取字符串
指定IP地址,端口,地址域,密码,操作者代码来实例化一个对象
Specify the IP address, port, address field, password, and operator code to instantiate an object
TcpServer的IP地址 TcpServer的端口 设备的站号信息 密码,写入的时候进行验证的信息 操作者代码
基本的控制码信息 保留 广播 读数据 读后续数据 读通信地址 写数据 写通信地址 冻结命令 更改通信速率 修改密码 最大需求量清零 电表清零 事件清零 跳合闸、报警、保电 多功能端子输出控制命令 安全认证命令 DTL数据转换 Byte[]转ToHexString 原始的字节内容 长度信息 Byte[]转Dlt double[] 原始的字节数据 需要转换的数据长度 当前数据的解析格式 结果内容 昱行智造科技(深圳)有限公司的光源控制器,可以控制灯的亮暗,控制灯的颜色,通道等信息。 实例化一个默认的对象 初始化串口信息,波特率,8位数据位,1位停止位,偶校验
Initializes serial port information, baud rate, 8-bit data bit, 1-bit stop bit, even parity
端口号信息,例如"COM3" 波特率
初始化串口信息,57600波特率,8位数据位,1位停止位,偶校验
Initial serial port information, 57600 baud rate, 8 data bits, 1 stop bit, even parity
端口号信息,例如"COM3"
读取光源控制器的参数信息,需要传入通道号信息,读取到详细的内容参照的值 读取的通道信息 读取的参数值 将光源控制器的数据写入到设备,返回是否写入成功 光源数据 是否写入成功 将命令和数据打包成用于发送的报文 命令 命令数据 可用于发送的报文 构建写入数据的报文命令 准备写入的数据 报文命令 构建读取数据的报文命令 通道信息 构建读取的命令 把服务器反馈的数据解析成实际的命令 反馈的数据 结果内容 光源的数据信息 实例化一个默认的对象 使用指定的原始数据来获取当前的对象 原始数据 光源颜色信息,1:红色 2:绿色 3:蓝色 4:白色(默认) 光源的亮度信息,00-FF,值越大,亮度越大 光源的亮度等级,1-3 光源的工作模式,00:延时常亮 01:通道一频闪 02:通道二频闪 03:通道一二频闪 04:普通常亮 05:关闭 控制器的地址选择位 脉冲宽度,01-14H 通道数据,01-08H的值 获取原始的数据信息 原始的字节信息 从原始的信息解析光源的数据 原始的数据信息 阿尔泰科技发展有限公司的DAM3601温度采集模块,基于ModbusRtu开发完成。 该温度采集模块是基于modbus-rtu,但不是标准的modbus协议,存在一些小误差,需要重写实现,并且提供了基础的数据转换 实例化一个默认的对象 使用站号实例化默认的对象 站号信息 读取所有的温度数据,并转化成相关的信息 结果数据对象 数据转换方法,将读取的值, 读取的值 转换后的值 从Modbus服务器批量读取寄存器的信息,需要指定起始地址,读取长度 起始地址,格式为"1234",或者是带功能码格式x=3;1234 读取的数量 带有成功标志的字节信息 此处演示批量读取的示例 系统的语言基类,默认也即是中文版本 English Version Text 一个通用的日志接口,支持5个等级的日志消息写入,支持设置当前的消息等级,定义一个消息存储前的触发事件。
A general-purpose log interface, supports the writing of 5 levels of log messages, supports setting the current message level, and defining a trigger event before a message is stored.
本组件的日志核心机制,如果您使用了本组件却不想使用本组件的日志组件功能,可以自己实现新的日志组件,只要继承本接口接口。其他常用的日志组件如下:(都是可以实现的) Log4Net NLog 自己实例化操作,在HslCommunication里面,可选三种类型 Form的示例,存储日志的使用都是一样的,就是实例化的时候不一致,以下示例代码以单文件日志为例
日志存储模式,1:单文件,2:按大小存储,3:按时间存储
Log storage mode, 1: single file, 2: storage by size, 3: storage by time
获取或设置当前的日志记录统计信息,如果你需要统计最近30天的日志,就需要对其实例化,详细参照
Get or set the current log record statistics. If you need to count the logs of the last 30 days, you need to instantiate it. For details, please refer to
获取或设置当前的日志信息在存储的时候是否在控制台进行输出,默认不输出。
Gets or sets whether the current log information is output on the console when it is stored. It is not output by default.
存储之前引发的事件,允许额外的操作,比如打印控制台,存储数据库等等
Store previously raised events, allowing additional operations, such as print console, store database, etc.
通过指定消息等级,关键字,日志信息进行消息记录
Record messages by specifying message level, keywords, and log information
消息等级 关键字 日志内容
写入一条解释性的信息,不属于消息等级控制的范畴
Write an explanatory message that is not part of message level control
解释文本
写入一条调试日志
Write a debug log
日志内容
写入一条带关键字的调试日志
Write a debug log with keywords
关键字 日志内容
写入一条错误日志
Write an error log
日志内容
写入一条带关键字的错误日志
Write an error log with keywords
关键字 日志内容
写入一条带关键字的异常信息
Write an exception log with keywords
关键字 异常
写入一条带关键字和描述信息的异常信息
Write an exception log with keywords and text
关键字 内容 异常
写入一条致命日志
Write an fatal log
日志内容
写入一条带关键字的致命日志
Write an fatal log with keywords
关键字 日志内容
写入一条普通日志
Write an infomation log
日志内容
写入一条带关键字的普通日志
Write an information log with keywords
关键字 日志内容
写入一行换行符
Write a newline
写入任意字符串
Write arbitrary string
文本
写入一条警告日志
Write an warn log
日志内容
写入一条带关键字的警告日志
Write an warn log with keywords
关键字 日志内容
设置日志的存储等级,高于该等级的才会被存储
Set the storage level of the logs. Only the logs above this level will be stored.
登记信息
获取已存在的日志文件名称
Get the name of an existing log file
文件列表
过滤掉指定的关键字的日志,该信息不存储,但仍然触发事件
Filter out the logs of the specified keywords, the information is not stored, but the event is still triggered
关键字
移除过滤的关键字存储
Remove filtered keyword storage
关键字
日志存储类的基类,提供一些基础的服务 基于此类可以实现任意的规则的日志存储规则,欢迎大家补充实现,本组件实现了3个日志类 单文件日志类 根据文件大小的类 根据时间进行存储的类 实例化一个日志对象
Instantiate a log object
文件存储的锁 当写入文件完成的时候触发,这时候已经释放了文件的句柄了。
Triggered when writing to the file is complete, and the file handle has been released.
释放资源 是否初次调用 基于路径实现的日志类的基类,提供几个基础的方法信息。
The base class of the log class implemented based on the path provides several basic method information.
返回所有的日志文件名称,返回一个列表
Returns all log file names, returns a list
所有的日志文件信息
当前正在存储的文件名
File name currently being stored
存储文件的路径,如果设置为空,就不进行存储。
The path for storing the file. If it is set to empty, it will not be stored.
控制文件的数量,小于1则不进行任何操作,当设置为10的时候,就限制文件数量为10。
Control the number of files. If it is less than 1, no operation is performed. When it is set to 10, the number of files is limited to 10.
一个按照实际进行数据分割的辅助基类,可以用于实现对某个的API按照每天进行调用次数统计,也可以实现对某个设备数据按照天进行最大最小值均值分析,这些都是需要继承实现。
An auxiliary base class that divides the data according to the actual data can be used to implement statistics on the number of calls per day for a certain API, and it can also implement the maximum and minimum average analysis of a certain device data according to the day. These all need to be inherited. .
统计的数据类型
实例化一个新的数据统计内容,需要指定当前的时间统计方式,按小时,按天,按月等等,还需要指定统计的数据数量,比如按天统计30天。
To instantiate a new data statistics content, you need to specify the current time statistics method, by hour, by day, by month, etc., and also need to specify the number of statistics, such as 30 days by day.
时间的统计方式 数据的数量信息
获取当前的统计类信息时间统计规则
Get the current statistical information time statistics rule
获取当前的统计类信息的数据总量
Get the total amount of current statistical information
重置当前的统计信息,需要指定统计的数据内容,最后一个数据的标记信息,本方法主要用于还原统计信息
To reset the current statistical information, you need to specify the content of the statistical data, and the tag information of the last data. This method is mainly used to restore statistical information
统计结果数据信息 最后一次标记的内容
新增一个统计信息,将会根据当前的时间来决定插入数据位置,如果数据位置发生了变化,则数据向左发送移动。如果没有移动或是移动完成后,最后一个数进行自定义的数据操作
Adding a new statistical information will determine the position to insert the data according to the current time. If the data position changes, the data will be sent to the left. If there is no movement or after the movement is completed, Custom data operations on the last number
增对最后一个数的自定义操作
新增一个统计信息,将会根据当前的时间来决定插入数据位置,如果数据位置发生了变化,则数据向左发送移动。如果没有移动或是移动完成后,最后一个数进行自定义的数据操作
Adding a new statistical information will determine the position to insert the data according to the current time. If the data position changes, the data will be sent to the left. If there is no movement or after the movement is completed, Custom data operations on the last number
增对最后一个数的自定义操作 增加的时间信息
获取当前的统计信息的数据快照,这是数据的副本,修改了里面的值不影响
Get a data snapshot of the current statistics. This is a copy of the data. Modifying the value inside does not affect
实际的统计数据信息
根据指定的时间范围来获取统计的数据信息快照,包含起始时间,包含结束时间,这是数据的副本,修改了里面的值不影响
Get a snapshot of statistical data information according to the specified time range, including the start time, also the end time. This is a copy of the data. Modifying the value inside does not affect
起始时间 结束时间 指定实际范围内的数据副本
获取当前的统计信息的数据快照,这是数据的副本,修改了里面的值不影响
Get a data snapshot of the current statistics. This is a copy of the data. Modifying the value inside does not affect
实际的统计数据信息
根据当前数据统计的时间模式,获取最新的数据标记信息
Obtain the latest data mark information according to the time mode of current data statistics
数据标记
根据指定的时间,获取到该时间指定的数据标记信息
According to the specified time, get the data mark information specified at that time
指定的时间 数据标记
当前的实际模式 带有日志消息的事件 消息信息 日志存储回调的异常信息 使用其他的异常信息来初始化日志异常 异常信息 日志文件的存储模式 单个文件的存储模式 根据文件的大小来存储,固定一个大小,不停的生成文件 根据时间来存储,可以设置年,季,月,日,小时等等 日志文件输出模式 按每分钟生成日志文件 按每个小时生成日志文件 按每天生成日志文件 按每个周生成日志文件 按每个月生成日志文件 按每季度生成日志文件 按每年生成日志文件 记录消息的等级 一条消息都不记录 记录致命等级及以上日志的消息 记录异常等级及以上日志的消息 记录警告等级及以上日志的消息 记录信息等级及以上日志的消息 记录调试等级及以上日志的信息 单条日志的记录信息,包含了消息等级,线程号,关键字,文本信息
Record information of a single log, including message level, thread number, keywords, text information
实例化一个默认的对象
Instantiate a default object
单个记录信息的标识ID,程序重新运行时清空,代表程序从运行以来的日志计数,不管存储的或是未存储的
The ID of a single record of information. It is cleared when the program is re-run. It represents the log count of the program since it was run, whether stored or unstored.
消息的等级,包括DEBUG,INFO,WARN,ERROR,FATAL,NONE共计六个等级
Message levels, including DEBUG, INFO, WARN, ERROR, FATAL, NONE total six levels
线程ID,发生异常时的线程号
Thread ID, the thread number when the exception occurred
消息文本,记录日志的时候给定
Message text, given when logging
记录日志的时间,而非存储日志的时间
The time the log was recorded, not the time it was stored
消息的关键字
Keyword of the message
是否取消写入到文件中去,在事件 触发的时候捕获即可设置。
Whether to cancel writing to the file, can be set when the event is triggered.
返回表示当前对象的字符串,剔除了关键字
Returns a string representing the current object, excluding keywords
字符串信息
日志类的管理器,提供了基本的功能代码。
The manager of the log class provides the basic function code.
日志文件的头标志 公开的一个静态变量,允许随意的设置
Public static variable, allowing arbitrary setting
通过异常文本格式化成字符串用于保存或发送
Formatted as a string with exception text for saving or sending
文本消息 异常 异常最终信息
一个日志组件,可以根据时间来区分不同的文件存储
A log component that can distinguish different file storages based on time
此日志实例将根据日期时间来进行分类,支持的时间分类如下: 分钟 小时 月份 季度 年份 当然你也可以指定允许存在多少个日志文件,比如我允许存在最多10个文件,如果你的日志是根据天来分文件的,那就是10天的数据。 同理,如果你的日志是根据年来分文件的,那就是10年的日志文件。
实例化一个根据时间存储的日志组件,需要指定每个文件的存储时间范围
Instantiate a log component based on time, you need to specify the storage time range for each file
文件存储的路径 存储文件的间隔 指定当前的日志文件数量上限,如果小于0,则不限制,文件一直增加,如果设置为10,就限制最多10个文件,会删除最近时间的10个文件之外的文件。
根据文件的大小来存储日志信息,当前的文件大小增长超过设定值,就会创建新的文件来存储,新的文件命名为当前时间。
Log information is stored according to the size of the file. If the current file size exceeds the set value, a new file is created for storage, and the new file is named the current time.
此日志的实例是根据文件的大小储存,例如设置了2M,每隔2M,系统将生成一个新的日志文件。当然你也可以指定允许存在多少个日志文件, 比如我允许存在最多10个文件,那总量就是20M,旧的文件会被删除掉。
实例化一个根据文件大小生成新文件的,默认是2M大的文件
Instantiate a new file based on the file size. The default is 2M.
日志文件的保存路径 每个日志文件的最大大小,默认2M 指定当前的日志文件数量上限,如果小于0,则不限制,文件一直增加,如果设置为10,就限制最多10个文件,会删除最近时间的10个文件之外的文件。
获取之前保存的日志文件,如果文件大小超过了设定值,将会生成新的文件名称
Obtain the previously saved log file. If the file size exceeds the set value, a new file name will be generated
文件名称
获取一个新的默认的文件名称
Get a new default file name
完整的文件名
单日志文件对象,所有的日志信息的记录都会写入一个文件里面去。文件名指定为空的时候,自动不存储文件。
Single log file object, all log information records will be written to a file. When the file name is specified as empty, the file is not stored automatically.
此日志实例化需要指定一个完整的文件路径,当需要记录日志的时候调用方法,会使得日志越来越大,对于写入的性能没有太大影响,但是会影响文件读取。
实例化一个单文件日志的对象,如果日志的路径为空,那么就不存储数据,只触发事件
Instantiate a single file log object. If the log path is empty, then no data is stored and only the event is triggered.
文件的路径
单日志文件允许清空日志内容
Single log file allows clearing log contents
获取单日志文件的所有保存记录
Get all saved records of a single log file
字符串信息
获取所有的日志文件数组,对于单日志文件来说就只有一个
Get all log file arrays, only one for a single log file
字符串数组,包含了所有的存在的日志数据
一个统计次数的辅助类,可用于实现分析一些次数统计信息,比如统计某个API最近每天的访问次数, 统计日志组件最近每天访问的次数,调用者只需要关心统计方式和数据个数,详细参照API文档。
An auxiliary class for counting the number of times, which can be used to realize the analysis of some number of times statistical information, such as counting the number of daily visits of an API, and counting the number of daily visits of the log component. The caller only needs to care about the statistical method and the number of data. Refer to details API documentation.
我们来举个例子:我有个方法,AAA需要记录一下连续60天的调用次数信息 因为这个数据是保存在内存里的,程序重新运行就丢失了,如果希望让这个数据一直在程序的话,在软件退出的时候需要存储文件,在软件启动的时候,加载文件数据
新增一个统计信息,将会根据当前的时间来决定插入数据位置,如果数据位置发生了变化,则数据向左发送移动。如果没有移动或是移动完成后,最后一个数进行新增数据 frequency 次
Adding a new statistical information will determine the position to insert the data according to the current time. If the data position changes, the data will be sent to the left. If there is no movement or after the movement is completed, add data to the last number frequency times
新增的次数信息,默认为1
新增一个统计信息,将会根据指定的时间来决定插入数据位置,如果数据位置发生了变化,则数据向左发送移动。如果没有移动或是移动完成后,最后一个数进行新增数据 frequency 次
Adding a new statistical information will determine the position to insert the data according to the specified time. If the data position changes, the data will be sent to the left. If there is no movement or after the movement is completed, add data to the last number frequency times
新增的次数信息 新增的次数的时间
将当前所有的数据都写入到二进制的内存里去,可以用来写入文件或是网络发送。
Write all current data into binary memory, which can be used to write files or send over the network.
二进制的byte数组
将当前的统计信息及数据内容写入到指定的文件里面,需要指定文件的路径名称
Write the current statistical information and data content to the specified file, you need to specify the path name of the file
文件的完整的路径名称
从二进制的数据内容加载,会对数据的合法性进行检查,如果数据不匹配,会报异常
Loading from the binary data content will check the validity of the data. If the data does not match, an exception will be reported
等待加载的二进制数据
从指定的文件加载对应的统计信息,通常是调用方法存储的文件,如果文件不存在,将会跳过加载
Load the corresponding statistical information from the specified file, usually the file stored by calling the method. If the file does not exist, the loading will be skipped
文件的完整的路径名称 当文件的模式和当前的模式设置不一样的时候,会引发异常
获取当前的所有的值的总和
Get the sum of all current values
的词典集合类,用于多个数据的统计信息,例如可以统计多个规格的产量信息,统计多个方法的调用次数信息
The dictionary collection class of is used for the statistical information of multiple data, for example, the output information of multiple specifications can be counted, and the number of calls of multiple methods can be counted.
根据指定的存储模式,数据个数来实例化一个对象
According to the specified storage mode, the number of data to instantiate an object
当前的数据存储模式 准备存储的数据总个数
根据给定的关键字信息,获取相关的 对象,进而执行很多的操作
According to the given keyword information, obtain related objects, and then perform many operations
关键字 日志对象,如果当前的日志对象不存在,就返回为NULL
手动新增一个对象,需要指定相关的关键字
Manually add a object, you need to specify related keywords
关键字信息 日志统计对象
移除一个对象,需要指定相关的关键字,如果关键字本来就存在,返回 True, 如果不存在,返回 False
To remove a object, you need to specify the relevant keyword. If the keyword already exists, return True, if it does not exist, return False
关键字信息 如果关键字本来就存在,返回 True, 如果不存在,返回 False
新增一个统计信息,将会根据当前的时间来决定插入数据位置,如果数据位置发生了变化,则数据向左发送移动。如果没有移动或是移动完成后,最后一个数进行新增数据 frequency 次
Adding a new statistical information will determine the position to insert the data according to the current time. If the data position changes, the data will be sent to the left. If there is no movement or after the movement is completed, add data to the last number frequency times
当前选择的关键字 新增的次数信息,默认为1
新增一个统计信息,将会根据当前的时间来决定插入数据位置,如果数据位置发生了变化,则数据向左发送移动。如果没有移动或是移动完成后,最后一个数进行新增数据 frequency 次
Adding a new statistical information will determine the position to insert the data according to the current time. If the data position changes, the data will be sent to the left. If there is no movement or after the movement is completed, add data to the last number frequency times
当前的关键字 新增的次数信息 新增的次数的时间
获取当前的统计信息的数据快照,这是数据的副本,修改了里面的值不影响
Get a data snapshot of the current statistics. This is a copy of the data. Modifying the value inside does not affect
当前的关键字的信息 实际的统计数据信息
根据指定的时间范围来获取统计的数据信息快照,包含起始时间,包含结束时间,这是数据的副本,修改了里面的值不影响
Get a snapshot of statistical data information according to the specified time range, including the start time, also the end time. This is a copy of the data. Modifying the value inside does not affect
当前的关键字信息 起始时间 结束时间 指定实际范围内的数据副本
获取所有的关键字的数据信息
Get data information of all keywords
字符串数组
将当前的统计信息及数据内容写入到指定的文件里面,需要指定文件的路径名称
Write the current statistical information and data content to the specified file, you need to specify the path name of the file
文件的完整的路径名称
从指定的文件加载对应的统计信息,通常是调用方法存储的文件,如果文件不存在,将会跳过加载
Load the corresponding statistical information from the specified file, usually the file stored by calling the method. If the file does not exist, the loading will be skipped
文件的完整的路径名称 当文件的模式和当前的模式设置不一样的时候,会引发异常
获取当前的统计类信息时间统计规则
Get the current statistical information time statistics rule
获取当前的统计类信息的数据总量
Get the total amount of current statistical information
获取当前词典类自身的日志统计对象,统计所有的元素的统计信息
Get the log statistics object of the current dictionary class itself, and count the statistics of all elements
一个用于数值范围记录的类,可以按照时间进行分类统计,比如计算一个温度值的每天的开始值,结束值,最大值,最小值,平均值信息。详细见API文档信息。
A class used to record the value range, which can be classified according to time, such as calculating the start value, end value, maximum value, minimum value, and average value of a temperature value. See the API documentation for details.
我们来举个例子:我们需要对一个温度数据进行分析,分析60天之内的最大值最小值等等信息 因为这个数据是保存在内存里的,程序重新运行就丢失了,如果希望让这个数据一直在程序的话,在软件退出的时候需要存储文件,在软件启动的时候,加载文件数据
新增一个数据用于分析,将会根据当前的时间来决定插入数据位置,如果数据位置发生了变化,则数据向左发送移动。如果没有移动或是移动完成后,最后一个数进行数据更新,包括最大值,最小值,平均值。
Add a new data for analysis, and will determine the position to insert the data according to the current time. If the data position changes, the data will be sent to the left. If there is no movement or after the movement is completed, data update for the last number, including maximum, minimum, and average.
当前的新的数据值
新增一个数据用于分析,将会指定的时间来决定插入数据位置,如果数据位置发生了变化,则数据向左发送移动。如果没有移动或是移动完成后,最后一个数进行数据更新,包括最大值,最小值,平均值。
dd a new data for analysis, and will determine the position to insert the data according to the specified time. If the data position changes, the data will be sent to the left. If there is no movement or after the movement is completed, data update for the last number, including maximum, minimum, and average.
当前的新的数据值 指定的时间信息
当前设置数据的总的数量
The total amount of data currently set
将当前所有的数据都写入到二进制的内存里去,可以用来写入文件或是网络发送。
Write all current data into binary memory, which can be used to write files or send over the network.
二进制的byte数组
将当前的统计信息及数据内容写入到指定的文件里面,需要指定文件的路径名称
Write the current statistical information and data content to the specified file, you need to specify the path name of the file
文件的完整的路径名称
从二进制的数据内容加载,会对数据的合法性进行检查,如果数据不匹配,会报异常
Loading from the binary data content will check the validity of the data. If the data does not match, an exception will be reported
等待加载的二进制数据
从指定的文件加载对应的统计信息,通常是调用方法存储的文件,如果文件不存在,将会跳过加载
Load the corresponding statistical information from the specified file, usually the file stored by calling the method. If the file does not exist, the loading will be skipped
文件的完整的路径名称
的词典集合类,用于多个数据的统计信息,例如可以统计多个温度变量的最大值,最小值,平均值
The dictionary collection class, used for statistical information of multiple data, for example, it can count the maximum, minimum, and average values of multiple temperature variables
根据指定的存储模式,数据个数来实例化一个对象
According to the specified storage mode, the number of data to instantiate an object
当前的数据存储模式 准备存储的数据总个数
根据给定的关键字信息,获取相关的 对象,进而执行很多的操作
According to the given keyword information, obtain related objects, and then perform many operations
关键字 日志对象,如果当前的日志对象不存在,就返回为NULL
手动新增一个 对象,需要指定相关的关键字
Manually add a object, you need to specify related keywords
关键字信息 日志数据分析对象
移除一个对象,需要指定相关的关键字,如果关键字本来就存在,返回 True, 如果不存在,返回 False
To remove a object, you need to specify the relevant keyword. If the keyword already exists, return True, if it does not exist, return False
关键字信息 如果关键字本来就存在,返回 True, 如果不存在,返回 False
新增一个数据用于分析,将会根据当前的时间来决定插入数据位置,如果数据位置发生了变化,则数据向左发送移动。如果没有移动或是移动完成后,最后一个数进行数据更新,包括最大值,最小值,平均值。
Add a new data for analysis, and will determine the position to insert the data according to the current time. If the data position changes, the data will be sent to the left. If there is no movement or after the movement is completed, data update for the last number, including maximum, minimum, and average.
当前的关键字 当前的新的数据值
新增一个数据用于分析,将会指定的时间来决定插入数据位置,如果数据位置发生了变化,则数据向左发送移动。如果没有移动或是移动完成后,最后一个数进行数据更新,包括最大值,最小值,平均值。
dd a new data for analysis, and will determine the position to insert the data according to the specified time. If the data position changes, the data will be sent to the left. If there is no movement or after the movement is completed, data update for the last number, including maximum, minimum, and average.
关键字信息 当前的新的数据值 指定的时间信息
获取当前的统计信息的数据快照,这是数据的副本,修改了里面的值不影响
Get a data snapshot of the current statistics. This is a copy of the data. Modifying the value inside does not affect
当前的关键字的信息 实际的统计数据信息
根据指定的时间范围来获取统计的数据信息快照,包含起始时间,包含结束时间,这是数据的副本,修改了里面的值不影响
Get a snapshot of statistical data information according to the specified time range, including the start time, also the end time. This is a copy of the data. Modifying the value inside does not affect
当前的关键字信息 起始时间 结束时间 指定实际范围内的数据副本
获取所有的关键字的数据信息
Get data information of all keywords
字符串数组
将当前的统计信息及数据内容写入到指定的文件里面,需要指定文件的路径名称
Write the current statistical information and data content to the specified file, you need to specify the path name of the file
文件的完整的路径名称
从指定的文件加载对应的统计信息,通常是调用方法存储的文件,如果文件不存在,将会跳过加载
Load the corresponding statistical information from the specified file, usually the file stored by calling the method. If the file does not exist, the loading will be skipped
文件的完整的路径名称 当文件的模式和当前的模式设置不一样的时候,会引发异常
获取当前的统计类信息时间统计规则
Get the current statistical information time statistics rule
获取当前的统计类信息的数据总量
Get the total amount of current statistical information
获取当前词典类自身的日志统计对象,统计所有的元素的数据分析次数
Get the log statistics object of the current dictionary class itself, count the data analysis times of all elements
日志查看器的窗口类,用于分析统计日志数据 实例化一个日志查看器的窗口 Required designer variable. Clean up any resources being used. true if managed resources should be disposed; otherwise, false. Required method for Designer support - do not modify the contents of this method with the code editor. 一个用于日志分析的控件 实例化一个控件信息 设置日志的数据源 直接从日志文件中读到的数据或是来自网络的数据 从现有的日志中筛选数据 底层的数据分析筛选 必需的设计器变量。 清理所有正在使用的资源。 如果应释放托管资源,为 true;否则为 false。 设计器支持所需的方法 - 不要修改 使用代码编辑器修改此方法的内容。 Modbus设备的接口,用来表示Modbus相关的设备对象,, , ,,均实现了该接口信息
Modbus device interface, used to represent Modbus-related device objects, , ,,, all implement the interface information
将当前的地址信息转换成Modbus格式的地址,如果转换失败,返回失败的消息。默认不进行任何的转换。
Convert the current address information into a Modbus format address. If the conversion fails, a failure message will be returned. No conversion is performed by default.
传入的地址 Modbus的功能码 转换之后Modbus的地址
Modbus-Ascii通讯协议的类库,基于rtu类库完善过来,支持标准的功能码,也支持扩展的功能码实现,地址采用富文本的形式,详细见备注说明
The client communication class of Modbus-Ascii protocol is convenient for data interaction with the server. It supports standard function codes and also supports extended function codes. The address is in rich text. For details, see the remarks.
本客户端支持的标准的modbus协议,Modbus-Tcp及Modbus-Udp内置的消息号会进行自增,地址支持富文本格式,具体参考示例代码。
读取线圈,输入线圈,寄存器,输入寄存器的方法中的读取长度对商业授权用户不限制,内部自动切割读取,结果合并。
基本的用法请参照下面的代码示例,初始化部分的代码省略 复杂的读取数据的代码示例如下: 写入数据的代码如下:
实例化一个Modbus-ascii协议的客户端对象
Instantiate a client object of the Modbus-ascii protocol
Modbus协议相关辅助类 Modbus协议相关的一些信息,包括功能码定义,报文的生成的定义等等信息
Some information related to Modbus protocol, including function code definition, definition of message generation, etc.
读取线圈 读取离散量 读取寄存器 读取输入寄存器 写单个线圈 写单个寄存器 写多个线圈 写多个寄存器 使用掩码的方式写入寄存器 不支持该功能码 该地址越界 读取长度超过最大值 读写异常 构建Modbus读取数据的核心报文,需要指定地址,长度,站号,是否起始地址0,默认的功能码应该根据bool或是字来区分
To construct the core message of Modbus reading data, you need to specify the address, length, station number, whether the starting address is 0, and the default function code should be distinguished according to bool or word
Modbus的富文本地址 读取的数据长度 默认的站号信息 起始地址是否从0开始 默认的功能码 包含最终命令的结果对象
构建Modbus读取数据的核心报文,需要指定地址,长度,站号,是否起始地址0,默认的功能码应该根据bool或是字来区分
To construct the core message of Modbus reading data, you need to specify the address, length, station number, whether the starting address is 0, and the default function code should be distinguished according to bool or word
Modbus的富文本地址 读取的数据长度 包含最终命令的结果对象
构建Modbus写入bool数据的核心报文,需要指定地址,长度,站号,是否起始地址0,默认的功能码
To construct the core message that Modbus writes to bool data, you need to specify the address, length, station number, whether the starting address is 0, and the default function code
Modbus的富文本地址 bool数组的信息 默认的站号信息 起始地址是否从0开始 默认的功能码 包含最终命令的结果对象
构建Modbus写入bool数据的核心报文,需要指定地址,长度,站号,是否起始地址0,默认的功能码
To construct the core message that Modbus writes to bool data, you need to specify the address, length, station number, whether the starting address is 0, and the default function code
Modbus的富文本地址 bool的信息 默认的站号信息 起始地址是否从0开始 默认的功能码 包含最终命令的结果对象
构建Modbus写入bool数组的核心报文,需要指定地址,长度,站号,是否起始地址0,默认的功能码
To construct the core message that Modbus writes to the bool array, you need to specify the address, length, station number, whether the starting address is 0, and the default function code
Modbus的富文本地址 bool数组的信息 包含最终命令的结果对象
构建Modbus写入bool数据的核心报文,需要指定地址,长度,站号,是否起始地址0,默认的功能码
To construct the core message that Modbus writes to bool data, you need to specify the address, length, station number, whether the starting address is 0, and the default function code
Modbus的富文本地址 bool数据的信息 包含最终命令的结果对象
构建Modbus写入字数据的核心报文,需要指定地址,长度,站号,是否起始地址0,默认的功能码
To construct the core message of Modbus writing word data, you need to specify the address, length, station number, whether the starting address is 0, and the default function code
Modbus的富文本地址 bool数组的信息 默认的站号信息 起始地址是否从0开始 默认的功能码 包含最终命令的结果对象
构建Modbus写入字数据的核心报文,需要指定地址,长度,站号,是否起始地址0,默认的功能码
To construct the core message of Modbus writing word data, you need to specify the address, length, station number, whether the starting address is 0, and the default function code
Modbus的富文本地址 short数据信息 默认的站号信息 起始地址是否从0开始 默认的功能码 包含最终命令的结果对象
构建Modbus写入字数据的核心报文,需要指定地址,长度,站号,是否起始地址0,默认的功能码
To construct the core message of Modbus writing word data, you need to specify the address, length, station number, whether the starting address is 0, and the default function code
Modbus的富文本地址 bool数组的信息 默认的站号信息 起始地址是否从0开始 默认的功能码 包含最终命令的结果对象
构建Modbus写入掩码的核心报文,需要指定地址,长度,站号,是否起始地址0,默认的功能码
To construct the Modbus write mask core message, you need to specify the address, length, station number, whether the starting address is 0, and the default function code
Modbus的富文本地址 进行与操作的掩码信息 进行或操作的掩码信息 默认的站号信息 起始地址是否从0开始 默认的功能码 包含最终命令的结果对象
构建Modbus写入字数据的核心报文,需要指定地址,长度,站号,是否起始地址0,默认的功能码
To construct the core message of Modbus writing word data, you need to specify the address, length, station number, whether the starting address is 0, and the default function code
Modbus的富文本地址 bool数组的信息 包含最终命令的结果对象
构建Modbus写入掩码数据的核心报文,需要指定地址,长度,站号,是否起始地址0,默认的功能码
To construct the core message of Modbus writing mask data, you need to specify the address, length, station number, whether the starting address is 0, and the default function code
Modbus的富文本地址 等待进行与操作的掩码 等待进行或操作的掩码 包含最终命令的结果对象
构建Modbus写入字数据的核心报文,需要指定地址,长度,站号,是否起始地址0,默认的功能码
To construct the core message of Modbus writing word data, you need to specify the address, length, station number, whether the starting address is 0, and the default function code
Modbus的富文本地址 short的值 包含最终命令的结果对象
构建Modbus写入字数据的核心报文,需要指定地址,长度,站号,是否起始地址0,默认的功能码
To construct the core message of Modbus writing word data, you need to specify the address, length, station number, whether the starting address is 0, and the default function code
Modbus的富文本地址 ushort的值 包含最终命令的结果对象
从返回的modbus的书内容中,提取出真实的数据,适用于写入和读取操作
Extract real data from the content of the returned modbus book, suitable for writing and reading operations
返回的核心modbus报文信息 结果数据内容
将modbus指令打包成Modbus-Tcp指令,需要指定ID信息来添加6个字节的报文头
Pack the Modbus command into Modbus-Tcp command, you need to specify the ID information to add a 6-byte message header
Modbus核心指令 消息的序号 Modbus-Tcp指令
将modbus-tcp的报文数据重新还原成modbus指令,移除6个字节的报文头数据
Re-modify the message data of modbus-tcp into the modbus command, remove the 6-byte message header data
modbus-tcp的报文 modbus数据报文
将modbus-rtu的数据重新还原成modbus数据,移除CRC校验的内容
Restore the data of modbus-rtu to modbus data again, remove the content of CRC check
modbus-rtu的报文 modbus数据报文
将modbus指令打包成Modbus-Rtu指令,在报文的末尾添加CRC16的校验码
Pack the modbus instruction into Modbus-Rtu instruction, add CRC16 check code at the end of the message
Modbus指令 Modbus-Rtu指令
将一个modbus核心的数据报文,转换成modbus-ascii的数据报文,增加LRC校验,增加首尾标记数据
Convert a Modbus core data message into a Modbus-ascii data message, add LRC check, and add head and tail tag data
modbus-rtu的完整报文,携带相关的校验码 可以用于直接发送的modbus-ascii的报文
将一个modbus-ascii的数据报文,转换成的modbus核心数据报文,移除首尾标记,移除LRC校验
Convert a Modbus-ascii data message into a Modbus core data message, remove the first and last tags, and remove the LRC check
modbus-ascii的完整报文,携带相关的校验码 可以用于直接发送的modbus的报文
分析Modbus协议的地址信息,该地址适应于tcp及rtu模式
Analysis of the address information of Modbus protocol, the address is adapted to tcp and rtu mode
带格式的地址,比如"100","x=4;100","s=1;100","s=1;x=4;100" 默认的站号信息 起始地址是否从0开始 默认的功能码信息 转换后的地址信息
通过错误码来获取到对应的文本消息
Get the corresponding text message through the error code
错误码 错误的文本描述
服务器端提供的数据监视服务 本次数据监视的地址 数据写入时触发的事件 数据改变时触发的事件 强制设置触发事件 数据值信息 强制设置触发值变更事件 变更前的值 变更后的值 Modbus-Rtu通讯协议的类库,多项式码0xA001,支持标准的功能码,也支持扩展的功能码实现,地址采用富文本的形式,详细见备注说明
Modbus-Rtu communication protocol class library, polynomial code 0xA001, supports standard function codes, and also supports extended function code implementation. The address is in rich text. For details, see the remark
本客户端支持的标准的modbus协议,Modbus-Tcp及Modbus-Udp内置的消息号会进行自增,地址支持富文本格式,具体参考示例代码。
读取线圈,输入线圈,寄存器,输入寄存器的方法中的读取长度对商业授权用户不限制,内部自动切割读取,结果合并。
实例化一个Modbus-Rtu协议的客户端对象
Instantiate a client object of the Modbus-Rtu protocol
指定客户端自己的站号来初始化
Specify the client's own station number to initialize
客户端自身的站号
/param> /param> Modbus-Tcp协议的客户端通讯类,方便的和服务器进行数据交互,支持标准的功能码,也支持扩展的功能码实现,地址采用富文本的形式,详细见API文档说明
The client communication class of Modbus-Tcp protocol is convenient for data interaction with the server. It supports standard function codes and also supports extended function codes. The address is in rich text. For details, see the remarks.
本客户端支持的标准的modbus协议,Modbus-Tcp及Modbus-Udp内置的消息号会进行自增,地址支持富文本格式,具体参考示例代码。
读取线圈,输入线圈,寄存器,输入寄存器的方法中的读取长度对商业授权用户不限制,内部自动切割读取,结果合并。
本客户端支持的标准的modbus协议,Modbus-Tcp及Modbus-Udp内置的消息号会进行自增,比如我们想要控制消息号在0-1000之间自增,不能超过一千,可以写如下的代码: 地址共可以携带3个信息,最完整的表示方式"s=2;x=3;100",对应的modbus报文是 02 03 00 64 00 01 的前四个字节,站号,功能码,起始地址,下面举例 当读写int, uint, float, double, long, ulong类型的时候,支持动态指定数据格式,也就是 DataFormat 信息,本部分内容为商业授权用户专有,感谢支持。
ReadInt32("format=BADC;100") 指示使用BADC的格式来解析byte数组,从而获得int数据,同时支持和站号信息叠加,例如:ReadInt32("format=BADC;s=2;100") 读取线圈 ReadCoil("100")表示读取线圈100的值,ReadCoil("s=2;100")表示读取站号为2,线圈地址为100的值 读取离散输入 ReadDiscrete("100")表示读取离散输入100的值,ReadDiscrete("s=2;100")表示读取站号为2,离散地址为100的值 读取寄存器 ReadInt16("100")表示读取寄存器100的值,ReadInt16("s=2;100")表示读取站号为2,寄存器100的值 读取输入寄存器 ReadInt16("x=4;100")表示读取输入寄存器100的值,ReadInt16("s=2;x=4;100")表示读取站号为2,输入寄存器100的值 读取寄存器的位 ReadBool("100.0")表示读取寄存器100第0位的值,ReadBool("s=2;100.0")表示读取站号为2,寄存器100第0位的值,支持读连续的多个位 读取输入寄存器的位 ReadBool("x=4;100.0")表示读取输入寄存器100第0位的值,ReadBool("s=2;x=4;100.0")表示读取站号为2,输入寄存器100第0位的值,支持读连续的多个位 对于写入来说也是一致的 写入线圈 WriteCoil("100",true)表示读取线圈100的值,WriteCoil("s=2;100",true)表示读取站号为2,线圈地址为100的值 写入寄存器 Write("100",(short)123)表示写寄存器100的值123,Write("s=2;100",(short)123)表示写入站号为2,寄存器100的值123 特殊说明部分: 01功能码 ReadBool("100") 02功能码 ReadBool("x=2;100") 03功能码 Read("100") 04功能码 Read("x=4;100") 05功能码 Write("100", True) 06功能码 Write("100", (short)100);Write("100", (ushort)100) 0F功能码 Write("100", new bool[]{True}) 注意:这里和05功能码传递的参数类型不一样 10功能码 如果写一个short想用10功能码:Write("100", new short[]{100}) 16功能码 Write("100.2", True) 当写入bool值的方法里,地址格式变为字地址时,就使用16功能码,通过掩码的方式来修改寄存器的某一位, 需要Modbus服务器支持,对于不支持该功能码的写入无效。 基本的用法请参照下面的代码示例
实例化一个Modbus-Tcp协议的客户端对象
Instantiate a client object of the Modbus-Tcp protocol
指定服务器地址,端口号,客户端自己的站号来初始化
Specify the server address, port number, and client's own station number to initialize
服务器的Ip地址 服务器的端口号 客户端自身的站号
获取或设置起始的地址是否从0开始,默认为True
Gets or sets whether the starting address starts from 0. The default is True
因为有些设备的起始地址是从1开始的,就要设置本属性为False
获取或者重新修改服务器的默认站号信息,当然,你可以再读写的时候动态指定,参见备注
Get or modify the default station number information of the server. Of course, you can specify it dynamically when reading and writing, see note
当你调用 ReadCoil("100") 时,对应的站号就是本属性的值,当你调用 ReadCoil("s=2;100") 时,就忽略本属性的值,读写寄存器的时候同理
字符串数据是否按照字来反转,默认为False
Whether the string data is reversed according to words. The default is False.
字符串按照2个字节的排列进行颠倒,根据实际情况进行设置
获取modbus协议自增的消息号,你可以自定义modbus的消息号的规则,详细参见说明,也可以查找说明。
Get the message number incremented by the modbus protocol. You can customize the rules of the message number of the modbus. For details, please refer to the description of , or you can find the description of
读取线圈,需要指定起始地址,如果富文本地址不指定,默认使用的功能码是 0x01
To read the coil, you need to specify the start address. If the rich text address is not specified, the default function code is 0x01.
起始地址,格式为"1234" 带有成功标志的bool对象
批量的读取线圈,需要指定起始地址,读取长度,如果富文本地址不指定,默认使用的功能码是 0x01
For batch reading coils, you need to specify the start address and read length. If the rich text address is not specified, the default function code is 0x01.
起始地址,格式为"1234" 读取长度 带有成功标志的bool数组对象
读取输入线圈,需要指定起始地址,如果富文本地址不指定,默认使用的功能码是 0x02
To read the input coil, you need to specify the start address. If the rich text address is not specified, the default function code is 0x02.
起始地址,格式为"1234" 带有成功标志的bool对象
批量的读取输入点,需要指定起始地址,读取长度,如果富文本地址不指定,默认使用的功能码是 0x02
To read input points in batches, you need to specify the start address and read length. If the rich text address is not specified, the default function code is 0x02
起始地址,格式为"1234" 读取长度 带有成功标志的bool数组对象
从Modbus服务器批量读取寄存器的信息,需要指定起始地址,读取长度,如果富文本地址不指定,默认使用的功能码是 0x03,如果需要使用04功能码,那么地址就写成 x=4;100
To read the register information from the Modbus server in batches, you need to specify the start address and read length. If the rich text address is not specified, the default function code is 0x03. If you need to use the 04 function code, the address is written as x = 4; 100
起始地址,比如"100","x=4;100","s=1;100","s=1;x=4;100" 读取的数量 带有成功标志的字节信息 富地址格式,支持携带站号信息,功能码信息,具体参照类的示例代码 此处演示批量读取的示例
将数据写入到Modbus的寄存器上去,需要指定起始地址和数据内容,如果富文本地址不指定,默认使用的功能码是 0x10
To write data to Modbus registers, you need to specify the start address and data content. If the rich text address is not specified, the default function code is 0x10
起始地址,比如"100","x=4;100","s=1;100","s=1;x=4;100" 写入的数据,长度根据data的长度来指示 返回写入结果 富地址格式,支持携带站号信息,功能码信息,具体参照类的示例代码 此处演示批量写入的示例
将数据写入到Modbus的单个寄存器上去,需要指定起始地址和数据值,如果富文本地址不指定,默认使用的功能码是 0x06
To write data to a single register of Modbus, you need to specify the start address and data value. If the rich text address is not specified, the default function code is 0x06.
起始地址,比如"100","x=4;100","s=1;100","s=1;x=4;100" 写入的short数据 是否写入成功
将数据写入到Modbus的单个寄存器上去,需要指定起始地址和数据值,如果富文本地址不指定,默认使用的功能码是 0x06
To write data to a single register of Modbus, you need to specify the start address and data value. If the rich text address is not specified, the default function code is 0x06.
起始地址,比如"100","x=4;100","s=1;100","s=1;x=4;100" 写入的ushort数据 是否写入成功
向设备写入掩码数据,使用0x16功能码,需要确认对方是否支持相关的操作,掩码数据的操作主要针对寄存器。
To write mask data to the server, using the 0x16 function code, you need to confirm whether the other party supports related operations. The operation of mask data is mainly directed to the register.
起始地址,起始地址,比如"100","x=4;100","s=1;100","s=1;x=4;100" 等待与操作的掩码数据 等待或操作的掩码数据 是否写入成功
批量读取线圈或是离散的数据信息,需要指定地址和长度,具体的结果取决于实现,如果富文本地址不指定,默认使用的功能码是 0x01
To read coils or discrete data in batches, you need to specify the address and length. The specific result depends on the implementation. If the rich text address is not specified, the default function code is 0x01.
数据地址,比如 "1234" 数据长度 带有成功标识的bool[]数组
向线圈中写入bool数组,返回是否写入成功,如果富文本地址不指定,默认使用的功能码是 0x0F
Write the bool array to the coil, and return whether the writing is successful. If the rich text address is not specified, the default function code is 0x0F.
要写入的数据地址,比如"1234" 要写入的实际数组 返回写入结果
向线圈中写入bool数值,返回是否写入成功,如果富文本地址不指定,默认使用的功能码是 0x05, 如果你的地址为字地址,例如100.2,那么将使用0x16的功能码,通过掩码的方式来修改寄存器的某一位,需要Modbus服务器支持,否则写入无效。
Write bool value to the coil and return whether the writing is successful. If the rich text address is not specified, the default function code is 0x05. If your address is a word address, such as 100.2, then you will use the function code of 0x16 to modify a bit of the register through a mask. It needs Modbus server support, otherwise the writing is invalid.
要写入的数据地址,比如"12345" 要写入的实际数据 返回写入结果
[商业授权] Modbus的虚拟服务器,同时支持Tcp和Rtu的机制,支持线圈,离散输入,寄存器和输入寄存器的读写操作,同时支持掩码写入功能,可以用来当做系统的数据交换池
[Authorization] Modbus virtual server supports Tcp and Rtu mechanisms at the same time, supports read and write operations of coils, discrete inputs, r egisters and input registers, and supports mask write function, which can be used as a system data exchange pool
可以基于本类实现一个功能复杂的modbus服务器,支持Modbus-Tcp,启动串口后,还支持Modbus-Rtu和Modbus-ASCII,会根据报文进行动态的适配。 线圈,功能码对应01,05,15 离散输入,功能码对应02 寄存器,功能码对应03,06,16 输入寄存器,功能码对应04,输入寄存器在服务器端可以实现读写的操作 掩码写入,功能码对应22,可以对字寄存器进行位操作 读写的地址格式为富文本地址,具体请参照下面的示例代码。
实例化一个Modbus Tcp及Rtu的服务器,支持数据读写操作 获取或设置当前的TCP服务器是否使用modbus-rtu报文进行通信,如果设置为 True,那么客户端需要使用
Get or set whether the current TCP server uses modbus-rtu messages for communication. If it is set to True, then the client needs to use
需要注意的是,本属性设置为False时,客户端使用,否则,使用,不能混合使用
读取地址的线圈的通断情况 起始地址,示例:"100" True或是False 批量读取地址的线圈的通断情况 起始地址,示例:"100" 读取长度 True或是False 写入线圈的通断值 起始地址,示例:"100" 是否通断 True或是False 写入线圈数组的通断值 起始地址,示例:"100" 是否通断 True或是False 读取地址的离散线圈的通断情况 起始地址,示例:"100" True或是False 批量读取地址的离散线圈的通断情况 起始地址,示例:"100" 读取长度 True或是False 写入离散线圈的通断值 起始地址,示例:"100" 是否通断 写入离散线圈数组的通断值 起始地址,示例:"100" 是否通断 写入寄存器数据,指定字节数据 起始地址,示例:"100",如果是输入寄存器:"x=4;100" 高位数据 地位数据 创建特殊的功能标识,然后返回该信息
Create a special feature ID and return this information
modbus核心报文 错误码 携带错误码的modbus报文
创建返回消息
Create return message
modbus核心报文 返回的实际数据内容 携带内容的modbus报文
创建写入成功的反馈信号
Create feedback signal for successful write
modbus核心报文 携带成功写入的信息
新增一个数据监视的任务,针对的是寄存器地址的数据
Added a data monitoring task for data at register addresses
监视地址对象
移除一个数据监视的任务
Remove a data monitoring task
监视地址对象
在数据变更后,进行触发是否产生订阅
Whether to generate a subscription after triggering data changes
数据地址 修改之前的数 修改之后的数
检测当前的Modbus接收的指定是否是合法的
Check if the current Modbus received designation is valid
缓存数据 是否合格
Modbus核心数据交互方法,允许重写自己来实现,报文只剩下核心的Modbus信息,去除了MPAB报头信息
The Modbus core data interaction method allows you to rewrite it to achieve the message. Only the core Modbus information is left in the message, and the MPAB header information is removed.
核心的Modbus报文 进行数据交互之后的结果
启动modbus-rtu的从机服务,使用默认的参数进行初始化串口,9600波特率,8位数据位,无奇偶校验,1位停止位
Start the slave service of modbus-rtu, initialize the serial port with default parameters, 9600 baud rate, 8 data bits, no parity, 1 stop bit
串口信息
启动modbus-rtu的从机服务,使用默认的参数进行初始化串口,8位数据位,无奇偶校验,1位停止位
Start the slave service of modbus-rtu, initialize the serial port with default parameters, 8 data bits, no parity, 1 stop bit
串口信息 波特率
启动modbus-rtu的从机服务,使用自定义的初始化方法初始化串口的参数
Start the slave service of modbus-rtu and initialize the parameters of the serial port using a custom initialization method
初始化信息的委托
关闭modbus-rtu的串口对象
Close the serial port object of modbus-rtu
接收到串口数据的时候触发 串口对象 消息 Modbus-Udp协议的客户端通讯类,方便的和服务器进行数据交互,支持标准的功能码,也支持扩展的功能码实现,地址采用富文本的形式,详细见备注说明
The client communication class of Modbus-Udp protocol is convenient for data interaction with the server. It supports standard function codes and also supports extended function codes. The address is in rich text. For details, see the remarks.
本客户端支持的标准的modbus协议,Modbus-Tcp及Modbus-Udp内置的消息号会进行自增,地址支持富文本格式,具体参考示例代码。
读取线圈,输入线圈,寄存器,输入寄存器的方法中的读取长度对商业授权用户不限制,内部自动切割读取,结果合并。
实例化一个MOdbus-Udp协议的客户端对象
Instantiate a client object of the MOdbus-Udp protocol
/param> /param> 监视使用的数据缓存 地址 原有的值 新的值 关于MqttSyncClient实现的接口,从而实现了数据连接池的操作信息 根据连接的MQTT参数,实例化一个默认的对象
According to the connected MQTT parameters, instantiate a default object
连接的参数信息
实例化一个默认的对象
Instantiate a default object
MQTT的连接对象 Mqtt的一次完整消息内容,包含主题,负载数据,消息等级。
Mqtt's complete message content, including subject, payload data, message level.
这个字段表示应用消息分发的服务质量等级保证。分为,最多一次,最少一次,正好一次,只发不推送。
This field indicates the quality of service level guarantee for application message distribution. Divided into, at most once, at least once, exactly once
在实际的开发中的情况下,最多一次是最省性能的,正好一次是最消耗性能的,如果应有场景为推送实时的数据,那么,最多一次的性能是最高的
主题名(Topic Name)用于识别有效载荷数据应该被发布到哪一个信息通道。
The Topic Name is used to identify which information channel the payload data should be published to.
UTF-8编码字符串中的字符数据必须是按照Unicode规范 [Unicode] 定义的和在RFC3629 [RFC3629] 中重申的有效的UTF-8格式。特别需要指出的是, 这些数据不能包含字符码在U+D800和U+DFFF之间的数据。如果服务端或客户端收到了一个包含无效UTF-8字符的控制报文,它必须关闭网络连接 [MQTT-1.5.3-1]. PUBLISH报文中的主题名不能包含通配符 [MQTT-3.3.2-2]。
有效载荷包含将被发布的应用消息。数据的内容和格式是应用特定的。
The payload contains application messages to be published. The content and format of the data is application specific.
该消息是否在服务器端进行保留,详细的说明参照文档的备注
Whether the message is retained on the server. For details, refer to the remarks of the document.
如果客户端发给服务端的PUBLISH报文的保留(RETAIN)标志被设置为1,服务端必须存储这个应用消息和它的服务质量等级(QoS), 以便它可以被分发给未来的主题名匹配的订阅者 [MQTT-3.3.1-5]。一个新的订阅建立时,对每个匹配的主题名 ,如果存在最近保留的消息,它必须被发送给这个订阅者 [MQTT-3.3.1-6]。如果服务端收到一条保留(RETAIN)标志为1的QoS 0消息, 它必须丢弃之前为那个主题保留的任何消息。它应该将这个新的QoS 0消息当作那个主题的新保留消息,但是任何时候都可以选择丢弃它 — 如果这种情况发生了, 那个主题将没有保留消息 [MQTT-3.3.1-7]
Mqtt协议的客户端实现,支持订阅消息,发布消息,详细的使用例子参考api文档
The client implementation of the Mqtt protocol supports subscription messages and publishing messages. For detailed usage examples, refer to the api documentation.
这是一个MQTT的客户端实现,参照MQTT协议的3.1.1版本设计实现的。服务器可以是其他的组件提供的,其他的可以参考示例
This is an MQTT client implementation, designed and implemented with reference to version 3.1.1 of the MQTT protocol. The server can be provided by other components.
实例化一个默认的对象 配置信息 连接服务器,如果连接失败,请稍候重试。
Connect to the server. If the connection fails, try again later.
连接是否成功
关闭Mqtt服务器的连接。
Close the connection to the Mqtt server.
发布一个MQTT协议的消息到服务器。该消息包含主题,负载数据,消息等级,是否保留信息。
Publish an MQTT protocol message to the server. The message contains the subject, payload data, message level, and whether to retain information.
消息 发布结果 参照 的示例说明。
从服务器订阅一个或多个主题信息
Subscribe to one or more topics from the server
主题信息 订阅结果 参照 的示例说明。
向服务器订阅一个主题消息,可以指定订阅的主题数组,订阅的质量等级,还有消息标识符
To subscribe to a topic message from the server, you can specify the subscribed topic array, the subscription quality level, and the message identifier
订阅的消息本体 是否订阅成功
取消订阅多个主题信息,取消之后,当前的订阅数据就不在接收到,除非服务器强制推送。
Unsubscribe from multiple topic information. After cancellation, the current subscription data will not be received unless the server forces it to push it.
主题信息 取消订阅结果 参照 的示例说明。
取消订阅置顶的主题信息 主题信息 取消订阅结果 参照 的示例说明。 当接收到Mqtt订阅的信息的时候触发
Triggered when receiving Mqtt subscription information
收到消息时候的client实例对象 主题信息 负载数据
当接收到Mqtt订阅的信息的时候触发 当网络发生异常的时候触发的事件,用户应该在事件里进行重连服务器 连接服务器成功的委托
Connection server successfully delegated
当客户端连接成功触发事件,就算是重新连接服务器后,也是会触发的
The event is triggered when the client is connected successfully, even after reconnecting to the server.
释放当前的对象 获取当前的连接配置参数信息
Get current connection configuration parameter information
获取或设置是否启动定时器去检测当前客户端是否超时掉线。默认为 True
Get or set whether to start the timer to detect whether the current client timeout and disconnection. Default is True
来自客户端的一次消息的内容,当前类主要是在MQTT的服务端进行使用
The content of a message from the client. The current class is mainly used on the MQTT server
实例化一个默认的对象
Instantiate a default object
客户端的Id信息
Client Id information
当前的客户端的用户名
Username of the current client
获取或设置当前的消息是否取消发布,默认False,也就是发布出去
Get or set whether the current message is unpublished, the default is False, which means it is published
当前消息的生成时间
The generation time of the current message
连接MQTT服务器的一些参数信息,适用消息发布订阅客户端以及同步请求客户端。
Some parameter information for connecting to the MQTT server is applicable to the message publishing and subscription client and the synchronization request client.
实例化一个默认的对象
Instantiate a default object
Mqtt服务器的ip地址
IP address of Mqtt server
端口号。默认1883
The port number. Default 1883
客户端的id的标识
ID of the client
实际在传输的时候,采用的是UTF8编码的方式来实现。
连接到服务器的超时时间,默认是5秒,单位是毫秒
The timeout period for connecting to the server, the default is 5 seconds, the unit is milliseconds
登录服务器的凭证,包含用户名和密码,可以为空
The credentials for logging in to the server, including the username and password, can be null
设置的参数,最小单位为1s,当超过设置的时间间隔没有发送数据的时候,必须发送PINGREQ报文,否则服务器认定为掉线。
The minimum unit of the set parameter is 1s. When no data is sent beyond the set time interval, the PINGREQ message must be sent, otherwise the server considers it to be offline.
保持连接(Keep Alive)是一个以秒为单位的时间间隔,表示为一个16位的字,它是指在客户端传输完成一个控制报文的时刻到发送下一个报文的时刻, 两者之间允许空闲的最大时间间隔。客户端负责保证控制报文发送的时间间隔不超过保持连接的值。如果没有任何其它的控制报文可以发送, 客户端必须发送一个PINGREQ报文,详细参见 [MQTT-3.1.2-23]
获取或是设置心跳时间的发送间隔。默认30秒钟
Get or set the heartbeat time interval. 30 seconds by default
是否清理会话,如果清理会话(CleanSession)标志被设置为1,客户端和服务端必须丢弃之前的任何会话并开始一个新的会话。 会话仅持续和网络连接同样长的时间。与这个会话关联的状态数据不能被任何之后的会话重用 [MQTT-3.1.2-6]。默认为清理会话。
Whether to clean the session. If the CleanSession flag is set to 1, the client and server must discard any previous session and start a new session. The session only lasts as long as the network connection. The state data associated with this session cannot be reused by any subsequent sessions [MQTT-3.1.2-6]. The default is to clean up the session.
定义了Mqtt的相关的控制报文的信息 操作失败的信息返回 连接标识 连接返回的标识 发布消息 QoS 1消息发布收到确认 发布收到(保证交付第一步) 发布释放(保证交付第二步) QoS 2消息发布完成(保证交互第三步) 客户端订阅请求 订阅请求报文确认 客户端取消订阅请求 取消订阅报文确认 心跳请求 心跳响应 客户端断开连接 报告进度 文件传输中没有意义的标记 下载文件的命令,一次只能下载一个文件 上传文件的命令,一次只能上传一个文件 删除文件的命令,一次可以删除多个文件 删除目录的命令,目录下面的所有的文件都会被删除 遍历指定目录下所有的文件信息 遍历指定目录下所有的子目录信息 文件是否存在 指定目录的所有文件信息,包含文件数量,所有文件大小,最后的更新时间 指定目录的所有子目录的文件统计信息,每个文件夹的文件数量,所有文件大小,最后更新时间 Mqtt协议的验证对象,包含用户名和密码
Authentication object of Mqtt protocol, including username and password
实例化一个默认的对象
Instantiate a default object
实例化指定的用户名和密码的对象
Instantiates an object with the specified username and password
用户名 密码
获取或设置用户名
Get or set username
获取或设置密码
Get or set password
Mqtt协议的辅助类,提供了一些协议相关的基础方法,方便客户端和服务器端一起调用。
The auxiliary class of the Mqtt protocol provides some protocol-related basic methods for the client and server to call together.
根据数据的总长度,计算出剩余的数据长度信息
According to the total length of the data, calculate the remaining data length information
数据的总长度 计算结果
将一个数据打包成一个mqtt协议的内容
Pack a piece of data into a mqtt protocol
控制码 标记 可变头的字节内容 负载数据 带有是否成功的结果对象
将一个数据打包成一个mqtt协议的内容
Pack a piece of data into a mqtt protocol
控制码加标记码 可变头的字节内容 负载数据 带有是否成功的结果对象
将字符串打包成utf8编码,并且带有2个字节的表示长度的信息
Pack the string into utf8 encoding, and with 2 bytes of length information
文本消息 打包之后的信息
从MQTT的缓存信息里,提取文本信息
Extract text information from MQTT cache information
Mqtt的报文 索引
从MQTT的缓存信息里,提取文本信息
Extract text information from MQTT cache information
Mqtt的报文 索引
从MQTT的缓存信息里,提取长度信息
Extract length information from MQTT cache information
Mqtt的报文 索引
从MQTT的缓存信息里,提取长度信息
Extract length information from MQTT cache information
数据信息
创建MQTT连接服务器的报文信息
Create MQTT connection server message information
连接配置 协议的内容 返回是否成功的信息
根据服务器返回的信息判断当前的连接是否是可用的
According to the information returned by the server to determine whether the current connection is available
功能码 数据内容 是否可用的连接
获取当前的错误的描述信息
Get a description of the current error
状态信息 描述信息
创建Mqtt发送消息的命令
Create Mqtt command to send messages
封装后的消息内容 结果内容
创建Mqtt发送消息的命令
Create Mqtt command to send messages
主题消息内容 数据负载 结果内容
创建Mqtt订阅消息的命令
Command to create Mqtt subscription message
订阅的主题 结果内容
创建Mqtt取消订阅消息的命令
Create Mqtt unsubscribe message command
订阅的主题 结果内容
解析从MQTT接受的客户端信息,解析成实际的Topic数据及Payload数据
Parse the client information received from MQTT and parse it into actual Topic data and Payload data
MQTT的命令码 接收的MQTT原始的消息内容 解析的数据结果信息
使用指定的对象来返回网络的API接口,前提是传入的数据为json参数,返回的数据为json数据,详细参照说明
Use the specified object to return the API interface of the network, provided that the incoming data is json parameters and the returned data is json data, please refer to the description for details
当前的对话状态 当前传入的消息内容 等待解析的api解析的对象 等待返回客户的结果
使用指定的对象来返回网络的API接口,前提是传入的数据为json参数,返回的数据为json数据,详细参照说明
Use the specified object to return the API interface of the network, provided that the incoming data is json parameters and the returned data is json data, please refer to the description for details
当前的对话状态 当前传入的消息内容 当前已经解析好的Api内容对象 等待返回客户的结果
根据当前的对象定义的方法信息,获取到所有支持ApiTopic的方法列表信息,包含API名称,示例参数数据,描述信息。
According to the method information defined by the current object, the list information of all methods that support ApiTopic is obtained, including the API name, sample parameter data, and description information.
指定的ApiTopic的前缀,可以理解为控制器,如果为空,就不携带控制器。 实际的等待解析的对象 默认的权限特性 返回所有API说明的列表,类型为
根据当前的方法的委托信息和类对象,生成的API对象信息。 Api头信息 方法的委托 当前注册的API的源对象 默认的权限特性 返回是否成功的结果对象 根据当前的方法的委托信息和类对象,生成的API对象信息。 Api头信息 方法的委托 当前注册的API的源对象 默认的权限特性 返回是否成功的结果对象 Mqtt发送的消息封装对象,是对 对象的封装,添加了序号,还有是否重发的信息
The message encapsulation object sent by Mqtt is an encapsulation of the object, with the serial number added, and whether to retransmit
实例化一个默认的对象
Instantiate a default object
是否第一次发送数据信息
Whether to send data information for the first time
当前的消息的标识符,当质量等级为0的时候,不需要重发以及考虑标识情况
The identifier of the current message, when the quality level is 0, do not need to retransmit and consider the identification situation
当前发布消息携带的mqtt的应用消息,包含主题,消息等级,负载。
The application message of mqtt carried in the current published message, including the subject, message level, and load.
Mqtt消息的质量等级
Mqtt message quality level
最多一次 最少一次 只有一次 消息只发送到服务器而不触发发布订阅,该消息质量等级只对HSL的MQTT服务器有效
The message is only sent to the server without triggering publish and subscribe, the message quality level is only valid for the HSL MQTT server
一个Mqtt的服务器类对象,本服务器支持发布订阅操作,支持从服务器强制推送数据,支持往指定的客户端推送,支持基于一问一答的远程过程调用(RPC)的数据交互,支持文件上传下载。根据这些功能从而定制化出满足各个场景的服务器,详细的使用说明可以参见代码api文档示例。
An Mqtt server class object. This server supports publish and subscribe operations, supports forced push data from the server, supports push to designated clients, supports data interaction based on one-question-one-answer remote procedure calls (RPC), and supports file upload and download . According to these functions, the server can be customized to meet various scenarios. For detailed instructions, please refer to the code api document example.
本MQTT服务器功能丰富,可以同时实现,用户名密码验证,在线客户端的管理,数据订阅推送,单纯的数据收发,心跳检测,同步数据访问,文件上传,下载,删除,遍历,详细参照下面的示例说明 最简单的使用,就是实例化,启动服务即可 当然了,我们可以稍微的复杂一点,加一个功能,验证连接的客户端操作 我们可以对ClientID,用户名,密码进行验证,那么我们可以动态修改client id么?比如用户名密码验证成功后,client ID我想设置为权限等级。 如果我想强制该客户端不能主动发布主题,可以这么操作。 你也可以对clientid进行过滤验证,只要结果返回不是0,就可以了。接下来我们实现一个功能,所有客户端的发布的消息在控制台打印出来, 捕获客户端刚刚上线的时候,方便我们进行一些额外的操作信息。下面的意思就是返回一个数据,将数据发送到指定的会话内容上去 下面演示如何从服务器端发布数据信息,包括多种发布的方法,消息是否驻留,详细看说明即可 下面演示如何支持同步网络访问,当客户端是同步网络访问时,协议内容会变成HUSL,即被视为同步客户端,进行相关的操作,主要进行远程调用RPC,以及查询MQTT的主题列表。 如果需要查看在线信息,可以随时获取属性,如果需要查看报文信息,可以实例化日志,参考日志的说明即可。

针对上面同步网络访问,虽然比较灵活,但是什么都要自己控制,无疑增加了代码的复杂度,举个例子,当你的topic分类很多的时候,已经客户端协议多个参数的时候,需要大量的手动解析的代码, 影响代码美观,而且让代码更加的杂乱,除此之外,还有个巨大的麻烦,服务器提供了很多的topic处理程序(可以换个称呼,暴露的API接口), 客户端没法清晰的浏览到,需要查找服务器代码才能知晓,而且服务器更新了接口,客户端有需要同步查看服务器的代码才行,以及做权限控制也很麻烦。
所以在Hsl里面的MQTT服务器,提供了注册API接口的功能,只需要一行注册代码,你的类的方法自动就会变为API解析,所有的参数都是同步解析的,如果你返回的是 OperateResult<T>类型对象,还支持是否成功的结果报告,否则一律视为json字符串,返回给调用方。 如果需要查看在线信息,可以随时获取属性,如果需要查看报文信息,可以实例化日志,参考日志的说明即可。

最后介绍一下文件管理服务是如何启动的,在启动了文件管理服务之后,其匹配的客户端 就可以上传下载,遍历文件了。 而服务器端做的就是启用服务,如果你需要一些更加自由的权限控制,比如某个账户只能下载,不能其他操作,都是可以实现的。更加多的示例参考DEMO程序。
实例化一个MQTT协议的服务器
Instantiate a MQTT protocol server
将消息进行驻留到内存词典,方便进行其他的功能操作。 消息的主题 当前的数据负载 将消息进行驻留到内存词典,方便进行其他的功能操作。 消息的主题 当前的Mqtt消息 向指定的客户端发送主题及负载数据
Sends the topic and payload data to the specified client
会话内容 主题 消息内容
从服务器向订阅了指定的主题的客户端发送消息,默认消息不驻留
Sends a message from the server to a client that subscribes to the specified topic; the default message does not retain
主题 消息内容 指示消息是否驻留
向所有的客户端强制发送主题及负载数据,默认消息不驻留
Send subject and payload data to all clients compulsively, and the default message does not retain
主题 消息内容 指示消息是否驻留
向指定的客户端ID强制发送消息,默认消息不驻留
Forces a message to the specified client ID, and the default message does not retain
指定的客户端ID信息 主题 消息内容 指示消息是否驻留
向客户端发布一个进度报告的信息,仅用于同步网络的时候才支持进度报告,将进度及消息发送给客户端,比如你的服务器需要分成5个部分完成,可以按照百分比提示给客户端当前服务器发生了什么
Publish the information of a progress report to the client. The progress report is only supported when the network is synchronized. The progress and the message are sent to the client. For example, your server needs to be divided into 5 parts to complete. You can prompt the client according to the percentage. What happened to the server
当前的网络会话 回发客户端的关键数据,可以是百分比字符串,甚至是自定义的任意功能 数据消息
向客户端发布一个失败的操作信息,仅用于同步网络的时候反馈失败结果,将错误的信息反馈回客户端,客户端就知道服务器发生了什么,为什么反馈失败。
Publish a failed operation information to the client, which is only used to feed back the failure result when synchronizing the network. If the error information is fed back to the client, the client will know what happened to the server and why the feedback failed.
当前的网络会话 错误的消息文本信息
向客户端发布一个操作结果的信息,仅用于同步网络的时候反馈操作结果,该操作可能成功,可能失败,客户端就知道服务器发生了什么,以及结果如何。
Publish an operation result information to the client, which is only used to feed back the operation result when synchronizing the network. The operation may succeed or fail, and the client knows what happened to the server and the result.
当前的网络会话 结果对象内容
使用指定的对象来返回网络的API接口,前提是传入的数据为json参数,返回的数据为 OperateResult<string> 数据,详细参照说明
Use the specified object to return the API interface of the network, provided that the incoming data is json parameters and the returned data is OperateResult<string> data, please refer to the description for details
当前的会话内容 客户端发送的消息,其中的payload将会解析为一个json字符串,然后提取参数信息。 当前的对象的内容信息
获取当前所有注册的RPC接口信息,将返回一个数据列表。
Get all currently registered RPC interface information, and a data list will be returned.
信息列表
注册一个RPC的服务接口,可以指定当前的控制器名称,以及提供RPC服务的原始对象,指定统一的权限控制。
Register an RPC service interface, you can specify the current controller name, and the original object that provides the RPC service, Specify unified access control
前置的接口信息,可以理解为MVC模式的控制器 原始对象信息 统一的权限访问配置,将会覆盖单个方法的权限控制。
注册一个RPC的服务接口,可以指定当前的控制器名称,以及提供RPC服务的原始对象
Register an RPC service interface, you can specify the current controller name, and the original object that provides the RPC service
前置的接口信息,可以理解为MVC模式的控制器 原始对象信息
启动文件服务功能,协议头为FILE,需要指定服务器存储的文件路径
Start the file service function, the protocol header is FILE, you need to specify the file path stored by the server
文件的存储路径
关闭文件服务功能 获取当前的针对文件夹的文件管理容器的数量
Get the current number of file management containers for the folder
获取当前实时的文件上传下载的监控信息,操作的客户端信息,文件分类,文件名,上传或下载的速度等
Obtain current real-time file upload and download monitoring information, operating client information, file classification, file name, upload or download speed, etc.
文件的监控信息
当客户端进行文件操作时,校验客户端合法性的委托,操作码具体查看的常量值
When client performing file operations, verify the legitimacy of the client, and check the constant value of for the operation code.
会话状态 操作码 分类信息 文件名 是否成功
当客户端进行文件操作时,校验客户端合法性的事件,操作码具体查看的常量值
When client performing file operations, it is an event to verify the legitimacy of the client. For the operation code, check the constant value of
从套接字接收文件并保存,更新文件列表 当前的会话信息 保存的信息 当前的委托信息 是否成功的结果对象 返回相对路径的名称 文件的分类路径信息 文件名 是否成功的结果对象 返回服务器的绝对路径,包含根目录的信息 [Root Dir][A][B][C]... 信息 文件的路径分类信息 是否成功的结果对象 返回服务器的绝对路径,包含根目录的信息 [Root Dir][A][B][C]...[FileName] 信息 路径分类信息 文件名 是否成功的结果对象 根据文件的显示名称转化为真实存储的名称,例如 123.txt 获取到在文件服务器里映射的文件名称,例如返回 b35a11ec533147ca80c7f7d1713f015b7909 文件的分类信息 文件显示名称 是否成功的结果对象 获取当前目录的文件列表管理容器,如果没有会自动创建,通过该容器可以实现对当前目录的文件进行访问
Get the file list management container of the current directory. If not, it will be created automatically. Through this container, you can access files in the current directory.
路径信息 文件管理容器信息
获取文件夹的所有文件夹列表 分类信息 文件夹列表 获取当前文件的读写锁,如果没有会自动创建,文件名应该是guid文件名,例如 b35a11ec533147ca80c7f7d1713f015b7909
Acquire the read-write lock of the current file. If not, it will be created automatically. The file name should be the guid file name, for example, b35a11ec533147ca80c7f7d1713f015b7909
完整的文件路径 返回携带文件信息的读写锁
检查文件夹是否存在,不存在就创建 删除已经存在的文件信息,文件的名称需要是guid名称,例如 b35a11ec533147ca80c7f7d1713f015b7909 文件的路径 文件的guid名称,例如 b35a11ec533147ca80c7f7d1713f015b7909 删除已经存在的文件信息,文件的名称需要是guid名称,例如 b35a11ec533147ca80c7f7d1713f015b7909 文件的路径 文件的guid名称,例如 b35a11ec533147ca80c7f7d1713f015b7909 文件变化的委托信息 当前的会话信息,包含用户的基本信息 当前的文件操作信息,具体指示上传,下载,删除操作 文件变化的事件,当文件上传的时候,文件下载的时候,文件被删除的时候触发。
The file change event is triggered when the file is uploaded, when the file is downloaded, or when the file is deleted.
让MQTT客户端正常下线,调用本方法即可自由控制会话客户端强制下线操作。 当前的会话信息 当前下线的原因,如果没有,代表正常下线 Mqtt的消息收到委托 当前会话的内容 Mqtt的消息 当收到客户端发来的消息时触发
Triggered when a message is received from the client
当前mqtt客户端连接上服务器的事件委托 当前的会话对象 Mqtt的客户端连接上来时触发
Triggered when Mqtt client connects
Mqtt的客户端下线时触发
Triggered when Mqtt client connects
验证的委托 当前的MQTT的会话内容 客户端的id 用户名 密码 0则是通过,否则,就是连接失败 当客户端连接时,触发的验证事件
Validation event triggered when the client connects
获取当前的在线的客户端数量
Gets the number of clients currently online
获得当前所有的在线的MQTT客户端信息,包括异步的客户端及同步请求的客户端。
Obtain all current online MQTT client information, including asynchronous client and synchronous request client.
获得当前异步客户端在线的MQTT客户端信息。
Get the MQTT client information of the current asynchronous client online.
获得当前同步客户端在线的MQTT客户端信息,如果客户端是短连接,将难以捕获在在线信息。
Obtain the MQTT client information of the current synchronization client online. If the client is a short connection, it will be difficult to capture the online information.
删除服务器里的指定主题的驻留消息。
Delete the resident message of the specified topic in the server.
等待删除的主题关键字
获取所有的驻留的消息的主题,如果消息发布的时候没有使用Retain属性,就无法通过本方法查到
Get the subject of all resident messages. If the Retain attribute is not used when the message is published, it cannot be found by this method
主题的数组
释放当前的对象 Mqtt的会话信息,包含了一些基本的信息内容,客户端的IP地址及端口,Client ID,用户名,活动时间,是否允许发布数据等等
Mqtt's session information includes some basic information content, the client's IP address and port, Client ID, user name, activity time, whether it is allowed to publish data, etc.
实例化一个对象,指定ip地址及端口,以及协议内容
Instantiate an object, specify ip address and port, and protocol content
远程客户端的IP地址 协议信息
远程的ip地址端口信息
Remote ip address port information
当前接收的客户端ID信息
Client ID information currently received
当前客户端的激活时间
The activation time of the current client
获取当前的客户端的上线时间
Get the online time of the current client
两次活动的最小时间间隔
Minimum time interval between two activities
当前客户端绑定的套接字对象 当前客户端订阅的所有的Topic信息
All Topic information subscribed by the current client
当前的用户名
Current username
当前的协议信息,一般为 "MQTT",如果是同步客户端那么是 "HUSL",如果是文件客户端就是 "FILE"
The current protocol information, generally "MQTT", if it is a synchronous client then it is "HUSL", if it is a file client it is "FILE"
当前的会话信息关联的自定义信息
Custom information associated with the current session information
获取或设置当前的MQTT客户端是否允许发布消息,默认为False,如果设置为True,就是禁止发布消息,服务器不会触发收到消息的事件。
Gets or sets whether the current MQTT client is allowed to publish messages, the default is False, if set to True, it is forbidden to publish messages, The server does not trigger the event of receiving a message.
检查当前的会话对象里是否订阅了指定的主题内容
Check whether the specified topic content is subscribed in the current session object
主题信息 如果订阅了,返回 True, 否则,返回 False
获取当前客户端订阅的所有的Topic信息
Get all Topic information subscribed by the current client
主题列表
当前的会话信息新增一个订阅的主题信息
The current session information adds a subscribed topic information
主题的信息
当前的会话信息新增多个订阅的主题信息
The current session information adds multiple subscribed topic information
主题的信息
移除会话信息的一个订阅的主题 主题 移除会话信息的一个订阅的主题
Remove a subscribed topic from session information
主题
获取当前的会话信息,包含在线时间的信息
Get current session information, including online time information
会话信息,包含在线时间
订阅的消息类,用于客户端向服务器请求订阅的信息
Subscribed message class, used by the client to request subscription information from the server
实例化一个默认的对象
Instantiate a default object
这个字段表示应用消息分发的服务质量等级保证。分为,最多一次,最少一次,正好一次
This field indicates the quality of service guarantee for application message distribution. Divided into, at most once, at least once, exactly once
在实际的开发中的情况下,最多一次是最省性能的,正好一次是最消耗性能的,如果应有场景为推送实时的数据,那么,最多一次的性能是最高的
当前的消息的标识符,当质量等级为0的时候,不需要重发以及考虑标识情况
The identifier of the current message, when the quality level is 0, do not need to retransmit and consider the identification situation
当前订阅的所有的主题的数组信息
Array information of all topics currently subscribed
基于MQTT协议的同步访问的客户端程序,支持以同步的方式访问服务器的数据信息,并及时的反馈结果,当服务器启动文件功能时,也支持文件的上传,下载,删除操作等。
The client program based on MQTT protocol for synchronous access supports synchronous access to the server's data information and timely feedback of results, When the server starts the file function, it also supports file upload, download, and delete operations.
当MqttServer注册了远程RPC接口的时候,例如将一个plc对象注册是接口对象 下面演示文件部分的功能的接口方法,主要包含,上传,下载,删除,遍历操作 上述的两个遍历的方法,就可以遍历出服务器的所有目录和文件了,具体可以参考 Demo 的MQTT文件客户端的演示界面。
实例化一个MQTT的同步客户端
Instantiate an MQTT synchronization client
通过指定的ip地址及端口来实例化一个同步的MQTT客户端
Instantiate a synchronized MQTT client with the specified IP address and port
IP地址信息 端口号信息
通过指定的ip地址及端口来实例化一个同步的MQTT客户端
Instantiate a synchronized MQTT client with the specified IP address and port
IP地址信息 端口号信息
从MQTT服务器同步读取数据,将payload发送到服务器,然后从服务器返回相关的数据,支持数据发送进度报告,服务器执行进度报告,接收数据进度报告操作
Synchronously read data from the MQTT server, send the payload to the server, and then return relevant data from the server, support data transmission progress report, the server executes the progress report, and receives the data progress report
进度报告可以实现一个比较有意思的功能,可以用来数据的上传和下载,提供一个友好的进度条,因为网络的好坏通常是不确定的。 主题信息 负载数据 发送数据给服务器时的进度报告,第一个参数为已发送数据,第二个参数为总发送数据 服务器处理数据的进度报告,第一个参数Topic自定义,通常用来传送操作百分比,第二个参数自定义,通常用来表示服务器消息 从服务器接收数据的进度报告,第一个参数为已接收数据,第二个参数为总接收数据 服务器返回的数据信息
从MQTT服务器同步读取数据,将指定编码的字符串payload发送到服务器,然后从服务器返回相关的数据,并转换为指定编码的字符串,支持数据发送进度报告,服务器执行进度报告,接收数据进度报告操作
Synchronously read data from the MQTT server, send the specified encoded string payload to the server, and then return the data from the server, and convert it to the specified encoded string, support data transmission progress report, the server executes the progress report, and receives the data progress report
主题信息 负载数据 发送数据给服务器时的进度报告,第一个参数为已发送数据,第二个参数为总发送数据 服务器处理数据的进度报告,第一个参数Topic自定义,通常用来传送操作百分比,第二个参数自定义,通常用来表示服务器消息 从服务器接收数据的进度报告,第一个参数为已接收数据,第二个参数为总接收数据 服务器返回的数据信息
读取MQTT服务器注册的RPC接口,忽略返回的Topic数据,直接将结果转换为泛型对象,如果JSON转换失败,将返回错误,参数传递主题和数据负载, 数据负载示例:"{\"address\": \"100\",\"length\": 10}" 本质是一个字符串。
Read the RPC interface registered by the MQTT server, ignore the returned Topic data, and directly convert the result into a generic object. If the JSON conversion fails, an error will be returned. The parameter passes the topic and the data payload. The data payload example: "{\"address\ ": \"100\",\"length\": 10}" is essentially a string.
关于类型对象,需要和服务器返回的类型一致,如果服务器返回了 , 这里也是 , 如果是自定义对象,客户端没有该类型,可以使用 泛型对象,需要和返回的数据匹配,如果返回的是 int 数组,那么这里就是 int[],务必和服务器侧定义的返回类型一致 主题信息,也是服务器的 RPC 接口信息 传递的参数信息,示例:"{\"address\": \"100\",\"length\": 10}" 本质是一个字符串。 服务器返回的数据信息
读取MQTT服务器注册的RPC接口,忽略返回的Topic数据,直接将结果转换为泛型对象,如果JSON转换失败,将返回错误,参数传递主题和数据负载, 数据负载示例:new { address = "", length = 0 } 本质是一个匿名对象。
Read the RPC interface registered by the MQTT server, ignore the returned Topic data, and directly convert the result into a generic object. If the JSON conversion fails, an error will be returned. The parameter passes the topic and the data payload. The data payload example: new { address = "", length = 0 } is essentially an anonymous object.
关于类型对象,需要和服务器返回的类型一致,如果服务器返回了 , 这里也是 , 如果是自定义对象,客户端没有该类型,可以使用 泛型对象,需要和返回的数据匹配,如果返回的是 int 数组,那么这里就是 int[] 主题信息,也是服务器的 RPC 接口信息 传递的参数信息,示例:new { address = "", length = 0 } 本质是一个匿名对象。 服务器返回的数据信息
读取服务器的已经注册的API信息列表,将返回API的主题路径,注释信息,示例的传入的数据信息。
Read the registered API information list of the server, and return the API subject path, annotation information, and sample incoming data information.
包含是否成功的api信息的列表
读取服务器的指定的API接口的每天的调用次数,如果API接口不存在,或是还没有调用数据,则返回失败。
Read the number of calls per day of the designated API interface of the server. If the API interface does not exist or the data has not been called yet, it returns a failure.
如果api的参数为空字符串,就是请求所有的接口的调用的统计信息。 等待请求的API的接口信息,如果为空,就是请求所有的接口的调用的统计信息。 最近几日的连续的调用情况,例如[1,2,3],表示前提调用1次,昨天调用2次,今天3次
读取服务器的已经驻留的所有消息的主题列表
Read the topic list of all messages that have resided on the server
消息列表对象
读取服务器的已经驻留的指定主题的消息内容
Read the topic list of all messages that have resided on the server
指定的主题消息 结果进度报告 消息列表对象
从远程服务器下载一个文件到本地,需要指定文件类别,文件名,进度报告,本地保存的文件名
To download a file from a remote server to the local, you need to specify the file category, file name, progress report, and file name saved locally
文件的类别,例如 Files/Personal/Admin 按照斜杠来区分 文件名称,例如 123.txt 进度报告,第一个参数是已完成字节数,第二个参数是总字节数 本地保存的文件名 是否下载成功
从远程服务器下载一个文件到流中,需要指定文件类别,文件名,进度报告,本地保存的文件名
To download a file from a remote server to the stream, you need to specify the file category, file name, progress report, and file name saved locally
文件的类别,例如 Files/Personal/Admin 按照斜杠来区分 文件名称,例如 123.txt 进度报告,第一个参数是已完成字节数,第二个参数是总字节数 数据流 是否下载成功
从远程服务器下载一个文件,生成一个Bitmap图片对象,需要指定文件类别,文件名,进度报告,可用于用户头像的存储
Download a file from a remote server and generate a Bitmap image object. You need to specify the file category, file name, and progress report, which can be used to store the user's avatar
文件的类别,例如 Files/Personal/Admin 按照斜杠来区分 文件名称,例如 123.txt 进度报告,第一个参数是已完成字节数,第二个参数是总字节数 如果下载成功,则携带图片资源对象
上传一个Bitmap图片对象到服务器指定的分类下面,需要指定分类信息,服务器保存的文件名,描述信息,支持进度报告
Upload a Bitmap image object to the category specified by the server, you need to specify the category information, the file name saved by the server, description information, and support for progress reports
图片对象 文件的类别,例如 Files/Personal/Admin 按照斜杠来区分 在服务器保存的文件名称 文件的额外的描述信息 进度报告,第一个参数是已完成字节数,第二个参数是总字节数 是否上传成功
上传文件给服务器,需要指定上传的数据内容,上传到服务器的分类信息,支持进度汇报功能。
To upload files to the server, you need to specify the content of the uploaded data, the classification information uploaded to the server, and support the progress report function.
数据源,可以是文件名,也可以是数据流 在服务器保存的文件名,不包含驱动器路径 文件的类别,例如 Files/Personal/Admin 按照斜杠来区分 文件的额外的描述信息 进度报告,第一个参数是已完成字节数,第二个参数是总字节数 是否成功的结果对象
上传文件给服务器,需要指定上传文件的路径信息,服务器保存的名字,以及上传到服务器的分类信息,支持进度汇报功能。
To upload a file to the server, you need to specify the path information of the uploaded file, the name saved by the server, and the classification information uploaded to the server to support the progress report function.
文件名,需要指定完整的路径信息,文件必须存在,否则发送失败 文件的类别,例如 Files/Personal/Admin 按照斜杠来区分 服务器端保存的文件名 文件的额外的描述信息 进度报告,第一个参数是已完成字节数,第二个参数是总字节数 是否上传成功的结果对象
上传文件给服务器,需要指定上传文件的路径信息(服务器保存的名称就是文件名),以及上传到服务器的分类信息,支持进度汇报功能。
To upload a file to the server, you need to specify the path information of the uploaded file (the name saved by the server is the file name), as well as the classification information uploaded to the server, to support the progress report function.
文件名,需要指定完整的路径信息,文件必须存在,否则发送失败 文件的类别,例如 Files/Personal/Admin 按照斜杠来区分 文件的额外的描述信息 进度报告,第一个参数是已完成字节数,第二个参数是总字节数 是否上传成功的结果对象
下载指定分类信息的所有的文件描述信息,需要指定分类信息,例如:Files/Personal/Admin
To download all the file description information of the specified classification information, you need to specify the classification information, for example: Files/Personal/Admin
文件的类别,例如 Files/Personal/Admin 按照斜杠来区分 当前分类下所有的文件描述信息
下载指定分类信息的全部子分类信息
Download all sub-category information of the specified category information
文件的类别,例如 Files/Personal/Admin 按照斜杠来区分 当前分类下所有的子分类信息
请求服务器指定分类是否存在指定的文件名,需要指定分类信息,文件名
Request the server to specify whether the specified file name exists in the specified category, need to specify the category information, file name
文件的类别,例如 Files/Personal/Admin 按照斜杠来区分 文件名信息,例如 123.txt Content为True表示存在,否则为不存在
删除服务器的指定的文件名,需要指定分类信息,文件名
Delete the specified file name of the server, need to specify the classification information, file name
文件的类别,例如 Files/Personal/Admin 按照斜杠来区分 文件名信息 是否删除成功
删除服务器上指定的分类信息及管理的所有的文件,包含所有的子分类信息,不可逆操作,谨慎操作。
Delete the specified classification information and all files managed on the server, including all sub-classification information, irreversible operation, and careful operation.
文件的类别,例如 Files/Personal/Admin 按照斜杠来区分 是否删除成功
获取服务器文件夹的指定目录的文件统计信息,包括文件数量,总大小,最后更新时间
Get the file statistics of the specified directory of the server folder, including the number of files, the total size, and the last update time
文件的类别,例如 Files/Personal/Admin 按照斜杠来区分 服务器文件大小的结果对象,单位:字节数
获取服务器文件夹的指定目录的所有子目录的文件信息,包括每个子目录的文件数量,总大小,最后更新时间
Get the file information of all subdirectories of the specified directory of the server folder, including the number of files in each subdirectory, the total size, and the last update time
文件的类别,例如 Files/Personal/Admin 按照斜杠来区分 服务器文件大小的结果对象,单位:字节数
获取或设置当前的连接信息,客户端将根据这个连接配置进行连接服务器,在连接之前需要设置相关的信息才有效。
To obtain or set the current connection information, the client will connect to the server according to this connection configuration. Before connecting, the relevant information needs to be set to be effective.
获取或设置使用字符串访问的时候,使用的编码信息,默认为UT8编码
Get or set the encoding information used when accessing with a string, the default is UT8 encoding
[商业授权] MqttSyncClient客户端的连接池类对象,用于共享当前的连接池,合理的动态调整连接对象,然后进行高效通信的操作,默认连接数无限大。
[Authorization] The connection pool class object of the MqttSyncClient is used to share the current connection pool, reasonably dynamically adjust the connection object, and then perform efficient communication operations, The default number of connections is unlimited
本连接池用于提供高并发的读写性能,仅对商业授权用户开放。使用起来和一致,但是更加的高性能,在密集型数据交互时,优势尤为明显。
通过MQTT连接参数实例化一个对象
Instantiate an object through MQTT connection parameters
MQTT的连接参数信息
通过MQTT连接参数以及自定义的初始化方法来实例化一个对象
Instantiate an object through MQTT connection parameters and custom initialization methods
MQTT的连接参数信息 自定义的初始化方法
获取当前的连接池管理对象信息
Get current connection pool management object information
Mqtt的同步网络服务的单Api信息描述类
Single Api information description class of Mqtt's synchronous network service
当前的Api的路由信息,对于注册服务来说,是类名/方法名 当前的Api的路由说明 当前方法的签名 当前Api的调用次数 示例的 当前Api的调用总耗时,单位是秒 当前Api是否为方法,如果是方法,就为true,否则为false 如果当前的API接口是支持Http的请求方式,当前属性有效,例如GET,POST 当前的Api的方法是否是异步的Task类型 当前的Api关联的方法反射,本属性在JSON中将会忽略 当前的Api关联的方法反射,本属性在JSON中将会忽略 当前Api的方法的权限访问反射,本属性在JSON中将会忽略 当前Api绑定的对象的,实际的接口请求,将会从对象进行调用,本属性在JSON中将会忽略 使用原子的操作增加一次调用次数的数据信息,需要传入当前的消耗的时间,单位为100倍毫秒 当前调用花费的时间,单位为100倍毫秒 一个工业物联网的底层架构框架,专注于底层的技术通信及跨平台,跨语言通信功能,实现各种主流的PLC数据读写,实现modbus,机器人的各种协议读写等等, 支持快速搭建工业上位机软件,组态软件,SCADA软件,工厂MES系统,助力企业工业4.0腾飞,实现智能制造,智慧工厂的目标。

本组件付费开源,使用之前请认真的阅读本API文档,对于本文档中警告部分的内容务必理解,部署生产之前请详细测试,如果在测试的过程中, 发现了BUG,或是有问题的地方,欢迎联系作者进行修改,或是直接在github上进行提问。未经测试,直接部署,对设备,工厂造成了损失,作者概不负责。

官方网站:http://www.hslcommunication.cn/,包含组件的在线API地址以及一个MES DEMO的项目展示。

本组件的目标是集成一个框架,统一所有的设备读写方法,抽象成统一的接口,对于上层操作只需要关注地址,读取类型即可,另一个目标是使用本框架轻松实现C#后台+C#客户端+web浏览器+android手机的全方位功能实现。 本库提供了C#版本和java版本和python版本,java,python版本的使用和C#几乎是一模一样的,都是可以相互通讯的。
在使用本通讯库之前,需要学会如何使用nuget来安装当前的通讯库,可以参考如下的博文:http://www.cnblogs.com/dathlin/p/7705014.html

先整体介绍下如何使用本组件库的基本思路,基本上是引用库,从nuget安装的库会自动添加引用到项目中的,就可以直接进行using操作了,当然了在使用之前,需要先激活一下,激活的方式如下: 在你的应用程序刚开起来的时候,激活一次即可,后续都不需要再重复激活了。接下来就可以开始写代码了。任何的设备的操作基本是相同的,实例化,配置参数(有些plc默认的参数即可),连接设备,读写操作,关闭
关于Hsl的日志功能,贯穿整个hslcommunication的项目,所有的网络类,都包含了日志功能,当然你也可以继承接口实现你自己的日志,在hsl里提供了三种常见的简单实用的日志
再开始讲解基本的代码通讯之前,先来了解两个基本的概念,长连接,短连接。为了更好的说明当前的通信情况,我把所有的通信拆分为四个部分,连接,发,收,断开。
短连接:连接,发,收,断开,连接,发,收,断开,连接,发,收,断开,连接,发,收,断开...无限循环
长连接:连接,发,收,发,收,发,收,发,收,发,收,发,收,发,收,发,收,发,收....断开
然后我们来看看异常的情况,短连接的异常比较好处理,反正每次请求都是先连接,关键来看长连接的异常
长连接:连接,发,收,发,收...异常,连接,发,收,发,收,异常,连接,连接,连接...收,发,收,发,收,发,收,发,收....断开
这里第一个异常发生后,第二次读写立即连接上去并且成功,第二个异常触发后,一直读写失败,说明就是一直连接不上去。
对于HSL组件来说,不需要重复连接服务器或是plc,无论是短连接还是长连接,都只需要一直读写就OK了,对读写的结果进行判定,即使发生异常了,读写失败了,也要一直坚持,网络好的时候,读写会恢复成功的。

我们以三菱的PLC为示例,其他的plc调用方式基本是一模一样的,就是调用的类不一样,参数配置不一样而已。以下的逻辑都是适用的。 需要注意的事,在实际的开发中,我们的一个窗体程序(或是控制台,原理都是一样的),会定时或是不定时的去读写PLC的操作(调用Read或是Write方法),这个本身是没有任何问题的, 但是总会有这样的需求,我们需要在界面上,或是系统里实时体现当前的PLC的在线情况,我相信不少小伙伴会有这样的问题的。所以就出现了下面的代码: 实际这种操作是非常不可取的,为什么这么说,下面说说原因:
首先说明下方法里发生了什么?这个方法首先会关闭连接,然后重新连接,连接成功,就发送初始化指令(有些PLC就需要握手确认),初始化握手成功,才返回真正的成功!
那么这里为什么不行呢?因为Read和Write方法是有混合锁实现互斥操作的,这样的好处就是多线程调用互不影响,但是方法,并没有互斥锁,如果调用的时候同时在读写,那就会导致异常, 那么为什么没有加互斥锁呢?因为为了实现读写方法的时候,支持自动重连操作,所以连接方法已经在互斥锁了。如果再加互斥锁,会发生死锁,所以综合考虑,就设计成了现在的样子。
既然上面的代码不能使用,那么怎么来看当前的连接状态呢?这里有一点需要注意,只需要调用0次或1次即可。 如果你本来就在每秒读取PLC的数据信息了,那么连检测的定时器都不用写了,你每次读取数据的时候顺便判定下,结果就出来了。

其他相关的代码示例需要到各自的目录里查找,下面只列举了一些常见的代码示例 Hsl组件日志相关示例参考 三菱mc协议示例参考 西门子S7协议示例参考 欧姆龙协议示例参考 罗克韦尔协议示例参考 Modbus协议示例参考 MQTT服务器示例参考 MQTT客户端示例参考 WebSocket服务器示例参考 WebSocket客户端示例参考 WebApi示例参考 Redis示例参考 身份证阅读器串口版 身份证阅读器网口版 文件传送服务器 相关的代码示例,可以翻阅左侧的命名空间,基本是按照功能来区分的,只要点进去多看看即可
本软件著作权归Richard.Hu所有。
博客地址:https://www.cnblogs.com/dathlin/p/7703805.html
授权付费模式:超级VIP群 : 189972948
本群提供专业版通讯库的所有更新版的 HslCommunication 源代码。包含 .Net Java Python 三大平台。 本群支持对特殊需求而进行修改,更新源代码的服务,配合企业客户修复源代码错误的服务。 本群成员拥有对通讯库商用的权利,拥有自己修改源代码并商业使用的权利,组件版权仍归属原作者。 本群成员需要对源代码保密。禁止公开源代码,禁止对源代码的商业用途。 本群成员可以免费获得官网的 MES DEMO源代码。 企业商业授权 费用请联系QQ200962190咨询,公司即可拥有商用版权,支持任意的开发人员数量,项目数量,支持源代码更新,长期支持,商用软件必须冠名公司标识,官网显示合作伙伴logo。 支持专业的一对一培训业务,一小时1000 rmb,一天8小时为5000 rmb 付费二维码:
正式发布库到互联网上去。 添加xml文档 重新设计西门子的数据读取机制,提供一个更改类型的方法。 提供一个ModBus的服务端引擎。 紧急修复了西门子批量访问时出现的BUG。 完善CRC16校验码功能,完善数据库辅助类方法。 西门子访问类,提供一个批量bool数据写入,但该写入存在安全隐患,具体见博客。 与3.X版本不兼容,谨慎升级。如果要升级,主要涉及的代码包含PLC的数据访问和同步数据通信。 删除了2个类,OperateResultBytes和OperateResultString类,提供了更加强大方便的泛型继承类,多达10个泛型参数。地址见http://www.cnblogs.com/dathlin/p/7865682.html 将部分类从HslCommunication命名空间下移动到HslCommunication.Core下面。 提供了一个通用的ModBus TCP的客户端类,方便和服务器交互。 完善了HslCommunication.BasicFramework.SoftBaisc下面的辅助用的静态方法,提供了一些方便的数据转化,在上面进行公开。 更新了三菱的读取接口,提供了一个额外的字符串表示的方式,OperateResult<byte[]> read = melsecNet.ReadFromPLC("M100", 5); 更新了西门子的数据访问类和modbus tcp类提供双模式运行,按照之前版本的写法是默认模式,每次请求重新创建网络连接,新增模式二,在代码里先进行连接服务器方法,自动切换到模式二,每次请求都共用一个网络连接,内部已经同步处理,加速数据访问,如果访问失败,自动在下次请求是重新连接,如果调用关闭连接服务器,自动切换到模式一。 修复Modbus tcp批量写入寄存器时,数据解析异常的BUG。 三菱访问器新增长连接模式。 三菱访问器支持单个M写入,在数组中指定一个就行。 三菱访问器提供了float[]数组写入的API。 三菱访问器支持F报警器,B链接继电器,S步进继电器,V边沿继电器,R文件寄存器读写,不过还需要大面积测试。 三菱访问器的读写地址支持字符串形式传入。 其他的细节优化。 感谢 hwdq0012 网友的测试和建议。 感谢 吃饱睡好 好朋友的测试 三菱,西门子,Modbus tcp客户端内核优化重构。 三菱,西门子,Modbus tcp客户端提供统一的报文测试方法,该方法也是通信核心,所有API都是基于此扩展起来的。 三菱,西门子,Modbus tcp客户端提供了一些便捷的读写API,详细参见对应博客。 三菱的地址区分十进制和十六进制。 优化三菱的位读写操作。 修复西门子读取的地址偏大会出现异常的BUG。 完善统一了所有三菱,西门子,modbus客户端类的读写方法,已经更新到博客。 完善日志记录,提供关键字记录操作。 三菱,西门子,modbus tcp客户端提供自定义数据读写。 modbus tcp服务端提供数据池功能,并支持数据订阅操作。 提供一个纵向的进度控件。 完善Modbus tcp服务器端的数据订阅功能。 进度条控件支持水平方向和垂直方向两个模式。 进度条控件修复初始颜色为空的BUG。 进度条控件文本锯齿修复。 按钮控件无法使用灰色按钮精灵破解。 modbus tcp提供读取short数组的和ushort数组方法。 修复流水号生成器无法生成不带日期格式的流水号BUG。 OperateResult成功时,消息为成功。 数据库辅助类API添加,方便的读取聚合函数。 日志类分析工具界面,显示文本微调。 进度条控件新增一个新的属性对象,是否使用动画。 新增一个饼图控件。 饼图显示优化,新增是否显示百分比的选择。 新增一个仪表盘控件。 饼图控件新增一个是否显示占比很小的信息文本。 新增一个旋转开关控件。 新增一个信号灯控件。 修复modbus tcp客户端读取 float, int, long,的BUG。 修复modbus tcp客户端读取某些特殊设备会读取不到数据的BUG。 双模式的网络基类中新增一个读取超时的时间设置,如果为负数,那么就不验证返回。 信号灯控件显示优化。 Modbus Tcp服务端类修复内存暴涨问题。 winfrom客户端提供一个曲线控件,方便显示实时数据,多曲线数据。 优化modbus tcp客户端的访问类,支持服务器返回错误信息。 优化曲线控件,支持横轴文本显示,支持辅助线标记,详细见对应博客。 曲线控件最新时间显示BUG修复。 Modbus tcp错误码BUG修复。 三菱访问类完善long类型读写。 西门子访问类支持1500系列,支持读取订货号。 曲线控件增加一个新的属性,图标标题。 Modbus tcp服务器端的读写BUG修复。 西门子访问类重新支持200smart。 Json组件更新至11.0.1版本。 紧急修复日志类的BeforeSaveToFile事件在特殊情况的触发BUG。 修复Modbus-tcp服务器接收异常的BUG。 修复SoftBasic.ByteTo[U]ShortArray两个方法异常。 网络核心层重新开发,完全的基于异步IO实现。 所有双模式客户端类进行代码重构,接口统一。 完善并扩充OperateResult对象的类型支持。 提炼一些基础的更加通用的接口方法,在SoftBasic里面。 支持欧姆龙PLC的数据交互。 支持三菱的1E帧数据格式。 不兼容升级,谨慎操作。 OperateResult静态方法扩充。 文件引擎提升缓存空间到100K,加速文件传输。 三菱添加读取单个bool数据。 Modbus-tcp客户端支持配置起始地址不是0的服务器。 其他代码优化。 ComplexNet服务器代码精简优化,移除客户端的在线信息维护代码。 西门子访问类第一次握手信号18字节改为0x02。 更新JSON组件到11.0.2版本。 日志存储类优化,支持过滤存储特殊关键字的日志。 Demo项目新增控件介绍信息。 修复Modbus-Tcp服务器的空异常。 修复西门子类写入float,double,long数据异常。 修复modbus-tcp客户端读写字符串颠倒异常。 修复三菱多读取数据字节的问题。 双模式客户端新增异形客户端模式,变成了三模式客户端。 提供异形modbus服务器和客户端Demo方便测试。 Modbus-tcp服务器同时支持RTU数据交互。 异形客户端新增在线监测,自动剔除访问异常设备。 modbus-tcp支持读取输入点。 所有客户端设备的连接超时判断增加休眠,降低CPU负载。 西门子批量读取上限为19个数组。 其他小幅度的代码优化。 Modbus相关的代码优化。 新增Modbus-Rtu客户端模式,配合服务器的串口支持,已经可以实现电脑本机的通讯测试了。 提炼数据转换基类,优化代码,修复WordReverse类对字符串的BUG,相当于修复modbus和omron读写字符串的异常。 新增一个全新的功能类,数据的推送类,轻量级的高效的订阅发布数据信息。具体参照Demo。 Modbus服务器提供在线客户端数量属性。 所有服务器基类添加端口缓存。 双模式客户端完善连接失败,请求超时的消息提示。 修复双模式客户端某些特殊情况下的头子节NULL异常。 修复三菱交互类的ASCII协议下的写入数据异常。 新增一个埃夫特机器人的数据访问类。 双模式客户端的长连接支持延迟连接操作,通过一个新方法完成。 优化ComplexNet客户端的代码。 更新埃夫特机器人的读取机制到最新版。 Modbus Rtu及串口基类支持接收超时时间设置,不会一直卡死。 Modbus Tcp及Rtu都支持带功能码输入,比如读取100地址,等同于03X100。(注意:该多功能地址仅仅适用于Read及相关的方法 Modbus Tcp及Rtu支持手动更改站号。也就是支持动态站号调整。 修复上个版本遗留的Modbus在地址偏移情况下会多减1的BUG。 Modbus服务器支持串口发送数据时也会触发消息接收。 IReadWriteNet接口新增Read(string address,ushort length)方法。 提炼统一的设备基类,支持Read方法及其扩展的子方法。 修复埃夫特机器人的读取BUG。 三菱PLC支持读取定时器,计数器的值,地址格式为"T100","C100"。 新增快速离散的傅立叶频谱变换算法,并在Demo中测试三种周期信号。 修复西门子fetch/write协议对db块,定时器,计数器读写的BUG。 埃夫特机器人修复tostring()的方法。 modbus客户端新增两个属性,指示是否字节颠倒和字符串颠倒,根据不同的服务器配置。 IReadWriteNet接口补充几个数组读取的方法。 新增一个全新的连接池功能类,详细请参见 https://www.cnblogs.com/dathlin/p/9191211.html 其他的小bug修复,细节优化。 IByteTransform接口新增bool[]数组转换的2个方法。 Modbus Server类新增离散输入数据池和输入寄存器数据池,可以在服务器端读写,在客户端读。 Modbus Tcp及Modbus Rtu及java的modbus tcp支持富地址表示,比如"s=2;100"为站号2的地址100信息。 Modbus Server修复一个偶尔出现多次异常下线的BUG。 其他注释修正。 Modbus服务器新增数据大小端配置。 Modbus服务器支持数据存储本地及从本地加载。 修复modbus服务器边界读写bug。 ByteTransformBase的double转换bug修复。 修复ReverseWordTransform批量字节转换时隐藏的一些bug。 SoftBasic移除2个数据转换的方法。 修复modbus写入单个寄存器的高地位倒置的bug。 修复串口通信过程中字节接收不完整的异常。包含modbus服务器和modbus-rtu。 添加了.net 4.5项目,并且其他项目源代码引用该项目。添加了单元测试,逐步新增测试方法。 项目新增api文档,提供离线版和在线版,文档提供了一些示例代码。 modbus-rtu新增批量的数组读取方法。 modbus-rtu公开ByteTransform属性,方便的进行数据转换。 SoftMail删除发送失败10次不能继续发送的机制。 modbus server新增站号属性,站号不对的话,不响应rtu反馈。 modbus server修复读取65524和65535地址提示越界的bug。 Demo项目提供了tcp/ip的调试工具。 API文档中西门子FW协议示例代码修复。 modbus-rtu修复读取线圈和输入线圈的值错误的bug。 Demo中三菱A-1E帧,修复bool读取显示失败的BUG。 数据订阅类客户端连接上服务器后,服务器立即推送一次。 串口设备基类代码提炼,提供了多种数据类型的读写支持。 仪表盘新增属性IsBigSemiCircle,设置为true之后,仪表盘可显示大于半圆的视图。 提供了一个新的三菱串口类,用于采集FX系列的PLC,MelsecFxSerial 修复双模式基类的一个bug,支持不接受反馈数据。 修复三菱串口类的读写bug,包括写入位,和读取字和位。 相关代码重构优化。 串口基类接收数据优化,保证接收一次完整的数据内容。 新增一个容器罐子的控件,可以调整背景颜色。 OperateResult成功时的错误码调整为0。 修复modbus-tcp及modbus-rtu读取coil及discrete的1个位时解析异常的bug。 授权类公开一个属性,终极秘钥的属性,感谢 洛阳-LYG 的建议。 修复transbool方法在特殊情况下的bug NetworkDeviceBase 写入的方法设置为了虚方法,允许子类进行重写。 SoftBasic: 新增三个字节处理的方法,移除前端字节,移除后端字节,移除两端字节。 新增串口应用的LRC校验方法。还未实际测试。 Siemens的s7协议支持V区自动转换,方便数据读取。 新增ab plc的类AllenBradleyNet,已测试读写,bool写入仍存在一点问题。 新增modbus-Ascii类,该类库还未仔细测试。 埃夫特机器人更新,适配最新版本数据采集。 其他的代码优化,重构精简 修复埃夫特机器人读取数据的bug,已测试通过。 ByteTransform数据转换层新增一个DataFormat属性,可选ABCD,BADC,CDAB,DCBA 三个modbus协议均适配了ByteTransform并提供了直接修改的属性,默认ABCD 注意:如果您的旧项目使用的Modbus类,请务必重新测试适配。给你带来的不便,敬请谅解。 所有显示字符串支持中英文,支持切换,默认为系统语言。 Json组件依赖设置为不依赖指定版本。 modbus-ascii类库测试通过。 新增松下的plc串口读写类,还未测试。 西门子s7类写入byte数组长度不受限制,原先大概250个字节左右。 demo界面进行了部分的中英文适配。 OperateResult类新增了一些额外的构造方法。 SoftBasic新增了几个字节数组操作相关的通用方法。 其他大量的细节的代码优化,重构。 DeviceNet层添加异步的API,支持async+await调用。 java修复西门子的写入成功却提示失败的bug。 java代码重构,和C#基本保持一致。 python版本发布,支持三菱,西门子,欧姆龙,modbus,数据订阅,同步访问。 其他的代码优化,重构精简。 python和java的代码优化,完善,添加三菱A-1E类。 修复仪表盘控件,最大值小于0会产生的特殊Bug。 NetSimplifyClient: 提供高级.net的异步版本方法。 serialBase: 新增初始化和结束的保护方法,允许重写实现额外的操作。 softBuffer: 添加一个线程安全的buffer内存读写。 添加西门子ppi协议类,针对s7-200,需要最终测试。 Panasonic: 修复松下plc的读取读取数据异常。 修复fx协议批量读取bool时意外的Bug。 NetSimplifyClient: 新增带用户int数据返回的读取接口。 新增一个温度采集模块的类,基于modbus-rtu实现,阿尔泰科技发展有限公司的DAM3601模块。 三菱的mc协议新增支持读取ZR文件寄存器功能。 修复AB PLC的bool和byte写入失败的bug,感谢 北京-XLang 提供的思路。 新增西门子PPI通讯类库,支持200,200smart等串口通信,感谢 合肥-加劲 和 江阴- ∮溪风-⊙_⌒ 的测试 新增三菱计算机链接协议通讯库,支持485组网,有效距离达50米,感谢珠海-刀客的测试。 串口协议的基类提供了检测当前串口是否处于打开的方法接口。 西门子S7协议新增槽号为3的s7-400的PLC选项,等待测试。 西门子PPI写入bool方法名重载到了Write方法里。 松下写入bool方法名重载到了Write方法里。 修复CRC16验证码在某些特殊情况下的溢出bug。 西门子类添加槽号和机架号属性,只针对400PLC有效,初步测试可读写。 ab plc支持对数组的读写操作,支持数组长度为0-246,超过246即失败。 三菱的编程口协议修复某些特殊情况读取失败,却提示成功的bug。 串口基类提高缓存空间到4096,并在数据交互时捕获COM口的异常。 修复欧姆龙的数据格式错误,修改为CDAB。 新增一个瓶子的控件。 新增一个管道的控件。 初步新增一个redis的类,初步实现了读写关键字。 AB PLC读取数组过长时提示错误信息。 正式发布redis客户端,支持一些常用的操作,并提供一个浏览器。博客:https://www.cnblogs.com/dathlin/p/9998013.html 曲线控件的曲线支持隐藏其中的一条或是多条曲线,可以用来实现手动选择显示曲线的功能。 Redis功能块代码优化,支持通知服务器进行数据快照保存,包括同步异步。 Redis新增订阅客户端类,可以实现订阅一个或是多个频道数据。 串口数据接收的底层机制重新设计。 串口底层循环验证缓冲区是否有数据的间隔可更改,默认20ms。 串口底层新增一个清除缓冲区数据的方法。 串口底层新增一个属性,用于配置是否在每次读写前清除缓冲区的脏数据。 新增了一个SharpList类,用于超高性能的管理固定长度的数组。博客:https://www.cnblogs.com/dathlin/p/10042801.html Networkbase: 接收方法的一个多余对象删除。 修复UserDrum控件的默认的text生成,及复制问题。 UserDrum修复属性在设计界面没有注释的bug。 修复Demo程序在某些特殊情况下无法在线更新的bug。 修复曲线控件隐藏曲线时在某些特殊情况的不隐藏的bug。 modbus协议无论读写都支持富地址格式。 修复连接池清理资源的一个bug,感谢 泉州-邱蕃金 修复java的modbus代码读取线圈异常的操作。 Demo程序新增免责条款。 修复redis客户端对键值进行自增自减指令操作时的类型错误bug。 修复redis客户端对哈希值进行自增自减指令操作时的类型错误bug。 推送的客户端可选委托或是事件的方式,方便labview调用。 推送的客户端修复当服务器的关键字不存在时连接未关闭的Bug。 Demo程序里,欧姆龙测试界面新增数据格式功能。 ByteTransfer数据转换类新增了一个重载的构造方法。 Redis客户提供了一个写键值并发布订阅的方法。 AB-PLC支持槽号选择,默认为0。 PushNet推送服务器新增一个配置,可用于设置是否在客户端刚上线的时候推送缓存数据。 PushNet推送服务器对客户端的上下限管理的小bug修复。 本版本开始,组件将使用强签名。 本版本开始,组件的控件库将不再维护更新,所有的控件在新的控件库重新实现和功能增强,VIP群将免费使用控件库。 VIP群的进入资格调整为赞助200Rmb,谢谢支持。 修复modbus服务器地址写入的bug,之前写入地址数据后无效,必须带x=3;100才可以。 修复极少数情况内核对象申请失败的bug,之前会引发资源耗尽的bug。 SoftBasic的ByteToBoolArray新增一个转换所有位的重载方法,不需要再传递位数。 埃夫特机器人新增旧版的访问类对象,达到兼容的目的。 Demo程序新增作者简介。 修复Demo程序的redis订阅界面在设置密码下无效的bug。 Demo程序的免责界面新增demo在全球的使用情况。 VIP群将免费使用全新的控件库,谢谢支持。地址:https://github.com/dathlin/HslControlsDemo 修复modbus服务器地址读取的bug,之前读取地址数据后无效,必须带x=3;100才可以。 NetPush功能里,当客户端订阅关键字时,服务器即使没有该关键字,也成功。 三菱的通讯类支持所有的字读取。例如读取M100的short数据表示M100-M115。 VIP群将免费使用全新的控件库,谢谢支持。地址:https://github.com/dathlin/HslControlsDemo 修复三菱A-1E协议的读取数据的BUG错误,给大家造成的不便,非常抱歉。 VIP群将免费使用全新的控件库,谢谢支持。地址:https://github.com/dathlin/HslControlsDemo 欧姆龙读写机制更改,报警的异常不再视为失败,仍然可以解析数据。 Modbus地址优化,Modbus服务器的地址读写优化。 新增一个数据池类,SoftBuffer,主要用来缓存字节数组内存的,支持BCL数据类型读写。 Modbus服务器的数据池更新,使用了最新的数据池类SoftBuffer。 SoftBasic类新增一个GetEnumFromString方法,支持从字符串直接生成枚举值,已通过单元测试。 新增一个机器人的读取接口信息IRobotNet,统一化所有的机器人的数据读取。 Demo程序中增加modbus的服务器功能。 VIP群将免费使用全新的控件库,谢谢支持。地址:https://github.com/dathlin/HslControlsDemo 日志存储的线程号格式化改为D3,也即三位有效数字。 日志存储事件BeforeSaveToFile里允许设置日志Cancel属性,强制当前的记录不存储。 JSON库更新到12.0.1版本。 SoftBasic新增一个GetTimeSpanDescription方法,用来将时间差转换成文本的方法。 调整日志分析控件不随字体变化而变化。 其他的代码精简优化。 VIP群将免费使用全新的控件库,谢谢支持。地址:https://github.com/dathlin/HslControlsDemo SoftBasic修复AddArrayData方法批量添加数据异常的bug,导致曲线控件显示异常。 提炼一个公共的欧姆龙辅助类,准备为串口协议做基础的通用支持。 RedisHelper类代码优化精简,提炼部分的公共逻辑到NetSupport。 SoftBuffer: 新增读写单个的位操作,通过位的与或非来实现。 SiemensS7Server:新增一个s7协议的服务器,可以模拟PLC,进行通讯测试或是虚拟开发。 其他的代码精简优化。 VIP群将免费使用全新的控件库,谢谢支持。地址:https://github.com/dathlin/HslControlsDemo 西门子虚拟PLC的ToString()方法重新实现。 埃夫特机器人的json格式化修正换行符。 IReadWriteNet接口添加Write(address, bytes)的方法。 Modbus虚拟服务器修复写入位操作时影响后面3个位的bug。 SoftBuffer内存数据池类的SetValue(byte,index)的bug修复。 西门子虚拟PLC和Modbus服务器新增客户端管理,关闭时也即断开所有连接。 三菱编程口协议的读取结果添加错误说明,显示原始返回信号,便于分析。 三菱MC协议新增远程启动,停止,读取PLC型号的接口。 新增三菱MC协议的串口的A-3C协议支持,允许读写三菱PLC的数据。 新增欧姆龙HostLink协议支持,允许读写PLC数据。 新增基恩士PLC的MC协议支持,包括二进制和ASCII格式,支持读写PLC的数据。 所有PLC的地址说明重新规划,统一在API文档中查询。 注意:三菱PLC的地址升级,有一些地址格式进行了更改,比如定时器和计数器,谨慎更新,详细地址参考最新文档。 如果有公司使用了本库并愿意公开logo的,将在官网及git上进行统一显示,有意愿的联系作者。 VIP群将免费使用全新的控件库,谢谢支持。地址:https://github.com/dathlin/HslControlsDemo 修复代码注释上的一些bug,三菱的注释修复。 调整三菱和基恩士D区数据和W区数据的地址范围,原来只支持到65535。 SoftIncrementCount: 修复不持久化的序号自增类的数据复原的bug,并添加totring方法。 IRobot接口更改。针对埃夫特机器人进行重新实现。 RedisClient: 修复redis类在带有密码的情况下锁死的bug。 初步添加Kuka机器人的通讯类,等待测试。 西门子的s7协议读写字符串重新实现,根据西门子的底层存储规则来操作。 Demo的绝大多的界面进行重构。更友好的支持英文版的显示风格。 如果有公司使用了本库并愿意公开logo的,将在官网及git上进行统一显示,有意愿的联系作者。 修复西门子s7协议读写200smart字符串的bug。 重构优化NetworkBase及NetwordDoubleBase网络类的代码。 新增欧姆龙的FinsUdp的实现,DA1【PLC节点号】在配置Ip地址的时候自动赋值,不需要额外配置。 FinsTcp类的DA1【PLC节点号】在配置Ip地址的时候自动赋值,不需要额外配置。 NetPushServer推送服务器修复某些情况下的推送卡死的bug。 SoftBuffer内存数据类修复Double转换时出现的错误bug。 修复Kuka机器人读写数据错误的bug,已通过测试。 修复三菱的MelsecMcAsciiNet类写入bool值及数组会导致异常的bug,已通过单元测试。 SoftBasic新增从字符串计算MD5码的方法。 修复java的NetPushClient掉线重复连接的bug。 发布java的全新测试Demo。 Kuka机器人Demo修改帮助链接。 西门子新增s200的以太网模块连接对象。 修复文件引擎在上传文件时意外失败,服务器仍然识别为成功的bug。 修复日志存储自身异常时,时间没有初始化的bug。 NetworkBase: 新增UseSynchronousNet属性,默认为true,通过同步的网络进行读写数据,异步手动设置为false。 修复西门子的读写字符串的bug。 添加KeyenceNanoSerial以支持基恩士Nano系列串口通信。 其他的代码优化。 发布一个基于xamarin的安卓测试demo。 发布官方论坛: http://bbs.hslcommunication.cn/ 修复基恩士MC协议读取D区数据索引不能大于100000的bug。 修复基恩士串口协议读写bool数据的异常bug。 修复数据推送服务器在客户端异常断开时的奔溃bug,界面卡死bug。 SoftNumericalOrder类新增数据重置和,最大数限制 。 ModbusTcp客户端公开属性SoftIncrementCount,可以强制消息号不变,或是最大值。 NetworkBase: 异步的方法针对Net451及standard版本重写。 modbus服务器的方法ReadFromModbusCore( byte[] modbusCore )设置为虚方法,可以继承重写,实现自定义返回。 串口基类serialbase的初始化方法新增多个重载方法,方便VB和labview调用。 NetworkBase: 默认的机制任然使用异步实现,UseSynchronousNet=false。 发布官方论坛: http://bbs.hslcommunication.cn/ 紧急修复在NET451和Core里的异步读取的bug。 紧急修复PushNetServer的发送回调bug。 发布官方论坛: http://bbs.hslcommunication.cn/ SoftBuffer缓存类支持bool数据的读写,bool数组的读写,并修复double读写的bug。 Modbus虚拟服务器代码重构实现,继承自NetworkDataServerBase类。 新增韩国品牌LS的Fast Enet协议 新增韩国品牌LS的Cnet协议 新增三菱mc协议的虚拟服务器,仅支持二进制格式的机制。 LogNet支持写入任意的字符串格式。 其他的注释添加及代码优化。 发布官方论坛: http://bbs.hslcommunication.cn/ 修复三菱读写PLC位时的bug。 修复Modbus读写线圈及离散的变量bug。 强烈建议更新,不能使用6.2.0版本!或是回退更低的版本。 有问题先上论坛: http://bbs.hslcommunication.cn/ 修复上个版本modbus的致命bug,已通过单元测试。 新增松下的mc协议,demo已经新增,等待测试。 github源代码里的支持的型号需要大家一起完善。 Ls的Fast Enet协议问题修复,感谢来自埃及朋友。 Ls的CEnet协议问题修复,感谢来自埃及朋友。 Ls新增虚拟的PLC服务器,感谢来自埃及朋友。 改进了机器码获取的方法,获取实际的硬盘串号。 日志的等级为None的情况,不再格式化字符串,原生写入日志。 IReadWriteNet接口测试西门子的写入,没有问题。 三菱及松下,基恩士的地址都调整为最大20亿长度,实际取决于PLC本身。 松下MC协议修复LD数据库的读写bug。 Redis的DEMO界面新增删除key功能。 Redis新增读取服务器的时间接口,可用于客户端的时间同步。 西门子的SiemensS7Net类当读取PLC配置长度的DB块数据时,将提示错误信息。 新增安川机器人通信类,未测试。 西门子的多地址读取的长度不再限制为19个,而是无限制个。 NetworkDoubleBase: 实现IDispose接口,方便手动释放资源。 SerialBase: 实现IDispose接口,方便手动释放资源。 NetSimplifyClient:新增一个async...await方法。 NetSimplifyClient:新增读取字符串数组。 ModbusServer:新增支持账户密码登录,用于构建安全的服务器,仅支持hsl组件的modbus安全访问。 NetSimplifyServer:新增支持账户密码登录。 新增永宏PLC的编程口协议。 新增富士PLC的串口通信,未测试。 新增欧姆龙PLC的CIP协议通讯。 初步添加OpenProtocol协议,还未完成,为测试。 MelsecMcNet:字单位的批量读取长度突破960长度的限制,支持读取任意长度。 MelsecMcAsciiNet:字单位的批量读取长度突破480长度的限制,支持读取任意长度。 AllenBradleyNet:读取地址优化,支持读取数组任意起始位置,任意长度,支持结构体嵌套读取。 其他大量的代码细节优化。 IReadWriteNet完善几个忘记添加的Write不同类型参数的重载方法。 IReadWriteNet新增ReadBool方法,Write(string address, bool value)方法,是否支持操作需要看plc是否支持,不支持返回操作不支持的错误。 OmronFinsNet:新增一个属性,IsChangeSA1AfterReadFailed,当设置为True时,通信失败后,就会自动修改SA1的值,这样就能快速链接上PLC了。 OmronFinsNet:新增读写E区的能力,地址示例E0.0,EF.100,E12.200。 新增HslDeviceAddress特性类,现在支持直接基于对象的读写操作,提供了一种更加便捷的读写数据的机制,详细的关注后续的论坛。 本组件的最后一个对个人免费的版本,企业使用一律需要授权,授权流程为签合同,付款,开票。 SimpleHybirdLock: 简单混合锁的性能优化,基元对象采用懒加载的机制实现,同时增加了高级混合锁的类,支持自旋,线程拥有权,在高竞争的情况下性能大幅增加。 NetSoftUpdateServer: 软件自动更新的服务器端支持传送指定目录下的文件及其子文件夹下的所有文件内容,都将更新到客户端的电脑上去。 AllenBradleyNet: 修复字符串的读写bug,支持读写任意长度的字符串信息。 MelsecFxSerial: 三菱编程口协议支持读写D1024以上地址的数据,感谢 厦门-Mr.T 的贡献。 PIDHelper: 新增一个Pid的辅助类,用于模拟pid的波形情况。 NetPushClient: 修改一个时间的注释,追加单位信息,时间的单位是毫秒。 XGBFastEnet: 感谢埃及的朋友,修复了一些bug信息。 MelsecFxSerialOverTcp: 新增基于网口透传的三菱的编程口通讯类。 MelsecFxLinksOverTcp: 新增基于网口透传的三菱的计算机链接协议的通讯类。 MelsecA3CNet1OverTcp: 新增基于网口透传的三菱的A-3C的协议的通讯类。 OmronHostLinkOverTcp: 新增基于网口透传的欧姆龙的hostLink协议的通讯类。 PanasonicMewtocolOverTcp: 新增基于网口透传的松下的Mewtocol协议的通讯类。 SiemensPPIOverTcp: 新增基于网口透传的西门子PPi协议的通讯类。 XGBCnetOverTcp: 新增基于网口透传的Lsis的XGBCnet协议的通讯类。 KeyenceNanoSerialOverTcp: 新增基于网口透传的基恩士的NanoSerial串口协议的通讯类。 FujiSPBOverTcp: 新增基于网口透传的富士的SPB串口协议的通讯类。 FatekProgramOverTcp: 新增基于网口透传的永宏plc的串口协议的通讯类。 ModbusRtuOverTcp: 新增基于网口透传的Modbus rtu协议的通讯类。 Modbus相关的功能类进行代码精简,重构,优化,api标准化为ReadBool,WriteBool,Read,Write,移除了一些特殊的方法api,本次升级不兼容。 FFTFilter: 新增一个基于FFT(快速离散傅立叶变换)的滤波功能,可以作为一个高级的曲线拟合方案,详细参照demo,感谢 北京-monk 网友的支持。 KnxUdp: 新增一个KnxUdp的数据通讯类,感谢上海-null的支持。 ABBWebApiClient: 新增ABB机器人的基于web api的访问机制的通讯类。 SickIcrTcpServer: 新增一个sick的条码读取类,支持被动连接,主动连接,经过测试,同时支持海康,基恩士,DATELOGIC扫码器。 Demo: Demo工具新增了一个基于tcp的服务器的测试界面。 本组件从v8.0.0开始进入付费模式,谨慎升级,未激活的将只能使用8小时,普通vip群发放激活码,仅支持个人用途使用,禁止破解,感谢对正版的支持。 今天是2019年9月10日,祝天下所有的教师节日快乐。 所有网口透传类对象完善实例化的方法,都新增一个指定ip及端口的实例方法。 ABBWebClient: 完善实例化方法,修改ToString的格式化内容,提炼了webapi的基类,开放ip地址和端口。 ABBWebClient: 新增提供了机器人自身IO,扩展IO,最新的报警日志的数据读取API。 NetSimplifyClient: 修复了当ReceiveTimeOut小于0,但是实际接收时会发生奔溃的bug。 NetPlainSocket: 新增一个基于socket的明文的网络发送和接收类,采用事件驱动的机制。 LogNet: 日志类对象新增一个特性,当日志的文件名设置为空的时候,将不会创建文件,仅仅触发 BeforSaveToFile 事件,方便日志显示。 XGBCnet: Lsis的plc的串口类修复一个bug,感谢埃及朋友的贡献。 SoftIncrementCount: 消息号自增类新增一个方法,重置当前的消息号。 PanasonicMewtocol: 修复松下的串口类读写单个bool时异常的bug,地址支持字+位的表示方式,R33=R2.1,方便大家输入测试。 MqttClient: 新增一个Mqtt协议的客户端类,支持用户名密码,支持发布,支持订阅,支持重连,欢迎一起测试。 本组件从v8.0.0开始进入付费授权模式,详细参考官方:http://www.hslcommunication.cn 。 ABBWebClient: abb机器人的api读取日志的接口新增一个参数,读取最近的日志数量。默认为10条。 MQTTClient: 修复mqtt客户端类的消息重复bug,修复发送空订阅的bug。 SiemensS7Net: 西门子的s7协议的类新增一个api,支持时间的读写,支持异步,时间格式和s7net一致。 本组件从v8.0.0开始进入付费授权模式,详细参考官方:http://www.hslcommunication.cn 。 Networkbase: 修复套接字网络授权失败时不关闭网络的bug。 SoftBasic: 新增一个数组数据格式化的方法信息。 MqttServer: 新增一个mqtt的服务器,初步支持订阅,发布订阅,强制发布订阅,在线客户端数量功能等等。 Demo: 所有的PLC的demo和modbus协议的demo,支持批量读取各种类型的数组数据。 Nuget: 新增本项目的图标,在nuget上搜索时会显示图标。 本组件从v8.0.0开始进入付费授权模式,详细参考官方:http://www.hslcommunication.cn 。 ModbusUdp: 新增一个Modbus的基于udp的协议类,使用的tcp的报文的机制。 HttpServer: 新增一个http的服务器封装类,方便实现基于webapi的后台功能,集成GET,POST的接口操作。 Serial Ports: standard项目依赖官方串口库,实现所有的设备的串口支持,可应用于跨平台。 standard: 在nuget上提供.net standard2.1版本的库。 本组件从v8.0.0开始进入付费授权模式,详细参考官方:http://www.hslcommunication.cn 。 Lsis: 感谢埃及朋友的支持,修复了一些bug,支持了bool的操作。 Redis: 新增db块属性设置,修复短连接下切换db块无效的bug,因为db块是跟随连接的。 MQTT: 修复客户端和服务器的长度计算bug,支持和其他mqtt组件混合使用。 MQTT Demo: 优化demo功能,支持文本追加或是覆盖选择,文本格式化查看选择。 Http Server: 支持跨域属性选择,编码统一为utf-8,兼容浏览器和postman,demo中增加返回类型示例。 Modbus server及Lsis Server: 针对.net standard版本,开放串口。 本组件从v8.0.0开始进入付费授权模式,详细参考官方:http://www.hslcommunication.cn 。 Lsis: 感谢埃及朋友的支持,demo增加了bool操作。 Knx驱动:增加测试demo,完善驱动,测试通过,有需要的朋友可以查看信息。 IntegrationFileClient: 完善文件的收发类,新增重载的构造方法,传入ip地址及端口即可。 melsec: 三菱的MC协议部分错误代码关联了文本信息,在测试的时候即可弹出错误信息,方便排查,常见了已经绑定。 melsec: 新增3e协议的随机字批量读取操作,支持跨地址,跨数据类型混合交叉读取,一次即可读完。 fileserver: 修复linux下的bug,新增上传文件后的触发事件,将文件的信息都传递给调用者。 SiemensMpi: 添加MPI协议,并完善demo,等待测试。 本组件从v8.0.0开始进入付费授权模式,详细参考官方:http://www.hslcommunication.cn 。 Lsis: 感谢埃及朋友的支持,demo完善了cpu类型的选择。 LogNet:新增移除关键字的接口方法,修复linux运行路径解析的bug,完善api文档的示例代码。 大量的细节优化,变量名称单次拼写错误的修复。 Modbus: 当地址为x=3;100时,读正常,写入异常的问题修复,功能码自动替换为0x10。 FileNet: 修复高并发下载时的下载异常的问题,调整指令头的超时时间。 AB plc: 公开一个新的api接口,运行配置一些比较高级的数据。 接下来计划:1.完善hsl的demo,api文档,准备基础的入门视频;2.开始完善java版本的代码,java版本只对超级VIP群开放。 本组件从v8.0.0开始进入付费授权模式,详细参考官方:http://www.hslcommunication.cn 。 三菱的MC协议支持读取SM和SD,特殊连接继电器,特殊寄存器。 PushNet优化相关代码。 MelsecMcUdp: 新增三菱的MC协议的UDP通讯类。 MelsecMcAsciiUdp: 新增三菱的MC协议的ASCII格式的UDP通讯类。 MelsecMcServer: 三菱的虚拟服务器修复数据存储加载的bug。 Serial: 串口的基类公开了一个Rts属性,用于某些串口无法读取的设备的情况。 OmronFinsServer: 新增欧姆龙的虚拟plc,支持和hsl自身的通讯,支持cio,h区,ar区,d区的通信,不支持E区。 AllenBradleyServer: 新增ab plc的虚拟plc,支持和hsl的自身的通讯,在demo里预设了4个变量值。不支持结构体和二维及以上数组读写。 Aline: 异形的服务器对象新增一个设置属性,是否反馈注册结果,默认为True。 SoftBasic: 数组格式化操作新增格式化的字符串说明。 Modbus: 调整Write( string address, bool value )采用05功能码写入,而参数为bool[]的话,采用0F功能码。 Modbus: 提供WriteOneRegister方法,写入单个的寄存器,使用06功能码。 LogNet: 日志在实例化的时候,添加对当前设置的目录的是否存在的检查,如果不存在,则自动创建目录。 Python: 大量代码更新,新增了一个欧姆龙的fins-tcp通信。 Java: 大量代码更新,新增了一个AB plc的读写类。 Cip协议:cip协议开放Eip指令自定义输入,优化指令生成算法。 Cip协议:Write(string address, byte[] data)方法提示使用WriteTag信息。 NetworkDoubleBase: 修复bool异步读写提示不支持的bug,现在可以使用异步了。 SAMSerial:新增身份证阅读器的串口协议,支持读取身份证信息,头像信息还未解密。 SAMTcpNet:新增身份证阅读器的串口透传协议,支持读取身份证信息,头像信息还未解密。 BeckhoffAdsNet:新增倍福plc的协议,还未通过测试。 lsis的plc优化,感谢埃及朋友的提供的技术支持。 Panasonic: 松下的Mewtocol协议增加SR区的支持,解析地址的方法修改为Public,方便外面调用。 Panasonic: 松下的Mewtocol协议批量读取bool方法是按字为单位,读取长度按照位为单位,地址写Y0,Y1,不能写Y0.4。 ab-plc: 虚拟服务器修复上个版本造成的bug,导致读写数据成功,但是数据实际没有更改。 ab-plc: 支持超长的数组读取,可以一次性读取任意长度的数组内容,不再需要手动切片。 ab-plc: 新增一个api接口,可以遍历所有的ab-plc的变量名称。 beckoff: 倍福的plc通信通过测试,需要设置正确各种网络号才可以,优化了标签缓存。 java: java版本的ab-plc类优化,支持超长的数组读取。 python: python版本的代码新增ab-plc的读取类。 demo: 安卓的demo增加lsis,mqtt协议的界面。 Melsec: 三菱PLC的多块批量读取目前只支持字地址,后续继续优化。 其他的代码优化和重构。 java版本的源代码及demo,python版本的源代码及demo仅对商业授权用户开放,谢谢支持。 作者于2020年1月5日和王女士结婚,地址是浙江省金华市兰溪市马涧镇,欢迎有空的老铁们来坐坐,带红包就行。 宣布V9版本脱胎换骨,浴火重生,C#版本的组件库底层网络大幅重构,删除一直以来的伪异步,原先的通过改为纯同步,并从底层提供完整的异步方法。 注意:不兼容升级,影响范围,MQTT协议的事件,网络的同步设置,西门子的PPI协议取消WriteByte方法,改为和其他一样的Write(string address,byte value)重载了,升级请谨慎测试。 所有的PLC通讯类,机器人类通讯类,Modbus通讯类,身份证类,包括 IReadWriteNet 接口都实现了异步的操作,针对NET45以上及Standard平台。 MQTT协议修改触发的消息事件,返回session信息,支持自定义返回数据信息,支持当前消息的发布拦截操作,服务器主送发布的消息支持是否驻留,默认主题驻留。 新增websocket协议的服务器,客户端,问答客户端。支持直接从C#的后台发送数据到网页前端,支持订阅操作。详细见demo的操作。 ComplexNet,SimplifyNet,PushNet,FileNet这几个网络引擎代码优化,初步测试OK。 SoftBasic: 新增方法SpliceStringArray,用来合并字符串信息。增加了ByteToHexString的空校验。 HttpServer: 异步优化,修复读取数据时可能长度不足的bug。 YRC1000: 安川机器人修改无法读取的bug,目前已经测试通过,感谢网友的支持。 Java: 修复ab-plc读取失败的错误信息,原因来自一个强制转换失败的错误。 本版本改动较多,尽管我已经仔细测试过,但是仍然不可避免存在一些bug,欢迎大家使用,测试,有问题可以报告给我,相信hsl组件会变的更加强大。 本版本依然是商业授权的,如果需要测试,可以付费240rmb,加入vip群,可以将hsl用于测试环境和研究学术用途,欢迎大家加我的支付宝好友,hsl200909@163.com 加油,武汉!加油,中国!疫情之后,无人自动化工厂将会获得更大的关注和发展,我辈当自强。 底层的网络在对方关闭连接后,不再等待接收,直接返回对方已关闭的错误信息,提供通信的性能。 四个服务器类,complexserver, simplifyserver,mqttserver,websocketserver开发关闭客户端连接的方法,调用者可以手动操作关闭。 MQTT服务器新增一个客户端上线事件,包含客户端的会话参数,方便实现一些特殊的场景需求,在api文档中增加调用示例。 Websocket服务器新增一个客户端上线事件,包含客户端的会话参数,方便实现一些特殊的场景需求。 Websocket服务器添加0x0A的心跳返回,用于有些客户端的心跳验证操作。 RedisClient: redis相关的代码优化,调整,添加了异步api接口,本机性能测试不如同步,有待优化。 RedisClient: 新增基于特性的读写,自动组合键批量读取,组合哈希键批量读取操作,提升性能,详细参考api文档。写入操作不支持列表相关的特性。 Demo的写入byte操作的反射代码获取失败的bug修复。 修复websocket对某些浏览器的请求验证失败的bug,改为正则表达式验证,适用的范围更加广阔。 三菱的mc协议的错误信息更加明确化,将提供更加确切的错误描述,方便大家查找错误。 websocket客户端新增连接服务器成功的事件,方便实现类似订阅的功能。 Websocket服务器添加心跳检测功能,将会定期(可以自定义)发送心跳包给客户端,在检测客户端是否在线。 文件的服务器和客户端开放文件缓存大小的属性,默认100K,越大的话,性能越高,越占内存。 Modbus协议功能调整,Write(string,short)和Write(string,ushort)功能码调整为06,如果需要0x10功能码,使用Write(string,short[])和Write(string,ushort[]) 新增汇川PLC的通讯类,基于modbus协议,但是实现了地址的自动解析,输入D100即可自动转为modbus的地址,包含AM系列,H3U系列,H5U系列等 在示例文档中,新增大量的代码说明,完善注释,如果有任何的问题,优先参考api文档。 官网新增一个来自上海亦仕智能科技有限公司 MES DEMO: http://111.229.255.209 账号SF 密码 123 修复汇川PLC的地址示例文档写错的bug。 IReadWriteNet标准化字符串读写操作,新增定制编码的字符串读写。netDeviceBase移除之前的writeunicode的方法。这点如果有使用,谨慎更新。 串口基类和UDP基类的数据交互方法新增日志记录,对发送的数据和接收的数据写入debug等级的日志。 数据服务器(主要是三菱虚拟plc,西门子虚拟plc,modbus服务器等)实现IReadWriteNet接口。 关于ab-plc,新增MicroCip协议,适用于Micro800系列读写操作。 关于序号生成器类SoftIncrement,重置最大值的方法名称更新,添加了重置当前值,重置初始值,支持反向序列,跳跃序列的功能,详细参考api文档。 文件的服务器类,新增一些日志记录,关于文件何时被读取,何时读取结束的日志信息,等级为debug。 NuGet组件更新,json组件更新到12.0.3版本,IO.port更新到4.7.0版本。单元测试框架更新。 Demo的redis示例,支持不同的db块选择,当你选择数据后自动切换,键值类数据增加格式化显示。 NetworkBase: 网络基类的连接服务器改为如果连接立即失败(500ms内),将会休眠100ms后,立即再尝试一次,提高连接的成功率。影响范围为所有客户端类。 三菱二进制MC协议:地址里面新增标签访问,缓冲存储器访问,扩展的地址访问的方式,目前开放二进制的mc协议,欢迎测试,顺利的话,完善写入和ascii格式的。 大量的代码注释添加,主流的常用的代码添加中英文注释,后续逐步全都改为中英文,方便国外客户阅读。 240元的普通vip群的激活码时间调整,改为20年,中间软件重启一次,就又是20年,感谢大家的理解和支持。 http://www.hslcommunication.cn/MesDemo 官网的地址以后作为优秀的MES产品展示平台,欢迎大家关注。 MQTT: 服务器增加定时检测客户端在线情况,超过设置的时间不活跃,强制下线,开放OnlineSession属性,获取在线客户端,查看ip,端口,在线时间等信息。 WebSocket: 服务器开放OnlineSession属性,获取在线客户端,查看ip,端口,在线时间等信息。 Language: 组件的语言系统修复设置英文后,无法切换回中文的bug。 SoftBasic: 添加SpliceByteArray(params byte[][] bytes)方法,用来将任意个byte[]进行拼接成一个byte[]。 SoftBasic: 添加BoolOnByteIndex方法,用来获取byte数据的指定位的bool值。 Panasonic: 松下的mc地址和串口地址统一表示方式:R101=R10.1=[10*16+1],R10.F=R10.15(这两种表示方式都可以) 发布基于HSL扩展组件HslCppExtension,将写入的重载方法名按照类型重写一遍,方便C++调用。 VC++的demo示例,新增写入数据的例子,基于扩展组件HslCppExtension实现,详细参照demo源代码。 SoftBasic: 针对byte数组的切割,选择头,尾,中间,移除头,尾的方法全部更改成泛型版本,方法名字已经变更,如果有调用,谨慎更新。 FanucInterfaceNet: 新增读取fanuc机器人的通讯类,支持读写任意地址数据的功能,详细参考api文档,写入操作谨慎测试。 FanucRobotServer: 新增fanuc机器人的虚拟服务器,方便进行测试,初始数据来自真实机器人,支持D,I,Q,AI,AQ,M数据区。 Fanuc: 目前测试通过的型号为R-30iB mate plus,其他型号暂时不清楚支持范围。 代码注释优化,api文档大量的更新,添加一些示例代码,包含如果检测状态,长短连接,使用前请仔细阅读下面的信息:http://api.hslcommunication.cn http://www.hslcommunication.cn/MesDemo 官网的地址以后作为优秀的MES产品展示平台,欢迎大家关注。 三年磨一剑,直插工业互联网的心脏。软件开发之艰辛,如人饮水冷暖自知。感谢所有支持的朋友。 feat(SAM): 身份证阅读器修复在某些状态下接受数据不完整的bug,将校验数据的完整性。 feat(ab-plc): 虚拟服务器的地址支持小数点的形式,支持单个的bool读写,支持string的读写操作,和客户端的体验一致。 feat(softbasic): 方法针对数组切割的方法,增加扩展方法支持,byte[] a; byte[] b= a.RemoveBegin(2);意思就是移除最前面的2个元素。 feat(softbasic): Hex字符串和byte[]的转化也支持扩展方法。byte[] a.ToHexString()。 feat(melsec): 三菱的a-1e协议之前的,x,y地址采用8进制,先修改为自定义,如果要八进制,地址前面加0,例如X017,如果不加就是十六进制,例如X17,默认十六进制,升级需注意。 feat(melsec): 三菱的a-1e协议增加了F报警继电器,B链接继电器,W链接寄存器,定时器和计数器的线圈,触点,当前值的读取,地址参见api文档说明。 feat(melsec): 添加a-1e协议的ASCII版本,地址格式和二进制版本是一致的,支持的地址类型也是一致的,还未仔细测试,欢迎老铁们测试。 feat(melsec): 三菱的mc虚拟服务器支持二进制和ascii,实例化的时候选择,支持和HSL组件自身的通讯。 lsis: cnet和fenet地址的解析bug修复,感谢埃及朋友的支持。 代码注释优化,使用前请仔细阅读下面的信息:http://api.hslcommunication.cn http://www.hslcommunication.cn/MesDemo 官网的地址以后作为优秀的MES产品展示平台,欢迎大家关注。 HSL的目标是打造成工业互联网的利器,工业大数据的基础,打造边缘计算平台。 ModbusAscii: 修复和rtu指令转换时的bug,之前会发生读写失败,目前已经在台达PLC上测试通过。 MelsecA1EAscii:修复三菱的A1E协议的ascii格式类写入单个bool异常的bug。 NetworkUdpServerBase:新增基于UDP协议的服务器基类,后台线程循环接收数据实现。 CipServer: 虚拟的ab-plc服务器新增字符串数组对象的读写操作,demo相关的完善。 HyundaiUdpNet: 新增现代机器人的姿态跟踪网络通讯类, 代码注释优化,使用前请仔细阅读下面的信息:http://api.hslcommunication.cn http://www.hslcommunication.cn/MesDemo 官网的地址以后作为优秀的MES产品展示平台,欢迎大家关注。 HSL的目标是打造成工业互联网的利器,工业大数据的基础,打造边缘计算平台。 HslExtension: 完善一些转化的api,方便数组和字符串转化,完善对象转JSON字符串。 LogNet:消息格式化文本的消息等级追随HSL的语言设定,如果是中文,就显示调试,信息,警告,错误,致命。 Redis: 修复ExpireKey,生存时间参数丢失的bug,完善了说明文档。 OmronCip: 欧姆龙的CIP协议的类库,修复数组读取的bug,修复字符串写入bug,字符串写入还需要测试。 Toledo:新增托利多电子秤的串口类及网口服务器类,方便接收标准的数据流,等待测试。 Java:增加了单元测试的内容,对一些已经完成的类添加单元测试。 Python:实现了python版本的HslCommunication程序,基于pyqt实现,初步添加了一些PLC的调试界面。 代码注释优化,使用前请仔细阅读下面的信息:http://api.hslcommunication.cn http://www.hslcommunication.cn/MesDemo 官网的地址以后作为优秀的MES产品展示平台,欢迎大家关注。 HSL的目标是打造成工业互联网的利器,工业大数据的基础,打造边缘计算平台。 ServerBase: 服务器对象基类完善客户端下线逻辑,精简相关的代码。 LogNet:设备网络通讯类及串口类在数据收发的时候增加日志的记录,可以设置PLC类的LogNet属性抓取相关的报文信息。 ModbusServer: Modbus服务器同时支持TCP,RTU,ASCII,其中RTU和ASCII共用一个串口,根据报文头是否为冒号区分。 ModbusAscii: 修复通讯的bug,已通过单元测试,支持和ModbusServer完美通讯,欢迎网友继续测试。 MelsecMcNet:三菱MC协议的数据地址新增对SB,SW,特殊链接继电器,寄存器的支持。 SiemensServer: 西门子S7虚拟服务器的DB块支持DB1.X,DB2.X,DB3.X,3以上的db块都是使用同一个的DB块。 HttpServer:自定义轻量级的WebApi服务器支持反射对象的方法名,简化定义API时定义大量的if...else...。 UdpNet:添加ConnectionId属性,使用的方法获取信息。 MelsecMcRNet:添加三菱R系列的MC协议二进制的实现,和标准的有一点区别,地址支持也不一样,欢迎测试Demo。 OmronCip:欧姆龙的读写数组已经测试通过,修改了读写字符串的逻辑实现,等待测试。 代码注释优化,使用前请仔细阅读下面的信息:http://api.hslcommunication.cn http://www.hslcommunication.cn/MesDemo 官网的地址以后作为优秀的MES产品展示平台,欢迎大家关注。 HSL的目标是打造成工业互联网的利器,工业大数据的基础,打造边缘计算平台。 HttpServer: 当客户端发起request请求的时候,在日志记录的时候记录当前的请求的方式,GET,POST,OPTION等等。 MQTT: mqtt的消息等级追加一个新的等级,为OnlyTransfer等级,用来表示只发送服务器,不触发发布操作。 MqttServer: 配合Qos等级为OnlyTransfer时,进行相关的适配操作,并触发消息接收的事件。 MqttSyncClient: 新增MQTT的同步访问的客户端,协议头标记为HUSL,向HSL的mqtt服务器进行数据请求并等待反馈。尚未添加心跳程序。 MqttServer: 适配同步客户端实现功能,当客户端为同步客户端的时候,调试心跳验证。 至此,HSL的MQTT协议已经是兼容几大网络功能了,在线客户端管理,消息发布订阅,消息普通收发,同步网络访问。 IByteTransform接口属性新增IsStringReverseByteWord,相当于从ReverseByWord挪过来了,默认为false,如果为true,在解析字符串的时候将两两字节颠倒。 Omron: 欧姆的fins-tcp及fins-udp及hostlink的IByteTransform接口IsStringReverseByteWord调整为true默认颠倒。 SerialBase: 串口基类的打开串口方法调整返回类型OperateResult,在串口数据读取之前增加打开串口的Open方法,串口类也只需要一直读就可以了。 NetworkDoubleBase, SerialDeviceBase, NetworkUdpDeviceBase及相关的继承类,对所有的泛型进行了擦除,一律采用接口实现,之后将统一java,python代码。 FreedomTcp,FreedomUdp,FreeSerial: 添加基于自由协议的tcp,udp,串口协议,可以自由配置IByteTransform接口,可用来读取一些不常见的协议。 Omron-cip: 读写字符串仍然没有测试通过,请暂时不要调用。 SiemensS7: 单次读取之前是按照200字节进行拆分的,现在根据s7协议返回的报文来自动调整,1200系列是220字节,1500系列是920字节,其他等待测试。 官网的备案失效了,重新备案需要点时间,请访问 http://118.24.36.220 然后去顶部的菜单找相应的入口。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 HSL的目标是打造成工业互联网的利器,工业大数据的基础,打造边缘计算平台。 Toledo: 托利多电子秤的字节触发的时候,传递出来携带原始的字节数组,方便自行处理,Demo界面优化,显示信息更加完善。 Lsis: Lsis的PLC通信类修复一些bug,感谢埃及朋友的提供的技术支持。 MqttSyncClient: 新增ReadString方法,以字符串的形式来和服务器交互,默认编码UTF8,当然也可以自己指定编码,本质还是读取字节数据。 WebsocketClient: websocket的客户端类,重新设计异常重连,网络异常时触发 OnNetworkError 事件,用户应该捕获事件,然后在事件里重连服务器,直到成功为止。 MqttClient: Mqtt客户端类,重新设计异常重连,网络异常时触发 OnNetworkError 事件,用户应该捕获事件,然后在事件里重连服务器,直到成功为止。 MqttSyncClient: 支持读取数据的进度回调功能,支持三种进度报告,数据上传到服务器的进度报告,服务器处理进度报告,数据返回到客户端的进度报告。 PanasonicMewtocol: 修复注释错误,L区的数据也可以进行L100F,L2.3访问。 DLT645: 初步添加电力规约协议的串口实现,目前只实现了读取数据,还未测试,等待后续的测试完善。 Omron-cip: 读写字符串仍然没有测试通过,请暂时不要调用。 官网的备案失效了,重新备案需要点时间,请访问 http://118.24.36.220 然后去顶部的菜单找相应的入口。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 HSL的目标是打造成工业互联网的利器,工业大数据的基础,打造边缘计算平台。 MqttClient: 上个版本开放的网络错误事件,如果不进行事件绑定,增加默认实现,每隔10秒去连接服务器,直到成功为止。 WebsocketClient: 上个版本开放的网络错误事件,如果不进行事件绑定,增加默认实现,每隔10秒去连接服务器,直到成功为止。 DLT645: 电力规约协议完善,等待后续的测试完善。 SerialBase: ReadBase提供一个重载的方法,ReadBase( byte[] send, bool sendOnly )支持单向发送,不接收数据返回。 SoftBasic: HexStringToBytes算法优化,性能提升,移除了转大写字母的步骤。 SiemensS7: 开放获取 pdu 数据长度属性,属性名称:PDULength HslExtension: 增加IncreaseBy方法,但是测试发现不适用byte类型。 Omron-cip: 读写字符串仍然没有测试通过,请暂时不要调用。 官网的备案失效了,重新备案需要点时间,请访问 http://118.24.36.220 然后去顶部的菜单找相应的入口。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 HSL的目标是打造成工业互联网的利器,工业大数据的基础,打造边缘计算平台。 IReadWriteNet接口新增一个属性,ConnectionId,用来表示设备的唯一ID。 ModbusTcpServer: Modbus的虚拟服务器支持0x16功能码,支持掩码写入操作,适用Tcp,Rtu,Ascii。 Modbus客户端(tcp+rtu+ascii+rtuovertcp) 新增掩码写入方法,WriteMask,bool写入时,假如Write("100.1", true)就使用掩码写入寄存器100的第1位为真。 RedisClient: redis的客户端新增Ping方法,DBSize方法获取key数量,FlushDB方法清除数据库所有key。 DTUServer: 新增一个DTU服务器,可以用来实现对plc的反向连接操作,根据设备的唯一号来识别。 Omron-cip: 读写字符串不成功的bug修复,已经测试通过。 WebsocketClient: 实例化时新增url的额外参数传递,("127.0.0.1", 1883, "/A/B?C=123456"),也可以使用"ws://127.0.0.1:1883/A/B?C=123456"。 WebsocketClient: 修复未连接服务器的时候,调用关闭方法将会引发发送异常的bug。 MqttServer: 修复NET35版本不支持同步访问的bug,新增一个客户端断开连接的事件,OnClientDisConnected事件。 VibrationSensor: 新增一个震动传感器的类,型号为苏州捷杰震动传感器VB31,支持获取速度,加速度,位移,温度信息。 官网的备案失效了,重新备案需要点时间,请访问 http://118.24.36.220 然后去顶部的菜单找相应的入口。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 HSL的目标是打造成工业互联网的利器,工业大数据的基础,打造边缘计算平台。 Mewtocol: 松下的串口协议修复LD寄存器无法访问的bug,输入LD100,如果只输入L100,就是线圈。 Modbus: 修复写入寄存器指定位bool失败的bug,写入true的掩码改为 FF FE,00 01 Modbus:在ModbusRtuOverTcp里填写掩码写入的api方法。 ab-plc:CIP协议解析标签地址的编码从ASCII编码修改为UTF-8编码,支持中文的标签名访问。 omron-plc:CIP协议解析标签地址的编码从ASCII编码修改为UTF-8编码,支持中文的标签名访问。 Websocket: 连接的请求标头修改为GET ws://127.0.0.1:8800/ HTTP/1.1 就是带IP地址及端口信息 Redis:Redis的客户端添加对集合和有序集合操作的相关API方法,基本支持了所有需要的操作信息,单元测试通过。 Demo: 所有DEMO写入数据操作,新增Hex写入,输入1A 1B等十六进制数据,然后底层调用Write(string, byte[])方法。 Demo:Redis的功能菜单新增一个测试界面,用来同步两个不同的redis的数据,也可以同一个redis不同的db块数据。 官网的备案失效了,重新备案需要点时间,请访问 http://118.24.36.220 然后去顶部的菜单找相应的入口。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 HSL的目标是打造成工业互联网的利器,工业大数据的基础,打造边缘计算平台。 CipServer: Cip的虚拟服务器的数据节点编码修改为UTF8编码,增加了一些可读性比较强的增加节点的api,支持赋值初始化数据。 Demo: Kuka机器人的连接问题,请参考下面地址:http://blog.davidrobot.com/2019/03/hsl_for_kuka.html?tdsourcetag=s_pctim_aiomsg Redis: 增加读取TTL的api方法,方便的获取剩余的生存时间。 HttpServer: 修复Response为空时进行AppendHeader时发生的bug,进行二次校验。 VibrationSensorClient: 修复deme站号设置失效的bug,站号根据接收的数据动态调整,增加检测长时间未接收传感器数据,就选择重连的功能。 官网的备案失效了,重新备案需要点时间,请访问 http://118.24.36.220 然后去顶部的菜单找相应的入口。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 HSL的目标是打造成工业互联网的利器,工业大数据的基础,打造边缘计算平台。 NetworkBase: 同步网络通信的超时检查不再开新的线程检查,使用socket自带的ReceiveTimeout来检查。 NetworkBase: 发送数据时,增加对发送数据的空检查,如果为空,就认为成功。 RedisClient: 新增修改密码的API接口,可以进行对redis的密码重置操作。 MqttServer: 当同步客户端 MqttSyncClient连接上来时,不进行触发上下线事件。 MqttServer:原先支持获取所有的在线客户端,现在新增获取异步客户端列表,获取同步客户端列表。 MqttSubscribeMessage: 类型拼写错误修复,如果使用这个类,请谨慎升级。 Keyence: 基恩士的MC协议,支持CC,TC的数据类型读取。 FanucSeries0i: 新增一个fanuc机床的数据通讯类,支持读取一些简单的数据,目前在Series0i-F上测试通过。 Cip: 修复ab-plc的标签地址解析为UTF-8编码,但是长度确实字符串的bug,现在支持中文编码。 其他的注释优化 官网的备案失效了,重新备案需要点时间,请访问 http://118.24.36.220 然后去顶部的菜单找相应的入口。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 HSL的目标是打造成工业互联网的利器,工业大数据的基础,打造边缘计算平台。企业终身授权费:8000元(不含税)。 MqttServer: 修复MQTT服务器开启时,当用其他的mqtt客户端订阅时,会发生异常的bug,原因在于订阅质量没有回传。 WebsocketServer: websocket的服务器端新增一个客户端下线的事件,无论是正常关闭还是异常关闭,都会触发事件。 MqttClient: Mqtt的客户端新增一个连接成功的事件OnClientConnected,重连成功后也会触发。在该事件的订阅topic会在网络恢复后重新订阅。 NetworkDoubleBase: 当校验指令头失败的时候,返回的错误信息里追加,收发的报文,方便查找问题。 MelsecA1EAsciiNet: 修复读取bool时,长度为奇数时,会出现交替失败的bug,原因出自数据粘包。 WebsocketClient: 添加一个IsClosed属性,修复服务器强制断线导致客户端无限重连的bug。 OmronConnectedCipNet: 添加一个基于连接的CIP的读写类,等待测试。 其他的注释优化 官网的备案失效了,重新备案需要点时间,请访问 http://118.24.36.220 然后去顶部的菜单找相应的入口。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 HSL的目标是打造成工业互联网的利器,工业大数据的基础,打造边缘计算平台。 KeyenceNanoSerial: 基恩士的串口协议重新实现,实现IReadWrite接口,增加了单元测试。支持的地址需要查阅API文档信息。 OmronHostLinkCMode: 支持了欧姆龙的HOSTLINK协议的Cmode模式的实现,初步单元测试通过,等待测试。 MC协议:三菱MC协议的ZR区的地址进制从16进制改为10进制。 NetworkDoubleBase: 添加一个PING的方法IpAddressPing( ), 对设备当前的IP地址进行PING操作。 NetworkUdpBase: 添加一个PING的方法IpAddressPing( ), 对设备当前的IP地址进行PING操作。 yamaha: 添加一个雅马哈机器人协议的实现,初步实现了几个api,等待测试,测试通过继续完善。 DEMO: 主界面增加一个全国使用情况的分布图,统计DEMO的使用次数实现。 官网的备案失效了,重新备案需要点时间,请访问 http://118.24.36.220 然后去顶部的菜单找相应的入口。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 HSL的目标是打造成工业互联网的利器,工业大数据的基础,打造边缘计算平台。 Networkbase:核心网络底层的错误码调整,当读写操作因为网络问题失败时,返回错误码为负数-1,如果连续读写失败,就一直递减。 OmronConnectedCipNet: 地址解析修改为全部上29 00 报文。 FileNet: 两种文件服务器支持删除多个文件和删除文件夹的所有文件功能,客户端同步适配,初步测试通过。 NetSimplifyClient: 新增一个构造方法,可以传入IPAddress类型的ip地址。 MqttSyncClient: 新增一个构造方法,可以传入IPAddress类型的ip地址。 MqttClient: 修复一个连接反馈信号,解析判断服务器状态错误的bug,该bug导致MqttClient连接不是中国移动的OneNet物联网框架。 FFT: 傅立叶变换FFTValue方法添加一个可选参数,是否二次开放,波形中的毛刺频段会更加明显。 HttpServer: webapi的服务器完善注释,添加一个端口号的属性,获取当前配置端口号信息。 Active: 当前库激活失效的时候,返回的错误消息,携带当前的通信对象的实例化个数,方便查找授权失败的原因。 Abb机器人:abb机器人支持读取程序执行状态,任务列表功能,伺服状态,机器人位置数据。 ABB虚拟机器人:新增一个abb机器人的虚拟webapi的服务器,可以用来测试和ABB客户端的通信。 Demo: 数据转换的界面,新增一个显示指定的文件的二进制的内容的功能。当demo激活成功时,不显示时间及授权信息。 新增一篇全新的博文,介绍基于HSL的大一统网络架构实现,满足发布订阅,一对多通信,webapi等:https://www.cnblogs.com/dathlin/p/13416030.html。 官网备案成功了,地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 HSL的目标是打造成工业互联网的利器,工业大数据的基础,打造边缘计算平台。 Beckhoff: 倍福PLC新增读取设备信息和设备状态的api接口。在demo界面添加测试按钮,状态码检查优化,错误时返回报文信息。 FanucSeries0i: 修复fanuc机床的读取宏变量解析double数据时,为0的时候解析异常的bug。 ABBWebApiServer:ABB机器人的虚拟服务器支持用户名和密码设置,在客户端请求数据的时间,支持账户验证。 Demoserver: 优化根据IP地址获取物理地址的方法,获取不到或是奇怪字符将切换线路重新获取。 KukaTcpNet: 新增KukaTcp通讯类,支持多变量写入的api,在demo界面增加启动,复位,停止程序的操作。 .Net Framwork 2.0 支持2.0的框架的dll发布,通过nuget安装即可。 SimpleHybirdLock: 简单混合锁添加一个当前进入锁的次数的静态属性,可以查看当前共有多少锁,等待多少锁。 NetworkDeviceBase: 核心交互方便增加错误捕获,异常释放锁,再throw, YamahaRCX类完善异步方法 NetworkBase: 增加一个线程检查超时的次数统计功能。 InovanceH3U: 修复汇川的3U的PLC地址类型为SM,SD时解析异常的bug。 Demo: HslCommunication Test Demo支持PLC及一些连接对象的参数保存功能,使用英文冒号可以分类管理。 WebSocketSession: 新增url属性,如果客户端请求包含url信息,例如:ws://127.0.0.1:1883/A/B?C=123, 那么url就是这个值。 Demo: 测试的DEMO程序,支持连接参数存储,不用再每次打开程序重新输入IP地址,端口,站号等等信息,可以存储起来,还支持分类存储。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 HSL的目标是打造成工业互联网的利器,工业大数据的基础,打造边缘计算平台。 KeyenceNanoSerial: 修复读写R寄存器时,提示地址格式异常的BUG,已经测试通过。 MelsecMcUdpServer: 新增三菱MC协议的UDP虚拟PLC,支持数据读写,支持二进制和ASCII格式。 OmronFinsUdpServer: 新增欧姆龙Fins协议的UDP的虚拟PLC,支持数据读写操作。 MqttServer: 修复MQTT服务器在客户端发送批量订阅的时候,服务器会触发BUG的问题。 ConnectPool<TConnector>类代码注释优化,新增连接次数峰值属性。 RedisSubscribe: 订阅服务器重新设计,订阅实现事件触发,支持手动订阅,取消订阅操作。 RedisClient: 支持了订阅的操作,当订阅的时候,创建订阅的实例化对象,应该在连接参数设置之后再进行订阅。 RedisClientPool:新增Redis连接池类,默认不限制连接数量,使用起来和普通的RedisClient一样,适合一个项目实例化一个对象。 MqttSyncClientPool: 新增MqttSyncClient的连接池版本类,默认不限制连接数量,用起来和普通的MqttSyncClient一样。 LogNetFileSize: 根据文件大小的日志类,实例化时支持设置允许存在的文件上限,如果设置为10,只保留最新的10个日志文件。 LogNetDateTime: 根据日期的日志类,实例化时支持设置允许存在的文件上限,如果设置为按天存储,上限为10,就是保留10天的日志。 AllenBradleySLCNet: 新增AB PLC的数据访问类,适合比较老的AB PLC,测试通过的是1747系列。地址格式为A9:0 AllenBradleyNet: 读写bool值的时候,不带下标访问单bool数据,如果需要访问bool数组,就需要带下标访问,例如:A[0]。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 AllenBradleyNet: ReadBool方法默认读取单bool类型变量,如果要读取int类型的bool数组,采用"i="开头表示,例如"i=A[10]" NetworkDataServerBase: 新增一个属性ActiveTimeSpan,可以设置激活时间间隔,默认24小时,锁优化,其他的继承实现的服务器都进行了设置。 NetworkDeviceBase: Read<T>修改为虚方法,支持继承进行重写,基于特性的类注释完善。 Siemenss7net: ReadString(string address, ushort length)读取字符串时,如果长度为0,就读取西门子格式的字符串。 OperateResult: 扩充泛型方法,Check, Convert, Then,实现了结果链,简化代码。参考:https://www.cnblogs.com/dathlin/p/13863115.html FanucSeries0i: 修复数控机床在读取0i-mf状态时导致长度不够的bug。 IReadWriteNet: 新增wait方法接口,用于等待一些信号到达指定的值,支持扫描频率设置,超时设置。例如 Wait("M100.0", true, 500, 10000)等待这个信号为true为止。 MqttServer: 支持调用ReportOperateResult返回错误信息及错误码给客户端,MqttSyncClient会自动识别报文,然后IsSuccess自动适应,网络不会断开。 MqttSyncClient: 支持设置接收超时时间,默认是60秒,之前是5秒,而且不能更改。 MqttServer: 支持注册远程RPC的API接口,自动解析json参数,自动调用已经注册的接口自动返回是否成功,MqttSyncClient也支持遍历服务器的接口列表。详细:https://www.cnblogs.com/dathlin/p/13864866.html SiemensS7Net: 通信类实现ReadBool("M100", 10); 批量读bool方法,通过读Byte间接实现。 OmronHostLinkCModeOverTcp: 新增欧姆龙的通讯类,Cmode模式的以太网透传实现。 PLC: 所以的PLC实现了HslMqttApi特性支持,从而在MqttServer里可以直接注册,然后对外开放读写接口操作。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 MQTTServer: 服务器端在注册M-RPC远程调用接口服务的时候,如果你的接口实现了参数默认值,那么就提取到示例参数里。 KeyenceSR2000SeriesTcp: 新增基恩士的SR2000系列的扫码器的驱动,目前是TCP版本,支持读码,读取记录,停止复位等,支持自定义的命令。 XGKFastEnet: 新增Lsis的XGK系列的FastEnet实现。 XGKCnet: 新增Lsis的XGK的cnet的实现。 Demo: Demo的TCP调试的服务器端优化,错误获取优化,发送数据失败的问题修复。 NetworkBase: 底层异步的数据接收的超时优化,优化超时线程池实现,更加节省线程调度。 MqttSyncClient: 客户端支持读取MQTT服务器的驻留主题列表,读取该主题的相关的数据信息。详细见demo。 MqttServer: 修改ClientVerification事件,增加会话句柄传递,支持动态修改client id,支持设置当前客户端禁止发布任何数据。 MqttServer上的MRPC的权限控制仅对商业授权用户开放,MqttSyncClientPool连接池以及RedisClientPool连接池仅对商业授权用户开放。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 XGKFastEnet修复了一点小问题,感谢埃及朋友提供的技术支持。 KeyenceSR2000Serial: 新增基恩士的SR2000系列的扫码器的串口版驱动,支持读码,读取记录,停止复位等,支持自定义的命令。 IKeyenceSR2000Series: 新增基恩士的SR2000系列的扫码器接口,优化读码功能,如果读码失败,则发送LOFF命令。 LogStatistics: 新增统计次数的辅助类,可以实现关于时间的一些统计信息,比如统计每小时,每天,每周,每月等的登录量,使用量信息。 LogValueLimit: 新增数据极值类,用于统计一个数的开始值,结束值,最大值,最小值,平均值,然后可以按小时,天,周,月等统计。 OmronHostLink: 修复解析错误码时,如果错误码不为数字的时候会导致奔溃的bug,错误提供内容更加详细。 ILogNet: 日志记录的方法实现MqttApi特性,可以在MQTTServe里面注册为RPC服务,从而实现远程调用日志写入的方法。 ILogNet: 日志类方法新增属性LogStatistics,只要实例化就可以统计当前的日志记录情况,可以每分钟,每小时,每天,每周,每月,每季度,每年。 MqttClient: 新增一个订阅的api接口,支持直接传递MqttSubscribeMessage对象,可以指定消息质量。 XinJEXCSerial: 新增信捷的XC系列的串口通讯类,底层是modbus-rtu,地址做了封装,按照信捷的地址输入即可,比如X1,Y7,M1000,D100,F100,E100。 MelsecFxSerial: 三菱编程口类新增 IsNewVersion 属性,如果为false,就是老版本的协议,修复T,C线圈读写的地址不对BUG。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 ModbusRtuOverTcp: 更改继承,直接从NetworkDeviceBase进行继承,通过单元测试 YokogawaLinkTcp: 新增横河PLC的二进制通讯类,支持X,Y,I,E,M,T,C,L,D,B,F,R,V,Z,W,TN,CN读写,部分高级API商业授权用户才能使用,例如读取PLC信息。 YokogawaLinkServer: 新增横河PLC的二进制格式的虚拟PLC,模拟的真实的PLC的通信机制,实现了读写长度的限制,以及错误信号的返回。 Networkdoublebase: ReadFromCoreServer( byte[] send, bool hasResponseData ) 新增是否等待数据返回的属性,可以用于某些不需要数据返回的命令。 Networkbase: 修复异步接收数据时,某些情况下长度为0导致连接关闭的bug。 FetchWriteServer: 新增西门子fetch/Write协议的虚拟PLC,支持虚拟数据的读写,通信。 MelsecFxSerialOverTcp: 修改继承体系,从NetworkDeviceBase继承,和MelsecFxSerial的IsStringReverseByteWord调整为true; 文件引擎服务器修复路径大小写导致的bug问题,文件客户端支持检查文件是否存在的方法,检查文件是否存在。 MqttServer: 远程调用的MRPC的参数支持自定义类型,通过JSON转换,将字符串转换为实体类。还有其他的优化。 DeltaDvpSerial, DeltaDvpSerialAscii, DeltaDvpTcpNet: 添加台达的通信类,输入台达的地址即可,会自动转换实际的modbus地址。 所有的虚拟PLC的服务器均调整为商业授权用户专享,还有一些高级的API,具体看api注释是否带有[商业授权]字样,基本的数据读写功能将一直对个人用户开放。 Demo: 数据读写示例的界面,写入现在支持批量写入,数据写[1,2,3],然后写入short,就是写入short数组了。 普通VIP的个人使用不再限制100个PLC对象,连续运行时间调整为10年,高级的一些API限制商用,参考注释是否带[商业授权]字样。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 YokogawaLink: 异步的方法添加和完善,虚拟PLC侧支持Special:100开头的地址,表示特殊模块寄存器,从而支持各种类型的读写。 LogStatistics, LogValueLimit: 两个数据日志分析类支持获取指定时间段的数据,数据存储文件格式重新设计,为不兼容更新。 LogStatisticsDict, LogValueLimitDict: 新增数据日志分析的词典类,用来统计多个数据的不同时间段的使用情况。 所有的基于tcp的plc,机器人,redis, mqtt, websocket等通讯类的ip地址支持直接输入域名,会自动调用Dns.GetIpAddress来解析。 MqttRpcApi: MRpc的API特性支持应用在属性上,不需要传递参数,直接获取属性的值,在demo上显示的小图标不一样。PLC的通讯类的基本属性在MRPC公开。 MelsecFxLinks: 支持读取PLC的型号,读写数据的地址支持了站号指定,地址可以写成[s=2;D100],方便多站号读取。 AllenBradleyNet: 地址支持slot参数,例如:slot=2;AAA ,也可以不携带,这个是可选的。 FatekProgram, FujiSPB, XGBCnet, MelsecA3CNet1, OmronHostLink, OmronHostLinkCMode, PanasonicMewtocol, SiemensPPI,信捷,汇川类及其透传类支持地址携带站号,例如 s=2;D100 FujiSPBServer: 新增富士PLC的虚拟服务器,支持串口和网口,原先的富士PLC存在bug,不能读取,欢迎网友对富士PLC测试。 HttpServer: 删除原先的HttpGet和HttpPost特性,改用MRPC的特性,支持注册webapi服务,使用方式和MRPC类似,demo增加httpsclient可浏览接口,https://www.cnblogs.com/dathlin/p/14170802.html HttpServer, MqttServer: 服务器端支持接口调用的次数统计,支持客户端查询接口调用情况,demo客户端实现mqttclient,方便服务器管理在线客户端信息。 其他优化改进,如果有网友发现bug,配合作者测试并修复bug,将根据实际情况给与现金红包奖励。 普通VIP的个人使用不再限制100个PLC对象,连续运行时间调整为10年,高级的一些API限制商用,参考注释是否带[商业授权]字样。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 Lsis XGK: 修复部分的问题,感谢埃及朋友提供的支持。 FujiSPB: 修复未在net20, net35, net standard项目里添加的bug。 MqttServer和HttpServer: 注册API的方法支持对静态方法的注册,注册时传入类型对象即可。 Modbus: tcp, rtu, ascii, rtu over tcp在读写int,uint,float,double,long,ulong时支持动态指定dataformat,地址示例:format=BADC;100 MqttServer: 扩展MQTT的子协议FILE,支持文件的上传,下载,删除,查看信息,权限控制操作,支持获取上传下载网速监控。 MqttSyncClient: 扩展文件的方法接口,支持上传,下载,删除,遍历文件操作,每个操作都是短连接的,使用的全新的socket对象。 SiemensS7Net: 修复西门子s7协议某些情况数据批量写入失败的bug,原因来自PDU长度信息不对。 DLT645: 修复一些问题,已经测试通过,新增 DLT645OverTcp,感谢 QQ:542023033 提供的技术支持。 FanucInterface: 机器人的解析数据时,当shift_jis编码不存在时,将会引发异常,现在自动替换UTF8 HslCommunication: 所有的异步通信代码优化,优化超时检测机制,现在大大提升了服务器的高并发的能力,异步通信的性能。 AllenBradleyNet及OmronCipNet协议支持 UINT, UDINT, ULING类型的写入,对应的C#的类型是 ushort, uint, ulong 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 OmronConnectedCipNet: 新增欧姆龙的基于连接的CIP实现,测试读写欧姆龙PLC成功,支持数组读写,详细参考API文档,欧姆龙的CIP请使用本类。 AllenBradleyNet: 修复当自动重连时,连接的ID 还是上次的 ID 导致读写失败的bug。 DLT645: 点对点模式下,在读取地址域的时候,新增读取成功后即修改当前的地址域信息,也即是在打开串口后,读取地址域即可通信。 DLT645: 修复有些数据格式不一致导致读取数据不正常的bug,已经测试可以读取功率,能耗,电压电流,电表基本信息,还支持自定义的解析格式。 NetworkAlienClient: DTU客户端增加对连接客户端的注册包的数据校验,修复数据意外的情况导致程序奔溃的bug。 Demo: 在 演示程序里,Modbus的DTU的示例界面,修复 ID 设置时,结果设置到 IP 导致异常的bug。另外增加西门子的DTU演示界面。 LSisServer: 修复同一地址,数据读写不对的bug,和 XGKFastEnet 客户端读写测试通过,包括bool类型地址,字地址 GeSRTPNet: 新增 GE-PLC(通用电气) 的SRTP协议实现的客户端,支持I,Q,M,T,SA,SB,SC,S,G 的位和字节读写,支持 AI,AQ,R 的字读写操作。 GeSRTPServer: 新增 GE 的 SRTP 协议的虚拟PLC,支持和 GeSRTPNet 通信测试。支持类型和客户端支持的一致。 MqttServer: 在启动文件服务功能时,增加对分类路径,以及文件名的合法性进行校验,防止注入特殊字符攻击及意外bug。 MqttSession: 新增一个方法,GetTopics() 用于获取当前的会话对象所订阅的主题的副本数据。 PanasonicMewtocol: 修复 Mewtocol及串口转网口类,在批量读取 bool 数组地址解析不准确的bug。 MelsecCipNet: 新增三菱的CIP协议功能,PLC使用了 QJ71EIP71 模块时就需要使用本类来访问。 SickIcrTcpServer: 修复当关闭服务器的时候,现有的连接没有关闭的bug,没有关闭的话,仍然会接收到来自设备发来的条码信息。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 SickIcrTcpServer: 修复手动连接扫码设备的网络在关闭服务器后仍然会自动重连的bug。 SoftBasic: 删除SpliceTwoByteArray及SpliceByteArray方法,改为泛型支持的SpliceArray方法,支持任意类型拼接,添加了扩展方法支持。 Modbus: 支持 0x16 功能码,用于掩码操作,支持对寄存器地址的位操作,需要设备方支持,该功能仅支持商业授权使用。 Modbus: 读取线圈和输入线圈的长度支持任意,内部按照2000长度自动切割,读取寄存器和输入寄存器按照120自动切割,该功能商业授权特权,普通的VIP用户存在长度限制。 MqttSyncClient: 新增ReadRpc<T>(string topic, string payload )方法,专门用来读取注册的RPC接口的,自动json转换类型。 MqttSyncClientPool: 连接池优化,注释优化,添加了一些缺失的方法。该功能商业授权特权。 RedisClientPool: 连接池优化,注释优化。该功能商业授权特权。 LogNet: 日志部分新增一个 ConsoleOutput 属性,如果设置为 true,那么日志就会在控制台进行输出,等级不一样的日志,文字颜色不一样。 LogNet: 日志部分的记录优化调整,取消了一些底层的重复记录的日志内容,针对 MQTT, Websocket, HTTP 及虚拟PLC相关的日志记录根据信息进行优化。 祝大家新年生意滚滚,身体健康,牛年大吉。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 ILogNet: 当ConsoleOutput为true时,修复在空字符串的存储路径时,不进行控制台输出的bug。 SiemensS7Server: 优化握手报文的信息,现在支持sharp7进行数据通信了。 SiemensS7Net: 开放了 ConnectionType 和 LocalTSAP 属性,方便按照自己的需求修改,具体看属性注释。 SiemensS7Net: 西门子的PLC读取支持0x0A和0x06的错误码,当读取DB块不存在时,提示错误消息。 SiemensS7Net: 支持了 WString 类型的读写,使用ReadWString和WriteWString方法,支持中文的读写 SiemensS7Net: 西门子S7协议的地址解析,DB块地址优化,DB1.DBW1 的 DBX,DBB,DBW,DBD都会自动屏蔽。 SiemensS7Net: 在核心的报文交互上,自动忽略只有7字节的TPKT和ISO的报文的情况。 MqttServer, HttpServer:RPC注册的方法,原先只支持一个泛型的结果类 OperateResult<T>, 现在支持任意个泛型的结果类对象。 FanucSeries0i: 所有的方法实现异步接口,并增加了 RPC 的特性支持,方便直接注册就可以调用。 SimensFetchWriteServer: 修复在standard项目里没有添加的bug。 MelsecMcNet: 修复ReadMemory的报文错误,增加读取智能模块的ReadSmartModule方法。 NetworkDataServerBase: 所有的虚拟PLC的基类,添加获取所在在线客户端信息的属性 GetOnlineSessions Demo: 所有读写PLC的界面在读写的时候,增加提示耗时的信息,包括最大值,最小值。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 SiemensS7Net: 修复上个版本的DB块位地址解析的bug,写入DB1.0.5为True的时候,却写入了DB1.0.0为True。 AllenBradleyDF1Serial: 初步添加AB-PLC的DF1协议,支持了简单的读写,等待测试,地址示例:N7:0。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 SoftCRC16: 计算CRC16的辅助方法,开放预置值的设定,可以自由的指定。 FanucSeries0i: 新增一个读取机床系统语言的api,读取之后将会自动切换语言,暂不支持根据消息自动匹配编码解析。 SiemensS7Net: OperateResult<byte[]> Read( string[] address, ushort[] length )接口添加RPC支持 NetworkDataServerBase: OnDataReceived事件签名修改为DataReceivedDelegate( object sender, object source, byte[] data ),追加一个source参数,可用来获取客户端IP地址,具体看api文档 NetworkDoubleBase: 增加LocalBinding属性,如果需要绑定本地ip或是端口的,可以设置,所有的网络类PLC都支持绑定本地的ip端口操作了。 NetworkUdpBase: 增加LocalBinding属性,如果需要绑定本地ip或是端口的,可以设置,所有的网络类PLC都支持绑定本地的ip端口操作了。 SiemensS7Net: 完善异步的PDU自动长度信息,新增AI,AQ地址的读写,地址格式:AI0,AQ0,欢迎大家测试。 OmronFinsNet: 欧姆龙FINSTCP协议的SA1机制调整为自动获取,不需要在手动设置,修复错误信息文本和错误码不匹配的bug。 MqttClient: 修复在网络异常导致正在重连服务器的时候,调用ConnectClose方法后,后台仍然不停的重连服务器的BUG。 NetworkDeviceSoloBase: 删除这个文件,并优化相关的串口透传类。全部改为继承自:NetworkDeviceBase NetworkDataServerBase: 所有派生类的虚拟服务器,包括modbus,s7, mc, fins等服务器全部支持设置是否允许远程写入操作,modbus的demo界面添加是否允许的选项。 WebSocketClient: 修复客户量的Request报文少一个换行信号在某些服务器会连接失败的bug,新增两个发送数据的api,发送数据更加的灵活。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 OmronFinsNet, OmronFinsUdp, HostLink: 地址的解析优化,在读取的API方法里,自动按照500长度进行切割,可以由 ReadSplits 更改。 FanucSeriesOi: Fanuc数控机床支持R数据的读取,参考API: ReadRData(int start, int end) HslExtension: 新增从字节数组获取位值的扩展方法: GetBoolValue( this byte[] bytes, int bytIndex, int boolIndex ) FatekProgram: 地址解析优化,修复 RT,RC地址解析不正确的bug,读取的字及位长度自动切割,调用不受长度限制。 SoftBasic: 添加设置byte数据的某个位的方法SetBoolOnByteIndex,也可以调用byte的扩展方法,byte.SetBoolByIndex(2, true) 就是设置第二位为true FujiSPHNet: 新增支持富士的SPH以太网协议,支持M1.0, M3.0, M10.0, I0, Q0地址的读写操作,支持位的读写操作。写位需要谨慎,先读字,修改位,再写入。 net20, net35, net451三个框架版本的项目引用 http.web 组件,用来修复 HttpServer 里url携带中文时,会导致解析乱码的情况,现在支持了中文的api接口注册,中文参数。 HttpServer: 使用了注册RPC接口时,返回调用方的数据内容格式调整为json格式,方便postman等测试工具识别内容。 FujiSPHServer: 新增富士SPH协议的虚拟服务器,支持和FujiSPHNet进行测试通信。支持的地址是一致的。 KeyenceNanoSerial: 基恩士的上位链路协议优化,支持了B,VB的bool读写,W,VM的字读写,新增bool数组写入功能。 KeyenceNanoSerial: 支持了plc型号读取,状态读取,注释读取,扩展缓存器的读写,错误代码提示携带更详细文本,适用于 KeyenceNanoSerialOverTcp KeyenceNanoServer: 新增基恩士上位链路协议的虚拟服务器,可以和 KeyenceNanoSerialOverTcp 进行通信测试。 KeyenceSR2000: 基恩士扫描的协议的错误提示信息新增了英文模式下的注释,原来的只有中文的提示。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 MqttSyncClient: ReadRpc<T>方法提示JSON转换错误消息更加友好,注释完善。 MelsecMcServer: 三菱的虚拟plc新增对B,R,ZR的地址支持。 FujiSPHNet: 富士PLC实现按照240长度自动切割,支持无限长的数据读取。 MqttClient(不兼容更新): 接收服务器数据的事件签名修改,MqttMessageReceiveDelegate( MqttClient client, string topic, byte[] payload ); WebSocketServer: 优化数据发送部分的功能逻辑代码,将数据发送从锁中解脱出来。 MqttClient: 新增属性 ConnectionOptions 用来获取当前连接参数信息。 Omron: Hostlink协议的读取字数据时,长度进行切割,按照260字切割,可通过ReadSplits属性修改。 PanasonicMewtocolServer: 初步添加mewtocol的虚拟plc,初步测试R地址成功。 设备通信核心: tcp, udp, 串口三大通信内核添加,封包和解包的虚方法,可以重写实现自定义需求。 IModbus: 新增IModbus的设备接口,用来描述Modbus相关的设备,包含站号,DataFormat属性等。 Modbus: 包含TCP,RTU,ASCII,RTU-over-tcp,UDP全部结构优化,重写,完善,最终一套代码实现覆盖以上类,接口无变化。 但是如果用调用了ReadFromCoreServer则不兼容,现在都只需要传核心报文,01 03 00 00 00 01,无论rtu,tcp,ascii Modbus: 支持对寄存器,输入寄存器的位数据读取,ReadBool("100.1") 就是读取寄存器地址100的第一个位的bool值。 MqttSubscribeMessage: Identifier默认设置为1,这样可以修复在某些服务器(mosquitto)订阅异常的bug。 SerialBase(不兼容更新): ReadBase串口基本的交互方法重命名为ReadFromCoreServer,这样与TCP,及UDP的方法标准一致。 FanucInterfaceNet: 支持 R 地址的读写,支持R1-R10,其中R1-R5为int数据,R6-R10为float数据。SR1-SR6进行字符串读写。 BeckhoffAdsServer: 新增ADS的虚拟PLC,支持M100, I100, Q100地址格式。暂不支持内存地址,变量名。 SiemensS7Net: 修复9.6.4版本添加的ConnectionType, LocalTSAP属性对 200,200smart型号的影响。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 V10版本:本来上个版本就应该定为V10版本,因为已经内核优化,出现不兼容更新,所以这个版本果断设定为V10版本。 SerialBase: 修复在串口异常的情况下,会抛出异常的bug,是上个版本的问题,现在会返回失败的OperateResult对象。 ShineInLightSourceController: 新增昱行智造科技(深圳)有限公司的光源控制器的通信对象,主要用于视觉的打光操作。 MqttSession:Mqtt的会话信息增加一个object Tag属性,用来自己绑定一些自定义的数据。 SerialBase: 串口初始化的方法修改为虚方法,允许在继承类里进行重写,修改一些默认参数信息。 NetworkBase: 修复ReceiveAsync异步方法在length=-1时,对方关闭时返回仍然为成功的bug,只有在极少数情况下会触发。 ModbusTcpServer: 新增一个属性UseModbusRtuOverTcp,只要设置为True,就可以创建ModbusRtuOverTcp的对应的服务器,使用TCP传送RTU报文。 HttpServer: 新增SetLoginAccessControl( MqttCredential[] credentials )方法,用于增加默认的账户控制,如果传入null,则不启动账户控制。 IReadWriteDevice: 新增设备读写接口,继承自IReadWriteNet,然后所有设备实现IReadWriteDevice接口,相关继承关系优化,接口增加ReadFromCoreServer。 All: 统一所有的设备核心层打包报文方法名为:PackCommandWithHeader 解包的方法名为UnpackResponseContent,允许重写实现自定义操作。 Omron: 对OmronFinsTcp和OmronFinsUdp的通信层大幅度优化,统一代码规则,新增run,stop,读取cpu数据,cpu状态的高级方法。 DTSU6606Serial: 新增德力西电表的采集类,基于modbusrtu实现,ReadElectricalParameters方法可以直接获取电表相关参数。 HslExtension: 有两个获取byte的位的方法,功能重复,删除GetBoolOnIndex方法,使用GetBoolByIndex方法。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 FatekProgram: 串口类和串口转网口透传类优化,统一一套代码来读写设备。 IDisposable: NetworkAlienClient, NetworkAlienClient, LogNetBase, MqttClient, MqttServer, WebSocketClient, WebSocketServer实现释放接口。 SiemensS7net: 新增DestTSAP属性,优化了LocalTSAP和DestTSAP属性对不同系列plc的值设置,当plc为s200系列时,支持设置自定义的值来访问plc。 UltimateFileServer: 文件服务器删除目录所有文件调整为直接删除整个目录,新增支持删除指定目录下所有空的子目录的功能。文件客户端新增匹配操作的方法。 PanasonicMcNet: 地址新增支持SD数据类型,示例SD0,返回的错误代码修改为松下的专用信息,和三菱的不一致。 IModbus: Modbus接口新增TranlateToModbusAddress( string, byte) 接口,只要继承重写该方法,即可轻松实现自定义地址解析转modbus地址。 Delta: 台达相关的类根据modbus最新的优化,全部进行优化,每个类只有一点点代码了。 FujiSPB: 富士的串口协议代码和串口透传代码优化,修复串口类调用异步写bool失败的bug。 XinJE: XinJEXCSerial重命名为 XinJESerial类,根据modbus的优化进行精简,支持了信捷系列选择,可选XC,XJ,XD,地址支持根据所选型号自动解析。 XinJE: 新增基于串口透传的XinJESerialOverTcp类,以及modbustcp协议的XinJETcpNet类,DEMO上支持测试。 Inovance: 汇川的类优化,删除原来的AM,H3U,H5U类,改用InovanceSeries枚举来区分系列,然后解析不同的地址。同时添加InovanceSerialOverTcp串口转网口类。 OmronFinsServer: 欧姆龙的FinsTCP虚拟服务器端支持E数据块,E0.0-E31.0 都是指同一个数据块。 IByteTransform: 新增二维数组的解析方法接口,主要是short,ushort,int,uint,long,ulong,float,double类型。 Demo: MelsecSerialOverTcp的demo界面添加是否新版的选择。 如果有用到汇川,信捷的类库,请注意升级时出现不兼容,需要修改下类型,指定PLC的系列,感谢支持。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 OmronFinsServer: 修复服务器的内存数据保存本地文件及加载文件时,不支持em区数据的bug。 ISessionContext: 新增会话信息接口,在MqttServer和Httpserver中,在注册RPC时可以在方法参数里追加ISessionContext接口的上下文信息,用来控制当前api的对不同账户的权限。 Modbus: TranslateToModbusAddress 单词拼写错误的修复。 FujiSPBAddress: 地址类的继承改成 DeviceAddressDataBase ModbusHelper: 在所有modbus及派生类里,当实现地址转换后,修复写bool,bool[]时地址仍然不转换的bug。 KeyenceNano: 新增 UseStation 属性,用来设定是否开启使用站号的报文功能,有些特殊的情况需要站号。 KeyenceNano: 串口类和串口转网口透传类优化,统一一套代码来读写设备。 其他的注释优化,代码优化 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 Melsec: 三菱的MC协议TCP,UDP,二进制,ASCII代码优化,一套代码实现,新增IReadWriteMc接口,针对MC协议的设备通用读写类 NetworkUdpBase: 新增LogMsgFormatBinary属性,可以指示当前的数据交互报文记录时按照ASCII编码显示,或是二进制显示。 DTSU6606Serial: 德力西的电表的读取方法ReadElectricalParameters支持HslMqttApi特性,方便MRPC及WEBAPI接口服务注册。 Demo: Modbus rtu的demo界面的报文读取取消crc封装,因为内部已经集成封装。 Melsec: 统一 MelsecMcNet, MelsecMcUdp, MelsecMcAsciiNet, MelsecMcAsciiUdp, MelsecMcRNet的代码逻辑结构,修复了ASCII格式类的一些bug。 MelsecMcServer: 三菱的虚拟服务器限制了bool读取长度7168限制字读取长度960,三菱MC客户端的bool读取支持自动切割。 OmronHostLink: OmronHostLink及OmronHostLinkOverTcp代码优化,完善错误代码文本提示,增加返回命令和发送命令校验的操作。 HslExtension: ToStringArray的扩展方法支持对GUID的解析功能,不支持.net20, .net35 NetworkDataServerBase: 修复数据类服务器在主动关闭引擎时,在线客户端的数量未及时复原的bug,影响范围,所有的虚拟PLC服务器。 OmronHostLinkServer: 新增欧姆龙HostLink协议的虚拟PLC,支持网口和串口的进行读写操作。优化hostlink协议的客户端错误代码含义展示,优化数据接收机制。 Demo: httpclient界面支持对https接口测试,在内容请求的header支持添加content-type信息,提供了一些选项。 SimensWebApi: 新增NetworkWebApiDevice设备类,实现IReadWritteNet接口,新增SimensWebApi类,用于西门子1500的webapi接口,可实现读写标签变量信息。 FanucSeries0i: fanuc的通信类支持NC程序文件的上传和下载,删除,设置主程序号,启动加工操作。修复刀具信息读取时,某个刀具信息失败导致读取失败的bug。 AllenBradleyServer: ab-plc的虚拟服务器支持会话id的生成,支持对客户端校验会话id是否一致。 Melsec: MC协议的类支持对字地址按照位读取,例如读取D100.5 开始的3个位,使用ReadBool("D100.5", 3)即可 NetworkBase: 优化ReceiveByMessage及异步版本的性能,减少一次内容数据的拷贝操作,提升内存利用效率,提升读写的性能。 SiemensS7Net: 西门子s7协议的地址支持 VB100, VW100, VD100的写法。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 UltimateFileServer: 支持获取指定目录的所有文件大小,客户端IntegrationFileClient实现相应的调用方法GetTotalFileSize MqttServer: 支持获取指定目录的所有文件大小,客户端MqttSyncClient实现相应的调用方法GetTotalFileSize MelsecA3CNet1重命名为MelsecA3CNet,MelsecA3CNet1OverTcp重命名为MelsecA3CNetOverTcp,所有引用这两个类的话无法兼容更新。 MelsecA3CNet,MelsecA3CNetOverTcp修复和校验bug,支持是否和校验,支持格式1,2,3,4四种通信机制,已经通过单元测试。 MelsecA3CServer: 新增三菱的A3C虚拟plc,支持是否和校验,格式1,2,3,4,支持和MelsecA3CNet,MelsecA3CNetOverTcp通信测试。 FanucSeries0i: fanuc机床客户端新增ReadCutterNumber读取当前刀具号的API信息。 MqttClient: 新增属性UseTimerCheckDropped是否启动定时器检测,其他优化。 SoftBasic: 新增一个静态辅助方法string GetAsciiStringRender( byte[] content ); 用来获取ASCII显示的,如果遇见不可见字符,则用十六进制替代。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。 feat(UltimateFileServer): 获取文件服务器的指定目录的大小的方法改为获取大小,文件数量,最后一个文件修改时间的方法,客户端同步更新GetGroupFileInfo。 feat(MqttServer): 获取文件服务器的指定目录的大小的方法改为获取大小,文件数量,最后一个文件修改时间的方法,客户端同步更新GetGroupFileInfo。 feat(UltimateFileServer): 新增一个获取指定目录所有子目录的基本信息,包含总大小,文件数量,最后一个文件修改时间,GetSubGroupFileInfos feat(MqttServer): 文件服务器新增一个获取指定目录所有子目录的基本信息,包含总大小,文件数量,最后一个文件修改时间,GetSubGroupFileInfos SiemensWebApi: 修复在.net standard2.0及2.1中未添加SiemensWebApi类的bug。 MelsecA3CNetHelper: 优化数据解析时,对错误异常的处理,增加错误捕获。 LSisServer: 重写串口Cnet协议的数据接收,处理,和返回,支持了单变量数据,和连续数据的读写操作。 XGBCnet, XGBCnetOverTcp: 重新实现了类,统一了代码,重新解析的数据内容,支持了对错误码的提取和错误消息的解析。 memobus: 新增memobus通信协议,初步实现了读取的操作,具体还需要测试,如有网友有测试条件,可以联系我测试。 Yamatake: 新增山武的数字示波器的CPL协议的通信对象和虚拟服务器,分别是DigitronCPL,DigitronCPLServer MqttServer, HttpServer: 使用HslMqttApi特性注册远程RPC接口时,支持对异步方法(async...await)进行注册,并进行异步调用,返回相关数据。仅支持NET451及以上。 HslMqttApi: 在注册RPC接口时,增加了对方法签名的解析过程,客户端可以浏览服务器接口的方法签名,清楚的看到返回类型,参数类型信息。 Delta: DeltaDvp系列的网口,串口协议,修复在跨区域读写M1536及D4096时,地址偏移不正确的bug。现在会自动跳转。 MqttServer: 修复Mqtt客户端在取消订阅时,传入多个的Topic时导致服务器解析异常的bug。 XGBCnet: 支持Read(string[]); 读取多个地址的数据信息,自动按照每16进行拆分访问。 官网地址: http://www.hslcommunication.cn 官网的界面全新设计过,感谢浏览关注。 本软件已经申请软件著作权,软著登字第5219522号,任何盗用软件,破解软件,未经正式合同授权而商业使用均视为侵权。
结构体的句柄信息 返回项数 结构体定义大小 使用读取标记服务读取结构时在线路上传输的字节数 成员数量 结构体的handle AB PLC的每个的数据标签情况 实例ID 名字 TAG类型(有时候可作为实例ID使用) 数据的维度信息,默认是0,标量数据,1代表1为数组 是否结构体数据 AB-PLC的DF1通信协议,基于串口实现,通信机制为半双工,目前适用于 Micro-Logix1000,SLC500,SLC 5/03,SLC 5/04,地址示例:N7:1 Instantiate a communication object for a Allenbradley PLC protocol 站号信息 目标节点号 源节点号 校验方式 读取PLC的原始数据信息,地址示例:N7:0 可以携带站号 s=2;N7:0, 携带 dst 和 src 信息,例如 dst=1;src=2;N7:0 PLC的地址信息,支持的类型见类型注释说明 读取的长度,单位,字节 是否读取成功的结果对象 写入PLC的原始数据信息,地址示例:N7:0 可以携带站号 s=2;N7:0, 携带 dst 和 src 信息,例如 dst=1;src=2;N7:0 PLC的地址信息,支持的类型见类型注释说明 原始的数据值 是否写入成功 打包命令的操作,加站号进行打包成完整的数据内容,命令内容为原始命令,打包后会自动补充0x10的值 站号信息 等待发送的命令 打包之后的数据内容 构建0F-A2命令码的报文读取指令,用来读取文件数据。适用 Micro-Logix1000,SLC500,SLC 5/03,SLC 5/04,地址示例:N7:1
Construct a message read instruction of 0F-A2 command code to read file data. Applicable to Micro-Logix1000, SLC500, SLC 5/03, SLC 5/04, address example: N7:1
目标节点号 原节点号 消息号 PLC的地址信息 读取的数据长度 初步的报文信息 对于SLC 5/01或SLC 5/02而言,一次最多读取82个字节。对于 03 或是 04 为225,236字节取决于是否应用DF1驱动
构建0F-AA命令码的写入读取指令,用来写入文件数据。适用 Micro-Logix1000,SLC500,SLC 5/03,SLC 5/04,地址示例:N7:1
Construct a write and read command of 0F-AA command code to write file data. Applicable to Micro-Logix1000, SLC500, SLC 5/03, SLC 5/04, address example: N7:1
目标节点号 原节点号 消息号 PLC的地址信息 写入的数据内容 初步的报文信息 对于SLC 5/01或SLC 5/02而言,一次最多读取82个字节。对于 03 或是 04 为225,236字节取决于是否应用DF1驱动
提取返回报文的数据内容,将其转换成实际的数据内容,如果PLC返回了错误信息,则结果对象为失败。
Extract the data content of the returned message and convert it into the actual data content. If the PLC returns an error message, the result object is a failure.
PLC返回的报文信息 结果对象内容
根据错误代码,来获取错误的具体描述文本 错误的代码,非0 错误的描述文本信息 根据错误代码,来获取错误的具体描述文本 错误的代码,非0 错误的描述文本信息 AB PLC的辅助类,用来辅助生成基本的指令信息 CIP命令中的读取数据的服务 CIP命令中的写数据的服务 CIP命令中的读并写的数据服务 CIP命令中的读片段的数据服务 CIP命令中的写片段的数据服务 CIP指令中读取数据的列表 CIP命令中的对数据读取服务 bool型数据,一个字节长度 byte型数据,一个字节长度,SINT 整型,两个字节长度,INT 长整型,四个字节长度,DINT 特长整型,8个字节,LINT Unsigned 8-bit integer, USINT Unsigned 16-bit integer, UINT Unsigned 32-bit integer, UDINT Unsigned 64-bit integer, ULINT 实数数据,四个字节长度 实数数据,八个字节的长度 结构体数据,不定长度 字符串数据内容 Bit string, 8 bits, BYTE, Bit string, 16-bits, WORD Bit string, 32 bits, DWORD 二进制数据内容 从生成的报文里面反解出实际的数据地址,不支持结构体嵌套,仅支持数据,一维数组,不支持多维数据 地址路径报文 实际的地址 获取枚举PLC数据信息的指令 实例的起始地址 结果数据 获取获得结构体句柄的命令 包含地址的信息 命令数据 获取结构体内部数据结构的方法 地址 句柄 指令 将CommandSpecificData的命令,打包成可发送的数据指令 实际的命令暗号 错误号信息 当前会话的id CommandSpecificData命令 最终可发送的数据命令 打包生成一个请求读取数据的节点信息,CIP指令信息 地址 指代数组的长度 是否是连接模式下的地址,默认为false CIP的指令信息 打包生成一个请求读取数据片段的节点信息,CIP指令信息 节点的名称 -> Tag Name 起始的索引位置,以字节为单位 -> The initial index position, in bytes 读取的数据长度,一次通讯总计490个字节 -> Length of read data, a total of 490 bytes of communication CIP的指令信息 根据指定的数据和类型,生成对应的数据 地址信息 数据类型 字节值 如果节点为数组,就是数组长度 是否为连接模式的地址 CIP的指令信息 分析地址数据信息里的位索引的信息,例如a[10] 返回 a 和 10 索引,如果没有指定索引,就默认为0 数据地址 位索引 地址信息 写入Bool数据的基本指令信息 地址 报文信息 将所有的cip指定进行打包操作。 PLC所在的面板槽号 所有的cip打包指令信息 包含服务的信息 将所有的cip指定进行打包操作。 PLC所在的面板槽号 所有的cip打包指令信息 包含服务的信息 打包一个读取所有特性数据的报文信息,需要传入slot 站号信息 会话的ID信息 最终发送的报文数据 根据数据创建反馈的数据信息 反馈的数据信息 是否是读取 数据 生成读取直接节点数据信息的内容 cip指令内容 最终的指令值 将所有的cip指定进行打包操作。 指令信息 包含服务的信息 向PLC注册会话ID的报文
Register a message with the PLC for the session ID
报文信息 -> Message information
获取卸载一个已注册的会话的报文
Get a message to uninstall a registered session
当前会话的ID信息 字节报文信息 -> BYTE message information
初步检查返回的CIP协议的报文是否正确
Initially check whether the returned CIP protocol message is correct
CIP的报文信息 是否正确的结果信息
从PLC反馈的数据解析 PLC的反馈数据 是否是返回的操作 带有结果标识的最终数据 AB PLC的数据 真实的数组缓存 是否是数组的数据 单个单位的数据长度信息 AB PLC的cip通信实现类,适用Micro800系列控制系统
AB PLC's cip communication implementation class, suitable for Micro800 series control system
AB PLC的数据通信类,使用CIP协议实现,适用1756,1769等型号,支持使用标签的形式进行读写操作,支持标量数据,一维数组,二维数组,三维数组等等。如果是局部变量,那么使用 Program:MainProgram.[变量名]。
The data communication class of AB PLC is implemented using the CIP protocol. It is suitable for 1756, 1769 and other models. It supports reading and writing in the form of tags, scalar data, one-dimensional array, two-dimensional array, three-dimensional array, and so on. If it is a local variable, use the Program:MainProgram.[Variable name].
thanks 江阴- ∮溪风-⊙_⌒ help test the dll
thanks 上海-null 测试了这个dll

默认的地址就是PLC里的TAG名字,比如A,B,C;如果你需要读取的数据是一个数组,那么A就是默认的A[0],如果想要读取偏移量为10的数据,那么地址为A[10], 多维数组同理,使用A[10,10,10]的操作。

假设你读取的是局部变量,那么使用 Program:MainProgram.变量名
目前适用的系列为1756 ControlLogix, 1756 GuardLogix, 1769 CompactLogix, 1769 Compact GuardLogix, 1789SoftLogix, 5069 CompactLogix, 5069 Compact GuardLogix, Studio 5000 Logix Emulate

如果你有个Bool数组要读取,变量名为 A, 那么读第0个位,可以通过 ReadBool("A"),但是第二个位需要使用
ReadBoolArray("A[0]") // 返回32个bool长度,0-31的索引,如果我想读取32-63的位索引,就需要 ReadBoolArray("A[1]") ,以此类推。

地址可以携带站号信息,只要在前面加上slot=2;即可,这就是访问站号2的数据了,例如 slot=2;AAA
Instantiate a communication object for a Allenbradley PLC protocol Instantiate a communication object for a Allenbradley PLC protocol PLC IpAddress PLC Port The current session handle, which is determined by the PLC when communicating with the PLC handshake Gets or sets the slot number information for the current plc, which should be set before connections port and slot information 获取或设置整个交互指令的控制码,默认为0x6F,通常不需要修改
Gets or sets the control code of the entire interactive instruction. The default is 0x6F, and usually does not need to be modified.
创建一个读取标签的报文指定,标签地址可以手动动态指定slot编号,例如 slot=2;AAA
Build a read command bytes, The label address can manually specify the slot number dynamically, for example slot=2;AAA
the address of the tag name Array information, if not arrays, is 1 Message information that contains the result object
创建一个读取多标签的报文
Build a read command bytes
The address of the tag name Message information that contains the result object
Create a written message instruction The address of the tag name Data type Source Data In the case of arrays, the length of the array Message information that contains the result object Create a written message instruction The address of the tag name Bool Data Message information that contains the result object Read data information, data length for read array length information Address format of the node In the case of arrays, the length of the array Result data with result object Bulk read Data information Name of the node Result data with result object [商业授权] 批量读取多地址的数据信息,例如我可以读取两个标签的数据 "A","B[0]", 长度为 [1, 5],返回的是一整个的字节数组,需要自行解析
[Authorization] Read the data information of multiple addresses in batches. For example, I can read the data "A", "B[0]" of two tags, the length is [1, 5], and the return is an entire byte array, and I need to do it myself Parsing
节点的名称 -> Name of the node 如果是数组,就为数组长度 -> In the case of arrays, the length of the array 带有结果对象的结果数据 -> Result data with result object
Read Segment Data Array form plc, use address tag name Tag name in plc array start index, uint byte index array length, data item length Results Bytes 使用CIP报文和服务器进行核心的数据交换 Cip commands Results Bytes 使用EIP报文和服务器进行核心的数据交换 eip commands Results Bytes 读取单个的bool数据信息,如果读取的是单bool变量,就直接写变量名,如果是由int组成的bool数组的一个值,一律带"i="开头访问,例如"i=A[0]"
Read a single bool data information, if it is a single bool variable, write the variable name directly, if it is a value of a bool array composed of int, it is always accessed with "i=" at the beginning, for example, "i=A[0]"
节点的名称 -> Name of the node 带有结果对象的结果数据 -> Result data with result info
批量读取的bool数组信息,如果你有个Bool数组变量名为 A, 那么读第0个位,可以通过 ReadBool("A"),但是第二个位需要使用 ReadBoolArray("A[0]") // 返回32个bool长度,0-31的索引,如果我想读取32-63的位索引,就需要 ReadBoolArray("A[1]") ,以此类推。
For batch read bool array information, if you have a Bool array variable named A, then you can read the 0th bit through ReadBool("A"), but the second bit needs to use ReadBoolArray("A[0]" ) // Returns the length of 32 bools, the index is 0-31, if I want to read the bit index of 32-63, I need ReadBoolArray("A[1]"), and so on.
节点的名称 -> Name of the node 带有结果对象的结果数据 -> Result data with result info
读取PLC的byte类型的数据
Read the byte type of PLC data
节点的名称 -> Name of the node 带有结果对象的结果数据 -> Result data with result info
枚举当前的所有的变量名字,包含结构体信息,除去系统自带的名称数据信息
Enumerate all the current variable names, including structure information, except the name data information that comes with the system
结果对象
枚举结构体的方法 结构体的标签 是否成功 当前的PLC不支持该功能,需要调用 方法来实现。
The current PLC does not support this function, you need to call the method to achieve it.
地址 写入结果值
使用指定的类型写入指定的节点数据
Writes the specified node data with the specified type
节点的名称 -> Name of the node 类型代码,详细参见上的常用字段 -> Type code, see the commonly used Fields section on the in detail 实际的数据值 -> The actual data value 如果节点是数组,就是数组长度 -> If the node is an array, it is the array length 是否写入成功 -> Whether to write successfully
写入单个Bool的数据信息。如果读取的是单bool变量,就直接写变量名,如果是bool数组的一个值,一律带下标访问,例如a[0]
Write the data information of a single Bool. If the read is a single bool variable, write the variable name directly, if it is a value of the bool array, it will always be accessed with a subscript, such as a[0]
标签的地址数据 bool数据值 是否写入成功
写入Byte数据,返回是否写入成功
Write Byte data and return whether the writing is successful
标签的地址数据 Byte数据 是否写入成功
[商业授权] AB PLC的虚拟服务器,仅支持和HSL组件的完美通信,可以手动添加一些节点。
[Authorization] AB PLC's virtual server only supports perfect communication with HSL components. You can manually add some nodes.
本AB的虚拟PLC仅限商业授权用户使用,感谢支持。
实例化一个AB PLC协议的服务器
Instantiate an AB PLC protocol server
获取或设置当前的服务器的数据字节排序情况
Gets or sets the data byte ordering of the current server
向服务器新增一个新的Tag值
Add a new tag value to the server
Tag名称
向服务器新增一个新的bool类型的Tag值,并赋予初始化的值
Add a new tag value of type bool to the server and assign the initial value
Tag名称 值信息
向服务器新增一个新的short类型的Tag值,并赋予初始化的值
Add a new short tag value to the server and assign the initial value
Tag名称 值信息
向服务器新增一个新的short数组的Tag值,并赋予初始化的值
Add a new short array Tag value to the server and assign the initial value
Tag名称 值信息
向服务器新增一个新的ushort类型的Tag值,并赋予初始化的值
Add a new tag value of ushort type to the server and assign the initial value
Tag名称 值信息
向服务器新增一个新的ushort数组的Tag值,并赋予初始化的值
Add a new ushort array Tag value to the server and assign the initial value
Tag名称 值信息
向服务器新增一个新的int类型的Tag值,并赋予初始化的值
Add a new Tag value of type int to the server and assign the initialized value
Tag名称 值信息
向服务器新增一个新的int数组的Tag值,并赋予初始化的值
Add a new Tag value of the int array to the server and assign the initialized value
Tag名称 值信息
向服务器新增一个新的uint类型的Tag值,并赋予初始化的值
Add a new uint tag value to the server and assign the initial value
Tag名称 值信息
向服务器新增一个新的uint数组的Tag值,并赋予初始化的值
Add a new uint array Tag value to the server and assign the initial value
Tag名称 值信息
向服务器新增一个新的long类型的Tag值,并赋予初始化的值
Add a new Tag value of type long to the server and assign the initialized value
Tag名称 值信息
向服务器新增一个新的long数组的Tag值,并赋予初始化的值
Add a new Long array Tag value to the server and assign the initial value
Tag名称 值信息
向服务器新增一个新的ulong类型的Tag值,并赋予初始化的值
Add a new Ulong type Tag value to the server and assign the initial value
Tag名称 值信息
向服务器新增一个新的ulong数组的Tag值,并赋予初始化的值
Add a new Ulong array Tag value to the server and assign the initial value
Tag名称 值信息
向服务器新增一个新的float类型的Tag值,并赋予初始化的值
Add a new tag value of type float to the server and assign the initial value
Tag名称 值信息
向服务器新增一个新的float数组的Tag值,并赋予初始化的值
Add a new Tag value of the float array to the server and assign the initialized value
Tag名称 值信息
向服务器新增一个新的double类型的Tag值,并赋予初始化的值
Add a new tag value of type double to the server and assign the initialized value
Tag名称 值信息
向服务器新增一个新的double数组的Tag值,并赋予初始化的值
Add a new double array Tag value to the server and assign the initialized value
Tag名称 值信息
向服务器新增一个新的string类型的Tag值,并赋予初始化的值
Add a new Tag value of string type to the server and assign the initial value
Tag名称 值信息 字符串的最长值
向服务器新增一个新的string数组的Tag值,并赋予初始化的值
Add a new String array Tag value to the server and assign the initialized value
Tag名称 值信息 字符串的最长值
当收到mc协议的报文的时候应该触发的方法,允许继承重写,来实现自定义的返回,或是数据监听。 mc报文 返回的报文信息 AllenBradley品牌的PLC,针对SLC系列的通信的实现,测试PLC为1747。
AllenBradley brand PLC, for the realization of SLC series communication, the test PLC is 1747.
地址格式如下: 地址代号 字操作 位操作 备注 A A9:0 A9:0/1 或 A9:0.1 B B9:0 B9:0/1 或 B9:0.1 N N9:0 N9:0/1 或 N9:0.1 F F9:0 F9:0/1 或 F9:0.1 S S:0 S:0/1 或 S:0.1 S:0 等同于 S2:0 C C9:0 C9:0/1 或 C9:0.1 I I9:0 I9:0/1 或 I9:0.1 O O9:0 O9:0/1 或 O9:0.1 R R9:0 R9:0/1 或 R9:0.1 T T9:0 T9:0/1 或 T9:0.1 感谢 seedee 的测试支持。
Instantiate a communication object for a Allenbradley PLC protocol Instantiate a communication object for a Allenbradley PLC protocol PLC IpAddress PLC Port The current session handle, which is determined by the PLC when communicating with the PLC handshake Read data information, data length for read array length information Address format of the node In the case of arrays, the length of the array Result data with result object 分析地址数据信息里的位索引的信息 数据地址 位索引 地址信息 分析当前的地址信息,返回类型代号,区块号,起始地址
Analyze the current address information, return the type code, block number, and actual address
地址信息 结果内容对象
构建读取的指令信息 地址信息,举例:A9:0 读取的长度信息 是否成功 构建写入的报文内容,变成实际的数据 地址信息 数据值 是否成功的结果对象 构建写入的报文内容,变成实际的数据 地址信息 数据值 是否成功的结果对象 解析当前的实际报文内容,变成数据内容 报文内容 是否成功 Ads设备的相关信息,主要是版本号,设备名称
Information about Ads devices, primarily version numbers, device names.
实例化一个默认的对象
Instantiate a default object
根据原始的数据内容来实例化一个对象
Instantiate an object based on the original data content
原始的数据内容
主版本号
Main Version
次版本号
Minor Version
构建版本号
Build version
设备的名字
Device Name
AMS消息的命令号 AmsCommand (AMS_TCP_PORT_AMS_CMD, 0x0000) Port Close command (AMS_TCP_PORT_CLOSE, 0x0001) Port connect command (AMS_TCP_PORT_CONNECT, 0x1000) Router Notification (AMS_TCP_PORT_ROUTER_NOTE, 0x1001) Get LocalNetId header 倍福的ADS协议,支持读取倍福的地址数据,关于端口号的选择,TwinCAT2,端口号801;TwinCAT3,端口号为851
Beckhoff ’s ADS protocol supports reading Beckhoff ’s address data. For the choice of port number, TwinCAT2, port number 801; TwinCAT3, port number 851
支持的地址格式分三种,第一种是绝对的地址表示,比如M100,I100,Q100;第二种是字符串地址,采用s=aaaa;的表示方式;第三种是绝对内存地址采用i=1000000;的表示方式
在实际的测试中,由于打开了VS软件对倍福PLC进行编程操作,会导致HslCommunicationDemo读取PLC发生间歇性读写失败的问题,此时需要关闭Visual Studio软件对倍福的 连接,之后HslCommunicationDemo就会读写成功,感谢QQ:1813782515 提供的解决思路。
实例化一个默认的对象
Instantiate a default object
通过指定的ip地址以及端口号实例化一个默认的对象
Instantiate a default object with the specified IP address and port number
IP地址信息 端口号
是否使用标签的名称缓存功能,默认为 False
Whether to use tag name caching. The default is False
目标的地址,举例 192.168.0.1.1.1;也可以是带端口号 192.168.0.1.1.1:801
The address of the destination, for example 192.168.0.1.1.1; it can also be the port number 192.168.0.1.1.1: 801
Port:1: AMS Router; 2: AMS Debugger; 800: Ring 0 TC2 PLC; 801: TC2 PLC Runtime System 1; 811: TC2 PLC Runtime System 2;
821: TC2 PLC Runtime System 3; 831: TC2 PLC Runtime System 4; 850: Ring 0 TC3 PLC; 851: TC3 PLC Runtime System 1
852: TC3 PLC Runtime System 2; 853: TC3 PLC Runtime System 3; 854: TC3 PLC Runtime System 4; ...
AMSNet Id地址
设置原目标地址 举例 192.168.0.100.1.1;也可以是带端口号 192.168.0.100.1.1:34567
Set the original destination address Example: 192.168.0.100.1.1; it can also be the port number 192.168.0.100.1.1: 34567
原地址
获取当前发送的AMS的网络ID信息 根据当前标签的地址获取到内存偏移地址
Get the memory offset address based on the address of the current label
带标签的地址信息,例如s=A,那么标签就是A 内存偏移地址
将字符串的地址转换为内存的地址,其他地址则不操作
Converts the address of a string to the address of a memory, other addresses do not operate
地址信息,s=A的地址转换为i=100000的形式 地址
读取Ads设备的设备信息。主要是版本号,设备名称
Read the device information of the Ads device. Mainly version number, device name
设备信息
读取Ads设备的状态信息,其中是Ads State,是Device State
Read the status information of the Ads device, where is the Ads State, and is the Device State
设备状态信息
写入Ads的状态,可以携带数据信息,数据可以为空
Write the status of Ads, can carry data information, and the data can be empty
ads state device state 数据信息 是否写入成功
释放当前的系统句柄,该句柄是通过获取的 句柄 是否释放成功 读取PLC的数据,地址共有三种格式,一:I,Q,M数据信息,举例M0,M100;二:内存地址,i=100000;三:标签地址,s=A
Read PLC data, there are three formats of address, one: I, Q, M data information, such as M0, M100; two: memory address, i = 100000; three: tag address, s = A
地址信息,地址共有三种格式,一:I,Q,M数据信息,举例M0,M100;二:内存地址,i=100000;三:标签地址,s=A 长度 包含是否成功的结果对象
写入PLC的数据,地址共有三种格式,一:I,Q,M数据信息,举例M0,M100;二:内存地址,i=100000;三:标签地址,s=A
There are three formats for the data written into the PLC. One: I, Q, M data information, such as M0, M100; two: memory address, i = 100000; three: tag address, s = A
地址信息,地址共有三种格式,一:I,Q,M数据信息,举例M0,M100;二:内存地址,i=100000;三:标签地址,s=A 数据值 是否写入成功
读取PLC的数据,地址共有三种格式,一:I,Q,M数据信息,举例M0,M100;二:内存地址,i=100000;三:标签地址,s=A
Read PLC data, there are three formats of address, one: I, Q, M data information, such as M0, M100; two: memory address, i = 100000; three: tag address, s = A
PLC的地址信息,例如 M10 数据长度 包含是否成功的结果对象
写入PLC的数据,地址共有三种格式,一:I,Q,M数据信息,举例M0,M100;二:内存地址,i=100000;三:标签地址,s=A
There are three formats for the data written into the PLC. One: I, Q, M data information, such as M0, M100; two: memory address, i = 100000; three: tag address, s = A
地址信息 数据值 是否写入成功
读取PLC的数据,地址共有三种格式,一:I,Q,M数据信息,举例M0,M100;二:内存地址,i=100000;三:标签地址,s=A
Read PLC data, there are three formats of address, one: I, Q, M data information, such as M0, M100; two: memory address, i = 100000; three: tag address, s = A
地址信息 包含是否成功的结果对象
写入PLC的数据,地址共有三种格式,一:I,Q,M数据信息,举例M0,M100;二:内存地址,i=100000;三:标签地址,s=A
There are three formats for the data written into the PLC. One: I, Q, M data information, such as M0, M100; two: memory address, i = 100000; three: tag address, s = A
地址信息 数据值 是否写入成功
根据命令码ID,消息ID,数据信息组成AMS的命令码 命令码ID 数据内容 打包之后的数据信息,没有填写AMSNetId的Target和Source内容 构建读取设备信息的命令报文 报文信息 构建读取状态的命令报文 报文信息 构建写入状态的命令报文 Ads state Device state Data 报文信息 构建写入的指令信息 地址信息 数据长度 是否是位信息 结果内容 构建写入的指令信息 地址信息 数据长度 是否是位信息 写入的数值 结果内容 构建写入的指令信息 地址信息 数据 是否是位信息 结果内容 构建写入的指令信息 地址信息 数据 是否是位信息 结果内容 构建释放句柄的报文信息,当获取了变量的句柄后,这个句柄就被释放 句柄信息 报文的结果内容 检查从PLC的反馈的数据报文是否正确 反馈报文 检查结果 将实际的包含AMS头报文和数据报文的命令,打包成实际可发送的命令 命令头信息 命令信息 结果信息 分析当前的地址信息,根据结果信息进行解析出真实的偏移地址 地址 是否位访问 结果内容 将字符串名称转变为ADS协议可识别的字节数组 字节数组 将字符串的信息转换为AMS目标的地址 目标信息 字节数组 根据byte数组信息提取出字符串格式的AMSNetId数据信息,方便日志查看 原始的报文数据信息 起始的节点信息 Ams节点号信息 根据AMS的错误号,获取到错误信息,错误信息来源于 wirshake 源代码文件 "..\wireshark\plugins\epan\ethercat\packet-ams.c" 错误号 错误的描述信息 倍福Ads协议的虚拟服务器 实例化一个基于ADS协议的虚拟的倍福PLC对象,可以用来和进行通信测试。 倍福PLC的命令码
Command Id: https://infosys.beckhoff.com/english.php?content=../content/1033/tc3_ads_intro/index.html
读取PLC的名字和版本号等信息
Reads the name and the version number of the ADS device.
可以读ADS的设备读取数据
With ADS Read data can be read from an ADS device
将ADS数据写入到ADS的设备里去
With ADS Write data can be written to an ADS device
读取ADS设备里的设备状态信息和ADS状态
Reads the ADS status and the device status of an ADS device.
更改ADS设备的设备状态信息和ADS状态
Changes the ADS status and the device status of an ADS device.
在ADS设备里面创建一个通知对象
A notification is created in an ADS device
删除ADS设备里的一个通知对象
One before defined notification is deleted in an ADS device.
从ADS设备订阅一个数据的通知,将会发送到客户端
Data will carry forward independently from an ADS device to a Client
在写入的时候进行同时的读取
With ADS ReadWrite data will be written to an ADS device. Additionally, data can be read from the ADS device.
台达PLC的串口通讯类,基于Modbus-Ascii协议开发,按照台达的地址进行实现。
The serial communication class of Delta PLC is developed based on the Modbus-Ascii protocol and implemented according to Delta's address.
适用于DVP-ES/EX/EC/SS型号,DVP-SA/SC/SX/EH型号,地址参考API文档,同时地址可以携带站号信息,举例:[s=2;D100],[s=3;M100],可以动态修改当前报文的站号信息。
Suitable for DVP-ES/EX/EC/SS models, DVP-SA/SC/SX/EH models, the address refers to the API document, and the address can carry station number information, for example: [s=2;D100],[s= 3;M100], you can dynamically modify the station number information of the current message.
台达PLC的相关的帮助类,公共的地址解析的方法。
Delta PLC related help classes, public address resolution methods.
根据台达PLC的地址,解析出转换后的modbus协议信息,适用DVP系列,当前的地址仍然支持站号指定,例如s=2;D100
According to the address of Delta PLC, the converted modbus protocol information is parsed out, applicable to DVP series, the current address still supports station number designation, such as s=2;D100
台达plc的地址信息 原始的对应的modbus信息 还原后的modbus地址
读取台达PLC的bool变量,重写了读M地址时,跨区域读1536地址时,将会分割多次读取 底层基础的读取方法 PLC的地址信息 读取的长度信息 读取的结果 写入台达PLC的bool数据,当发现是M类型的数据,并且地址出现跨1536时,进行切割写入操作 底层的写入操作方法 PLC的起始地址信息 等待写入的数据信息 是否写入成功 读取台达PLC的原始字节变量,重写了读D地址时,跨区域读4096地址时,将会分割多次读取 底层基础的读取方法 PLC的地址信息 读取的长度信息 读取的结果 写入台达PLC的原始字节数据,当发现是D类型的数据,并且地址出现跨4096时,进行切割写入操作 底层的写入操作方法 PLC的起始地址信息 等待写入的数据信息 是否写入成功 台达PLC的串口通讯类,基于Modbus-Rtu协议开发,按照台达的地址进行实现。
The serial communication class of Delta PLC is developed based on the Modbus-Rtu protocol and implemented according to Delta's address.
适用于DVP-ES/EX/EC/SS型号,DVP-SA/SC/SX/EH型号,地址参考API文档,同时地址可以携带站号信息,举例:[s=2;D100],[s=3;M100],可以动态修改当前报文的站号信息。
Suitable for DVP-ES/EX/EC/SS models, DVP-SA/SC/SX/EH models, the address refers to the API document, and the address can carry station number information, for example: [s=2;D100],[s= 3;M100], you can dynamically modify the station number information of the current message.
地址的格式如下: 地址名称 地址代号 ES/EX/SS SA/SX/SC EH 地址进制 字操作 位操作 备注 S S0-S127 S0-S1023 S0-S1023 10 × 输入继电器 X X0-X177 X0-X177 X0-X377 8 × 只读 输出继电器 Y Y0-Y177 Y0-Y177 Y0-Y377 8 × 定时器 T T0-T127 T0-T255 T0-T255 10 如果是读位,就是通断继电器,如果是读字,就是当前值 计数器 C C0-C127 C232-C255 C0-C199 C200-C255 C0-C199 C200-C255 10 如果是读位,就是通断继电器,如果是读字,就是当前值 内部继电器 M M0-M1279 M0-M4095 M0-M4095 10 × 数据寄存器 D D0-D1311 D0-D4999 D0-D9999 10 × 除此之外,地址可以携带站号信息,例如 s=2;D100,也是支持的。
实例化一个默认的对象
Instantiate a default object
指定客户端自己的站号来初始化
Specify the client's own station number to initialize
客户端自身的站号
台达PLC的网口通讯类,基于Modbus-Rtu协议开发,按照台达的地址进行实现。
The tcp communication class of Delta PLC is developed based on the Modbus-Tcp protocol and implemented according to Delta's address.
适用于DVP-ES/EX/EC/SS型号,DVP-SA/SC/SX/EH型号,地址参考API文档,同时地址可以携带站号信息,举例:[s=2;D100],[s=3;M100],可以动态修改当前报文的站号信息。
Suitable for DVP-ES/EX/EC/SS models, DVP-SA/SC/SX/EH models, the address refers to the API document, and the address can carry station number information, for example: [s=2;D100],[s= 3;M100], you can dynamically modify the station number information of the current message.
台湾永宏公司的编程口协议,具体的地址信息请查阅api文档信息,地址允许携带站号信息,例如:s=2;D100
The programming port protocol of Taiwan Yonghong company, please refer to the api document for specific address information, The address can carry station number information, such as s=2;D100
FatekProgram相关的辅助方法,例如报文构建,核心读写支持 计算指令的和校验码 指令 校验之后的信息 创建一条读取的指令信息,需要指定一些参数 PLC的站号 地址信息 数据长度 是否位读取 是否成功的结果对象 提取当前的结果数据信息,针对的是字单位的方式 PLC返回的数据信息 读取的长度内容 结果数组 创建一条别入bool数据的指令信息,需要指定一些参数 站号 地址 数组值 是否创建成功 创建一条别入byte数据的指令信息,需要指定一些参数,按照字单位 站号 地址 数组值 是否创建成功 检查PLC反馈的报文是否正确,如果不正确,返回错误消息 PLC反馈的报文信息 反馈的报文是否正确 根据错误码获取到真实的文本信息 错误码 错误的文本描述 批量读取PLC的字节数据,以字为单位,支持读取X,Y,M,S,D,T,C,R,RT,RC具体的地址范围需要根据PLC型号来确认,地址可以携带站号信息,例如 s=2;D100
Read PLC byte data in batches, in word units. Supports reading X, Y, M, S, D, T, C, R, RT, RC. The specific address range needs to be confirmed according to the PLC model, The address can carry station number information, such as s=2;D100
PLC通信的对象 设备的站点信息 地址信息 数据长度 读取结果信息
批量写入PLC的数据,以字为单位,也就是说最少2个字节信息,支持X,Y,M,S,D,T,C,R,RT,RC具体的地址范围需要根据PLC型号来确认,地址可以携带站号信息,例如 s=2;D100
The data written to the PLC in batches, in units of words, that is, at least 2 bytes of information, supporting X, Y, M, S, D, T, C, R, RT, and RC. The specific address range needs to be based on the PLC model To confirm, The address can carry station number information, such as s=2;D100
PLC通信的对象 设备的站号信息 地址信息,举例,D100,R200,RC100,RT200 数据值 是否写入成功
批量读取bool类型数据,支持的类型为X,Y,M,S,T,C,具体的地址范围取决于PLC的类型,地址可以携带站号信息,例如 s=2;M100
Read bool data in batches. The supported types are X, Y, M, S, T, C. The specific address range depends on the type of PLC, The address can carry station number information, such as s=2;M100
PLC通信对象 设备的站号信息 地址信息,比如X10,Y17,M100 读取的长度 读取结果信息
批量写入bool类型的数组,支持的类型为X,Y,M,S,T,C,具体的地址范围取决于PLC的类型,地址可以携带站号信息,例如 s=2;M100
Write arrays of type bool in batches. The supported types are X, Y, M, S, T, C. The specific address range depends on the type of PLC, The address can carry station number information, such as s=2;M100
PLC通信对象 站号信息 PLC的地址信息 数据信息 是否写入成功
台湾永宏公司的编程口协议,此处是基于tcp的实现,地址信息请查阅api文档信息,地址可以携带站号信息,例如 s=2;D100
The programming port protocol of Taiwan Yonghong company, here is the implementation based on TCP, please refer to the API information for the address information, The address can carry station number information, such as s=2;D100
支持位访问:M,X,Y,S,T(触点),C(触点),字访问:RT(当前值),RC(当前值),D,R;具体参照API文档 其所支持的地址形式如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 内部继电器 M M100,M200 10 输入继电器 X X10,X20 10 输出继电器 Y Y10,Y20 10 步进继电器 S S100,S200 10 定时器的触点 T T100,T200 10 定时器的当前值 RT RT100,RT200 10 × 计数器的触点 C C100,C200 10 计数器的当前 RC RC100,RC200 10 × 数据寄存器 D D1000,D2000 10 × 文件寄存器 R R100,R200 10 ×
实例化默认的构造方法
Instantiate the default constructor
使用指定的ip地址和端口来实例化一个对象
Instantiate an object with the specified IP address and port
设备的Ip地址 设备的端口号
PLC的站号信息,需要和实际的设置值一致,默认为1
The station number information of the PLC needs to be consistent with the actual setting value. The default is 1.
基于串口的自由协议,需要在地址里传入报文信息,也可以传入数据偏移信息,默认为 实例化一个默认的对象 基于TCP/IP协议的自由协议,需要在地址里传入报文信息,也可以传入数据偏移信息,默认为 实例化一个默认的对象 指定IP地址及端口号来实例化自由的TCP协议 Ip地址 端口 分析地址的方法,会转换成一个数据报文和数据结果偏移的信息 地址信息 报文结果内容 基于UDP/IP协议的自由协议,需要在地址里传入报文信息,也可以传入数据偏移信息,默认为 实例化一个默认的对象 指定IP地址及端口号来实例化自由的TCP协议 Ip地址 端口 富士PLC的SPB协议,详细的地址信息见api文档说明,地址可以携带站号信息,例如:s=2;D100,PLC侧需要配置无BCC计算,包含0D0A结束码
Fuji PLC's SPB protocol. For detailed address information, see the api documentation, The address can carry station number information, for example: s=2;D100, PLC side needs to be configured with no BCC calculation, including 0D0A end code
富士SPB的辅助类 将int数据转换成SPB可识别的标准的数据内容,例如 2转换为0200 , 200转换为0002 等待转换的数据内容 转换之后的数据内容 计算指令的和校验码 指令 校验之后的信息 创建一条读取的指令信息,需要指定一些参数,单次读取最大105个字 PLC的站号 地址信息 数据长度 是否成功的结果对象 创建一条读取的指令信息,需要指定一些参数,单次读取最大105个字 PLC的站号 地址信息 数据长度 是否成功的结果对象 创建一条读取多个地址的指令信息,需要指定一些参数,单次读取最大105个字 PLC的站号 地址信息 数据长度 是否位读取 是否成功的结果对象 创建一条别入byte数据的指令信息,需要指定一些参数,按照字单位,单次写入最大103个字 站号 地址 数组值 是否创建成功 创建一条别入byte数据的指令信息,需要指定一些参数,按照字单位,单次写入最大103个字 站号 地址 数组值 是否创建成功 检查反馈的数据信息,是否包含了错误码,如果没有包含,则返回成功 原始的报文返回 是否成功的结果对象 根据错误码获取到真实的文本信息 错误码 错误的文本描述 批量读取PLC的数据,以字为单位,支持读取X,Y,L,M,D,TN,CN,TC,CC,R,W具体的地址范围需要根据PLC型号来确认,地址可以携带站号信息,例如:s=2;D100
Read PLC data in batches, in units of words. Supports reading X, Y, L, M, D, TN, CN, TC, CC, R, W. The specific address range needs to be confirmed according to the PLC model, The address can carry station number information, for example: s=2;D100
PLC设备通信对象 当前的站号信息 地址信息 数据长度 读取结果信息 单次读取的最大的字数为105,如果读取的字数超过这个值,请分批次读取。
批量写入PLC的数据,以字为单位,也就是说最少2个字节信息,支持读取X,Y,L,M,D,TN,CN,TC,CC,R具体的地址范围需要根据PLC型号来确认,地址可以携带站号信息,例如:s=2;D100
The data written to the PLC in batches, in units of words, that is, a minimum of 2 bytes of information. It supports reading X, Y, L, M, D, TN, CN, TC, CC, and R. The specific address range needs to be based on PLC model to confirm, The address can carry station number information, for example: s=2;D100
PLC设备通信对象 当前的站号信息 地址信息,举例,D100,R200,TN100,CN200 数据值 是否写入成功 单次写入的最大的字数为103个字,如果写入的数据超过这个长度,请分批次写入
批量读取PLC的Bool数据,以位为单位,支持读取X,Y,L,M,D,TN,CN,TC,CC,R,W,例如 M100, 如果是寄存器地址,可以使用D10.12来访问第10个字的12位,地址可以携带站号信息,例如:s=2;M100
Read PLC's Bool data in batches, in units of bits, support reading X, Y, L, M, D, TN, CN, TC, CC, R, W, such as M100, if it is a register address, you can use D10. 12 to access the 12 bits of the 10th word, the address can carry station number information, for example: s=2;M100
PLC设备通信对象 当前的站号信息 地址信息,举例:M100, D10.12 读取的bool长度信息 Bool[]的结果对象
写入一个Bool值到一个地址里,地址可以是线圈地址,也可以是寄存器地址,例如:M100, D10.12,地址可以携带站号信息,例如:s=2;D10.12
Write a Bool value to an address. The address can be a coil address or a register address, for example: M100, D10.12. The address can carry station number information, for example: s=2;D10.12
PLC设备通信对象 当前的站号信息 地址信息,举例:M100, D10.12 写入的bool值 是否写入成功的结果对象
富士PLC的SPH通信协议,可以和富士PLC进行通信,默认CPU0,需要根据实际进行调整。 地址支持 M1.0, M3.0, M10.0 以及I0, Q0 地址支持的列表如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 M M1.0,M1.100 10 M M3.0,M3.100 10 M M10.0,M10.100 10 I I0,I100 10 Q Q0,Q100 10 实例化一个默认的对象
Instantiate a default object
指定IP地址和端口号来实例化一个对象
Specify the IP address and port number to instantiate an object
Ip地址 端口号
对于 CPU0-CPU7来说是CPU的站号,分为对应 0xFE-0xF7,对于P/PE link, FL-net是模块站号,分别对应0xF6-0xEF
CPU0 to CPU7: SX bus station No. of destination CPU (FEh to F7h); P/PE link, FL-net: SX bus station No. of destination module (F6H to EFH)
批量读取PLC的地址数据,长度单位为字。地址支持M1.1000,M3.1000,M10.1000,返回读取的原始字节数组。
Read PLC address data in batches, the length unit is words. The address supports M1.1000, M3.1000, M10.1000, and returns the original byte array read.
PLC的地址,支持M1.1000,M3.1000,M10.1000 读取的长度信息,按照字为单位 包含byte[]的原始字节数据内容
批量写入字节数组到PLC的地址里,地址支持M1.1000,M3.1000,M10.1000,返回是否写入成功。
Batch write byte array to PLC address, the address supports M1.1000, M3.1000, M10.1000, and return whether the writing is successful.
PLC的地址,支持M1.1000,M3.1000,M10.1000 写入的原始字节数据 是否写入成功
批量读取位数据的方法,需要传入位地址,读取的位长度,地址示例:M1.100.5,M3.1000.12,M10.1000.0
To read the bit data in batches, you need to pass in the bit address, the length of the read bit, address examples: M1.100.5, M3.1000.12, M10.1000.0
PLC的地址,示例:M1.100.5,M3.1000.12,M10.1000.0 读取的bool长度信息 包含bool[]的结果对象
批量写入位数据的方法,需要传入位地址,等待写入的boo[]数据,地址示例:M1.100.5,M3.1000.12,M10.1000.0
To write bit data in batches, you need to pass in the bit address and wait for the boo[] data to be written. Examples of addresses: M1.100.5, M3.1000.12, M10.1000.0
[警告] 由于协议没有提供位写入的命令,所有通过字写入间接实现,先读取字数据,修改中间的位,然后写入字数据,所以本质上不是安全的,确保相关的地址只有上位机可以写入。
[Warning] Since the protocol does not provide commands for bit writing, all are implemented indirectly through word writing. First read the word data, modify the bits in the middle, and then write the word data, so it is inherently not safe. Make sure that the relevant address is only The host computer can write.
PLC的地址,示例:M1.100.5,M3.1000.12,M10.1000.0 等待写入的bool数组 是否写入成功的结果对象
[Authorization] This command is used to start all the CPUs that exist in a configuration in a batch. Each CPU is cold-started or warm-started,depending on its condition. If a CPU is already started up, or if the key switch is set at "RUN" position, the CPU does not perform processing for startup, which, however, does not result in an error, and a response is returned normally 是否启动成功 [Authorization] This command is used to initialize and start all the CPUs that exist in a configuration in a batch. Each CPU is cold-started. If a CPU is already started up, or if the key switch is set at "RUN" position, the CPU does not perform processing for initialization and startup, which, however, does not result in an error, and a response is returned normally. 是否启动成功 [Authorization] This command is used to stop all the CPUs that exist in a configuration in a batch. If a CPU is already stopped, or if the key switch is set at "RUN" position, the CPU does not perform processing for stop, which, however, does not result in an error, and a response is returned normally. 是否停止成功 [Authorization] This command is used to stop all the CPUs that exist in a configuration in a batch. If a CPU is already stopped, or if the key switch is set at "RUN" position, the CPU does not perform processing for stop, which, however, does not result in an error, and a response is returned normally. 是否复位成功 [Authorization] This command is used to start an arbitrary CPU existing in a configuration by specifying it. The CPU may be cold-started or warm-started, depending on its condition. An error occurs if the CPU is already started. A target CPU is specified by a connection mode and connection ID. 是否启动成功 [Authorization] This command is used to initialize and start an arbitrary CPU existing in a configuration by specifying it. The CPU is cold-started. An error occurs if the CPU is already started or if the key switch is set at "RUN" or "STOP" position. A target CPU is specified by a connection mode and connection ID. 是否启动成功 [Authorization] This command is used to stop an arbitrary CPU existing in a configuration by specifying it. An error occurs if the CPU is already stopped or if the key switch is set at "RUN" or "STOP" position. A target CPU is specified by a connection mode and connection ID. 是否停止成功 [Authorization] This command is used to reset an arbitrary CPU existing in a configuration by specifying it. An error occurs if the key switch is set at "RUN" or "STOP" position. A target CPU is specified by a connection mode and connection ID. 是否复位成功 根据错误代号获取详细的错误描述信息 错误码 错误的描述文本 构建读取数据的命令报文 连接ID 读取的PLC的地址 读取的长度信息,按照字为单位 构建成功的读取报文命令 构建读取数据的命令报文 连接ID 读取的PLC的地址 读取的长度信息,按照字为单位 构建成功的读取报文命令 构建写入数据的命令报文 连接ID 写入的PLC的地址 原始数据内容 报文信息 从PLC返回的报文里解析出实际的数据内容,如果发送了错误,则返回失败信息 PLC返回的报文信息 是否成功的结果对象 富士PLC的SPB协议,详细的地址信息见api文档说明,地址可以携带站号信息,例如:s=2;D100,PLC侧需要配置无BCC计算,包含0D0A结束码
Fuji PLC's SPB protocol. For detailed address information, see the api documentation, The address can carry station number information, for example: s=2;D100, PLC side needs to be configured with no BCC calculation, including 0D0A end code
其所支持的地址形式如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 内部继电器 M M100,M200 10 读写字单位的时候,M2代表位的M32 输入继电器 X X10,X20 10 读取字单位的时候,X2代表位的X32 输出继电器 Y Y10,Y20 10 读写字单位的时候,Y2代表位的Y32 锁存继电器 L L100,L200 10 定时器的线圈 TC TC100,TC200 10 定时器的当前值 TN TN100,TN200 10 × 计数器的线圈 CC CC100,CC200 10 计数器的当前 CN CN100,CN200 10 × 数据寄存器 D D1000,D2000 10 读位的时候,D10.15代表第10个字的第15位 文件寄存器 R R100,R200 10 读位的时候,R10.15代表第10个字的第15位 链接寄存器 W W100,W200 10 读位的时候,W10.15代表第10个字的第15位
使用默认的构造方法实例化对象
Instantiate the object using the default constructor
使用指定的ip地址和端口来实例化一个对象
Instantiate an object with the specified IP address and port
设备的Ip地址 设备的端口号
PLC的站号信息
PLC station number information
[商业授权] 富士的SPB虚拟的PLC,线圈支持X,Y,M的读写,其中X只能远程读,寄存器支持D,R,W的读写操作。
[Authorization] Fuji's SPB virtual PLC, the coil supports X, Y, M read and write, X can only be read remotely, and the register supports D, R, W read and write operations.
实例化一个富士SPB的网口和串口服务器,支持数据读写操作 启动SPB串口的从机服务,使用默认的参数进行初始化串口,9600波特率,8位数据位,无奇偶校验,1位停止位
Start the slave service of modbus-rtu, initialize the serial port with default parameters, 9600 baud rate, 8 data bits, no parity, 1 stop bit
串口信息
启动SPB串口的从机服务,使用默认的参数进行初始化串口,8位数据位,无奇偶校验,1位停止位
Start the slave service of modbus-rtu, initialize the serial port with default parameters, 8 data bits, no parity, 1 stop bit
串口信息 波特率
启动SPB串口的从机服务,使用自定义的初始化方法初始化串口的参数
Start the slave service of modbus-rtu and initialize the parameters of the serial port using a custom initialization method
初始化信息的委托
关闭SPB的串口对象
Close the serial port object of modbus-rtu
接收到串口数据的时候触发 串口对象 消息 [商业授权] 富士的SPH虚拟的PLC,支持M1.0,M3.0,M10.0,I0,Q0的位与字的读写操作。
实例化一个基于SPH协议的虚拟的富士PLC对象,可以用来和进行通信测试。 振动传感器的加速度值 X轴的实时加速度 Y轴的实时加速度 Z轴的实时加速度 Geniitek-VB31 型号的智能无线振动传感器,来自苏州捷杰传感器技术有限公司 使用指定的ip,端口来实例化一个默认的对象 Ip地址信息 端口号信息 连接服务器,实例化客户端之后,至少要调用成功一次,如果返回失败,那些请过一段时间后重新调用本方法连接。
After connecting to the server, the client must be called at least once after instantiating the client. If the return fails, please call this method to connect again after a period of time.
连接是否成功
关闭Mqtt服务器的连接。
Close the connection to the Mqtt server.
设置读取震动传感器的状态数据
Set to read the status data of the shock sensor
是否发送成功
设置读取震动传感器的实时加速度
Set the real-time acceleration of the vibration sensor
是否发送成功
设置当前的震动传感器的数据发送间隔为指定的时间,单位为秒
Set the current vibration sensor data transmission interval to the specified time in seconds
时间信息,单位为秒 是否发送成功
震动传感器峰值数据事件委托
Shock sensor peak data event delegation
峰值信息
接收到震动传感器峰值数据时触发
Triggered when peak data of vibration sensor is received
震动传感器实时数据事件委托
Vibration sensor real-time data event delegation
实际信息
接收到震动传感器实时数据时触发
Triggered when real-time data from shock sensor is received
连接服务器成功的委托
Connection server successfully delegated
当客户端连接成功触发事件,就算是重新连接服务器后,也是会触发的
The event is triggered when the client is connected successfully, even after reconnecting to the server.
当网络发生异常的时候触发的事件,用户应该在事件里进行重连服务器 获取或设置当前客户端的连接超时时间,默认10,000毫秒,单位ms
Gets or sets the connection timeout of the current client. The default is 10,000 milliseconds. The unit is ms.
获取或设置当前的客户端假死超时检查时间,单位为秒,默认60秒,60秒内没有接收到传感器的数据,则强制重连。 当前设备的地址信息 根据地址,命令,数据,创建向传感器发送的数据信息 设备地址 命令 数据信息 原始的数据内容 检查当前的数据是否XOR校验成功 数据信息 校验结果 完整的数据报文信息 振动传感器的峰值数据类 X轴的加速度,单位 m/s2 Y轴的加速度,单位 m/s2 Z轴的加速度,单位 m/s2 X轴的速度,单位 mm/s Y轴的速度,单位 mm/s Z轴的速度,单位 mm/s X轴的位置,单位 um Y轴的位移,单位 um Z轴的位移,单位 um 温度,单位 摄氏度 电压,单位 伏特 数据的发送间隔,单位秒 短消息的报文内容 GE plc相关的辅助类对象 构建一个读取数据的报文信息,需要指定操作的数据代码,读取的参数信息
To construct a message information for reading data, you need to specify the data code of the operation and the parameter information to be read
消息号 操作代码 数据参数 包含是否成功的报文信息
构建一个读取数据的报文命令,需要指定消息号,读取的 GE 地址信息
To construct a message command to read data, you need to specify the message number and read GE address information
消息号 GE 的地址 包含是否成功的报文信息
构建一个读取数据的报文命令,需要指定消息号,地址,长度,是否位读取,返回完整的报文信息。
To construct a message command to read data, you need to specify the message number, address, length, whether to read in bits, and return the complete message information.
消息号 地址 读取的长度 包含是否成功的报文对象
构建一个批量写入 byte 数组变量的报文,需要指定消息号,写入的地址,地址参照 说明。
To construct a message to be written into byte array variables in batches, you need to specify the message number and write address. For the address, refer to the description of .
消息的序号 地址信息 byte数组的原始数据 包含结果信息的报文内容
构建一个批量写入 bool 数组变量的报文,需要指定消息号,写入的地址,地址参照 说明。
To construct a message to be written into bool array variables in batches, you need to specify the message number and write address. For the address, refer to the description of .
消息的序号 地址信息 bool数组 包含结果信息的报文内容
从PLC返回的数据中,提取出实际的数据内容,最少6个字节的数据。超出实际的数据长度的部分没有任何意义。
From the data returned by the PLC, extract the actual data content, at least 6 bytes of data. The part beyond the actual data length has no meaning.
PLC返回的数据信息 解析后的实际数据内容
从实际的时间的字节数组里解析出C#格式的时间对象,这个时间可能是时区0的时间,需要自行转化本地时间。
Analyze the time object in C# format from the actual time byte array. This time may be the time in time zone 0, and you need to convert the local time yourself.
字节数组 包含是否成功的结果对象
从实际的时间的字节数组里解析出PLC的程序的名称。
Parse the name of the PLC program from the actual time byte array
字节数组 包含是否成功的结果对象
Ge(通用电气)集团的SRTP协议实现的客户端,支持 I,Q,M,T,SA,SB,SC,S,G 的位和字节读写,支持 AI,AQ,R 的字读写操作,支持读取PLC时间,程序名操作
The client implemented by Ge (General Electric) Group's SRTP protocol, supports I, Q, M, T, SA, SB, SC, S, G bit and byte read and write, supports AI, AQ, R word read and write Operation, support reading PLC time, program name operation
PLC的端口号默认18245,其中读取R,AI,AQ寄存器的原始字节时,传入的长度参数为字节长度。
对其他寄存器而言,M1-M8的位读取,相当于 M1的字节读取。写入也是同理。
地址支持的列表如下: 地址名称 地址代号 示例 地址进制 位操作 字节操作 备注 Discrete Inputs I I1,I100 10 注意:读位和字节,属于不同的地址 Discrete Outputs Q Q1,Q100 10 注意:读位和字节,属于不同的地址 Discrete Internals M M1,M100 10 注意:读位和字节,属于不同的地址 Discrete Temporaries T T1,T100 10 注意:读位和字节,属于不同的地址 SA Discrete SA SA1,SA100 10 注意:读位和字节,属于不同的地址 SB Discrete SB SB1,SB100 10 注意:读位和字节,属于不同的地址 SC Discrete SC SC1,SC100 10 注意:读位和字节,属于不同的地址 S Discrete S S1,S100 10 注意:读位和字节,属于不同的地址 Genius Global Data G G1,G100 10 注意:读位和字节,属于不同的地址 Analog Inputs AI AI1,AI100 10 × 虽然读取的时候,长度是字节,但是实际是字单位的,所以不支持 ReadByte Analog Outputs QI QI1,QI100 10 × 虽然读取的时候,长度是字节,但是实际是字单位的,所以不支持 ReadByte Registers R R1,R100 10 × 虽然读取的时候,长度是字节,但是实际是字单位的,所以不支持 ReadByte 对于 AI,AQ,R 类型的数据来说,底层是以字为单位的,但是调用 来读取原始数据时,需要传入2被的字长度,对于其他方法不影响 假设起始地址为R1,R1存储了温度,100.6℃值为1006,R2存储了压力,1.23Mpa值为123,R3-R4存储了产量计数,读取如下: 以下是读取不同类型数据的示例
实例化一个默认的对象
Instantiate a default object
指定IP地址和端口号来实例化一个对象
Specify the IP address and port number to instantiate an object
Ip地址 端口号
批量读取字节数组信息,需要指定地址和长度,返回原始的字节数组,支持 I,Q,M,T,SA,SB,SC,S,G 的位和字节读写,支持 AI,AQ,R 的字读写操作,地址示例:R1,M1
Batch read byte array information, need to specify the address and length, return the original byte array. Support I, Q, M, T, SA, SB, SC, S, G bit and byte read and write, support AI, AQ, R word read and write operations, address examples: R1, M1
其中读取R,AI,AQ寄存器的原始字节时,传入的长度参数为字节长度。长度为10,返回10个字节数组信息,如果返回长度不满6个字节的,一律返回6个字节的数据 数据地址 数据长度 带有成功标识的byte[]数组
根据指定的地址来读取一个字节的数据,按照字节为单位,例如 M1 字节,就是指 M1-M8 位组成的字节,M2 字节就是 M9-M16 组成的字节。不支持对 AI,AQ,R 寄存器的字节读取
A byte of data is read according to the specified address, and the unit is byte. For example, M1 byte refers to a byte composed of M1-M8 bits, and M2 byte is a byte composed of M9-M16. Does not support byte reading of AI, AQ, R registers
地址信息 带有成功标识的 数据
向PLC中写入byte数据,返回是否写入成功
Write byte data to PLC and return whether the writing is successful
起始地址,格式为I100,M100,Q100,DB20.100 -> Starting address, formatted as I100,mM100,Q100,DB20.100 byte数据 -> Byte data 是否写入成功的结果对象 -> Whether to write a successful result object
按照位为单位,批量从指定的地址里读取 bool 数组数据,不支持 AI,AQ,R 地址类型,地址比如从1开始,例如 I1,Q1,M1,T1,SA1,SB1,SC1,S1,G1
In units of bits, read bool array data from the specified address in batches. AI, AQ, R address types are not supported. For example, the address starts from 1, such as I1, Q1, M1, T1, SA1, SB1, SC1, S1, G1
PLC的地址信息,例如 M1, G1 读取的长度信息,按照位为单位 包含是否读取成功的bool数组
按照位为单位,批量写入 bool 数组到指定的地址里,不支持 AI,AQ,R 地址类型,地址比如从1开始,例如 I1,Q1,M1,T1,SA1,SB1,SC1,S1,G1
In units of bits, write bool arrays in batches to the specified addresses. AI, AQ, and R address types are not supported. For example, the address starts from 1, such as I1, Q1, M1, T1, SA1, SB1, SC1, S1, G1
PLC的地址信息,例如 M1, G1 bool 数组 是否写入成功的结果对象
[商业授权] 读取PLC当前的时间,这个时间可能是不包含时区的,需要自己转换成本地的时间。
[Authorization] Read the current time of the PLC, this time may not include the time zone, you need to convert the local time yourself.
包含是否成功的时间信息
[商业授权] 读取PLC当前的程序的名称
[Authorization] Read the name of the current program of the PLC
包含是否成的程序名称信息
[商业授权] Ge的SRTP协议实现的虚拟PLC,支持I,Q,M,T,SA,SB,SC,S,G的位和字节读写,支持AI,AQ,R的字读写操作,支持读取当前时间及程序名称。
[Authorization] Virtual PLC implemented by Ge's SRTP protocol, supports bit and byte read and write of I, Q, M, T, SA, SB, SC, S, G, supports word read and write operations of AI, AQ, R, and supports reading Current time and program name.
实例化之后,直接调用 方法就可以通信及交互,所有的地址都是从1开始的,地址示例:M1,M100, R1, 具体的用法参考 HslCommunicationDemo 相关界面的源代码。 地址的示例,参考 相关的示例说明
实例化一个默认的对象
Instantiate a default object
身份证的信息类 名字 性别 身份证号 民族 生日 地址 发证机关 有效期日期的起始日期 有效期日期的结束日期 头像信息 返回表示当前对象的字符串 字符串 基于SAM协议的串口通信类,支持读取身份证的数据信息,详细参见API文档
Network class implemented by Tcp based on the SAM protocol, which supports reading ID card data information, see API documentation for details
在使用之前需要实例化当前的对象,然后根据实际的情况填写好串口的信息,否则连接不上去。 在实际的读取,我们一般放在后台进行循环扫描的操作,参见下面的代码
将指令进行打包成可以发送的数据对象 命令信息 字节数组 根据SAM的实际的指令,来生成实际的指令信息 命令码 参数信息 数据内容 字符串的结果信息 检查当前的接收数据信息是否一条完整的数据信息 输入的信息 是否接收完成 检查当前的指令是否是正确的 输入的指令信息 是否校验成功 提炼安全的模块数据信息 数据 结果对象 从数据中提取出真实的身份证信息 原始数据内容 包含结果对象的身份证数据 根据民族的代号来获取到民族的文本描述信息 民族代码 民族的文本信息 枚举当前的所有的民族信息,共计五十六个民族 枚举信息 获取错误的文本信息 错误号 错误信息 基于SAM协议的Tcp实现的网络类,支持读取身份证的数据信息,通过透传的形式实现,除了初始化和串口类不一致,调用方法是几乎一模一样的,详细参见API文档
The network class implemented by Tcp based on the SAM protocol supports reading ID card data information and is implemented in the form of transparent transmission. Except for the inconsistency between the initialization and the serial port class, the calling method is almost the same. See the API documentation for details
在使用之前需要实例化当前的对象,然后根据实际的情况填写好串口的信息,否则连接不上去。 在实际的读取,我们一般放在后台进行循环扫描的操作,参见下面的代码 当然也支持全异步的操作了,就是方法的名称改改
实例化一个默认的对象
Instantiate a default object
通过指定的ip地址以及端口来实例化对象
Instantiate the object with the specified IP address and port
ip地址 端口号
读取身份证设备的安全模块号
Read the security module number of the ID device
结果数据内容
检测安全模块状态
Detecting Security Module Status
返回是否检测成功
寻找卡片,并返回是否成功
Find cards and return success
是否寻找成功
选择卡片,并返回是否成功
Select card and return success
是否寻找成功
读取卡片,如果成功的话,就返回身份证的所有的信息
Read the card, if successful, return all the information of the ID cards
是否寻找成功
汇川PLC的辅助类,提供一些地址解析的方法
Auxiliary class of Yaskawa robot, providing some methods of address resolution
根据汇川PLC的地址,解析出转换后的modbus协议信息,适用AM,H3U,H5U系列的PLC
According to the address of Inovance PLC, analyze the converted modbus protocol information, which is suitable for AM, H3U, H5U series PLC
PLC的系列 汇川plc的地址信息 原始的对应的modbus信息 Modbus格式的地址
汇川的串口通信协议,A适用于AM400、 AM400_800、 AC800、H3U, XP, H5U 等系列底层走的是MODBUS-RTU协议,地址说明参见标记
Huichuan's serial communication protocol is applicable to AM400, AM400_800, AC800 and other series. The bottom layer is MODBUS-RTU protocol. For the address description, please refer to the mark
AM400_800 的元件有 Q 区,I 区,M 区这三种,分别都可以按位,按字节,按字和按双字进行访问,在本组件的条件下,仅支持按照位,字访问。
位地址支持 Q, I, M 地址类型,字地址支持 SM, SD,支持对字地址的位访问,例如 ReadBool("SD0.5"); H3U 系列控制器支持 M/SM/S/T/C/X/Y 等 bit 型变量(也称线圈) 的访问、 D/SD/R/T/C 等 word 型变量的访问;
H5U 系列控制器支持 M/B/S/X/Y 等 bit 型变量(也称线圈) 的访问、 D/R 等 word 型变量的访问;内部 W 元件,不支持通信访问。
对于AM400_800系列的地址表如下: 地址名称 地址代号 地址范围 地址进制 备注 输出 Q Q0.0-Q8191.7 或是 Q0-Q65535 8 或是 10 位读写 输入 I IX0.0-IX8191.7 或是 I0-I65535 8 或是 10 位读写 M寄存器 M MW0-MW65535 10 按照字访问的 针对AM600的TCP还支持下面的两种地址读写 地址名称 地址代号 地址范围 地址进制 备注 SM SM0.0-SM8191.7 或是 SM0-SM65535 10 位读写 SD SDW0-SDW65535 10 字读写 我们再来看看H3U系列的线圈、 位元件、位变量地址定义 地址名称 地址代号 地址范围 地址进制 备注 中间寄电器 M M0-M7679,M8000-M8511 10 SM SM0-SM1023 10 S S0-S4095 10 定时器 T T0-T511 10 计数器 C C0-C255 10 输入 X X0-X377 或者X0.0-X37.7 8 输出 Y Y0-Y377 或者Y0.0-Y37.7 8 寄存器、 字元件、字变量地址定义: 地址名称 地址代号 地址范围 地址进制 备注 数据寄存器 D D0-D8511 10 数据寄存器 SD SD0-SD1023 10 R R0-R32767 10 定时器 T T0-T511 10 计数器 C C0-C199,C200-C255 10 其实C200-C255的计数器是32位的 我们再来看看XP系列,就是少了一点访问的数据类型,然后,地址范围也不一致
线圈、 位元件、位变量地址定义 地址名称 地址代号 地址范围 地址进制 备注 中间寄电器 M M0-M3071,M8000-M8511 10 S S0-S999 10 定时器 T T0-T255 10 计数器 C C0-C255 10 输入 X X0-X377 或者X0.0-X37.7 8 输出 Y Y0-Y377 或者Y0.0-Y37.7 8 寄存器、 字元件、字变量地址定义: 地址名称 地址代号 地址范围 地址进制 备注 数据寄存器 D D0-D8511 10 定时器 T T0-T255 10 计数器 C C0-C199,C200-C255 10 其实C200-C255的计数器是32位的
实例化一个默认的对象 指定服务器地址,端口号,客户端自己的站号来初始化
Specify the server address, port number, and client's own station number to initialize
客户端自身的站号
指定服务器地址,端口号,客户端自己的站号来初始化
Specify the server address, port number, and client's own station number to initialize
PLC的系列选择 客户端自身的站号
获取或设置汇川的系列,默认为AM系列 汇川的串口转网口通信协议,A适用于AM400、 AM400_800、 AC800、H3U, XP, H5U 等系列底层走的是MODBUS-RTU协议,地址说明参见标记
Huichuan's serial communication protocol is applicable to AM400, AM400_800, AC800 and other series. The bottom layer is MODBUS-RTU protocol. For the address description, please refer to the mark
AM400_800 的元件有 Q 区,I 区,M 区这三种,分别都可以按位,按字节,按字和按双字进行访问,在本组件的条件下,仅支持按照位,字访问。
位地址支持 Q, I, M 地址类型,字地址支持 SM, SD,支持对字地址的位访问,例如 ReadBool("SD0.5");
H3U 系列控制器支持 M/SM/S/T/C/X/Y 等 bit 型变量(也称线圈) 的访问、 D/SD/R/T/C 等 word 型变量的访问;
H5U 系列控制器支持 M/B/S/X/Y 等 bit 型变量(也称线圈) 的访问、 D/R 等 word 型变量的访问;内部 W 元件,不支持通信访问。
实例化一个默认的对象 通过指定站号,ip地址,端口号来实例化一个新的对象 Ip地址 端口号 站号信息 通过指定站号,IP地址,端口以及PLC的系列来实例化一个新的对象
Instantiate a new object by specifying the station number and PLC series
PLC的系列 Ip地址 端口号 站号信息
获取或设置汇川的系列,默认为AM系列 汇川的系列枚举信息 适用于AM400、 AM400_800、 AC800 等系列 适用于H3U, XP 等系列 适用于H5U 系列 汇川的网口通信协议,A适用于AM400、 AM400_800、 AC800、H3U, XP, H5U 等系列底层走的是MODBUS-TCP协议,地址说明参见标记
Huichuan's serial communication protocol is applicable to AM400, AM400_800, AC800 and other series. The bottom layer is MODBUS-RTU protocol. For the address description, please refer to the mark
AM400_800 的元件有 Q 区,I 区,M 区这三种,分别都可以按位,按字节,按字和按双字进行访问,在本组件的条件下,仅支持按照位,字访问。
位地址支持 Q, I, M 地址类型,字地址支持 SM, SD,支持对字地址的位访问,例如 ReadBool("SD0.5"); H3U 系列控制器支持 M/SM/S/T/C/X/Y 等 bit 型变量(也称线圈) 的访问、 D/SD/R/T/C 等 word 型变量的访问;
H5U 系列控制器支持 M/B/S/X/Y 等 bit 型变量(也称线圈) 的访问、 D/R 等 word 型变量的访问;内部 W 元件,不支持通信访问。
实例化一个默认的对象 通过指定站号,ip地址,端口号来实例化一个新的对象 Ip地址 端口号 站号信息 通过指定站号,IP地址,端口以及PLC的系列来实例化一个新的对象
Instantiate a new object by specifying the station number and PLC series
PLC的系列 Ip地址 端口号 站号信息
获取或设置汇川的系列,默认为AM系列 基恩士SR2000系列扫码设备的通用接口 Keyence PLC的数据类型,此处包含了几个常用的类型 如果您清楚类型代号,可以根据值进行扩展 数据类型的代号 0或1,默认为0 ASCII格式的类型信息 指示地址的多少进制的,10或是16 类型的代号值 数据的类型,0代表按字,1代表按位 当以ASCII格式通讯时的类型描述 指示地址是10进制,还是16进制的 X输入继电器 Y输出继电器 链接继电器 内部辅助继电器 锁存继电器 控制继电器 控制存储器 数据存储器 文件寄存器 文件寄存器 链路寄存器 计时器(当前值) 计时器(接点) 计数器(当前值) 计数器(接点) 基恩士PLC的数据通信类,使用QnA兼容3E帧的通信协议实现,使用ASCII的格式,地址格式需要进行转换成三菱的格式,详细参照备注说明
Keyence PLC's data communication class is implemented using QnA compatible 3E frame communication protocol. It uses ascii format. The address format needs to be converted to Mitsubishi format.
基恩士PLC的数据通信类,使用QnA兼容3E帧的通信协议实现,使用二进制的格式,地址格式需要进行转换成三菱的格式,详细参照备注说明
Keyence PLC's data communication class is implemented using QnA compatible 3E frame communication protocol. It uses binary format. The address format needs to be converted to Mitsubishi format.
地址的输入的格式说明如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 KV-7500/7300 KV-5500/5000/3000 KV Nano 输入继电器 X X100,X1A0 16 R00000~R99915 R00000~R99915 R00000~R59915 输出继电器 Y Y100,Y1A0 16 R00000~R99915 R00000~R99915 R00000~R59915 链接继电器 B B100,B1A0 16 B0000~B7FFF B0000~B3FFF B0000~B1FFF 内部辅助继电器 M M100,M200 10 MR00000~MR99915 MR00000~MR99915 MR00000~MR59915 锁存继电器 L L100,L200 10 LR00000~LR99915 LR00000~LR99915 LR00000~LR19915 控制继电器 SM SM100,SM200 10 CR0000~CR7915 CR0000~CR3915 CR0000~CR8915 控制存储器 SD SD100,SD200 10 × CM0000~CM5999 CM0000~CM5999 CM0000~CM8999 数据存储器 D D100,D200 10 × DM00000~DM65534 DM00000~DM65534 DM00000~DM32767 扩展数据存储器 D D100000~D165534 10 × EM00000~EM65534 EM00000~EM65534 × 文件寄存器 R R100,R200 10 × FM00000~FM32767 FM00000~FM32767 × 文件寄存器 ZR ZR100,ZR1A0 16 × ZF000000~ZF524287 ZF000000~ZF131071 × 链路寄存器 W W100,W1A0 16 × W0000~7FFF W0000~3FFF W0000~3FFF 定时器(当前值) TN TN100,TN200 10 × T0000~T3999 T0000~T3999 T000~T511 定时器(接点) TS TS100,TS200 10 T0000~T3999 T0000~T3999 T000~T511 计数器(当前值) CN CN100,CN200 10 × C0000~C3999 C0000~C3999 C000~C255 计数器(接点) CS CS100,CS200 10 C0000~C3999 C0000~C3999 C000~C255
实例化基恩士的Qna兼容3E帧协议的通讯对象
Instantiate Keyence Qna compatible 3E frame protocol communication object
指定ip地址及端口号来实例化一个基恩士的Qna兼容3E帧协议的通讯对象
Specify an IP address and port number to instantiate a Keynes Qna compatible 3E frame protocol communication object
PLC的Ip地址 PLC的端口
KeyenceNano的基本辅助方法 连接PLC的命令报文
Command message to connect to PLC
当前PLC的站号信息 是否启动站号命令
断开PLC连接的命令报文
Command message to disconnect PLC
当前PLC的站号信息 是否启动站号命令
获取当前的地址类型是字数据的倍数关系 地址的类型 倍数关系 建立读取PLC数据的指令,需要传入地址数据,以及读取的长度,地址示例参照类的说明文档
To create a command to read PLC data, you need to pass in the address data, and the length of the read. For an example of the address, refer to the class documentation
软元件地址 读取长度 是否建立成功
建立写入PLC数据的指令,需要传入地址数据,以及写入的数据信息,地址示例参照类的说明文档
To create a command to write PLC data, you need to pass in the address data and the written data information. For an example of the address, refer to the class documentation
软元件地址 转换后的数据 是否成功的信息
构建写入扩展单元缓冲寄存器的报文命令,需要传入单元编号,地址,写入的数据,实际写入的数据格式才有无符号的方式
To construct a message command to write to the buffer register of the expansion unit, the unit number, address, and data to be written need to be passed in, and the format of the actually written data is unsigned.
单元编号0~48 地址0~32767 写入的数据信息,单次交互最大256个字 包含是否成功的报文对象
建立写入bool数据的指令,针对地址类型为 R,CR,MR,LR
Create instructions to write bool data, address type is R, CR, MR, LR
软元件地址 转换后的数据 是否成功的信息
批量写入数据位到plc地址,针对地址格式为 R,B,CR,MR,LR,VB
Write data bits in batches to the plc address, and the address format is R, B, CR, MR, LR, VB
PLC的地址 等待写入的bool数组 写入bool数组的命令报文
校验读取返回数据状态,主要返回的第一个字节是不是E
Check the status of the data returned from reading, whether the first byte returned is E
反馈信息 是否成功的信息
校验写入返回数据状态,检测返回的数据是不是OK
Verify the status of the returned data written and check whether the returned data is OK
反馈信息 是否成功的信息
从PLC反馈的数据进行提炼Bool操作
Refine Bool operation from data fed back from PLC
地址的数据类型 PLC反馈的真实数据 数据提炼后的真实数据
从PLC反馈的数据进行提炼操作
Refining operation from data fed back from PLC
地址的数据类型 PLC反馈的真实数据 数据提炼后的真实数据
解析数据地址成不同的Keyence地址类型
Parse data addresses into different keyence address types
数据地址 地址结果对象
[商业授权] 查询PLC的型号信息
[Authorization] Query PLC model information
PLC通信对象 包含型号的结果对象
[商业授权] 读取当前PLC的模式,如果是0,代表 PROG模式或者梯形图未登录,如果为1,代表RUN模式
[Authorization] Read the current PLC mode, if it is 0, it means PROG mode or the ladder diagram is not registered, if it is 1, it means RUN mode
PLC通信对象 包含模式的结果对象
[商业授权] 设置PLC的时间
[Authorization] Set PLC time
PLC通信对象 时间数据 是否设置成功
[商业授权] 读取指定软元件的注释信息
[Authorization] Read the comment information of the specified device
PLC通信对象 软元件的地址 软元件的注释信息
[商业授权] 从扩展单元缓冲存储器连续读取指定个数的数据,单位为字
[Authorization] Continuously read the specified number of data from the expansion unit buffer memory, the unit is word
PLC的通信对象 单元编号 偏移地址 读取的长度,单位为字 包含是否成功的原始字节数组
[商业授权] 将原始字节数据写入到扩展的缓冲存储器,需要指定单元编号,偏移地址,写入的数据
[Authorization] To write the original byte data to the extended buffer memory, you need to specify the unit number, offset address, and write data
PLC通信对象信息 单元编号 偏移地址 等待写入的原始字节数据 是否写入成功的结果对象
基恩士KV上位链路串口通信的对象,适用于Nano系列串口数据,KV1000以及L20V通信模块,地址格式参考api文档
Keyence KV upper link serial communication object, suitable for Nano series serial data, and L20V communication module, please refer to api document for address format
位读写的数据类型为 R,B,MR,LR,CR,VB,以及读定时器的计数器的触点,字读写的数据类型为 DM,EM,FM,ZF,W,TM,Z,AT,CM,VM 双字读写为T,C,TC,CC,TS,CS。如果想要读写扩展的缓存器,地址示例:unit=2;1000 前面的是单元编号,后面的是偏移地址
注意:在端口 2 以多分支连接 KV-L21V 时,请一定加上站号。在将端口 2 设定为使用 RS-422A、 RS-485 时, KV-L21V 即使接收本站以外的带站号的指令,也将变为无应答,不返回响应消息。
实例化基恩士的串口协议的通讯对象
Instantiate the communication object of Keyence's serial protocol
基恩士KV上位链路协议的通信对象,适用于KV5000/5500/3000,KV1000,KV700,以及L20V通信模块,本类是基于tcp通信
The communication object of KEYENCE KV upper link protocol is suitable for KV5000/5500/3000, KV1000, KV700, and L20V communication modules. This type is based on tcp communication
位读写的数据类型为 R,B,MR,LR,CR,VB,以及读定时器的计数器的触点,字读写的数据类型为 DM,EM,FM,ZF,W,TM,Z,AT,CM,VM 双字读写为T,C,TC,CC,TS,CS。如果想要读写扩展的缓存器,地址示例:unit=2;1000 前面的是单元编号,后面的是偏移地址
注意:在端口 2 以多分支连接 KV-L21V 时,请一定加上站号。在将端口 2 设定为使用 RS-422A、 RS-485 时, KV-L21V 即使接收本站以外的带站号的指令,也将变为无应答,不返回响应消息。
地址示例如下: 当读取Bool的输入的格式说明如下: 地址名称 地址代号 示例 地址范围 备注 继电器 R R0,R100 0-59915 链路继电器 B B0,B100 0-3FFF KV5500/KV5000/KV3000 控制继电器 CR CR0,CR100 0-3915 内部辅助继电器 MR MR0,MR100 0-99915 锁存继电器 LR LR0,LR100 0-99915 工作继电器 VB VB0,VB100 0-3FFF KV5500/KV5000/KV3000 定时器 T T0,T100 0-3999 通断 计数器 C C0,C100 0-3999 通断 高速计数器 CTH CTH0,CTH1 0-1 通断 高速计数器比较器 CTC CTC0,CTC1 0-1 通断 读取数据的地址如下: 地址名称 地址代号 示例 地址范围 备注 数据存储器 DM DM0,DM100 0-65534 控制存储器 CM CM0,CM100 0-11998 临时数据存储器 TM TM0,TM100 0-511 扩展数据存储器 EM EM0,EM100 0-65534 扩展数据存储器 FM FM0,FM100 0-32766 变址寄存器 Z Z1,Z5 1-12 数字微调器 AT AT0,AT5 0-7 链路寄存器 W W1,W5 0-3FFF KV5500/KV5000/KV3000 工作寄存器 VM VM1,VM5 0-59999 KV5500/KV5000/KV3000 定时器 T T0,T100 0-3999 当前值(current value), 读int 计数器 C C0,C100 0-3999 当前值(current value), 读int
实例化一个默认的对象
Instantiate a default object
使用指定的ip地址和端口号来初始化对象
Initialize the object with the specified IP address and port number
Ip地址数据 端口号
获取或设置当前的站号信息,在RS232连接模式下,设置为0,如果是RS485/RS422连接下,必须设置正确的站号
Get or set the current station number information. In RS232 connection mode, set it to 0. If it is RS485/RS422 connection, you must set the correct station number.
获取或设置当前是否启用站号信息,当不启动站号时,在连接和断开的时候,将不使用站号报文。
Get or set whether the station number information is currently enabled or not. When the station number is not activated, the station number message will not be used when connecting and disconnecting.
基恩士的上位链路协议的虚拟服务器 实例化一个基于上位链路协议的虚拟的基恩士PLC对象,可以用来和进行通信测试。 基恩士PLC的各种系列选择 KV5500系列 KV5000系列 KV3000系列 KV1000系列 KV700系列 当前SR2000的辅助函数 读取条码信息,返回最终读取的条码数据
Read the barcode information and return the finally read barcode data
核心交互的方法 条码信息
复位命令,响应后,进行复位动作。
Reset command, after responding, reset action.
核心交互的方法 返回是否成功的结果对象
打开指示灯
Turn on the indicator
核心交互的方法 返回是否成功的结果对象
关闭指示灯
Turn off the indicator
核心交互的方法 返回是否成功的结果对象
读取基恩士的版本
Read Keyence's version
核心交互的方法 版本信息
读取基恩士的命令状态,none:不处理;wait:等待设置反映;update:正在更新
Read the command status of Keyence, none: do not process; wait: wait for the setting to reflect; update: update
核心交互的方法 返回是否成功的结果对象
读取基恩士的错误状态
Read the error status of Keyence
核心交互的方法 返回是否成功的结果对象
读取IN端子的状况,需要传入哪个IN端子,返回是否通断
Read the status of the IN terminal, which IN terminal needs to be passed in, and return whether it is on or off
端子的信息 核心交互的方法 返回是否成功的结果对象
设置OUT端子的使能,需要传入哪个OUT端子,返回是否设置成功!
Set the enable of the OUT terminal, which OUT terminal needs to be passed in, and return whether the setting is successful!
端子的索引,1,2,3 是否通断 核心交互的方法 返回是否成功的结果对象
读取扫码器的扫码记录,返回数组数据,分别是成功次数,失败次数,ERROR次数,稳定次数,时机输入次数
Read the scan code record of the scanner and return the array data, which are the number of successes, failures, ERRORs, stable times, and timing input times.
核心交互的方法 返回是否成功的结果对象
锁定扫码设备
Lock scanning device
核心交互的方法 返回是否成功的结果对象
解除锁定的扫码设备
Unlock Scanning Device
核心交互的方法 返回是否成功的结果对象
读取自定义的命令,例如LON,如果是包含其他参数的,比如打开OUT端子,OUTON,1
Read custom commands, such as LON, if it contains other parameters, such as open OUT terminal, OUTON,1
自定义的命令 核心的数据交互方法 返回是否成功的结果对象
获取操作代码包含的错误文本信息
Get the error text information contained in the operation code
错误代码 真是的错误信息
基恩士的SR2000的扫码设备,可以进行简单的交互 当使用 "LON","LOFF","PRON","PROFF" 命令时,在发送时和发生错误时,将不会收到扫码设备的回发命令,而是输出读取结果。 如果也希望获取上述命令的响应时,请在以下位置进行设置。[设置列表]-[其他]-"指定基本命令的响应字符串" 实例化基恩士的SR2000的扫码设备通讯对象
Instantiate keyence's SR2000 scan code device communication object
指定ip地址及端口号来实例化一个基恩士的SR2000的扫码设备通讯对象
Specify the ip address and port number to instantiate a keyence SR2000 scan code device communication object
PLC的Ip地址 PLC的端口
Knx协议 返回数据的委托 返回需要写入KNX总线的应答报文(应答数据) 返回需要写入的KNX系统的报文(写入数据) 获取数据的委托 返回从knx系统得到的数据 序号计数 通道 连接状态 关闭KNX连接 通道号 本机IP 返回握手报文 本机ip地址 KNX报文解析 写入数据到KNX系统 地址 长度 数据 从KNX获取数据 连接保持(每隔1s发送一次到设备) 暂时没有注释 返回连接状态 从握手回复报文获取通道号 解析控制包头和CEMI 具体解析CEMI Knx驱动,具体的用法参照demo 感谢上海NULL提供的技术支持 实例化一个默认的对象 通道号(由设备发来) 远程ip地址 本机IP地址 系统的日志信息 当前的状态是否连接中 通信指令类 和KNX网络进行握手并开始监听 保持KNX连接 关闭连接 将报文写入KNX系统 地址 长度 数据 读取指定KNX组地址 地址 Cnet的辅助类 根据错误号,获取到真实的错误描述信息
According to the error number, get the real error description information
错误号 真实的错误描述信息
AnalysisAddress IX0.0.0 QX0.0.0 MW1.0 MB1.0 PLC的地址信息 是否输入输出的情况 实际的偏移地址 NumberStyles HexNumber AnalysisAddress start address analysis result reading address Type of ReadByte plc station address, for example: M100, D100, DW100 read length command bytes Multi reading address Type of Read Individual plc station address, for example: MX100, PX100 build read command. station start address address length command write data to address Type of ReadByte plc station address, for example: M100, D100, DW100 source value command bytes write data to address Type of One plc station address, for example: M100, D100, DW100 source value command bytes write data to address Type of ReadByte plc station address, for example: M100, D100, DW100 source value command bytes 从PLC的指定地址读取原始的字节数据信息,地址示例:MB100, MW100, MD100, 如果输入了M100等同于MB100
Read the original byte data information from the designated address of the PLC. Examples of addresses: MB100, MW100, MD100, if the input M100 is equivalent to MB100
地址类型支持 P,M,L,K,F,T,C,D,R,I,Q,W, 支持携带站号的形式,例如 s=2;MW100 PLC通信对象 站号信息 PLC的地址信息,例如 M100, MB100, MW100, MD100 读取的长度信息 返回是否读取成功的结果对象
从PLC设备读取多个地址的数据信息,返回连续的字节数组,需要按照实际情况进行按顺序解析。
Read the data information of multiple addresses from the PLC device and return a continuous byte array, which needs to be parsed in order according to the actual situation.
PLC通信对象 站号信息 PLC的地址信息,例如 M100, MB100, MW100, MD100 结果对象数据
将原始数据写入到PLC的指定的地址里,地址示例:MB100, MW100, MD100, 如果输入了M100等同于MB100
Write the original data to the designated address of the PLC. Examples of addresses: MB100, MW100, MD100, if input M100 is equivalent to MB100
PLC通信对象 站号信息 PLC的地址信息,例如 M100, MB100, MW100, MD100 等待写入的原始数据内容 是否写入成功
从PLC的指定地址读取原始的位数据信息,地址示例:MX100, MX10A
Read the original bool data information from the designated address of the PLC. Examples of addresses: MX100, MX10A
地址类型支持 P,M,L,K,F,T,C,D,R,I,Q,W, 支持携带站号的形式,例如 s=2;MX100 PLC通信对象 站号信息 PLC的地址信息,例如 MX100, MX10A 返回是否读取成功的结果对象
将bool数据写入到PLC的指定的地址里,地址示例:MX100, MX10A
Write the bool data to the designated address of the PLC. Examples of addresses: MX100, MX10A
地址类型支持 P,M,L,K,F,T,C,D,R,I,Q,W, 支持携带站号的形式,例如 s=2;MX100 PLC通信对象 站号信息 PLC的地址信息,例如 MX100, MX10A bool值信息 返回是否读取成功的结果对象
It is determined to be the XGK/I/R series through a reserved area Cpu status 运行中 运行停止 错误状态 调试模式 using FlagBit in Marker for Byte
M0.0=1;M0.1=2;M0.2=4;M0.3=8;==========================>M0.7=128
입출력(Bit) 보조릴레이(Bit) 링크릴레이(Bit) Keep릴레이(Bit) 특수릴레이(Bit) 타이머(현재값)(Word) 카운터(현재값)(Word) 통신 데이터레지스터(Word) 파일 레지스터(Word) 파일 레지스터(Word) 파일 레지스터(Word) 입출력(Bit) 보조릴레이(Bit) 링크릴레이(Bit) Keep릴레이(Bit) 특수릴레이(Bit) 타이머(현재값)(Word) 카운터(현재값)(Word) 데이터레지스터(Word) 통신 데이터레지스터(Word) 파일 레지스터(Word) 파일 레지스터(Word) 파일 레지스터(Word) 주소 문자열 표현, EX) %DW1100 AddressString 을 바이트 배열로 변환 AddressByteArray 바이트 배열의 수(2byte) [商业授权] Lsis的虚拟服务器,其中TCP的端口支持Fnet协议,串口支持Cnet协议
[Authorization] LSisServer
LSisServer set plc NumberStyles HexNumber Check the intput string address 使用默认的参数进行初始化串口,9600波特率,8位数据位,无奇偶校验,1位停止位 串口信息 使用默认的参数进行初始化串口,8位数据位,无奇偶校验,1位停止位 串口信息 波特率 使用自定义的初始化方法初始化串口的参数 初始化信息的委托 关闭串口 接收到串口数据的时候触发 串口对象 消息 将带有数据类型的地址,转换成实际的byte数组的地址信息,例如 MW100 转成 M200 带有类型的地址 是否是位操作 最终的按照字节为单位的地址信息 XGB Cnet I/F module supports Serial Port. The address can carry station number information, for example: s=2;D100 XGB 主机的通道 0 仅支持 1:1 通信。 对于具有主从格式的 1:N 系统,在连接 XGL-C41A 模块的通道 1 或 XGB 主机中使用 RS-485 通信。 XGL-C41A 模块支持 RS-422/485 协议。 Instantiate a Default object XGB Cnet I/F module supports Serial Port. On Tcp/ip implementation, The address can carry station number information, for example: s=2;D100 XGB 主机的通道 0 仅支持 1:1 通信。 对于具有主从格式的 1:N 系统,在连接 XGL-C41A 模块的通道 1 或 XGB 主机中使用 RS-485 通信。 XGL-C41A 模块支持 RS-422/485 协议。 Address example likes the follow 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 * P PX100,PB100,PW100,PD100,PL100 10 * M MX100,MB100,MW100,MD100,ML100 10 * L LX100,LB100,LW100,LD100,LL100 10 * K KX100,KB100,KW100,KD100,KL100 10 * F FX100,FB100,FW100,FD100,FL100 10 T TX100,TB100,TW100,TD100,TL100 10 C CX100,CB100,CW100,CD100,CL100 10 D DX100,DB100,DW100,DD100,DL100 10 S SX100,SB100,SW100,SD100,SL100 10 Q QX100,QB100,QW100,QD100,QL100 10 I IX100,IB100,IW100,ID100,IL100 10 N NX100,NB100,NW100,ND100,NL100 10 U UX100,UB100,UW100,UD100,UL100 10 Z ZX100,ZB100,ZW100,ZD100,ZL100 10 R RX100,RB100,RW100,RD100,RL100 10 Instantiate a Default object Instantiate a Default object Ip Address Ip port PLC Station No. Read single byte value from plc Start address result Write single byte value to plc Start address value Whether to write the successful Read single byte value from plc Start address read result Write single byte value to plc Start address value Whether to write the successful ReadCoil, same as ReadBool address, for example: MX100, PX100 Result ReadCoil, same as ReadBool address, for example: MX100, PX100 array length result WriteCoil Start Address value for write whether write is success XGB Fast Enet I/F module supports open Ethernet. It provides network configuration that is to connect LSIS and other company PLC, PC on network Address example likes the follow 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 * P PX100,PB100,PW100,PD100,PL100 10 * M MX100,MB100,MW100,MD100,ML100 10 * L LX100,LB100,LW100,LD100,LL100 10 * K KX100,KB100,KW100,KD100,KL100 10 * F FX100,FB100,FW100,FD100,FL100 10 T TX100,TB100,TW100,TD100,TL100 10 C CX100,CB100,CW100,CD100,CL100 10 D DX100,DB100,DW100,DD100,DL100 10 S SX100,SB100,SW100,SD100,SL100 10 Q QX100,QB100,QW100,QD100,QL100 10 I IX100,IB100,IW100,ID100,IL100 10 N NX100,NB100,NW100,ND100,NL100 10 U UX100,UB100,UW100,UD100,UL100 10 Z ZX100,ZB100,ZW100,ZD100,ZL100 10 R RX100,RB100,RW100,RD100,RL100 10 Instantiate a Default object Instantiate a object by ipaddress and port the ip address of the plc the port of the plc, default is 2004 Instantiate a object by ipaddress, port, cpuType, slotNo CpuType the ip address of the plc he port of the plc, default is 2004 slot number set plc CPU TYPE Cpu is error RUN, STOP, ERROR, DEBUG FEnet I/F module’s Base No. FEnet I/F module’s Slot No. ReadCoil Start address Whether to read the successful ReadCoil Start address read address length Whether to read the successful Read single byte value from plc Start address Whether to write the successful Write single byte value to plc Start address value Whether to write the successful WriteCoil Start address bool value Whether to write the successful WriteCoil Start address bool value Whether to write the successful 需要传入 MX100.2 的 100.2 部分,返回的是 AnalysisAddress IX0.0.0 QX0.0.0 MW1.0 MB1.0 start address is Q or I data int address NumberStyles HexNumber 所有支持的地址信息 AnalysisAddress start address is read or write operate analysis result Get DataType to Address address dataType Returns true data content, supports read and write returns response data real data get the description of the error code meanning code value string information XGk Cnet I/F module supports Serial Port. XGB 主机的通道 0 仅支持 1:1 通信。 对于具有主从格式的 1:N 系统,在连接 XGL-C41A 模块的通道 1 或 XGB 主机中使用 RS-485 通信。 XGL-C41A 模块支持 RS-422/485 协议。 Instantiate a Default object Read Write Extract actual data form plc response response data read result XGK Fast Enet I/F module supports open Ethernet. It provides network configuration that is to connect LSIS and other company PLC, PC on network Address example likes the follow 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 * P PX100,PB100,PW100,PD100,PL100 10 * M MX100,MB100,MW100,MD100,ML100 10 * L LX100,LB100,LW100,LD100,LL100 10 * K KX100,KB100,KW100,KD100,KL100 10 * F FX100,FB100,FW100,FD100,FL100 10 T TX100,TB100,TW100,TD100,TL100 10 C CX100,CB100,CW100,CD100,CL100 10 D DX100,DB100,DW100,DD100,DL100 10 S SX100,SB100,SW100,SD100,SL100 10 Q QX100,QB100,QW100,QD100,QL100 10 I IX100,IB100,IW100,ID100,IL100 10 N NX100,NB100,NW100,ND100,NL100 10 U UX100,UB100,UW100,UD100,UL100 10 Z ZX100,ZB100,ZW100,ZD100,ZL100 10 R RX100,RB100,RW100,RD100,RL100 10 Instantiate a Default object Instantiate a object by ipaddress and port the ip address of the plc the port of the plc, default is 2004 Instantiate a object by ipaddress, port, cpuType, slotNo CpuType the ip address of the plc he port of the plc, default is 2004 slot number set plc CPU TYPE Cpu is error RUN, STOP, ERROR, DEBUG FEnet I/F module’s Base No. FEnet I/F module’s Slot No. ReadCoil Start address Whether to read the successful ReadCoil Start address read address length Whether to read the successful Read single byte value from plc Start address Whether to write the successful Write single byte value to plc Start address value Whether to write the successful WriteCoil Start address bool value Whether to write the successful WriteCoil Start address bool value Whether to write the successful Read Write CreateHeader Create a memory address variable name. 데이터타입 메모리타입 주소번지 Char return according to data type 데이터타입 Char return according to memory type 메모리타입 바이트 합치기 개별바이트 전체바이트에 개별바이트를 합칠 인덱스 전체바이트 전체 바이트 AnalysisAddress XGT_MemoryType GetDataTypeToAddress Returns true data content, supports read and write returns response data real data SetCpuType Returns true data content, supports read and write returns response data real data Returns true data content, supports read and write returns response data real data get the description of the error code meanning code value string information 三菱的A3C协议类接口对象,具有站号,是否和校验的属性
Mitsubishi's A3C protocol interface object, which has the attributes of station number, and checksum
当前A3C协议的站编号信息
Station number information of the current A3C protocol
当前的A3C协议是否使用和校验,默认使用
Whether the current A3C protocol uses sum check, it is used by default
当前的A3C协议的格式信息,可选格式1,2,3,4,默认格式1
Format information of the current A3C protocol, optional format 1, 2, 3, 4, default format 1
基于MC协议的标准的设备接口,适用任何基于MC协议的PLC设备,主要是三菱,基恩士,松下的PLC设备。
The standard equipment interface based on MC protocol is suitable for any PLC equipment based on MC protocol, mainly PLC equipment from Mitsubishi, Keyence, and Panasonic.
网络号,通常为0
Network number, usually 0
依据PLC的配置而配置,如果PLC配置了1,那么此处也填0,如果PLC配置了2,此处就填2,测试不通的话,继续测试0
网络站号,通常为0
Network station number, usually 0
依据PLC的配置而配置,如果PLC配置了1,那么此处也填0,如果PLC配置了2,此处就填2,测试不通的话,继续测试0
当前MC协议的分析地址的方法,对传入的字符串格式的地址进行数据解析。
The current MC protocol's address analysis method performs data parsing on the address of the incoming string format.
地址信息 数据长度 解析后的数据信息
当前的MC协议的格式类型
The format type of the current MC protocol
从PLC反馈的数据中提取出实际的数据内容,需要传入反馈数据,是否位读取 反馈的数据内容 是否位读取 解析后的结果对象 MC协议的类型 基于二进制的MC协议 基于ASCII格式的MC协议 基于R系列的二进制的MC协议 基于R系列的ASCII格式的MC协议 基于MC协议的ASCII格式的辅助类 将MC协议的核心报文打包成一个可以直接对PLC进行发送的原始报文 MC协议的核心报文 网络号 网络站号 原始报文信息 从PLC反馈的数据中提取出实际的数据内容,需要传入反馈数据,是否位读取 反馈的数据内容 是否位读取 解析后的结果对象 检查反馈的内容是否正确的 MC的反馈的内容 是否正确 从三菱地址,是否位读取进行创建读取Ascii格式的MC的核心报文 三菱Mc协议的数据地址 是否进行了位读取操作 带有成功标识的报文对象 从三菱扩展地址,是否位读取进行创建读取的MC的核心报文 是否进行了位读取操作 扩展指定 三菱Mc协议的数据地址 带有成功标识的报文对象 以字为单位,创建ASCII数据写入的核心报文 三菱Mc协议的数据地址 实际的原始数据信息 带有成功标识的报文对象 以位为单位,创建ASCII数据写入的核心报文 三菱Mc协议的数据地址 原始的bool数组数据 带有成功标识的报文对象 按字为单位随机读取的指令创建 地址数组 指令 随机读取的指令创建 地址数组 指令 三菱PLC,二进制的辅助类对象 将MC协议的核心报文打包成一个可以直接对PLC进行发送的原始报文 MC协议的核心报文 网络号 网络站号 原始报文信息 检查从MC返回的数据是否是合法的。 数据内容 是否合法 从三菱地址,是否位读取进行创建读取的MC的核心报文
From the Mitsubishi address, whether to read the core message of the MC for creating and reading
是否进行了位读取操作 三菱Mc协议的数据地址 带有成功标识的报文对象
以字为单位,创建数据写入的核心报文 三菱Mc协议的数据地址 实际的原始数据信息 带有成功标识的报文对象 以位为单位,创建数据写入的核心报文 三菱Mc协议的数据地址 原始的bool数组数据 带有成功标识的报文对象 从三菱扩展地址,是否位读取进行创建读取的MC的核心报文 是否进行了位读取操作 扩展指定 三菱Mc协议的数据地址 带有成功标识的报文对象 按字为单位随机读取的指令创建 地址数组 指令 随机读取的指令创建 地址数组 指令 创建批量读取标签的报文数据信息 标签名 长度信息 报文名称 读取本站缓冲寄存器的数据信息,需要指定寄存器的地址,和读取的长度 寄存器的地址 数据长度 结果内容 构建读取智能模块的命令,需要指定模块编号,起始地址,读取的长度,注意,该长度以字节为单位。 模块编号 智能模块的起始地址 读取的字长度 报文的结果内容 解析出标签读取的数据内容 返回的数据信息 解析结果 [商业授权] 读取PLC的标签信息,需要传入标签的名称,读取的字长度,标签举例:A; label[1]; bbb[10,10,10]
[Authorization] To read the label information of the PLC, you need to pass in the name of the label, the length of the word read, and an example of the label: A; label [1]; bbb [10,10,10]
MC协议通信对象 标签名 读取长度 是否成功 不可以访问局部标签。
不可以访问通过GX Works2设置的全局标签。
为了访问全局标签,需要通过GX Works3的全局标签设置编辑器将“来自于外部设备的访问”的设置项目置为有效。(默认为无效。)
以ASCII代码进行数据通信时,由于需要从UTF-16将标签名转换为ASCII代码,因此报文容量将增加
MC协议的辅助类对象,提供了MC协议的读写操作的基本支持 返回按照字单位读取的最低的长度信息 MC协议的类型 长度信息 返回按照位单位读取的最低的长度信息 MC协议的类型 长度信息 初步支持普通的数据地址之外,还额外支持高级的地址写法,以下是示例(适用于MC协议为二进制和ASCII格式):
[商业授权] 扩展的数据地址: 表示为 ext=1;W100 访问扩展区域为1的W100的地址信息
[商业授权] 缓冲存储器地址: 表示为 mem=32 访问地址为32的本站缓冲存储器地址
[商业授权] 智能模块地址:表示为 module=3;4106 访问模块号3,偏移地址是4106的数据,偏移地址需要根据模块的详细信息来确认。
[商业授权] 基于标签的地址: 表示位 s=AAA 假如标签的名称为AAA,但是标签的读取是有条件的,详细参照
当读取的长度过大时,会自动进行切割,对于二进制格式,切割长度为7168,对于ASCII格式协议来说,切割长度则是3584 随机读取PLC的数据信息,可以跨地址,跨类型组合,但是每个地址只能读取一个word,也就是2个字节的内容。收到结果后,需要自行解析数据
Randomly read PLC data information, which can be combined across addresses and types, but each address can only read one word, which is the content of 2 bytes. After receiving the results, you need to parse the data yourself
MC协议通信对象 所有的地址的集合 访问安装有 Q 系列 C24/E71 的站 QCPU 上位站 经由 Q 系列兼容网络系统 MELSECNET/H MELSECNET/10 Ethernet 的 QCPU 其他站 时 访问点数········1≦ 字访问点数 双字访问点数 ≦192
访问 QnACPU 其他站 经由 QnA 系列兼容网络系统 MELSECNET/10 Ethernet 的 Q/QnACPU 其他站 时访问点数········1≦ 字访问点数 双字访问点数 ≦96
访问上述以外的 PLC CPU 其他站 时访问点数········1≦字访问点数≦10
结果
随机读取PLC的数据信息,可以跨地址,跨类型组合,每个地址是任意的长度。收到结果后,需要自行解析数据,目前只支持字地址,比如D区,W区,R区,不支持X,Y,M,B,L等等
Read the data information of the PLC randomly. It can be combined across addresses and types. Each address is of any length. After receiving the results, you need to parse the data yourself. Currently, only word addresses are supported, such as D area, W area, R area. X, Y, M, B, L, etc
MC协议通信对象 所有的地址的集合 每个地址的长度信息 实际测试不一定所有的plc都可以读取成功,具体情况需要具体分析
1 块数按照下列要求指定 120 ≧ 字软元件块数 + 位软元件块数
2 各软元件点数按照下列要求指定 960 ≧ 字软元件各块的合计点数 + 位软元件各块的合计点数
结果
随机读取PLC的数据信息,可以跨地址,跨类型组合,但是每个地址只能读取一个word,也就是2个字节的内容。收到结果后,自动转换为了short类型的数组
Randomly read PLC data information, which can be combined across addresses and types, but each address can only read one word, which is the content of 2 bytes. After receiving the result, it is automatically converted to an array of type short.
MC协议的通信对象 所有的地址的集合 访问安装有 Q 系列 C24/E71 的站 QCPU 上位站 经由 Q 系列兼容网络系统 MELSECNET/H MELSECNET/10 Ethernet 的 QCPU 其他站 时 访问点数········1≦ 字访问点数 双字访问点数 ≦192 访问 QnACPU 其他站 经由 QnA 系列兼容网络系统 MELSECNET/10 Ethernet 的 Q/QnACPU 其他站 时访问点数········1≦ 字访问点数 双字访问点数 ≦96 访问上述以外的 PLC CPU 其他站 时访问点数········1≦字访问点数≦10 包含是否成功的结果对象
随机读取PLC的数据信息,可以跨地址,跨类型组合,但是每个地址只能读取一个word,也就是2个字节的内容。收到结果后,自动转换为了ushort类型的数组
Randomly read PLC data information, which can be combined across addresses and types, but each address can only read one word, which is the content of 2 bytes. After receiving the result, it is automatically converted to an array of type ushort.
MC协议的通信对象 所有的地址的集合 访问安装有 Q 系列 C24/E71 的站 QCPU 上位站 经由 Q 系列兼容网络系统 MELSECNET/H MELSECNET/10 Ethernet 的 QCPU 其他站 时 访问点数········1≦ 字访问点数 双字访问点数 ≦192 访问 QnACPU 其他站 经由 QnA 系列兼容网络系统 MELSECNET/10 Ethernet 的 Q/QnACPU 其他站 时访问点数········1≦ 字访问点数 双字访问点数 ≦96 访问上述以外的 PLC CPU 其他站 时访问点数········1≦字访问点数≦10 包含是否成功的结果对象
[商业授权] 读取缓冲寄存器的数据信息,地址直接为偏移地址
[Authorization] Read the data information of the buffer register, the address is directly the offset address
本指令不可以访问下述缓冲存储器:
1. 本站(SLMP对应设备)上安装的智能功能模块
2. 其它站缓冲存储器
MC通信对象 偏移地址 读取长度 读取的内容
[商业授权] 读取智能模块的数据信息,需要指定模块地址,偏移地址,读取的字节长度
[Authorization] To read the extended data information, you need to enter the extended value information in addition to the original address and length information
MC通信对象 模块地址 地址 数据长度 返回结果
[商业授权] 读取扩展的数据信息,需要在原有的地址,长度信息之外,输入扩展值信息
[Authorization] To read the extended data information, you need to enter the extended value information in addition to the original address and length information
MC通信对象 扩展信息 地址 数据长度 返回结果
远程Run操作
Remote Run Operation
MC协议通信对象 是否成功
远程Stop操作
Remote Stop operation
MC协议通信对象 是否成功
远程Reset操作
Remote Reset Operation
MC协议通信对象 是否成功
读取PLC的型号信息,例如 Q02HCPU
Read PLC model information, such as Q02HCPU
MC协议通信对象 返回型号的结果对象
LED 熄灭 出错代码初始化
LED off Error code initialization
MC协议通信对象 是否成功
MelsecA3CNet1协议通信的辅助类 将命令进行打包传送,可选站号及是否和校验机制 PLC设备通信对象 mc协议的命令 PLC的站号 最终的原始报文信息 根据PLC返回的数据信息,获取到实际的数据内容 PLC设备通信对象 PLC返回的数据信息 带有是否成功的读取结果对象内容 批量读取PLC的数据,以字为单位,支持读取X,Y,M,S,D,T,C,具体的地址范围需要根据PLC型号来确认 PLC设备通信对象 地址信息 数据长度 读取结果信息 批量写入PLC的数据,以字为单位,也就是说最少2个字节信息,支持X,Y,M,S,D,T,C,具体的地址范围需要根据PLC型号来确认 PLC设备通信对象 地址信息 数据值 是否写入成功 批量读取bool类型数据,支持的类型为X,Y,S,T,C,具体的地址范围取决于PLC的类型 PLC设备通信对象 地址信息,比如X10,Y17,注意X,Y的地址是8进制的 读取的长度 读取结果信息 批量写入bool类型的数组,支持的类型为X,Y,S,T,C,具体的地址范围取决于PLC的类型 PLC设备通信对象 PLC的地址信息 数据信息 是否写入成功 远程Run操作 PLC设备通信对象 是否成功 远程Stop操作 PLC设备通信对象 是否成功 读取PLC的型号信息 PLC设备通信对象 返回型号的结果对象 三菱PLC通讯协议,采用A兼容1E帧协议实现,使用ASCII码通讯,请根据实际型号来进行选取
Mitsubishi PLC communication protocol, implemented using A compatible 1E frame protocol, using ascii code communication, please choose according to the actual model
实例化一个默认的对象
Instantiate a default object
指定ip地址和端口来来实例化一个默认的对象
Specify the IP address and port to instantiate a default object
PLC的Ip地址 PLC的端口
根据类型地址长度确认需要读取的指令头 起始地址 长度 指示是否按照位成批的读出 PLC编号 带有成功标志的指令数据 根据类型地址以及需要写入的数据来生成指令头 起始地址 数据值 PLC编号 带有成功标志的指令数据 根据类型地址以及需要写入的数据来生成指令头 起始地址 数据值 PLC编号 带有成功标志的指令数据 检测反馈的消息是否合法 接收的报文 是否成功 从PLC反馈的数据中提取出实际的数据内容,需要传入反馈数据,是否位读取 反馈的数据内容 是否位读取 解析后的结果对象 三菱PLC的数据类型,此处包含了几个常用的类型 如果您清楚类型代号,可以根据值进行扩展 数据类型的代号 0或1,默认为0 ASCII格式的类型信息 指示地址的多少进制的,10或是16 类型的代号值(软元件代码,用于区分软元件类型,如:D,R) 数据的类型,0代表按字,1代表按位 当以ASCII格式通讯时的类型描述 指示地址是10进制,还是16进制的 X输入寄存器 Y输出寄存器 M中间寄存器 S状态寄存器 F报警器 B连接继电器 TS定时器触点 TC定时器线圈 TN定时器当前值 CS计数器触点 CC计数器线圈 CN计数器当前值 D数据寄存器 W链接寄存器 R文件寄存器 三菱PLC通讯协议,采用A兼容1E帧协议实现,使用二进制码通讯,请根据实际型号来进行选取
Mitsubishi PLC communication protocol, implemented using A compatible 1E frame protocol, using binary code communication, please choose according to the actual model
本类适用于的PLC列表 FX3U(C) PLC 测试人sandy_liao 数据地址支持的格式如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 内部继电器 M M100,M200 10 输入继电器 X X10,X20 动态 地址前面带0就是8进制比如X010,不带则是16进制,X40 输出继电器 Y Y10,Y20 动态 地址前面带0就是8进制比如Y020,不带则是16进制,Y40 步进继电器 S S100,S200 10 报警器 F F100,F200 10 链接继电器 B B1A0,B2A0 16 定时器触点 TS TS0,TS100 10 × 定时器线圈 TC TC0,TC100 10 × 定时器当前值 TN TN0,TN100 10 × 计数器器触点 CS CS0,CS100 10 × 计数器线圈 CC CC0,CC100 10 × 计数器当前值 CN CN0,CN100 10 × 数据寄存器 D D1000,D2000 10 × 链接寄存器 W W0,W1A0 16 × 文件寄存器 R R100,R200 10 × 方法一次读取的最多点数是256点。 本通讯类由CKernal推送,感谢
实例化一个默认的对象
Instantiate a default object
指定ip地址和端口来来实例化一个默认的对象
Specify the IP address and port to instantiate a default object
PLC的Ip地址 PLC的端口
PLC编号,默认为0xFF
PLC number, default is 0xFF
批量读取数组信息,需要指定地址和长度,地址示例M100,S100,B1A,如果是X,Y, X017就是8进制地址,Y10就是16进制地址。
Batch read array information, need to specify the address and length, return array. Examples of addresses M100, S100, B1A, if it is X, Y, X017 is an octal address, Y10 is a hexadecimal address.
根据协议的规范,最多读取256长度的bool数组信息,如果需要读取更长的bool信息,需要按字为单位进行读取的操作。 数据地址 数据长度 带有成功标识的byte[]数组
批量写入数组数据,返回是否成功,地址示例M100,S100,B1A,如果是X,Y, X017就是8进制地址,Y10就是16进制地址。
Batch write array data, return whether the write was successful. Examples of addresses M100, S100, B1A, if it is X, Y, X017 is an octal address, Y10 is a hexadecimal address.
起始地址 写入值 带有成功标识的结果类对象
根据类型地址长度确认需要读取的指令头 起始地址 长度 指示是否按照位成批的读出 PLC编号 带有成功标志的指令数据 根据类型地址以及需要写入的数据来生成指令头 起始地址 数据值 PLC编号 带有成功标志的指令数据 根据类型地址以及需要写入的数据来生成指令头 起始地址 数据值 PLC编号 带有成功标志的指令数据 检测反馈的消息是否合法 接收的报文 是否成功 从PLC反馈的数据中提取出实际的数据内容,需要传入反馈数据,是否位读取 反馈的数据内容 是否位读取 解析后的结果对象 基于Qna 兼容3C帧的格式一的通讯,具体的地址需要参照三菱的基本地址
Based on Qna-compatible 3C frame format one communication, the specific address needs to refer to the basic address of Mitsubishi.
基于Qna 兼容3C帧的格式一的通讯,具体的地址需要参照三菱的基本地址,本类是基于tcp通讯的实现
Based on Qna-compatible 3C frame format one communication, the specific address needs to refer to the basic address of Mitsubishi. This class is based on TCP communication.
地址可以携带站号信息,例如:s=2;D100 地址的输入的格式说明如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 内部继电器 M M100,M200 10 输入继电器 X X100,X1A0 16 输出继电器 Y Y100,Y1A0 16 锁存继电器 L L100,L200 10 报警器 F F100,F200 10 边沿继电器 V V100,V200 10 链接继电器 B B100,B1A0 16 步进继电器 S S100,S200 10 数据寄存器 D D1000,D2000 10 × 链接寄存器 W W100,W1A0 16 × 文件寄存器 R R100,R200 10 × ZR文件寄存器 ZR ZR100,ZR2A0 16 × 变址寄存器 Z Z100,Z200 10 × 定时器的触点 TS TS100,TS200 10 定时器的线圈 TC TC100,TC200 10 定时器的当前值 TN TN100,TN200 10 × 累计定时器的触点 SS SS100,SS200 10 累计定时器的线圈 SC SC100,SC200 10 累计定时器的当前值 SN SN100,SN200 10 × 计数器的触点 CS CS100,CS200 10 计数器的线圈 CC CC100,CC200 10 计数器的当前值 CN CN100,CN200 10 ×
实例化默认的对象
Instantiate the default object
指定ip地址和端口号来实例化对象
Specify the IP address and port number to instantiate the object
Ip地址信息 端口号信息
批量读取PLC的数据,以字为单位,支持读取X,Y,M,S,D,T,C,具体的地址范围需要根据PLC型号来确认
Read PLC data in batches, in units of words, supports reading X, Y, M, S, D, T, C. The specific address range needs to be confirmed according to the PLC model
地址信息 数据长度 读取结果信息
批量写入PLC的数据,以字为单位,也就是说最少2个字节信息,支持X,Y,M,S,D,T,C,具体的地址范围需要根据PLC型号来确认
The data written to the PLC in batches is in units of words, that is, at least 2 bytes of information. It supports X, Y, M, S, D, T, and C. The specific address range needs to be confirmed according to the PLC model.
地址信息 数据值 是否写入成功
批量读取bool类型数据,支持的类型为X,Y,S,T,C,具体的地址范围取决于PLC的类型
Read bool data in batches. The supported types are X, Y, S, T, C. The specific address range depends on the type of PLC.
地址信息,比如X10,Y17,注意X,Y的地址是8进制的 读取的长度 读取结果信息
批量写入bool类型的数组,支持的类型为X,Y,S,T,C,具体的地址范围取决于PLC的类型
Write arrays of type bool in batches. The supported types are X, Y, S, T, C. The specific address range depends on the type of PLC.
PLC的地址信息 数据信息 是否写入成功
实例化一个虚拟的A3C服务器 启动modbus-rtu的从机服务,使用默认的参数进行初始化串口,9600波特率,8位数据位,无奇偶校验,1位停止位
Start the slave service of modbus-rtu, initialize the serial port with default parameters, 9600 baud rate, 8 data bits, no parity, 1 stop bit
串口信息
启动modbus-rtu的从机服务,使用默认的参数进行初始化串口,8位数据位,无奇偶校验,1位停止位
Start the slave service of modbus-rtu, initialize the serial port with default parameters, 8 data bits, no parity, 1 stop bit
串口信息 波特率
启动modbus-rtu的从机服务,使用自定义的初始化方法初始化串口的参数
Start the slave service of modbus-rtu and initialize the parameters of the serial port using a custom initialization method
初始化信息的委托
关闭modbus-rtu的串口对象
Close the serial port object of modbus-rtu
接收到串口数据的时候触发 串口对象 消息 三菱PLC的EIP协议的实现,当PLC使用了 QJ71EIP71 模块时就需要使用本类来访问 Read data information, data length for read array length information Address format of the node In the case of arrays, the length of the array Result data with result object 三菱计算机链接协议,适用FX3U系列,FX3G,FX3S等等系列,通常在PLC侧连接的是485的接线口
Mitsubishi Computer Link Protocol, suitable for FX3U series, FX3G, FX3S, etc., usually the 485 connection port is connected on the PLC side
关于在PLC侧的配置信息,协议:专用协议 传送控制步骤:格式一 站号设置:0
三菱计算机链接协议的网口版本,适用FX3U系列,FX3G,FX3S等等系列,通常在PLC侧连接的是485的接线口
Network port version of Mitsubishi Computer Link Protocol, suitable for FX3U series, FX3G, FX3S, etc., usually the 485 connection port is connected on the PLC side
支持的通讯的系列如下参考 系列 是否支持 备注 FX3UC系列 支持 FX3U系列 支持 FX3GC系列 支持 FX3G系列 支持 FX3S系列 支持 FX2NC系列 支持 FX2N系列 部分支持(v1.06+) 通过监控D8001来确认版本号 FX1NC系列 支持 FX1N系列 支持 FX1S系列 支持 FX0N系列 部分支持(v1.20+) FX0S系列 不支持 FX0系列 不支持 FX2C系列 部分支持(v3.30+) FX2(FX)系列 部分支持(v3.30+) FX1系列 不支持 数据地址支持的格式如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 内部继电器 M M100,M200 10 输入继电器 X X10,X20 8 输出继电器 Y Y10,Y20 8 步进继电器 S S100,S200 10 定时器的触点 TS TS100,TS200 10 定时器的当前值 TN TN100,TN200 10 × 计数器的触点 CS CS100,CS200 10 计数器的当前 CN CN100,CN200 10 × 数据寄存器 D D1000,D2000 10 × 文件寄存器 R R100,R200 10 ×
实例化默认的对象
Instantiate the default object
指定ip地址和端口号来实例化默认的对象
Specify the IP address and port number to instantiate the default object
Ip地址信息 端口号
PLC的当前的站号,需要根据实际的值来设定,默认是0
The current station number of the PLC needs to be set according to the actual value. The default is 0.
报文等待时间,单位10ms,设置范围为0-15
Message waiting time, unit is 10ms, setting range is 0-15
是否启动和校验
Whether to start and sum verify
批量读取PLC的数据,以字为单位,支持读取X,Y,M,S,D,T,C,具体的地址范围需要根据PLC型号来确认,地址支持动态指定站号,例如:s=2;D100
Read PLC data in batches, in units of words, supports reading X, Y, M, S, D, T, C. The specific address range needs to be confirmed according to the PLC model, The address supports dynamically specifying the station number, for example: s=2;D100
地址信息 数据长度 读取结果信息
批量写入PLC的数据,以字为单位,也就是说最少2个字节信息,支持X,Y,M,S,D,T,C,具体的地址范围需要根据PLC型号来确认,地址支持动态指定站号,例如:s=2;D100
The data written to the PLC in batches is in units of words, that is, at least 2 bytes of information. It supports X, Y, M, S, D, T, and C. The specific address range needs to be confirmed according to the PLC model, The address supports dynamically specifying the station number, for example: s=2;D100
地址信息 数据值 是否写入成功
批量读取bool类型数据,支持的类型为X,Y,S,T,C,具体的地址范围取决于PLC的类型,地址支持动态指定站号,例如:s=2;D100
Read bool data in batches. The supported types are X, Y, S, T, C. The specific address range depends on the type of PLC, The address supports dynamically specifying the station number, for example: s=2;D100
地址信息,比如X10,Y17,注意X,Y的地址是8进制的 读取的长度 读取结果信息
批量写入bool类型的数组,支持的类型为X,Y,S,T,C,具体的地址范围取决于PLC的类型,地址支持动态指定站号,例如:s=2;D100
Write arrays of type bool in batches. The supported types are X, Y, S, T, C. The specific address range depends on the type of PLC, The address supports dynamically specifying the station number, for example: s=2;D100
PLC的地址信息 数据信息 是否写入成功
[商业授权] 启动PLC的操作,可以携带额外的参数信息,指定站号。举例:s=2; 注意:分号是必须的。
[Authorization] Start the PLC operation, you can carry additional parameter information and specify the station number. Example: s=2; Note: The semicolon is required.
允许携带的参数信息,例如s=2; 也可以为空 是否启动成功
[商业授权] 停止PLC的操作,可以携带额外的参数信息,指定站号。举例:s=2; 注意:分号是必须的。
[Authorization] Stop PLC operation, you can carry additional parameter information and specify the station number. Example: s=2; Note: The semicolon is required.
允许携带的参数信息,例如s=2; 也可以为空 是否停止成功
[商业授权] 读取PLC的型号信息,可以携带额外的参数信息,指定站号。举例:s=2; 注意:分号是必须的。
[Authorization] Read the PLC model information, you can carry additional parameter information, and specify the station number. Example: s=2; Note: The semicolon is required.
允许携带的参数信息,例如s=2; 也可以为空 带PLC型号的结果信息
解析数据地址成不同的三菱地址类型 数据地址 地址结果对象 计算指令的和校验码 指令 校验之后的信息 创建一条读取的指令信息,需要指定一些参数 PLCd的站号 地址信息 数据长度 是否位读取 是否和校验 等待时间 是否成功的结果对象 创建一条别入bool数据的指令信息,需要指定一些参数 站号 地址 数组值 是否和校验 等待时间 是否创建成功 创建一条别入byte数据的指令信息,需要指定一些参数,按照字单位 站号 地址 数组值 是否和校验 等待时间 命令报文的结果内容对象 创建启动PLC的报文信息 站号信息 是否和校验 等待时间 命令报文的结果内容对象 创建启动PLC的报文信息 站号信息 是否和校验 等待时间 命令报文的结果内容对象 创建读取PLC类型的命令报文 站号信息 是否进行和校验 等待实际 命令报文的结果内容对象 从编码中提取PLC的型号信息 编码 PLC的型号信息 三菱串口协议的网络版 字读写地址支持的列表如下: 地址名称 地址代号 示例 地址范围 地址进制 备注 数据寄存器 D D100,D200 D0-D511,D8000-D8255 10 定时器的值 TN TN10,TN20 TN0-TN255 10 计数器的值 CN CN10,CN20 CN0-CN199,CN200-CN255 10 位地址支持的列表如下: 地址名称 地址代号 示例 地址范围 地址进制 备注 内部继电器 M M100,M200 M0-M1023,M8000-M8255 10 输入继电器 X X1,X20 X0-X177 8 输出继电器 Y Y10,Y20 Y0-Y177 8 步进继电器 S S100,S200 S0-S999 10 定时器触点 TS TS10,TS20 TS0-TS255 10 定时器线圈 TC TC10,TC20 TC0-TC255 10 计数器触点 CS CS10,CS20 CS0-CS255 10 计数器线圈 CC CC10,CC20 CC0-CC255 10 实例化网络版的三菱的串口协议的通讯对象
Instantiate the communication object of Mitsubishi's serial protocol on the network
指定ip地址及端口号来实例化三菱的串口协议的通讯对象
Specify the IP address and port number to instantiate the communication object of Mitsubishi's serial protocol
Ip地址 端口号
当前的编程口协议是否为新版,默认为新版,如果无法读取,切换旧版再次尝试
Whether the current programming port protocol is the new version, the default is the new version, if it cannot be read, switch to the old version and try again
假设起始地址为D100,D100存储了温度,100.6℃值为1006,D101存储了压力,1.23Mpa值为123,D102,D103存储了产量计数,读取如下: 以下是读取不同类型数据的示例 假设起始地址为D100,D100存储了温度,100.6℃值为1006,D101存储了压力,1.23Mpa值为123,D102,D103存储了产量计数,写入如下: 以下是读取不同类型数据的示例 从三菱PLC中批量读取位软元件,返回读取结果,该读取地址最好从0,16,32...等开始读取,这样可以读取比较长得数据数组
Read bit devices from Mitsubishi PLC in batches and return the read result. The read address should preferably be read from 0, 16, 32, etc., so that you can read the longer data array.
起始地址 读取的长度 带成功标志的结果数据对象
从三菱PLC中读取想要的数据,返回读取结果 读取地址,,支持的类型参考文档说明 读取的数据长度 指定的通道信息 是否是新版的串口访问类 带成功标志的结果数据对象 假设起始地址为D100,D100存储了温度,100.6℃值为1006,D101存储了压力,1.23Mpa值为123,D102,D103存储了产量计数,读取如下: 以下是读取不同类型数据的示例 从三菱PLC中批量读取位软元件,返回读取结果,该读取地址最好从0,16,32...等开始读取,这样可以读取比较长得数据数组 起始地址 读取的长度 指定的通道信息 带成功标志的结果数据对象 向PLC写入数据,数据格式为原始的字节类型 初始地址,支持的类型参考文档说明 原始的字节数据 指定的通道信息 是否是新版的串口访问类 假设起始地址为D100,D100存储了温度,100.6℃值为1006,D101存储了压力,1.23Mpa值为123,D102,D103存储了产量计数,写入如下: 以下是读取不同类型数据的示例 是否写入成功的结果对象 强制写入位数据的通断,支持的类型参考文档说明 地址信息 是否为通 指定的通道信息 是否写入成功的结果对象 检查PLC返回的读取数据是否是正常的 Plc反馈的数据信息 检查结果 检查PLC返回的写入的数据是否是正常的 Plc反馈的数据信息 检查结果 生成位写入的数据报文信息,该报文可直接用于发送串口给PLC 地址信息,每个地址存在一定的范围,需要谨慎传入数据。举例:M10,S10,X5,Y10,C10,T10 True或是False 带报文信息的结果对象 根据类型地址长度确认需要读取的指令头 起始地址 长度 是否是新版的串口访问类 带有成功标志的指令数据 根据类型地址长度确认需要读取的指令头 起始地址 bool数组长度 带有成功标志的指令数据 根据类型地址以及需要写入的数据来生成指令头 起始地址 实际的数据信息 是否是新版的串口访问类 带有成功标志的指令数据 从PLC反馈的数据进行提炼操作 PLC反馈的真实数据 数据提炼后的真实数据 从PLC反馈的数据进行提炼bool数组操作 PLC反馈的真实数据 起始提取的点信息 bool数组的长度 数据提炼后的真实数据 解析数据地址成不同的三菱地址类型 数据地址 地址结果对象 返回读取的地址及长度信息 读取的地址信息 是否是新版的串口访问类 带起始地址的结果对象 返回读取的地址及长度信息,以及当前的偏置信息 读取的地址信息 带起始地址的结果对象 所有三菱通讯类的通用辅助工具类,包含了一些通用的静态方法,可以使用本类来获取一些原始的报文信息。详细的操作参见例子
All general auxiliary tool classes of Mitsubishi communication class include some general static methods. You can use this class to get some primitive message information. See the example for detailed operation
解析A1E协议数据地址
Parse A1E protocol data address
数据地址 结果对象
根据三菱的错误码去查找对象描述信息 错误码 描述信息 从三菱的地址中构建MC协议的6字节的ASCII格式的地址 三菱地址 三菱的数据类型 6字节的ASCII格式的地址 将0,1,0,1的字节数组压缩成三菱格式的字节数组来表示开关量的 原始的数据字节 压缩过后的数据字节 将bool的组压缩成三菱格式的字节数组来表示开关量的 原始的数据字节 压缩过后的数据字节 计算Fx协议指令的和校验信息 字节数据 校验之后的数据 检查指定的和校验是否是正确的 字节数据 是否成功 三菱PLC通讯类,采用UDP的协议实现,采用Qna兼容3E帧协议实现,需要在PLC侧先的以太网模块先进行配置,必须为ascii通讯
Mitsubishi PLC communication class is implemented using UDP protocol and Qna compatible 3E frame protocol. The Ethernet module needs to be configured first on the PLC side, and it must be ascii communication.
三菱PLC通讯类,采用Qna兼容3E帧协议实现,需要在PLC侧先的以太网模块先进行配置,必须为ASCII通讯格式
Mitsubishi PLC communication class is implemented using Qna compatible 3E frame protocol. The Ethernet module on the PLC side needs to be configured first. It must be ascii communication.
三菱PLC的数据类型,此处包含了几个常用的类型
Data types of Mitsubishi PLC, here contains several commonly used types
实例化一个三菱数据类型对象,如果您清楚类型代号,可以根据值进行扩展
Instantiate a Mitsubishi data type object, if you know the type code, you can expand according to the value
数据类型的代号 0或1,默认为0 ASCII格式的类型信息 指示地址的多少进制的,10或是16
类型的代号值 数据的类型,0代表按字,1代表按位 当以ASCII格式通讯时的类型描述 指示地址是10进制,还是16进制的 X输入继电器 Y输出继电器 M内部继电器 SM特殊继电器 S步进继电器 L锁存继电器 F报警器 V边沿继电器 B链接继电器 SB特殊链接继电器 DX直接访问输入 DY直接访问输出 D数据寄存器 特殊链接存储器 W链接寄存器 SW特殊链接寄存器 R文件寄存器 变址寄存器 文件寄存器ZR区 定时器的当前值 定时器的触点 定时器的线圈 累计定时器的触点 累计定时器的线圈 累计定时器的当前值 计数器的当前值 计数器的触点 计数器的线圈 X输入继电器 Y输入继电器 M内部继电器 特殊继电器 锁存继电器 报警器 变址继电器 S步进继电器 链接继电器 特殊链接继电器 直接访问输入继电器 直接访问输出继电器 数据寄存器 特殊数据寄存器 链接寄存器 特殊链接寄存器 文件寄存器 变址寄存器 长累计定时器触点 长累计定时器线圈 长累计定时器当前值 累计定时器触点 累计定时器线圈 累计定时器当前值 长定时器触点 长定时器线圈 长定时器当前值 定时器触点 定时器线圈 定时器当前值 长计数器触点 长计数器线圈 长计数器当前值 计数器触点 计数器线圈 计数器当前值 X输入继电器 Y输出继电器 链接继电器 内部辅助继电器 锁存继电器 控制继电器 控制存储器 数据存储器 文件寄存器 文件寄存器 链路寄存器 计时器(当前值) 计时器(接点) 计时器(线圈) 计数器(当前值) 计数器(接点) 计数器(线圈) 输入继电器 输出继电器 链接继电器 内部继电器 数据存储器 链接存储器 计时器(当前值) 计时器(接点) 计数器(当前值) 计数器(接点) 特殊链接继电器 特殊链接存储器 三菱的R系列的MC协议,支持的地址类型和 有区别,详细请查看对应的API文档说明 实例化三菱R系列的Qna兼容3E帧协议的通讯对象
Instantiate the communication object of Mitsubishi's Qna compatible 3E frame protocol
指定ip地址和端口号来实例化一个默认的对象
Specify the IP address and port number to instantiate a default object
PLC的Ip地址 PLC的端口
分析三菱R系列的地址,并返回解析后的数据对象 字符串地址 是否解析成功 从三菱地址,是否位读取进行创建读取的MC的核心报文 地址数据 是否进行了位读取操作 带有成功标识的报文对象 以字为单位,创建数据写入的核心报文 三菱的数据地址 实际的原始数据信息 带有成功标识的报文对象 以位为单位,创建数据写入的核心报文 三菱的地址信息 原始的bool数组数据 带有成功标识的报文对象 三菱PLC通讯类,采用UDP的协议实现,采用Qna兼容3E帧协议实现,需要在PLC侧先的以太网模块先进行配置,必须为二进制通讯
Mitsubishi PLC communication class is implemented using UDP protocol and Qna compatible 3E frame protocol. The Ethernet module needs to be configured first on the PLC side, and it must be binary communication.
三菱PLC通讯类,采用Qna兼容3E帧协议实现,需要在PLC侧先的以太网模块先进行配置,必须为二进制通讯
Mitsubishi PLC communication class is implemented using Qna compatible 3E frame protocol. The Ethernet module on the PLC side needs to be configured first. It must be binary communication.
支持读写的数据类型详细参考API文档,支持高级的数据读取,例如读取智能模块,缓冲存储器等等。 目前组件测试通过的PLC型号列表,有些来自于网友的测试 Q06UDV PLC 感谢hwdq0012 fx5u PLC 感谢山楂 Q02CPU PLC L02CPU PLC 地址的输入的格式支持多种复杂的地址表示方式: [商业授权] 扩展的数据地址: 表示为 ext=1;W100 访问扩展区域为1的W100的地址信息 [商业授权] 缓冲存储器地址: 表示为 mem=32 访问地址为32的本站缓冲存储器地址 [商业授权] 智能模块地址:表示为 module=3;4106 访问模块号3,偏移地址是4106的数据,偏移地址需要根据模块的详细信息来确认。 [商业授权] 基于标签的地址: 表示位 s=AAA 假如标签的名称为AAA,但是标签的读取是有条件的,详细参照 普通的数据地址,参照下面的信息 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 内部继电器 M M100,M200 10 输入继电器 X X100,X1A0 16 8进制用0开头,X017 输出继电器 Y Y100,Y1A0 16 8进制用0开头,Y017 锁存继电器 L L100,L200 10 报警器 F F100,F200 10 边沿继电器 V V100,V200 10 链接继电器 B B100,B1A0 16 步进继电器 S S100,S200 10 数据寄存器 D D1000,D2000 10 × 链接寄存器 W W100,W1A0 16 × 文件寄存器 R R100,R200 10 × ZR文件寄存器 ZR ZR100,ZR2A0 16 × 变址寄存器 Z Z100,Z200 10 × 定时器的触点 TS TS100,TS200 10 定时器的线圈 TC TC100,TC200 10 定时器的当前值 TN TN100,TN200 10 × 累计定时器的触点 SS SS100,SS200 10 累计定时器的线圈 SC SC100,SC200 10 累计定时器的当前值 SN SN100,SN200 10 × 计数器的触点 CS CS100,CS200 10 计数器的线圈 CC CC100,CC200 10 计数器的当前值 CN CN100,CN200 10 ×
实例化三菱的Qna兼容3E帧协议的通讯对象
Instantiate the communication object of Mitsubishi's Qna compatible 3E frame protocol
指定ip地址和端口号来实例化一个默认的对象
Specify the IP address and port number to instantiate a default object
PLC的Ip地址 PLC的端口
数据标签 读取的数据长度 [商业授权] 三菱MC协议的虚拟服务器,支持M,X,Y,D,W的数据池读写操作,支持二进制及ASCII格式进行读写操作,需要在实例化的时候指定。
[Authorization] The Mitsubishi MC protocol virtual server supports M, X, Y, D, W data pool read and write operations, and supports binary and ASCII format read and write operations, which need to be specified during instantiation.
本三菱的虚拟PLC仅限商业授权用户使用,感谢支持。 如果你没有可以测试的三菱PLC,想要测试自己开发的上位机软件,或是想要在本机实现虚拟PLC,然后进行IO的输入输出练习,都可以使用本类来实现,先来说明下地址信息
地址的输入的格式说明如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 内部继电器 M M100,M200 10 输入继电器 X X100,X1A0 16 输出继电器 Y Y100,Y1A0 16 数据寄存器 D D1000,D2000 10 × 链接寄存器 W W100,W1A0 16 ×
实例化一个默认参数的mc协议的服务器
Instantiate a mc protocol server with default parameters
是否是二进制,默认是二进制,否则是ASCII格式
当收到mc协议的报文的时候应该触发的方法,允许继承重写,来实现自定义的返回,或是数据监听。
The method that should be triggered when a message of the mc protocol is received, allowing inheritance to be rewritten to implement custom return or data monitoring.
mc报文 返回的报文信息
当收到mc协议的报文的时候应该触发的方法,允许继承重写,来实现自定义的返回,或是数据监听。
The method that should be triggered when a message of the mc protocol is received, allowing inheritance to be rewritten to implement custom return or data monitoring.
mc报文 返回的报文信息
将状态码,数据打包成一个完成的回复报文信息 状态信息 数据 状态信息 释放当前的对象 是否托管对象 获取或设置当前的通信格式是否是二进制
Get or set whether the current communication format is binary
实例化一个默认参数的mc协议的服务器
Instantiate a mc protocol server with default parameters
是否是二进制,默认是二进制,否则是ASCII格式
获取或设置一次接收时的数据长度,默认2KB数据长度 重新开始接收数据 三菱的串口通信的对象,适用于读取FX系列的串口数据,支持的类型参考文档说明
Mitsubishi's serial communication object is suitable for reading serial data of the FX series. Refer to the documentation for the supported types.
实例化一个默认的对象 在三菱的PLC通信的MC协议中,分为串行通信的报文和以太网接口的报文。
在串口通信中,共有以下几种帧,其中1C,2C,3C帧支持格式1,2,3,4,在C帧里支持格式5通信
4C帧,QnA系列串行通信模块专用协议(Qna扩展帧) 3C帧,QnA系列串行通信模块专用协议(Qna帧) 2C帧,QnA系列串行通信模块专用协议(Qna简易帧) 1C帧,A系列计算机链接模块专用协议 在以太网通信中,共有以下几种帧,每种帧支持二进制和ASCII格式 4E帧,是3E帧上附加了“序列号”。 3E帧,QnA系列以太网接口模块的报文格式,兼容SLMP的报文格式 1E帧,A系列以太网接口模块的报文格式 在以太网通信里,HSL主要针对1E帧协议和3E帧协议进行实现,大概说一下怎么选择通信类对象,对于三菱PLC而言,需要事先在PLC侧的网络配置中进行 相关的配置操作,具体是配置二进制格式还是ASCII格式,然后配置端口,配置TCP还是UDP协议。
, 这四个类都是MC协议的Qna兼容3E帧实现,分别 是TCP二进制,TCP的ASCII,UDP的二进制,UDP的ASCI格式。适用Q系列,L系列,FX5U系列,还有以太网模块QJ71E71。
, 这两个类是MC协议的Qna兼容1E协议实现, 分别是二进制和ASCII格式的实现,主要适用A系列的PLC,Fx3u,已经有些老的PLC,使用了北辰模块实现了通信。
是MC协议的3C帧的实现,主要支持串行通信的模块的实现。
是FX编程口的协议的实现,测试不太稳定。具体支持的系列需要参照类的说明。

三菱Q系列PLC带以太网模块,使用MC 二进制协议通讯,在网络中断情况下无法正常连接的情况,解决方案如下:
1. 生存确认选择确认模式;
2. 初始设置中将"对象目标生存确认开始间隔定时器"从1200改为12
欧姆龙PLC的CIP协议的类,支持NJ,NX,NY系列PLC,支持tag名的方式读写数据,假设你读取的是局部变量,那么使用 Program:MainProgram.变量名
Omron PLC's CIP protocol class, support NJ, NX, NY series PLC, support tag name read and write data, assuming you read local variables, then use Program: MainProgram. Variable name
Instantiate a communication object for a OmronCipNet PLC protocol Specify the IP address and port to instantiate a communication object for a OmronCipNet PLC protocol PLC IpAddress PLC Port 基于连接的对象访问的CIP协议的实现,用于对Omron PLC进行标签的数据读写,对数组,多维数组进行读写操作,支持的数据类型请参照API文档手册。
The implementation of the CIP protocol based on connected object access is used to read and write tag data to Omron PLC, and read and write arrays and multidimensional arrays. For the supported data types, please refer to the API documentation manual.
支持普通标签的读写,类型要和标签对应上。如果标签是数组,例如 A 是 INT[0...9] 那么Read("A", 1),返回的是10个short所有字节数组。 如果需要返回10个长度的short数组,请调用 ReadInt16("A[0], 10"); 地址必须写 "A[0]",不能写 "A" , 如需要读取结构体,参考 首先说明支持的类型地址,在PLC里支持了大量的类型,有些甚至在C#里是不存在的。现在做个统一的声明 PLC类型 含义 代号 C# 类型 备注 bool 位类型数据 0xC1 bool SINT 8位的整型 0xC2 sbyte 有符号8位很少用,HSL直接用byte USINT 无符号8位的整型 0xC6 byte 如需要,使用实现 BYTE 8位字符数据 0xD1 byte 如需要,使用实现 INT 16位的整型 0xC3 short UINT 无符号的16位整型 0xC7 ushort DINT 32位的整型 0xC4 int UDINT 无符号的32位整型 0xC8 uint LINT 64位的整型 0xC5 long ULINT 无符号的64位的整型 0xC9 ulong REAL 单精度浮点数 0xCA float DOUBLE 双精度浮点数 0xCB double STRING 字符串数据 0xD0 string 前两个字节为字符长度 8bit string BYTE 8位的字符串 0xD1 本质是BYTE数组 16bit string WORD 16位的字符串 0xD2 本质是WORD数组,可存放中文 32bit string DWORD 32位的字符串 0xD2 本质是DWORD数组,可存放中文 在读写操作之前,先看看怎么实例化和连接PLC
现在来说明以下具体的操作细节。我们假设有如下的变量:
CESHI_A SINT
CESHI_B BYTE
CESHI_C INT
CESHI_D UINT
CESHI_E SINT[0..9]
CESHI_F BYTE[0..9]
CESHI_G INT[0..9]
CESHI_H UINT[0..9]
CESHI_I INT[0..511]
CESHI_J STRING[12]
ToPc_ID1 ARRAY[0..99] OF STRING[20]
CESHI_O BOOL
CESHI_P BOOL[0..31]
对 CESHI_A 来说,读写这么操作 对于 CESHI_B 来说,写入的操作有点特殊 对于 CESHI_C, CESHI_D 来说,就是 ReadInt16(string address) , Write( string address, short value ) 和 ReadUInt16(string address) 和 Write( string address, ushort value ) 差别不大。 所以我们着重来看看数组的情况,以 CESHI_G 标签为例子:
情况一,我想一次读取这个标签所有的字节数组(当长度满足的情况下,会一次性返回数据) 情况二,我想读取第3个数,或是第6个数开始,一共5个数 其他的数组情况都是类似的,我们来看看字符串 CESHI_J 变量 对于 bool 变量来说,就是 ReadBool("CESHI_O") 和 Write("CESHI_O", true) 操作,如果是bool数组,就不一样了 最后我们来看看结构体的操作,假设我们有个结构体
MyData.Code STRING(12)
MyData.Value1 INT
MyData.Value2 INT
MyData.Value3 REAL
MyData.Value4 INT
MyData.Value5 INT
MyData.Value6 INT[0..3]
因为bool比较复杂,暂时不考虑。要读取上述的结构体,我们需要定义结构一样的数据 定义好后,我们再来读取就很简单了。
实例化一个默认的对象 根据指定的IP及端口来实例化这个连接对象 PLC的Ip地址 PLC的端口号信息 当前产品的型号信息
Model information of the current product
O -> T Network Connection ID [商业授权] 读取一个结构体的对象,需要事先根据实际的数据点位定义好结构体,然后使用本方法进行读取,当结构体定义不对时,本方法将会读取失败
[Authorization] To read a structure object, you need to define the structure in advance according to the actual data points, and then use this method to read. When the structure definition is incorrect, this method will fail to read
本方法需要商业授权支持,具体的使用方法,参考API文档的示例代码 我们来看看结构体的操作,假设我们有个结构体
MyData.Code STRING(12)
MyData.Value1 INT
MyData.Value2 INT
MyData.Value3 REAL
MyData.Value4 INT
MyData.Value5 INT
MyData.Value6 INT[0..3]
因为bool比较复杂,暂时不考虑。要读取上述的结构体,我们需要定义结构一样的数据 定义好后,我们再来读取就很简单了。
结构体的类型 结构体对象的地址 是否读取成功的对象
读取bool数据信息,如果读取的是单bool变量,就直接写变量名,如果是 bool 数组,就
Read a single bool data information, if it is a single bool variable, write the variable name directly, if it is a value of a bool array composed of int, it is always accessed with "i=" at the beginning, for example, "i=A[0]"
节点的名称 -> Name of the node 读取的数组长度信息 带有结果对象的结果数据 -> Result data with result info
读取PLC的byte类型的数据
Read the byte type of PLC data
节点的名称 -> Name of the node 带有结果对象的结果数据 -> Result data with result info
当前的PLC不支持该功能,需要调用 方法来实现。
The current PLC does not support this function, you need to call the method to achieve it.
地址 写入结果值
使用指定的类型写入指定的节点数据
Writes the specified node data with the specified type
节点的名称 -> Name of the node 类型代码,详细参见上的常用字段 -> Type code, see the commonly used Fields section on the in detail 实际的数据值 -> The actual data value 如果节点是数组,就是数组长度 -> If the node is an array, it is the array length 是否写入成功 -> Whether to write successfully
读取字符串数据,默认为UTF-8编码
Read string data, default is UTF-8 encoding
起始地址 数据长度 带有成功标识的string数据 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码:
从PLC反馈的数据解析 PLC的反馈数据 是否是返回的操作 带有结果标识的最终数据 欧姆的Cpu的单元信息数据类 实例化一个默认的对象 根据原始的数据来实例化相关的CPU单元信息 原始字节数 Cpu unit Model CPU Unit internal system version Largest number, 0 to 19, in CPU Unit’s EM area. Maximum size of usable program area,unit: k words The size of the area (CIO, WR, HR, AR, timer/counter completion flags, TN) in which bit commands can be used( always 23). unit: bytes Total words in the DM area (always 32,768) Among the banks in the EM area, the number of banks(0 to D ) without file memory Banks (1 bank = 32,768 words) Maximum number of timers/counters available (always 8) 欧姆龙Cpu的状态信息 实例化一个默认的对象 从原始的字节数组来实例化一个 原始的字节数据 Run 或是 Stop No 或是 Present Normal 或是 Standby PROGRAM, MONITOR, RUN Among errors that occur when the command is executed, the error code indicates the most serious. If there are no errors, it will be 0000 (hex) Indicates messages from execution of FAL(006) or FALS(007). If there is no error message, or if FAL(006) or FALS(007) are not being executed, 16 spaces( ASCII 20) will be returned. 欧姆龙的Fins协议的数据类型 实例化一个Fins的数据类型 进行位操作的指令 进行字操作的指令 进行位操作的指令 进行字操作的指令 DM Area CIO Area Work Area Holding Bit Area Auxiliary Bit Area TIM Area 欧姆龙PLC通讯类,采用Fins-Tcp通信协议实现,支持的地址信息参见api文档信息。
Omron PLC communication class is implemented using Fins-Tcp communication protocol. For the supported address information, please refer to the api document information.
PLC的IP地址的要求,最后一个整数的范围应该小于250,否则会发生连接不上的情况。
如果在测试的时候报错误码64,经网友 上海-Lex 指点,是因为PLC中产生了报警,如伺服报警,模块错误等产生的,但是数据还是能正常读到的,屏蔽64报警或清除plc错误可解决
如果碰到NX系列连接失败,或是无法读取的,需要使用网口2,配置ip地址,网线连接网口2,配置FINSTCP,把UDP的端口改成9601的,这样就可以读写了。
需要特别注意属性,在超长数据读取时,规定了切割读取的长度,在不是CP1H及扩展模块的时候,可以设置为999,提高一倍的通信速度。
地址列表: 地址支持的列表如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 DM Area D D100,D200 10 CIO Area C C100,C200 10 Work Area W W100,W200 10 Holding Bit Area H H100,H200 10 Auxiliary Bit Area A A100,A200 10 EM Area E E0.0,EF.200,E10.100 10
实例化一个欧姆龙PLC Fins帧协议的通讯对象
Instantiate a communication object of Omron PLC Fins frame protocol
指定ip地址和端口号来实例化一个欧姆龙PLC Fins帧协议的通讯对象
Specify the IP address and port number to instantiate a communication object of the Omron PLC Fins frame protocol
PLCd的Ip地址 PLC的端口
信息控制字段,默认0x80
Information control field, default 0x80
系统使用的内部信息
Internal information used by the system
网络层信息,默认0x02,如果有八层消息,就设置为0x07
Network layer information, default is 0x02, if there are eight layers of messages, set to 0x07
PLC的网络号地址,默认0x00
PLC network number address, default 0x00
00: Local network
01-7F: Remote network address (decimal: 1 to 127)
PLC的节点地址,这个值在配置了ip地址之后是默认赋值的,默认为Ip地址的最后一位
PLC node address. This value is assigned by default after the IP address is configured. The default is the last bit of the IP address.
假如你的PLC的Ip地址为192.168.0.10,那么这个值就是10
PLC的单元号地址,通常都为0
PLC unit number address, usually 0
00: CPU Unit
FE: Controller Link Unit or Ethernet Unit connected to network
10 TO 1F: CPU Bus Unit
E1: Inner Board
上位机的网络号地址
Network number and address of the computer
00: Local network
01-7F: Remote network (1 to 127 decimal)
上位机的节点地址,默认是0x01,当连接PLC之后,将由PLC来设定当前的值。
The node address of the host computer is 0x01 by default. After connecting to the PLC, the PLC will set the current value.
v9.6.5版本及之前的版本都需要手动设置,如果是多连接,相同的节点是连接不上PLC的。
上位机的单元号地址
Unit number and address of the computer
00: CPU Unit
10-1F: CPU Bus Unit
设备的标识号
Service ID. Used to identify the process generating the transmission. Set the SID to any number between 00 and FF
进行字读取的时候对于超长的情况按照本属性进行切割,默认500,如果不是CP1H及扩展模块的,可以设置为999,可以提高一倍的通信速度。
When reading words, it is cut according to this attribute for the case of overlength. The default is 500. If it is not for CP1H and expansion modules, it can be set to 999, which can double the communication speed.
将普通的指令打包成完整的指令 FINS的核心指令 完整的可用于发送PLC的命令 假设起始地址为D100,D100存储了温度,100.6℃值为1006,D101存储了压力,1.23Mpa值为123,D102,D103存储了产量计数,读取如下: 以下是读取不同类型数据的示例 假设起始地址为D100,D100存储了温度,100.6℃值为1006,D101存储了压力,1.23Mpa值为123,D102,D103存储了产量计数,读取如下: 以下是写入不同类型数据的示例 Omron PLC的FINS协议相关的辅助类,主要是一些地址解析,读写的指令生成。
The auxiliary classes related to the FINS protocol of Omron PLC are mainly some address resolution and the generation of read and write instructions.
根据读取的地址,长度,是否位读取创建Fins协议的核心报文
According to the read address, length, whether to read the core message that creates the Fins protocol
地址,具体格式请参照示例说明 读取的数据长度 是否使用位读取 读取的长度切割,默认500 带有成功标识的Fins核心报文
根据写入的地址,数据,是否位写入生成Fins协议的核心报文
According to the written address, data, whether the bit is written to generate the core message of the Fins protocol
地址内容,具体格式请参照示例说明 实际的数据 是否位数据 带有成功标识的Fins核心报文
验证欧姆龙的Fins-TCP返回的数据是否正确的数据,如果正确的话,并返回所有的数据内容
Verify that the data returned by Omron's Fins-TCP is correct data, if correct, and return all data content
来自欧姆龙返回的数据内容 带有是否成功的结果对象
验证欧姆龙的Fins-Udp返回的数据是否正确的数据,如果正确的话,并返回所有的数据内容
Verify that the data returned by Omron's Fins-Udp is correct data, if correct, and return all data content
来自欧姆龙返回的数据内容 带有是否成功的结果对象
根据欧姆龙返回的错误码,获取错误信息的字符串描述文本
According to the error code returned by Omron, get the string description text of the error message
错误码 文本描述
从欧姆龙PLC中读取想要的数据,返回读取结果,读取长度的单位为字,地址格式为"D100","C100","W100","H100","A100"
Read the desired data from the Omron PLC and return the read result. The unit of the read length is word. The address format is "D100", "C100", "W100", "H100", "A100"
PLC设备的连接对象 读取地址,格式为"D100","C100","W100","H100","A100" 读取的数据长度 分割信息 带成功标志的结果数据对象
向PLC写入数据,数据格式为原始的字节类型,地址格式为"D100","C100","W100","H100","A100"
Write data to PLC, the data format is the original byte type, and the address format is "D100", "C100", "W100", "H100", "A100"
PLC设备的连接对象 初始地址 原始的字节数据 结果
从欧姆龙PLC中批量读取位软元件,地址格式为"D100.0","C100.0","W100.0","H100.0","A100.0"
Read bit devices in batches from Omron PLC with address format "D100.0", "C100.0", "W100.0", "H100.0", "A100.0"
PLC设备的连接对象 读取地址,格式为"D100","C100","W100","H100","A100" 读取的长度 分割信息 带成功标志的结果数据对象
向PLC中位软元件写入bool数组,返回是否写入成功,比如你写入D100,values[0]对应D100.0,地址格式为"D100.0","C100.0","W100.0","H100.0","A100.0"
Write the bool array to the PLC's median device and return whether the write was successful. For example, if you write D100, values [0] corresponds to D100.0 and the address format is "D100.0", "C100.0", "W100. 0 "," H100.0 "," A100.0 "
PLC设备的连接对象 要写入的数据地址 要写入的实际数据,可以指定任意的长度 返回写入结果
将CPU单元的操作模式更改为RUN,从而使PLC能够执行其程序。
Changes the CPU Unit’s operating mode to RUN, enabling the PLC to execute its program.
当执行RUN时,CPU单元将开始运行。 在执行RUN之前,您必须确认系统的安全性。 启用“禁止覆盖受保护程序”设置时,无法执行此命令。
The CPU Unit will start operation when RUN is executed. You must confirm the safety of the system before executing RUN. When the “prohibit overwriting of protected program” setting is enabled, this command cannot be executed.
PLC设备的连接对象 是否启动成功
将CPU单元的操作模式更改为PROGRAM,停止程序执行。
Changes the CPU Unit’s operating mode to PROGRAM, stopping program execution.
当执行STOP时,CPU单元将停止操作。 在执行STOP之前,您必须确认系统的安全性。
The CPU Unit will stop operation when STOP is executed. You must confirm the safety of the system before executing STOP.
PLC设备的连接对象 是否停止成功
[商业授权] 读取CPU的一些数据信息,主要包含型号,版本,一些数据块的大小
[Authorization] Read some data information of the CPU, mainly including the model, version, and the size of some data blocks
PLC设备的连接对象 是否读取成功
[商业授权] 读取CPU单元的一些操作状态数据,主要包含运行状态,工作模式,错误信息等。
[Authorization] Read some operating status data of the CPU unit, mainly including operating status, working mode, error information, etc.
PLC设备的连接对象 是否读取成功
[商业授权] 欧姆龙的虚拟服务器,支持DM区,CIO区,Work区,Hold区,Auxiliary区,可以方便的进行测试
[Authorization] Omron's virtual server supports DM area, CIO area, Work area, Hold area, and Auxiliary area, which can be easily tested
实例化一个Fins协议的服务器
Instantiate a Fins protocol server
当收到mc协议的报文的时候应该触发的方法,允许继承重写,来实现自定义的返回,或是数据监听。
The method that should be triggered when a message of the mc protocol is received is allowed to be inherited and rewritten to achieve a custom return or data monitoring.
mc报文 返回的报文信息
将核心报文打包的方法,追加报文头
The method of packing the core message, adding the message header
错误码 Fins的核心报文 核心的内容 完整的报文信息
欧姆龙的Udp协议的实现类,地址类型和Fins-TCP一致,无连接的实现,可靠性不如
Omron's Udp protocol implementation class, the address type is the same as Fins-TCP, and the connectionless implementation is not as reliable as
实例化一个默认的对象
Instantiate a default object
获取或设置一次接收时的数据长度,默认2KB数据长度 重新开始接收数据 欧姆龙的HostLink协议的实现,地址支持示例 DM区:D100; CIO区:C100; Work区:W100; Holding区:H100; Auxiliary区: A100
Implementation of Omron's HostLink protocol, address support example DM area: D100; CIO area: C100; Work area: W100; Holding area: H100; Auxiliary area: A100
感谢 深圳~拾忆 的测试,地址可以携带站号信息,例如 s=2;D100
如果发现串口线和usb同时打开才能通信的情况,需要按照如下的操作:
串口线不是标准的串口线,电脑的串口线的235引脚分别接PLC的329引脚,45线短接,就可以通讯,感谢 深圳-小君(QQ932507362)提供的解决方案。
初始化串口信息,9600波特率,7位数据位,1位停止位,偶校验
Initial serial port information, 9600 baud rate, 7 data bits, 1 stop bit, even parity
端口号信息,例如"COM3"
初始化串口信息,波特率,7位数据位,1位停止位,偶校验
Initializes serial port information, baud rate, 7-bit data bit, 1-bit stop bit, even parity
端口号信息,例如"COM3" 波特率
将普通的指令打包成完整的指令 PLC的站号信息 fins指令 完整的质量 欧姆龙的HostLink的C-Mode实现形式,地址支持携带站号信息,例如:s=2;D100
Omron's HostLink C-Mode implementation form, the address supports carrying station number information, for example: s=2;D100
暂时只支持的字数据的读写操作,不支持位的读写操作。
读取PLC的当前的型号信息 型号 解析欧姆龙的数据地址,参考来源是Omron手册第188页,比如D100, E1.100
Analyze Omron's data address, the reference source is page 188 of the Omron manual, such as D100, E1.100
数据地址 是否是位地址 是否读取 解析后的结果地址对象
根据读取的地址,长度,是否位读取创建Fins协议的核心报文
According to the read address, length, whether to read the core message that creates the Fins protocol
地址,具体格式请参照示例说明 读取的数据长度 是否使用位读取 带有成功标识的Fins核心报文
根据读取的地址,长度,是否位读取创建Fins协议的核心报文
According to the read address, length, whether to read the core message that creates the Fins protocol
地址,具体格式请参照示例说明 等待写入的数据 带有成功标识的Fins核心报文
验证欧姆龙的Fins-TCP返回的数据是否正确的数据,如果正确的话,并返回所有的数据内容 来自欧姆龙返回的数据内容 是否读取 带有是否成功的结果对象 将普通的指令打包成完整的指令 fins指令 站号信息 完整的质量 获取model的字符串描述信息 型号代码 是否解析成功 欧姆龙的HostLink的C-Mode实现形式,当前的类是通过以太网透传实现。地址支持携带站号信息,例如:s=2;D100
The C-Mode implementation form of Omron’s HostLink, the current class is realized through Ethernet transparent transmission. Address supports carrying station number information, for example: s=2;D100
暂时只支持的字数据的读写操作,不支持位的读写操作。
读取PLC的当前的型号信息 型号 欧姆龙的HostLink协议的实现,基于Tcp实现,地址支持示例 DM区:D100; CIO区:C100; Work区:W100; Holding区:H100; Auxiliary区: A100
Implementation of Omron's HostLink protocol, based on tcp protocol, address support example DM area: D100; CIO area: C100; Work area: W100; Holding area: H100; Auxiliary area: A100
感谢 深圳~拾忆 的测试,地址可以携带站号信息,例如 s=2;D100
如果发现串口线和usb同时打开才能通信的情况,需要按照如下的操作:
串口线不是标准的串口线,电脑的串口线的235引脚分别接PLC的329引脚,45线短接,就可以通讯,感谢 深圳-小君(QQ932507362)提供的解决方案。
欧姆龙的地址参考如下: 地址支持的列表如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 DM Area D D100,D200 10 CIO Area C C100,C200 10 Work Area W W100,W200 10 Holding Bit Area H H100,H200 10 Auxiliary Bit Area A A100,A200 10
Specifies whether or not there are network relays. Set “80” (ASCII: 38,30) when sending an FINS command to a CPU Unit on a network.Set “00” (ASCII: 30,30) when sending to a CPU Unit connected directly to the host computer. The response wait time sets the time from when the CPU Unit receives a command block until it starts to return a response.It can be set from 0 to F in hexadecimal, in units of 10 ms. If F(15) is set, the response will begin to be returned 150 ms (15 × 10 ms) after the command block was received. PLC设备的站号信息
PLC device station number information
进行字读取的时候对于超长的情况按照本属性进行切割,默认260。
When reading words, it is cut according to this attribute for the case of overlength. The default is 260.
将普通的指令打包成完整的指令 PLC的站号信息 fins指令 完整的质量 验证欧姆龙的Fins-TCP返回的数据是否正确的数据,如果正确的话,并返回所有的数据内容 发送的报文信息 来自欧姆龙返回的数据内容 带有是否成功的结果对象 根据错误信息获取当前的文本描述信息 错误代号 文本消息 [商业授权] 欧姆龙的HostLink虚拟服务器,支持DM区,CIO区,Work区,Hold区,Auxiliary区,可以方便的进行测试
[Authorization] Omron's HostLink virtual server supports DM area, CIO area, Work area, Hold area, and Auxiliary area, which can be easily tested
支持TCP的接口以及串口,方便客户端进行测试,或是开发用于教学的虚拟服务器对象
启动HostLink串口的从机服务,使用默认的参数进行初始化串口,9600波特率,8位数据位,无奇偶校验,1位停止位
Start the slave service of hostlink, initialize the serial port with default parameters, 9600 baud rate, 8 data bits, no parity, 1 stop bit
串口信息
启动HostLink串口的从机服务,使用默认的参数进行初始化串口,7位数据位,偶校验,1位停止位
Start the slave service of hostlink, initialize the serial port with default parameters, 8 data bits, no parity, 1 stop bit
串口信息 波特率
启动HostLink串口的从机服务,使用自定义的初始化方法初始化串口的参数
Start the slave service of hostlink and initialize the parameters of the serial port using a custom initialization method
初始化信息的委托
关闭hostlink的串口对象
Close the serial port object of hostlink
接收到串口数据的时候触发 串口对象 消息 开放以太网协议,仍然在开发中
Open Ethernet protocol, still under development
实例化一个默认的对象
Instantiate a default object
使用指定的IP地址及端口来初始化对象
Use the specified IP address and port to initialize the object
Ip地址 端口号
自定义的命令读取 构建一个读取的初始报文 松下PLC的辅助类,提供了基本的辅助方法,用于解析地址,计算校验和,创建报文
The auxiliary class of Panasonic PLC provides basic auxiliary methods for parsing addresses, calculating checksums, and creating messages
位地址转换方法,101等同于10.1等同于10*16+1=161
Bit address conversion method, 101 is equivalent to 10.1 is equivalent to 10 * 16 + 1 = 161
地址信息 实际的位地址信息
解析数据地址,解析出地址类型,起始地址
Parse the data address, resolve the address type, start address
数据地址 解析出地址类型,起始地址
将松下的命令打包成带有%开头,CRC校验,CR结尾的完整的命令报文。 站号信息 松下的命令。例如 RCSR100F 原始的字节数组的命令 创建读取离散触点的报文指令
Create message instructions for reading discrete contacts
站号信息 地址信息 包含是否成功的结果对象
创建写入离散触点的报文指令
Create message instructions to write discrete contacts
站号信息 地址信息 bool值数组 包含是否成功的结果对象
创建批量读取触点的报文指令
Create message instructions for batch reading contacts
站号信息 地址信息 数据长度 包含是否成功的结果对象
创建批量读取触点的报文指令
Create message instructions for batch reading contacts
设备站号 地址信息 数据值 包含是否成功的结果对象
检查从PLC反馈的数据,并返回正确的数据内容
Check the data feedback from the PLC and return the correct data content
反馈信号 是否成功的结果信息
检查从PLC反馈的数据,并返回正确的数据内容
Check the data feedback from the PLC and return the correct data content
反馈信号 是否成功的结果信息
根据错误码获取到错误描述文本
Get the error description text according to the error code
错误代码 字符信息
根据MC的错误码去查找对象描述信息 错误码 描述信息 松下PLC的数据读写类,基于MC协议的实现,具体的地址格式请参考备注说明
Data reading and writing of Panasonic PLC, based on the implementation of the MC protocol, please refer to the note for specific address format
地址的输入的格式说明如下: 地址名称 地址代号 地址示例一 地址范围 字操作 位操作 输入继电器 X X0000,X100F X0000~X109F 输出继电器 Y Y0000,Y100F Y0000~Y109F 链接继电器 L L0000,L100F L0000~L0127F 内部继电器 R R0000,R100F R0000~R511F,R9000~R951F 数据存储器 D D100,D200 D0~D65532,D90000~D90999 × 特殊存储器 SD SD100,SD200 SD0~SD999 × 链路寄存器 LD LD0,LD100 LD0~LD255 × 定时器(当前值) TN TN100,TN200 TN0~TN1023 × 定时器(接点) TS TS100,TS200 TS0~TS1023 计数器(当前值) CN CN100,CN200 CN0~CN1023 × 计数器(接点) CS CS100,CS200 CS0~CS1023
实例化松下的的Qna兼容3E帧协议的通讯对象
Instantiate Panasonic's Qna compatible 3E frame protocol communication object
指定ip地址及端口号来实例化一个松下的Qna兼容3E帧协议的通讯对象
Specify an IP address and port number to instantiate a Panasonic Qna compatible 3E frame protocol communication object
PLC的Ip地址 PLC的端口
松下PLC的数据交互协议,采用Mewtocol协议通讯,支持的地址列表参考api文档
The data exchange protocol of Panasonic PLC adopts Mewtocol protocol for communication. For the list of supported addresses, refer to the api document.
地址支持携带站号的访问方式,例如:s=2;D100
松下PLC的数据交互协议,采用Mewtocol协议通讯,基于Tcp透传实现的机制,支持的地址列表参考api文档
The data exchange protocol of Panasonic PLC adopts Mewtocol protocol for communication. It is based on the mechanism of Tcp transparent transmission. For the list of supported addresses, refer to the api document.
地址支持携带站号的访问方式,例如:s=2;D100 触点地址的输入的格式说明如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 外部输入继电器 X X11,X1F 10 × X33 等同于 X3.3 外部输出继电器 Y Y22,Y2A 10 × Y21 等同于 Y2.1 内部继电器 R R0F,R100F 10 × R21 等同于 R2.1 定时器 T T0,T100 10 × 计数器 C C0,C100 10 × 链接继电器 L L0F,L100F 10 × L21 等同于 L2.1 数据地址的输入的格式说明如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 数据寄存器 DT D D0,D100 10 × 链接寄存器 LD LD LD0,LD100 10 × 文件寄存器 FL F F0,F100 10 × 目标值 SV S S0,S100 10 × 经过值 EV K K0,K100 10 × 索引寄存器 IX IX IX0,IX100 10 × 索引寄存器 IY IY IY0,IY100 10 ×
实例化一个默认的松下PLC通信对象,默认站号为0xEE
Instantiate a default Panasonic PLC communication object, the default station number is 0xEE
站号信息,默认为0xEE
实例化一个默认的松下PLC通信对象,指定ip地址,端口,默认站号为0xEE
Instantiate a default Panasonic PLC communication object, specify the IP address, port, and the default station number is 0xEE
Ip地址数据 端口号 站号信息,默认为0xEE
PLC设备的目标站号,需要根据实际的设置来填写
The target station number of the PLC device needs to be filled in according to the actual settings
读取指定地址的原始数据,地址示例:D0 F0 K0 T0 C0, 地址支持携带站号的访问方式,例如:s=2;D100
Read the original data of the specified address, address example: D0 F0 K0 T0 C0, the address supports carrying station number information, for example: s=2;D100
起始地址 长度 原始的字节数据的信息
将数据写入到指定的地址里去,地址示例:D0 F0 K0 T0 C0, 地址支持携带站号的访问方式,例如:s=2;D100
Write data to the specified address, address example: D0 F0 K0 T0 C0, the address supports carrying station number information, for example: s=2;D100
起始地址 真实数据 是否写入成功
批量读取松下PLC的位数据,按照字为单位,地址为 X0,X10,Y10,读取的长度为16的倍数
Read the bit data of Panasonic PLC in batches, the unit is word, the address is X0, X10, Y10, and the read length is a multiple of 16
起始地址 数据长度 读取结果对象
读取单个的地址信息的bool值,地址举例:SR0.0 X0.0 Y0.0 R0.0 L0.0
Read the bool value of a single address, for example: SR0.0 X0.0 Y0.0 R0.0 L0.0
起始地址 读取结果对象
往指定的地址写入 数组,地址举例:SR0.0 X0.0 Y0.0 R0.0 L0.0, 起始的位地址必须为16的倍数,写入的 数组长度也为16的倍数。
Write the array to the specified address, address example: SR0.0 X0.0 Y0.0 R0.0 L0.0, the starting bit address must be a multiple of 16. The length of the array is also a multiple of 16.
起始地址 数据值信息 返回是否成功的结果对象
往指定的地址写入bool数据,地址举例:SR0.0 X0.0 Y0.0 R0.0 L0.0
Write bool data to the specified address. Example address: SR0.0 X0.0 Y0.0 R0.0 L0.0
起始地址 数据值信息 返回是否成功的结果对象
松下Mewtocol协议的虚拟服务器,支持串口和网口的操作 实例化一个默认的对象 创建一个失败的返回消息,指定错误码即可,会自动计算出来BCC校验和 错误码 原始字节报文,用于反馈消息 根据命令来获取相关的数据内容 启动modbus-rtu的从机服务,使用默认的参数进行初始化串口,9600波特率,8位数据位,无奇偶校验,1位停止位
Start the slave service of modbus-rtu, initialize the serial port with default parameters, 9600 baud rate, 8 data bits, no parity, 1 stop bit
串口信息
启动modbus-rtu的从机服务,使用默认的参数进行初始化串口,8位数据位,无奇偶校验,1位停止位
Start the slave service of modbus-rtu, initialize the serial port with default parameters, 8 data bits, no parity, 1 stop bit
串口信息 波特率
启动modbus-rtu的从机服务,使用自定义的初始化方法初始化串口的参数
Start the slave service of modbus-rtu and initialize the parameters of the serial port using a custom initialization method
初始化信息的委托
关闭modbus-rtu的串口对象
Close the serial port object of modbus-rtu
接收到串口数据的时候触发 串口对象 消息 Sick的扫码器的服务器信息,只要启动服务器之后,扫码器配置将条码发送到PC的指定端口上来即可,就可以持续的接收条码信息,同样也适用于海康,基恩士,DATELOGIC 。
The server information of Sick's code scanner, as long as the server is started, the code scanner is configured to send the barcode to the designated port of the PC, and it can continuously receive the barcode information.
实例化一个默认的服务器对象
Instantiate a default server object
接收条码数据的委托信息
Entrusted information to receive barcode data
Ip地址信息 条码信息
当接收到条码数据的时候触发
Triggered when barcode data is received
新增一个主动连接的请求,将不会收到是否连接成功的信息,当网络中断及奔溃之后,会自动重新连接。
A new active connection request will not receive a message whether the connection is successful. When the network is interrupted and crashed, it will automatically reconnect.
对方的Ip地址 端口号
获取当前在线的客户端数量
Get the number of clients currently online
Contains the methods to convert between and S7 representation of datetime values. 这部分的代码参考了另一个s7的库,感谢原作者,此处贴出出处,遵循 MIT 协议 https://github.com/S7NetPlus/s7netplus The minimum value supported by the specification. The maximum value supported by the specification. Parses a value from bytes. Input bytes read from PLC. A object representing the value read from PLC. Thrown when the length of is not 8 or any value in is outside the valid range of values. Parses an array of values from bytes. Input bytes read from PLC. An array of objects representing the values read from PLC. Thrown when the length of is not a multiple of 8 or any value in is outside the valid range of values. Converts a value to a byte array. The DateTime value to convert. A byte array containing the S7 date time representation of . Thrown when the value of is before or after . Converts an array of values to a byte array. The DateTime values to convert. A byte array containing the S7 date time representations of . Thrown when any value of is before or after . 使用了Fetch/Write协议来和西门子进行通讯,该种方法需要在PLC侧进行一些配置
Using the Fetch/write protocol to communicate with Siemens, this method requires some configuration on the PLC side
配置的参考文章地址:https://www.cnblogs.com/dathlin/p/8685855.html
与S7协议相比较而言,本协议不支持对单个的点位的读写操作。如果读取M100.0,需要读取M100的值,然后进行提取位数据。 如果需要写入位地址的数据,可以读取plc的byte值,然后进行与或非,然后写入到plc之中。 地址支持的列表如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 中间寄存器 M M100,M200 10 × 输入寄存器 I I100,I200 10 × 输出寄存器 Q Q100,Q200 10 × DB块寄存器 DB DB1.100,DB1.200 10 × 定时器的值 T T100,T200 10 × 计数器的值 C C100,C200 10 ×
实例化一个西门子的Fetch/Write协议的通讯对象
Instantiate a communication object for a Siemens Fetch/write protocol
实例化一个西门子的Fetch/Write协议的通讯对象
Instantiate a communication object for a Siemens Fetch/write protocol
PLC的Ip地址 -> Specify IP Address PLC的端口 -> Specify IP Port
从PLC读取数据,地址格式为I100,Q100,DB20.100,M100,T100,C100,以字节为单位
Read data from PLC, address format I100,Q100,DB20.100,M100,T100,C100, in bytes
起始地址,格式为I100,M100,Q100,DB20.100,T100,C100 -> Starting address, formatted as I100,M100,Q100,DB20.100,T100,C100 读取的数量,以字节为单位 -> The number of reads, in bytes 带有成功标志的字节信息 -> Byte information with a success flag 假设起始地址为M100,M100存储了温度,100.6℃值为1006,M102存储了压力,1.23Mpa值为123,M104,M105,M106,M107存储了产量计数,读取如下: 以下是读取不同类型数据的示例
将数据写入到PLC数据,地址格式为I100,Q100,DB20.100,M100,以字节为单位
Writes data to the PLC data, in the address format i100,q100,db20.100,m100, in bytes
起始地址,格式为M100,I100,Q100,DB1.100 -> Starting address, formatted as M100,I100,Q100,DB1.100 要写入的实际数据 -> The actual data to write 是否写入成功的结果对象 -> Whether to write a successful result object 假设起始地址为M100,M100,M101存储了温度,100.6℃值为1006,M102,M103存储了压力,1.23Mpa值为123,M104-M107存储了产量计数,写入如下: 以下是写入不同类型数据的示例
读取指定地址的byte数据
Reads the byte data for the specified address
起始地址,格式为M100,I100,Q100,DB1.100 -> Starting address, formatted as M100,I100,Q100,DB1.100 byte类型的结果对象 -> Result object of type Byte 不适用于DB块,定时器,计数器的数据读取,会提示相应的错误,读取长度必须为偶数
向PLC中写入byte数据,返回是否写入成功
Writes byte data to the PLC and returns whether the write succeeded
起始地址,格式为M100,I100,Q100,DB1.100 -> Starting address, formatted as M100,I100,Q100,DB1.100 要写入的实际数据 -> The actual data to write 是否写入成功的结果对象 -> Whether to write a successful result object
计算特殊的地址信息
Calculate special address information
字符串信息 实际值
解析数据地址,解析出地址类型,起始地址,DB块的地址
Parse data address, parse out address type, start address, db block address
起始地址,格式为M100,I100,Q100,DB1.100 -> Starting address, formatted as M100,I100,Q100,DB1.100 解析出地址类型,起始地址,DB块的地址 -> Resolves address type, start address, db block address
生成一个读取字数据指令头的通用方法
A general method for generating a command header to read a Word data
起始地址,格式为M100,I100,Q100,DB1.100 -> Starting address, formatted as M100,I100,Q100,DB1.100 读取数据个数 -> Number of Read data 带结果对象的报文数据 -> Message data with a result object
生成一个写入字节数据的指令
Generate an instruction to write byte data
起始地址,格式为M100,I100,Q100,DB1.100 -> Starting address, formatted as M100,I100,Q100,DB1.100 实际的写入的内容 -> The actual content of the write 带结果对象的报文数据 -> Message data with a result object
[商业授权] 西门子的Fetch/Write协议的虚拟PLC,可以用来调试通讯,也可以实现一个虚拟的PLC功能,从而开发一套带虚拟环境的上位机系统,可以用来演示,测试。
[Authorization] The virtual PLC of Siemens Fetch/Write protocol can be used for debugging communication, and can also realize a virtual PLC function, so as to develop a set of upper computer system with virtual environment, which can be used for demonstration and testing.
本虚拟服务器的使用需要企业商业授权,否则只能运行24小时。本协议实现的虚拟PLC服务器,主要支持I,Q,M,DB块的数据读写操作,例如 M100, DB1.100,服务器端也可以对位进行读写操作,例如M100.1,DB1.100.2; 但是不支持连接的远程客户端对位进行操作。 地址支持的列表如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 中间寄存器 M M100,M200 10 输入寄存器 I I100,I200 10 输出寄存器 Q Q100,Q200 10 DB块寄存器 DB DB1.100,DB1.200 10 V寄存器 V V100,V200 10 V寄存器本质就是DB块1 本虚拟的PLC共有4个DB块,DB1.X, DB2.X, DB3.X, 和其他DB块。对于远程客户端的读写长度,暂时没有限制。
实例化一个S7协议的服务器,支持I,Q,M,DB1.X, DB2.X, DB3.X 数据区块的读写操作
Instantiate a server with S7 protocol, support I, Q, M, DB1.X data block read and write operations
西门子的MPI协议信息,注意:未测试通过,无法使用
Siemens MPI protocol information, note: it has not passed the test and cannot be used
实例化一个西门子的MPI协议对象
Instantiate a Siemens MPI protocol object
西门子PLC的站号信息
Siemens PLC station number information
与PLC进行握手
Handshake with PLC
是否握手成功
从西门子的PLC中读取数据信息,地址为"M100","AI100","I0","Q0","V100","S100"等,详细请参照API文档
Read data information from Siemens PLC, the address is "M100", "AI100", "I0", "Q0", "V100", "S100", etc., please refer to the API documentation
西门子的地址数据信息 数据长度 带返回结果的结果对象
从西门子的PLC中读取bool数据信息,地址为"M100.0","AI100.1","I0.3","Q0.6","V100.4","S100"等,详细请参照API文档
Read the bool data information from Siemens PLC. The addresses are "M100.0", "AI100.1", "I0.3", "Q0.6", "V100.4", "S100", etc. For details, please Refer to API documentation
西门子的地址数据信息 数据长度 带返回结果的结果对象
将字节数据写入到西门子PLC中,地址为"M100.0","AI100.1","I0.3","Q0.6","V100.4","S100"等,详细请参照API文档
Write byte data to Siemens PLC, the address is "M100.0", "AI100.1", "I0.3", "Q0.6", "V100.4", "S100", etc. Refer to API documentation
西门子的地址数据信息 数据长度 带返回结果的结果对象
从西门子的PLC中读取byte数据信息,地址为"M100.0","AI100.1","I0.3","Q0.6","V100.4","S100"等,详细请参照API文档
Read byte data information from Siemens PLC. The addresses are "M100.0", "AI100.1", "I0.3", "Q0.6", "V100.4", "S100", etc. For details, please Refer to API documentation
西门子的地址数据信息 带返回结果的结果对象
将byte数据写入到西门子PLC中,地址为"M100.0","AI100.1","I0.3","Q0.6","V100.4","S100"等,详细请参照API文档
Write byte data to Siemens PLC, the address is "M100.0", "AI100.1", "I0.3", "Q0.6", "V100.4", "S100", etc. API documentation
西门子的地址数据信息 数据长度 带返回结果的结果对象
生成一个读取字数据指令头的通用方法
A general method for generating a command header to read a Word data
设备的站号信息 -> Station number information for the device 起始地址,例如M100,I0,Q0,V100 -> Start address, such as M100,I0,Q0,V100 读取数据长度 -> Read Data length 是否为位读取 包含结果对象的报文 -> Message containing the result object
生成一个写入PLC数据信息的报文内容
Generate a message content to write PLC data information
PLC的站号 地址 数据值 是否写入成功
根据错误信息,获取到文本信息 状态 消息文本 根据错误信息,获取到文本信息 错误类型 错误代码 错误信息 西门子的PLC类型,目前支持的访问类型 1200系列 300系列 400系列 1500系列PLC 200的smart系列 200系统,需要额外配置以太网模块 西门子的PPI协议,适用于s7-200plc,注意,由于本类库的每次通讯分成2次操作,内部增加了一个同步锁,所以单次通信时间比较久,另外,地址支持携带站号,例如:s=2;M100
Siemens' PPI protocol is suitable for s7-200plc. Note that since each communication of this class library is divided into two operations, and a synchronization lock is added inside, the single communication time is relatively long. In addition, the address supports carrying the station number, for example : S=2;M100
适用于西门子200的通信,非常感谢 合肥-加劲 的测试,让本类库圆满完成。注意:M地址范围有限 0-31地址
在本类的实现类里,如果使用了Async的异步方法,没有增加同步锁,多线程调用可能会引发数据错乱的情况。
In the implementation class of this class, if the asynchronous method of Async is used, the synchronization lock is not added, and multi-threaded calls may cause data disorder.
实例化一个西门子的PPI协议对象
Instantiate a Siemens PPI protocol object
西门子PLC的站号信息
Siemens PLC station number information
从西门子的PLC中读取数据信息,地址为"M100","AI100","I0","Q0","V100","S100"等
Read data information from Siemens PLC with addresses "M100", "AI100", "I0", "Q0", "V100", "S100", etc.
西门子的地址数据信息 数据长度 带返回结果的结果对象
从西门子的PLC中读取bool数据信息,地址为"M100.0","AI100.1","I0.3","Q0.6","V100.4","S100"等
Read bool data information from Siemens PLC, the addresses are "M100.0", "AI100.1", "I0.3", "Q0.6", "V100.4", "S100", etc.
西门子的地址数据信息 数据长度 带返回结果的结果对象
将字节数据写入到西门子PLC中,地址为"M100.0","AI100.1","I0.3","Q0.6","V100.4","S100"等
Write byte data to Siemens PLC with addresses "M100.0", "AI100.1", "I0.3", "Q0.6", "V100.4", "S100", etc.
西门子的地址数据信息 数据长度 带返回结果的结果对象
将bool数据写入到西门子PLC中,地址为"M100.0","AI100.1","I0.3","Q0.6","V100.4","S100"等
Write the bool data to Siemens PLC with the addresses "M100.0", "AI100.1", "I0.3", "Q0.6", "V100.4", "S100", etc.
西门子的地址数据信息 数据长度 带返回结果的结果对象
从西门子的PLC中读取byte数据信息,地址为"M100","AI100","I0","Q0","V100","S100"等,详细请参照API文档
Read byte data information from Siemens PLC. The addresses are "M100", "AI100", "I0", "Q0", "V100", "S100", etc. Please refer to the API documentation for details.
西门子的地址数据信息 带返回结果的结果对象
向西门子的PLC中读取byte数据,地址为"M100","AI100","I0","Q0","V100","S100"等,详细请参照API文档
Read byte data from Siemens PLC with addresses "M100", "AI100", "I0", "Q0", "V100", "S100", etc. For details, please refer to the API documentation
西门子的地址数据信息 数据长度 带返回结果的结果对象
启动西门子PLC为RUN模式,参数信息可以携带站号信息 "s=2;", 注意,分号是必须的。
Start Siemens PLC in RUN mode, parameter information can carry station number information "s=2;", note that the semicolon is required.
额外的参数信息,例如可以携带站号信息 "s=2;", 注意,分号是必须的。 是否启动成功
停止西门子PLC,切换为Stop模式,参数信息可以携带站号信息 "s=2;", 注意,分号是必须的。
Stop Siemens PLC and switch to Stop mode, parameter information can carry station number information "s=2;", note that the semicolon is required.
额外的参数信息,例如可以携带站号信息 "s=2;", 注意,分号是必须的。 是否停止成功
使用指定的ip地址和端口号来实例化对象
Instantiate the object with the specified IP address and port number
Ip地址信息 端口号信息
解析数据地址,解析出地址类型,起始地址,DB块的地址
Parse data address, parse out address type, start address, db block address
起始地址,例如M100,I0,Q0,V100 -> Start address, such as M100,I0,Q0,V100 解析数据地址,解析出地址类型,起始地址,DB块的地址 -> Parse data address, parse out address type, start address, db block address
生成一个读取字数据指令头的通用方法
A general method for generating a command header to read a Word data
设备的站号信息 -> Station number information for the device 起始地址,例如M100,I0,Q0,V100 -> Start address, such as M100,I0,Q0,V100 读取数据长度 -> Read Data length 是否为位读取 包含结果对象的报文 -> Message containing the result object
生成一个写入PLC数据信息的报文内容 PLC的站号 地址 数据值 是否写入成功 根据错误信息,获取到文本信息 状态 消息文本 根据错误信息,获取到文本信息 错误类型 错误代码 错误信息 创建写入PLC的bool类型数据报文指令 PLC的站号信息 地址信息 bool[]数据值 带有成功标识的结果对象 检查西门子PLC的返回的数据和合法性,对反馈的数据进行初步的校验 服务器返回的原始的数据内容 是否校验成功 根据站号信息获取命令二次确认的报文信息 站号信息 二次命令确认的报文 一个西门子的客户端类,使用S7协议来进行数据交互,对于s300,s400需要关注的设置值, 对于s200,需要关注的设置值,详细参考demo的设置。
A Siemens client class uses the S7 protocol for data exchange. For s300 and s400, you need to pay attention to the setting values of and . For s200, you need to pay attention to and . See cref="LocalTSAP"/> and settings, please refer to the demo settings for details.
暂时不支持bool[]的批量写入操作,请使用 Write(string, byte[]) 替换。
对于200smartPLC的V区,就是DB1.X,例如,V100=DB1.100,当然了你也可以输入V100
地址支持的列表如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 中间寄存器 M M100,M200 10 输入寄存器 I I100,I200 10 输出寄存器 Q Q100,Q200 10 DB块寄存器 DB DB1.100,DB1.200 10 V寄存器 V V100,V200 10 V寄存器本质就是DB块1 定时器的值 T T100,T200 10 仅在200smart测试通过 计数器的值 C C100,C200 10 仅在200smart测试通过 智能输入寄存器 AI AI100,AI200 10 智能输出寄存器 AQ AQ100,AQ200 10 对于200smartPLC的V区,就是DB1.X,例如,V100=DB1.100 假设起始地址为M100,M100存储了温度,100.6℃值为1006,M102存储了压力,1.23Mpa值为123,M104,M105,M106,M107存储了产量计数,读取如下: 以下是读取不同类型数据的示例 以下是一个复杂的读取示例
实例化一个西门子的S7协议的通讯对象
Instantiate a communication object for a Siemens S7 protocol
指定西门子的型号
实例化一个西门子的S7协议的通讯对象并指定Ip地址
Instantiate a communication object for a Siemens S7 protocol and specify an IP address
指定西门子的型号 Ip地址
初始化方法
Initialize method
指定西门子的型号 -> Designation of Siemens Ip地址 -> IpAddress
PLC的槽号,针对S7-400的PLC设置的
The slot number of PLC is set for PLC of s7-400
PLC的机架号,针对S7-400的PLC设置的
The frame number of the PLC is set for the PLC of s7-400
获取或设置当前PLC的连接方式,PG: 0x01,OP: 0x02,S7Basic: 0x03...0x10
Get or set the current PLC connection mode, PG: 0x01, OP: 0x02, S7Basic: 0x03...0x10
西门子相关的本地TSAP参数信息
A parameter information related to Siemens
西门子相关的远程TSAP参数信息
A parameter information related to Siemens
获取当前西门子的PDU的长度信息,不同型号PLC的值会不一样。
Get the length information of the current Siemens PDU, the value of different types of PLC will be different.
从PLC读取订货号信息
Reading order number information from PLC
CPU的订货号信息 -> Order number information for the CPU
对PLC进行热启动,目前仅适用于200smart型号
Hot start for PLC, currently only applicable to 200smart model
是否启动成功的结果对象
对PLC进行冷启动,目前仅适用于200smart型号
Cold start for PLC, currently only applicable to 200smart model
是否启动成功的结果对象
对PLC进行停止,目前仅适用于200smart型号
Stop the PLC, currently only applicable to the 200smart model
是否启动成功的结果对象
从PLC读取原始的字节数据,地址格式为I100,Q100,DB20.100,M100,长度参数以字节为单位
Read the original byte data from the PLC, the address format is I100, Q100, DB20.100, M100, length parameters in bytes
起始地址,格式为I100,M100,Q100,DB20.100
Starting address, formatted as I100,M100,Q100,DB20.100 读取的数量,以字节为单位
The number of reads, in bytes 是否读取成功的结果对象
Whether to read the successful result object
假设起始地址为M100,M100存储了温度,100.6℃值为1006,M102存储了压力,1.23Mpa值为123,M104,M105,M106,M107存储了产量计数,读取如下: 以下是读取不同类型数据的示例
从PLC读取数据,地址格式为I100,Q100,DB20.100,M100,以位为单位 -> Read the data from the PLC, the address format is I100,Q100,DB20.100,M100, in bits units 起始地址,格式为I100,M100,Q100,DB20.100 -> Starting address, formatted as I100,M100,Q100,DB20.100 是否读取成功的结果对象 -> Whether to read the successful result object 一次性从PLC获取所有的数据,按照先后顺序返回一个统一的Buffer,需要按照顺序处理,两个数组长度必须一致,数组长度无限制
One-time from the PLC to obtain all the data, in order to return a unified buffer, need to be processed sequentially, two array length must be consistent
起始地址,格式为I100,M100,Q100,DB20.100
Starting address, formatted as I100,M100,Q100,DB20.100 数据长度数组
Array of data Lengths 是否读取成功的结果对象 -> Whether to read the successful result object 原先的批量的长度为19,现在已经内部自动处理整合,目前的长度为任意和长度。 以下是一个高级的读取示例
读取西门子的地址数据信息,支持任意个数的数据读取
Read Siemens address data information, support any number of data reading
西门子的数据地址
Siemens data address 返回的结果对象信息 -> Whether to read the successful result object
单次的读取,只能读取最多19个数组的长度,所以不再对外公开该方法 西门子的地址对象 返回的结果对象信息 基础的写入数据的操作支持
Operational support for the underlying write data
完整的字节数据 -> Full byte data 是否写入成功的结果对象 -> Whether to write a successful result object
将数据写入到PLC数据,地址格式为I100,Q100,DB20.100,M100,以字节为单位
Writes data to the PLC data, in the address format I100,Q100,DB20.100,M100, in bytes
起始地址,格式为I100,M100,Q100,DB20.100 -> Starting address, formatted as I100,M100,Q100,DB20.100 写入的原始数据 -> Raw data written to 是否写入成功的结果对象 -> Whether to write a successful result object 假设起始地址为M100,M100,M101存储了温度,100.6℃值为1006,M102,M103存储了压力,1.23Mpa值为123,M104-M107存储了产量计数,写入如下: 以下是写入不同类型数据的示例
读取指定地址的bool数据,地址格式为I100,M100,Q100,DB20.100
reads bool data for the specified address in the format I100,M100,Q100,DB20.100
起始地址,格式为I100,M100,Q100,DB20.100 -> Starting address, formatted as I100,M100,Q100,DB20.100 是否读取成功的结果对象 -> Whether to read the successful result object 对于200smartPLC的V区,就是DB1.X,例如,V100=DB1.100 假设读取M100.0的位是否通断
读取指定地址的bool数组,地址格式为I100,M100,Q100,DB20.100
reads bool array data for the specified address in the format I100,M100,Q100,DB20.100
起始地址,格式为I100,M100,Q100,DB20.100 -> Starting address, formatted as I100,M100,Q100,DB20.100 读取的长度信息 是否读取成功的结果对象 -> Whether to read the successful result object 对于200smartPLC的V区,就是DB1.X,例如,V100=DB1.100
写入PLC的一个位,例如"M100.6","I100.7","Q100.0","DB20.100.0",如果只写了"M100"默认为"M100.0"
Write a bit of PLC, for example "M100.6", "I100.7", "Q100.0", "DB20.100.0", if only write "M100" defaults to "M100.0"
起始地址,格式为"M100.6", "I100.7", "Q100.0", "DB20.100.0" -> Start address, format "M100.6", "I100.7", "Q100.0", "DB20.100.0" 写入的数据,True或是False -> Writes the data, either True or False 是否写入成功的结果对象 -> Whether to write a successful result object 假设写入M100.0的位是否通断
[危险] 向PLC中写入bool数组,比如你写入M100,那么data[0]对应M100.0
[Danger] Write the bool array to the PLC, for example, if you write M100, then data[0] corresponds to M100.0
起始地址,格式为I100,M100,Q100,DB20.100 -> Starting address, formatted as I100,mM100,Q100,DB20.100 要写入的bool数组,长度为8的倍数 -> The bool array to write, a multiple of 8 in length 是否写入成功的结果对象 -> Whether to write a successful result object 批量写入bool数组存在一定的风险,原因是只能批量写入长度为8的倍数的数组,否则会影响其他的位的数据,请谨慎使用。
There is a certain risk in batch writing to bool arrays, because you can only batch write arrays whose length is a multiple of 8, otherwise it will affect other bit data. Please use it with caution.
读取指定地址的byte数据,地址格式I100,M100,Q100,DB20.100
Reads the byte data of the specified address, the address format I100,Q100,DB20.100,M100
起始地址,格式为I100,M100,Q100,DB20.100 -> Starting address, formatted as I100,M100,Q100,DB20.100 是否读取成功的结果对象 -> Whether to read the successful result object 参考的注释
向PLC中写入byte数据,返回值说明
Write byte data to the PLC, return value description
起始地址,格式为I100,M100,Q100,DB20.100 -> Starting address, formatted as I100,mM100,Q100,DB20.100 byte数据 -> Byte data 是否写入成功的结果对象 -> Whether to write a successful result object
使用双字节编码的方式,将字符串以 Unicode 编码写入到PLC的地址里,可以使用中文。
Use the double-byte encoding method to write the character string to the address of the PLC in Unicode encoding. Chinese can be used.
起始地址,格式为I100,M100,Q100,DB20.100 -> Starting address, formatted as I100,mM100,Q100,DB20.100 字符串的值 是否写入成功的结果对象
读取西门子的地址的字符串信息,这个信息是和西门子绑定在一起,长度随西门子的信息动态变化的
Read the Siemens address string information. This information is bound to Siemens and its length changes dynamically with the Siemens information
数据地址,具体的格式需要参照类的说明文档 带有是否成功的字符串结果类对象
读取西门子的地址的字符串信息,这个信息是和西门子绑定在一起,长度随西门子的信息动态变化的
Read the Siemens address string information. This information is bound to Siemens and its length changes dynamically with the Siemens information
数据地址,具体的格式需要参照类的说明文档 带有是否成功的字符串结果类对象
从PLC中读取时间格式的数据
Read time format data from PLC
地址 时间对象
向PLC中写入时间格式的数据
Writes data in time format to the PLC
地址 时间 是否写入成功
A general method for generating a command header to read a Word data siemens address Message containing the result object 生成一个位读取数据指令头的通用方法 -> A general method for generating a bit-read-Data instruction header 起始地址,例如M100.0,I0.1,Q0.1,DB2.100.2 -> Start address, such as M100.0,I0.1,Q0.1,DB2.100.2 包含结果对象的报文 -> Message containing the result object 生成一个写入字节数据的指令 -> Generate an instruction to write byte data 起始地址,示例M100,I100,Q100,DB1.100 -> Start Address, example M100,I100,Q100,DB1.100 原始的字节数据 -> Raw byte data 包含结果对象的报文 -> Message containing the result object 生成一个写入位数据的指令 -> Generate an instruction to write bit data 起始地址,示例M100,I100,Q100,DB1.100 -> Start Address, example M100,I100,Q100,DB1.100 是否通断 -> Power on or off 包含结果对象的报文 -> Message containing the result object [商业授权] 西门子S7协议的虚拟服务器,支持TCP协议,模拟的是1200的PLC进行通信,在客户端进行操作操作的时候,最好是选择1200的客户端对象进行通信。
[Authorization] The virtual server of Siemens S7 protocol supports TCP protocol. It simulates 1200 PLC for communication. When the client is operating, it is best to select the 1200 client object for communication.
本西门子的虚拟PLC仅限商业授权用户使用,感谢支持。 对于200smartPLC的V区,就是DB1.X,例如,V100=DB1.100 地址支持的列表如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 中间寄存器 M M100,M200 10 输入寄存器 I I100,I200 10 输出寄存器 Q Q100,Q200 10 DB块寄存器 DB DB1.100,DB1.200 10 V寄存器 V V100,V200 10 V寄存器本质就是DB块1 定时器的值 T T100,T200 10 未测试通过 计数器的值 C C100,C200 10 未测试通过 你可以很快速并且简单的创建一个虚拟的s7服务器 当然如果需要高级的服务器,指定日志,限制客户端的IP地址,获取客户端发送的信息,在服务器初始化的时候就要参照下面的代码: 服务器创建好之后,我们就可以对服务器进行一些读写的操作了,下面的代码是基础的BCL类型的读写操作。 高级的对于byte数组类型的数据进行批量化的读写操作如下: 更高级操作请参见源代码。
实例化一个S7协议的服务器,支持I,Q,M,DB1.X, DB2.X, DB3.X 数据区块的读写操作
Instantiate a server with S7 protocol, support I, Q, M, DB1.X data block read and write operations
西门子的基于WebApi协议读写数据对象,支持对PLC的标签进行读取,适用于1500系列,该数据标签需要共享开放出来。
Siemens reads and writes data objects based on the WebApi protocol, supports reading PLC tags, and is suitable for the 1500 series. The data tags need to be shared and opened.
实例化一个默认的西门子WebApi通信对象
Instantiate a default Siemens WebApi communication object
使用指定的ip地址及端口号来实例化一个对象,端口号默认使用443,如果是http访问,使用80端口号
Use the specified ip address and port number to instantiate an object, the port number is 443 by default, if it is http access, port 80 is used
ip地址信息 端口号信息
根据设置好的用户名和密码信息,登录远程的PLC,返回是否登录成功!在读写之前,必须成功调用当前的方法,获取到token,否则无法进行通信。
According to the set user name and password information, log in to the remote PLC, and return whether the login is successful! Before reading and writing, the current method must be successfully called to obtain the token, otherwise communication cannot be carried out.
是否连接成功
和PLC断开当前的连接信息,主要是使得Token信息失效。
Disconnecting the current connection information from the PLC mainly makes the token information invalid.
是否断开成功
当前PLC的通信令牌,当调用时,会自动获取,当然你也可以手动赋值一个合法的令牌,跳过直接进行读写操作。
The communication token of the current PLC will be automatically obtained when is called. Of course, you can also manually assign a valid token, skip and read it directly Write operation.
从PLC中根据输入的数据标签名称,读取出原始的字节数组信息,长度参数无效,需要二次解析
According to the input data tag name, read the original byte array information from the PLC, the length parameter is invalid, and a second analysis is required
标签的地址信息,例如 "全局DB".Static_21 无效的参数 原始的字节数组信息
从PLC中根据输入的数据标签名称,按照类型byte进行读取出数据信息
According to the input data tag name from the PLC, read the data information according to the type byte
标签的地址信息,例如 "全局DB".Static_21 包含是否成功的结果对象
将原始的字节数组信息写入到PLC的指定的数据标签里,写入方式为raw写入,是否写入成功取决于PLC的返回信息
Write the original byte array information to the designated data tag of the PLC. The writing method is raw writing. Whether the writing is successful depends on the return information of the PLC.
标签的地址信息,例如 "全局DB".Static_21 原始的字节数据信息 是否成功写入PLC的结果对象
写入数组数据,返回是否成功
Write array data, return whether the write was successful
标签的地址信息,例如 "全局DB".Static_21 写入值 是否写入成功
批量写入数组数据,返回是否成功
Batch write array data, return whether the write was successful
标签的地址信息,例如 "全局DB".Static_21 写入值 是否写入成功
从PLC中读取字符串内容,需要指定数据标签名称,使用JSON方式读取,所以无论字符串是中英文都是支持读取的。
To read the string content from the PLC, you need to specify the data tag name and use JSON to read it, so no matter whether the string is in Chinese or English, it supports reading.
标签的地址信息,例如 "全局DB".Static_21 无效参数 包含是否成功的结果对象
将字符串信息写入到PLC中,需要指定数据标签名称,如果PLC指定了类型为WString,才支持写入中文,否则会出现乱码。
To write string information into the PLC, you need to specify the data tag name. If the PLC specifies the type as WString, it supports writing in Chinese, otherwise garbled characters will appear.
标签的地址信息,例如 "全局DB".Static_21 字符串数据信息 是否成功写入
读取当前PLC的操作模式,如果读取成功,结果将会是如下值之一:STOP, STARTUP, RUN, HOLD, -
Read the current operating mode of the PLC. If the reading is successful, the result will be one of the following values: STOP, STARTUP, RUN, HOLD,-
结果对象
[商业授权] 从PLC读取多个地址的数据信息,每个地址的数据类型可以不一致,需要自动从中提取出正确的数据
[Authorization] Read the data information of multiple addresses from the PLC, the data type of each address can be inconsistent, you need to automatically extract the correct data from
一旦中间有一个地址失败了,本方法就会返回失败,所以在调用本方法时,需要确保所有的地址正确。 "全局DB".Static_21 返回是否读取成功的结果对象
[商业授权] 读取PLC的RPC接口的版本号信息
[Authorization] Read the version number information of the PLC's RPC interface
包含是否成功的结果对象
[商业授权] 对PLC对象进行PING操作
[Authorization] PING the PLC object
是否PING成功
从PLC退出登录,当前的token信息失效,需要再次调用获取新的token信息才可以。
Log out from the PLC, the current token information is invalid, you need to call again to get the new token information.
是否成功
托利多电子秤的串口服务器对象 实例化一个默认的对象 初始化串口信息,9600波特率,8位数据位,1位停止位,无奇偶校验
Initial serial port information, 9600 baud rate, 8 data bits, 1 stop bit, no parity
端口号信息,例如"COM3"
初始化串口信息,波特率,8位数据位,1位停止位,无奇偶校验
Initializes serial port information, baud rate, 8-bit data bit, 1-bit stop bit, no parity
端口号信息,例如"COM3" 波特率
初始化串口信息,波特率,数据位,停止位,奇偶校验需要全部自己来指定
Start serial port information, baud rate, data bit, stop bit, parity all need to be specified
端口号信息,例如"COM3" 波特率 数据位 停止位 奇偶校验
根据自定义初始化方法进行初始化串口信息
Initialize the serial port information according to the custom initialization method
初始化的委托方法
打开一个新的串行端口连接
Open a new serial port connection
获取一个值,指示串口是否处于打开状态
Gets a value indicating whether the serial port is open
是或否
关闭当前的串口连接
Close the current serial connection
获取或设置一个值,该值指示在串行通信中是否启用请求发送 (RTS) 信号。
Gets or sets a value indicating whether the request sending (RTS) signal is enabled in serial communication.
当前连接串口信息的端口号名称
The port name of the current connection serial port information
当前连接串口信息的波特率
Baud rate of current connection serial port information
托利多数据接收时的委托 数据发送对象 数据对象 当接收到一条新的托利多的数据的时候触发 托利多标准格式的数据类对象 实例化一个默认的对象 从缓存里加载一个标准格式的对象 缓存 为 True 则是净重,为 False 则为毛重 为 True 则是正,为 False 则为负 是否在范围之外 是否为动态,为 True 则是动态,为 False 则为稳态 单位 是否打印 是否10被扩展 重量 皮重 解析数据的原始字节 托利多电子秤的TCP服务器,启动服务器后,等待电子秤的数据连接。 实例化一个默认的对象 获取或设置当前的报文否是含有校验的,默认为含有校验 托利多数据接收时的委托 数据发送对象 数据对象 当接收到一条新的托利多的数据的时候触发 信捷PLC的相关辅助类 根据信捷PLC的地址,解析出转换后的modbus协议信息 PLC的系列信息 汇川plc的地址信息 原始的对应的modbus信息 还原后的modbus地址 根据信捷PLC的地址,解析出转换后的modbus协议信息,适用XC系列 安川plc的地址信息 原始的对应的modbus信息 还原后的modbus地址 解析信捷的XD1,XD2,XD3,XL1,XL3系列的PLC的Modbus地址和内部软元件的对照 PLC内部的软元件的地址 默认的Modbus功能码 解析后的Modbus地址 信捷PLC的XC,XD,XL系列的串口转网口通讯类,虽然硬件层走的是TCP协议,但是底层使用ModbusRtu协议实现,每个系列支持的地址类型及范围不一样,详细参考API文档
Xinje PLC's XC, XD, XL series serial port to network port communication type, although the hardware layer uses TCP protocol, but the bottom layer is implemented by ModbusRtu protocol. The address types and ranges supported by each series are different. Please refer to the API documentation for details.
对于XC系列适用于XC1/XC2/XC3/XC5/XCM/XCC系列,线圈支持X,Y,S,M,T,C,寄存器支持D,F,E,T,C
对于XD,XL系列适用于XD1/XD2/XD3/XD5/XDM/XDC/XD5E/XDME/XDH/XL1/XL3/XL5/XL5E/XLME, 线圈支持X,Y,S,M,SM,T,C,ET,SEM,HM,HS,HT,HC,HSC 寄存器支持D,ID,QD,SD,TD,CD,ETD,HD,HSD,HTD,HCD,HSCD,FD,SFD,FS
实例化一个默认的对象 通过指定站号,ip地址,端口号来实例化一个新的对象 Ip地址 端口号 站号信息 通过指定站号,IP地址,端口以及PLC的系列来实例化一个新的对象
Instantiate a new object by specifying the station number and PLC series
PLC的系列 Ip地址 端口号 站号信息
获取或设置当前的信捷PLC的系列,默认XC系列 信捷PLC的不同系列的枚举 XC系列 XD系列 XL系列 信捷PLC的XC,XD,XL系列的串口通讯类,底层使用ModbusRtu协议实现,每个系列支持的地址类型及范围不一样,详细参考API文档
XC, XD, XL series serial communication of Xinje PLC, the bottom layer is implemented by ModbusRtu protocol, the address type and range supported by each series are different, please refer to the API document for details
对于XC系列适用于XC1/XC2/XC3/XC5/XCM/XCC系列,线圈支持X,Y,S,M,T,C,寄存器支持D,F,E,T,C
对于XD,XL系列适用于XD1/XD2/XD3/XD5/XDM/XDC/XD5E/XDME/XDH/XL1/XL3/XL5/XL5E/XLME, 线圈支持X,Y,S,M,SM,T,C,ET,SEM,HM,HS,HT,HC,HSC 寄存器支持D,ID,QD,SD,TD,CD,ETD,HD,HSD,HTD,HCD,HSCD,FD,SFD,FS
地址可以携带站号访问,例如 s=2;M100 以下是XC1/XC2/XC3/XC5/XCM/XCC系列的地址内容 地址名称 地址代号 地址范围 地址进制 备注 内部继电器 M M0-M7999,M8000-M8511 10 流程继电器 S S0-S1023 10 定时器 T T0-T618 10 计数器 C C0-C634 10 输入 X X0-X1037 或者X0.0-X103.7 8 输出 Y Y0-Y1037 或者Y0.0-Y103.7 8 寄存器、 字元件、字变量地址定义: 地址名称 地址代号 地址范围 地址进制 备注 数据寄存器 D D0-D8511 10 Flash寄存器 F F0-F5000;F8000-F8511 10 扩展内部寄存器 E E0-E36863 10 定时器 T T0-T618 10 计数器 C C0-C634 10 我们再来看看XP系列,就是少了一点访问的数据类型,然后,地址范围也不一致
线圈、 位元件、位变量地址定义 地址名称 地址代号 地址范围 地址进制 备注 中间寄电器 M M0-M3071,M8000-M8511 10 S S0-S999 10 定时器 T T0-T255 10 计数器 C C0-C255 10 输入 X X0-X377 或者X0.0-X37.7 8 输出 Y Y0-Y377 或者Y0.0-Y37.7 8 寄存器、 字元件、字变量地址定义: 地址名称 地址代号 地址范围 地址进制 备注 数据寄存器 D D0-D8511 10 定时器 T T0-T255 10 计数器 C C0-C199,C200-C255 10 其实C200-C255的计数器是32位的 我们再来看看XD1、 XD2、 XD3、 XL1、 XL3 系列,支持的地址类型和地址范围如下:
线圈、 位元件、位变量地址定义 地址名称 地址代号 地址范围 地址进制 备注 中间寄电器 M M0-M7999 10 输入 X X0-X77,X10000-X11177,X20000-X20177,X30000-X30077 或者X0.0-X37.7 8 输出 Y Y0-Y77,Y10000-Y11177,Y20000-Y20177,Y30000-Y30077 或者Y0.0-Y37.7 8 S S0-S1023 10 SM SM0-SM2047 10 定时器 T T0-T575 10 计数器 C C0-C575 10 ET ET0-ET31 10 SEM SEM0-SEM31 10 HM HM0-HM959 10 HS HS0-HS127 10 HT HT0-HT95 10 HC HT0-HC95 10 HSC HST0-HSC31 10 寄存器、 字元件、字变量地址定义: 地址名称 地址代号 地址范围 地址进制 备注 数据寄存器 D D0-D7999 10 ID ID0-ID99,ID10000-ID10999,ID20000-ID20199,ID30000-ID30099 10 QD QD0-QD99,QD10000-QD10999,QD20000-QD20199,QD30000-QD30099 10 SD SD0-SD2047 10 TD TD0-TD575 10 CD CD0-CD575 10 ETD ETD0-ETD31 10 HD HD0-HD999 10 HSD HSD0-HSD499 10 HTD HTD0-HTD95 10 HCD HCD0-HCD95 10 HSCD HSCD0-HSCD31 10 FD FD0-FD5119 10 SFD SFD0-SFD1999 10 FSD FS0-FS47 10 我们再来看看XD5、 XDM、 XDC、 XD5E、 XDME、 XL5、 XL5E、 XLME 系列,支持的地址类型和地址范围如下:
线圈、 位元件、位变量地址定义 地址名称 地址代号 地址范围 地址进制 备注 中间寄电器 M M0-M20479 10 输入 X X0-X77,X10000-X11777,X20000-X20177,X30000-X30077 或者X0.0-X37.7 8 输出 Y Y0-Y77,Y10000-Y11777,Y20000-Y20177,Y30000-Y30077 或者Y0.0-Y37.7 8 S S0-S7999 10 SM SM0-SM4095 10 定时器 T T0-T4095 10 计数器 C C0-C4095 10 ET ET0-ET39 10 SEM SEM0-SEM127 10 HM HM0-HM6143 10 HS HS0-HS999 10 HT HT0-HT1023 10 HC HT0-HC1023 10 HSC HST0-HSC39 10 寄存器、 字元件、字变量地址定义: 地址名称 地址代号 地址范围 地址进制 备注 数据寄存器 D D0-D20479 10 ID ID0-ID99,ID10000-ID11599,ID20000-ID20199,ID30000-ID30099 10 QD QD0-QD99,QD10000-QD11599,QD20000-QD20199,QD30000-QD30099 10 SD SD0-SD4095 10 TD TD0-TD4095 10 CD CD0-CD4095 10 ETD ETD0-ETD39 10 HD HD0-HD6143 10 HSD HSD0-HSD1023 10 HTD HTD0-HTD1023 10 HCD HCD0-HCD1023 10 HSCD HSCD0-HSCD39 10 FD FD0-FD8191 10 SFD SFD0-SFD4095 10 FSD FS0-FS47 10 我们再来看看XDH 系列,支持的地址类型和地址范围如下:
线圈、 位元件、位变量地址定义 地址名称 地址代号 地址范围 地址进制 备注 中间寄电器 M M0-M20479 10 输入 X X0-X77,X10000-X11777,X20000-X20077 或者X0.0-X37.7 8 输出 Y Y0-Y77,Y10000-Y11777,Y20000-Y20077 或者Y0.0-Y37.7 8 S S0-S7999 10 SM SM0-SM4095 10 定时器 T T0-T4095 10 计数器 C C0-C4095 10 ET ET0-ET39 10 SEM SEM0-SEM127 10 HM HM0-HM6143 10 HS HS0-HS999 10 HT HT0-HT1023 10 HC HT0-HC1023 10 HSC HST0-HSC39 10 寄存器、 字元件、字变量地址定义: 地址名称 地址代号 地址范围 地址进制 备注 数据寄存器 D D0-D20479 10 ID ID0-ID99,ID10000-ID11599,ID20000-ID20099 10 QD QD0-QD99,QD10000-QD11599,QD20000-QD20099 10 SD SD0-SD4095 10 TD TD0-TD4095 10 CD CD0-CD4095 10 ETD ETD0-ETD39 10 HD HD0-HD6143 10 HSD HSD0-HSD1023 10 HTD HTD0-HTD1023 10 HCD HCD0-HCD1023 10 HSCD HSCD0-HSCD39 10 FD FD0-FD8191 10 SFD SFD0-SFD4095 10 FSD FS0-FS47 10
实例化一个默认的对象 指定客户端自己的站号来初始化
Specify the client's own station number to initialize
客户端自身的站号
通过指定站号以及PLC的系列来实例化一个新的对象
Instantiate a new object by specifying the station number and PLC series
PLC的系列 站号信息
获取或设置当前的信捷PLC的系列,默认XC系列 信捷PLC的XC,XD,XL系列的网口通讯类,底层使用ModbusTcp协议实现,每个系列支持的地址类型及范围不一样,详细参考API文档
XC, XD, XL series of Xinje PLC's network port communication class, the bottom layer is realized by ModbusTcp protocol, each series supports different address types and ranges, please refer to the API document for details
对于XC系列适用于XC1/XC2/XC3/XC5/XCM/XCC系列,线圈支持X,Y,S,M,T,C,寄存器支持D,F,E,T,C
对于XD,XL系列适用于XD1/XD2/XD3/XD5/XDM/XDC/XD5E/XDME/XDH/XL1/XL3/XL5/XL5E/XLME, 线圈支持X,Y,S,M,SM,T,C,ET,SEM,HM,HS,HT,HC,HSC 寄存器支持D,ID,QD,SD,TD,CD,ETD,HD,HSD,HTD,HCD,HSCD,FD,SFD,FS
实例化一个默认的对象 通过指定站号,ip地址,端口号来实例化一个新的对象 Ip地址 端口号 站号信息 通过指定站号,IP地址,端口以及PLC的系列来实例化一个新的对象
Instantiate a new object by specifying the station number and PLC series
PLC的系列 Ip地址 端口号 站号信息
获取或设置当前的信捷PLC的系列,默认XC系列 日本山武的数字指示调节器,目前适配SDC40B 实例化一个默认的对象 获取或设置当前的站号信息 山武的数字指定调节器的通信协议,基于CPL转网口的实现,测试型号 SDC40B 实例化一个默认的对象 获取或设置当前的站号信息 山武的数字指示调节器的虚拟设备,支持和HSL本身进行数据通信测试
Yamatake’s digital indicating regulator is a virtual device that supports data communication testing with HSL itself
实例化一个默认的对象
Instantiate a default object
获取或设置当前虚拟仪表的站号信息,如果站号不一致,将不予访问
Get or set the station number information of the current virtual instrument. If the station number is inconsistent, it will not be accessed
启动CPL串口的从机服务,使用默认的参数进行初始化串口,9600波特率,8位数据位,无奇偶校验,1位停止位
Start the slave service of hostlink, initialize the serial port with default parameters, 9600 baud rate, 8 data bits, no parity, 1 stop bit
串口信息
启动CPL串口的从机服务,使用默认的参数进行初始化串口,7位数据位,偶校验,1位停止位
Start the slave service of hostlink, initialize the serial port with default parameters, 8 data bits, no parity, 1 stop bit
串口信息 波特率
启动CPL串口的从机服务,使用自定义的初始化方法初始化串口的参数
Start the slave service of hostlink and initialize the parameters of the serial port using a custom initialization method
初始化信息的委托
关闭CPL的串口对象
Close the serial port object of hostlink
接收到串口数据的时候触发 串口对象 消息 辅助类方法 构建写入操作的报文信息 站号 地址 长度的长度 报文内容 构建写入操作的命令报文 站号信息 数据的地址 等待写入的值 写入的报文命令 用于服务器反馈的数据的报文打包操作 站号 错误码,如果为0则表示正常 原始数据值信息 数据类型 打包的报文数据信息 根据错误码获取到相关的错误代号信息 错误码 错误码对应的文本描述信息 从反馈的数据内容中解析出真实的数据信息 仪表反馈的真实的数据信息 解析之后的实际数据信息 扩展的Memobus协议信息 实例化一个Memobus-Tcp协议的客户端对象
Instantiate a client object of the Memobus-Tcp protocol
指定服务器地址,端口号,客户端自己的站号来初始化
Specify the server address, port number, and client's own station number to initialize
服务器的Ip地址 服务器的端口号
构建读取的命令报文 主功能码 子功能码 目标的CPU编号 发送源CPU编号 起始地址 读取地址长度 结果报文信息 横河PLC的通信辅助类。 获取横河PLC的错误的具体描述信息 错误码 [商业授权] 横河PLC的虚拟服务器,支持X,Y,I,E,M,T,C,L继电器类型的数据读写,支持D,B,F,R,V,Z,W,TN,CN寄存器类型的数据读写,可以用来测试横河PLC的二进制通信类型
[Authorization] Yokogawa PLC's virtual server, supports X, Y, I, E, M, T, C, L relay type data read and write, supports D, B, F, R, V, Z, W, TN, CN register types The data read and write can be used to test the binary communication type of Yokogawa PLC
其中的X继电器可以在服务器进行读写操作,但是远程的PLC只能进行读取,所有的数据读写的最大的范围按照协议进行了限制。 地址示例如下: 地址名称 地址代号 示例 字操作 位操作 备注 Input relay X X100,X200 服务器端可读可写 Output relay Y Y100,Y200 Internal relay I I100,I200 Share relay E E100,E200 Special relay M M100,M200 Time relay T T100,T200 Counter relay C C100,C200 link relay L L100, L200 Data register D D100,D200 × File register B B100,B200 × Cache register F F100,F200 × Shared register R R100,R200 × Index register V V100,V200 × Special register Z Z100,Z200 × Link register W W100,W200 × Timer current value TN TN100,TN200 × Counter current value CN CN100,CN200 × 你可以很快速并且简单的创建一个虚拟的横河服务器 当然如果需要高级的服务器,指定日志,限制客户端的IP地址,获取客户端发送的信息,在服务器初始化的时候就要参照下面的代码: 服务器创建好之后,我们就可以对服务器进行一些读写的操作了,下面的代码是基础的BCL类型的读写操作。 高级的对于byte数组类型的数据进行批量化的读写操作如下: 更高级操作请参见源代码。
实例化一个横河PLC的服务器,支持X,Y,I,E,M,T,C,L继电器类型的数据读写,支持D,B,F,R,V,Z,W,TN,CN寄存器类型的数据读写
Instantiate a Yokogawa PLC server, support X, Y, I, E, M, T, C, L relay type data read and write, support D, B, F, R, V, Z, W, TN, CN Register type data reading and writing
如果未执行程序,则开始执行程序
Starts executing a program if it is not being executed
停止当前正在执行程序
Stops the executing program.
横河PLC的二进制通信类,支持X,Y,I,E,M,T,C,L继电器类型的数据读写,支持D,B,F,R,V,Z,W,TN,CN寄存器类型的数据读写,还支持一些高级的信息读写接口,详细参考API文档。
Yokogawa PLC's binary communication type, supports X, Y, I, E, M, T, C, L relay type data read and write, supports D, B, F, R, V, Z, W, TN, CN registers Types of data reading and writing, and some advanced information reading and writing interfaces are also supported. Please refer to the API documentation for details.
基础的数据读写面向VIP用户开放,高级的读写随机数据,启动停止命令,读取程序状态, 系统信息,PLC时间,读写特殊的模块数据需要商业用户授权,读取的数据长度,读取的随机地址长度,在商业授权下,长度不受限制,可以无限大。 地址示例如下: 地址名称 地址代号 示例 字操作 位操作 备注 Input relay X X100,X200 只能读,不能写 Output relay Y Y100,Y200 Internal relay I I100,I200 Share relay E E100,E200 Special relay M M100,M200 Time relay T T100,T200 Counter relay C C100,C200 link relay L L100, L200 Data register D D100,D200 × File register B B100,B200 × Only available for sequence CPU modules F3SP22, F3SP25, F3SP28, F3SP35, F3SP38, F3SP53, F3SP58, F3SP59, F3SP66, F3SP67, F3SP71 and F3SP76 Cache register F F100,F200 × Only available for sequence CPU modules F3SP71 and F3SP76 Shared register R R100,R200 × Index register V V100,V200 × Special register Z Z100,Z200 × Link register W W100,W200 × Timer current value TN TN100,TN200 × Counter current value CN CN100,CN200 × 例如我们正常读取一个D100的数据如下: 我们在读取的时候可以动态的变更cpu信息,参考下面的代码 关于随机读写的代码示例,可以读写地址分布很散的地址,参考下面的代码 最后看一下读取特殊模块的数据,可以读取基本的字节数据,也可以使用富文本的地址读取
实例化一个默认的对象
Instantiate a default object
指定IP地址和端口号来实例化一个对象
Specify the IP address and port number to instantiate an object
Ip地址 端口号
获取或设置当前的CPU Number,默认值为1
Get or set the current CPU Number, the default value is 1
读取的线圈地址支持X,Y,I,E,M,T,C,L,寄存器地址支持D,B,F,R,V,Z,W,TN,CN,举例:D100;也可以携带CPU进行访问,举例:cpu=2;D100
[商业授权] 如果想要读取特殊模块的数据,需要使用 Special: 开头标记,举例:Special:unit=0;slot=1;100
The read coil address supports X, Y, I, E, M, T, C, L, and the register address supports D, B, F, R, V, Z, W, TN, CN, for example: D100; it can also be carried CPU access, for example: cpu=2;D100.
[Authorization] If you want to read the data of a special module, you need to use the Special: beginning tag, for example: Special:unit=0;slot=1;100
写入的线圈地址支持Y,I,E,M,T,C,L,寄存器地址支持D,B,F,R,V,Z,W,TN,CN,举例:D100;也可以携带CPU进行访问,举例:cpu=2;D100
如果想要写入特殊模块的数据,需要使用 Special: 开头标记,举例:Special:unit=0;slot=1;100
The read coil address supports Y, I, E, M, T, C, L, and the register address supports D, B, F, R, V, Z, W, TN, CN, for example: D100; it can also be carried CPU access, for example: cpu=2;D100. If you want to read the data of a special module, you need to use the Special: beginning tag, for example: Special:unit=0;slot=1;100
读取的线圈地址支持X,Y,I,E,M,T,C,L,举例:Y100;也可以携带CPU进行访问,举例:cpu=2;Y100
The read coil address supports X, Y, I, E, M, T, C, L, for example: Y100; you can also carry the CPU for access, for example: cpu=2;Y100
写入的线圈地址支持Y,I,E,M,T,C,L,举例:Y100;也可以携带CPU进行访问,举例:cpu=2;Y100
The write coil address supports Y, I, E, M, T, C, L, for example: Y100; you can also carry the CPU for access, for example: cpu=2;Y100
[商业授权] 随机读取数组信息,主需要出传入数组地址信息,就可以返回批量
[Authorization] Random read array information, the master needs to pass in the array address information, and then the batch can be returned to value
批量地址信息 读取的线圈地址支持X,Y,I,E,M,T,C,L,举例:Y100;也可以携带CPU进行访问,举例:cpu=2;Y100
The read coil address supports X, Y, I, E, M, T, C, L, for example: Y100; you can also carry the CPU for access, for example: cpu=2;Y100
带有成功标志的Bool数组信息
[商业授权] 随机写入数组信息,主需要出传入数组地址信息,以及对应的数组值
[Authorization] Randomly write the array information, the main need to pass in the array address information, and the corresponding array value
批量地址信息 批量的数据值信息 写入的线圈地址支持Y,I,E,M,T,C,L,举例:Y100;也可以携带CPU进行访问,举例:cpu=2;Y100
The write coil address supports Y, I, E, M, T, C, L, for example: Y100; you can also carry the CPU for access, for example: cpu=2;Y100
是否写入成功
[商业授权] 随机读取数组信息,主需要出传入数组地址信息,就可以返回批量
[Authorization] Random read array information, the master needs to pass in the array address information, and then the batch can be returned to value
批量地址信息 带有成功标志的Bool数组信息
[商业授权] 随机读取数组信息,主需要出传入数组地址信息,就可以返回批量
[Authorization] Random read array information, the master needs to pass in the array address information, and then the batch can be returned to value
批量地址信息 带有成功标志的Bool数组信息
[商业授权] 随机读取数组信息,主需要出传入数组地址信息,就可以返回批量
[Authorization] Random read array information, the master needs to pass in the array address information, and then the batch can be returned to value
批量地址信息 带有成功标志的Bool数组信息
[商业授权] 随机写入数组信息,主需要出传入数组地址信息,以及对应的数组值
[Authorization] Randomly write the array information, the main need to pass in the array address information, and the corresponding array value
批量地址信息 批量的数据值信息 是否写入成功
[商业授权] 随机写入数组信息,主需要出传入数组地址信息,以及对应的数组值
[Authorization] Randomly write the array information, the main need to pass in the array address information, and the corresponding array value
批量地址信息 批量的数据值信息 是否写入成功
[商业授权] 随机写入数组信息,主需要出传入数组地址信息,以及对应的数组值
[Authorization] Randomly write the array information, the main need to pass in the array address information, and the corresponding array value
批量地址信息 批量的数据值信息 是否写入成功
[商业授权] 如果未执行程序,则开始执行程序
[Authorization] Starts executing a program if it is not being executed
This command will be ignored if it is executed while a program is being executed.
Refer to the users manual for the individual modules for the response formats that are used at error times.
是否启动成功
[商业授权] 停止当前正在执行程序
[Authorization] Stops the executing program.
This command will be ignored if it is executed when no program is being executed.
Refer to the users manual for the individual modules for the response formats that are used at error times.
是否启动成功
[商业授权] 重置当前的模块,当前打开的连接被强制关闭。 模块中所做的设置也将被清除。然后当前对象需要重连PLC。
[Authorization] When this command is executed via an Ethernet interface module or an Ethernet connection of an F3SP66, F3SP67, F3SP71 or F3SP76 sequence CPU module, the connection which is currently open is forced to close. The settings made in the modules are also cleared. Then the current object needs to reconnect to the PLC.
是否重置成功
[商业授权] 读取当前PLC的程序状态,返回1:RUN;2:Stop;3:Debug;255:ROM writer
[Authorization] Read the program status. return code 1:RUN; 2:Stop; 3:Debug; 255:ROM writer
当前PLC的程序状态,返回1:RUN;2:Stop;3:Debug;255:ROM writer
[商业授权] 读取当前PLC的系统状态,系统的ID,CPU类型,程序大小信息
[Authorization] Read current PLC system status, system ID, CPU type, program size information
系统信息的结果对象
[商业授权] 读取当前PLC的时间信息,包含年月日时分秒
[Authorization] Read current PLC time information, including year, month, day, hour, minute, and second
PLC的当前的时间信息
[商业授权] 读取特殊模块的数据信息,需要指定模块单元号,模块站号,数据地址,长度信息。
[Authorization] To read the data information of a special module, you need to specify the module unit number, module slot number, data address, and length information.
模块的单元号 模块的站号 模块的数据地址 长度信息 带有成功标识的byte[],可以自行解析出所需要的各种类型的数据
检查当前的反馈内容,如果没有发生错误,就解析出实际的数据内容。
Check the current feedback content, if there is no error, parse out the actual data content.
原始的数据内容 解析之后的数据内容
构建读取命令的原始报文信息 Cpu Number 地址数据信息 数据长度信息 是否位访问 实际的读取的报文信息 构建随机读取的原始报文的初始命令 Cpu Number 实际的数据地址信息 是否是位读取 实际的读取的报文信息 构建批量写入Bool数组的命令,需要指定CPU Number信息和设备地址信息 Cpu Number 设备地址数据 实际的bool数组 构建的写入指令 构建批量随机写入Bool数组的命令,需要指定CPU Number信息和设备地址信息 Cpu Number 设备地址数据 实际的bool数组 构建的写入指令 构建字写入的命令报文信息,需要指定设备地址 Cpu Number 地址 原始的数据值 原始的报文命令 构建随机写入字的命令的报文 Cpu Number 地址 原始的数据值 原始的报文命令 构建启动PLC的命令报文 Cpu Number 原始的报文命令 构建停止PLC的命令报文 Cpu Number 原始的报文命令 构建读取特殊模块的命令报文 Cpu Number 模块单元号 模块站号 数据位置 长度信息 原始的报文命令 构建读取特殊模块的命令报文,需要传入高级地址,必须以 Special: 开头表示特殊模块地址,示例:Special:cpu=1;unit=0;slot=1;100
To construct a command message to read a special module, the advanced address needs to be passed in. It must start with Special: to indicate the address of the special module, for example: Special:cpu=1;unit=0;slot=1;100
Cpu Number 高级的混合地址,除了Cpu可以不携带,例如:Special:unit=0;slot=1;100 长度信息 原始的报文命令
构建读取特殊模块的命令报文 Cpu Number 模块单元号 模块站号 数据位置 数据内容 原始的报文命令 构建写入特殊模块的命令报文,需要传入高级地址,必须以 Special: 开头表示特殊模块地址,示例:Special:cpu=1;unit=0;slot=1;100
To construct a command message to write a special module, the advanced address needs to be passed in. It must start with Special: to indicate the address of the special module, for example: Special:cpu=1;unit=0;slot=1;100
Cpu Number 高级的混合地址,除了Cpu可以不携带,例如:Special:unit=0;slot=1;100 写入的原始数据内容 原始的报文命令
横河PLC的系统基本信息
Basic system information of Yokogawa PLC
当前系统的ID名称,例如F3SP21-ON
The ID name of the current system, such as F3SP21-ON
当前系统的修订版本号
The revision number of the current system
当前系统的类型,分为 SequenceBASIC
The type of the current system, divided into Sequence and BASIC
当前系统的程序大小,如果是Sequence系统,就是步序总量,如果是BASIC系统,就是字节数量
The program size of the current system, if it is a Sequence system, it is the total number of steps, if it is a BASIC system, it is the number of bytes
根据原始的数据信息解析出对象
Analyze the object according to the original data information
原始的数据信息 是否解析成功的结果对象
一个强类型的资源类,用于查找本地化的字符串等。 返回此类使用的缓存的 ResourceManager 实例。 使用此强类型资源类,为所有资源查找 重写当前线程的 CurrentUICulture 属性。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 查找 System.Drawing.Bitmap 类型的本地化资源。 ABB机器人的web api接口的客户端,可以方便快速的获取到abb机器人的一些数据信息
The client of ABB robot's web API interface can easily and quickly obtain some data information of ABB robot
参考的界面信息是:http://developercenter.robotstudio.com/webservice/api_reference 关于额外的地址说明,如果想要查看,可以调用 返回字符串列表来看看。
使用指定的ip地址来初始化对象
Initializes the object using the specified IP address
Ip地址信息
使用指定的ip地址和端口号来初始化对象
Initializes the object with the specified IP address and port number
Ip地址信息 端口号信息
使用指定的ip地址,端口号,用户名,密码来初始化对象
Initialize the object with the specified IP address, port number, username, and password
Ip地址信息 端口号信息 用户名 密码
获取当前支持的读取的地址列表
Gets a list of addresses for currently supported reads
数组信息
获取当前的控制状态,Content属性就是机器人的控制信息
Get the current control state. The Content attribute is the control information of the robot
带有状态信息的结果类对象
获取当前的错误状态,Content属性就是机器人的状态信息
Gets the current error state. The Content attribute is the state information of the robot
带有状态信息的结果类对象
获取当前机器人的物理关节点信息,返回json格式的关节信息
Get the physical node information of the current robot and return the joint information in json format
带有关节信息的结果类对象
获取当前机器人的速度配比信息
Get the speed matching information of the current robot
带有速度信息的结果类对象
获取当前机器人的工作模式
Gets the current working mode of the robot
带有工作模式信息的结果类对象
获取当前机器人的本机的输入IO
Gets the input IO of the current robot's native
带有IO信息的结果类对象
获取当前机器人的本机的输出IO
Gets the output IO of the current robot's native
带有IO信息的结果类对象
获取当前机器人的日志记录,默认记录为10条
Gets the log record for the current robot, which is 10 by default
读取的最大的日志总数 带有IO信息的结果类对象
获取当前机器人的系统信息,版本号,唯一ID等信息
Get the current robot's system information, version number, unique ID and other information
系统的基本信息
获取当前机器人的系统信息,版本号,唯一ID等信息
Get the current robot's system information, version number, unique ID and other information
系统的基本信息
获取当前机器人的伺服使能状态
Get the current robot servo enable state
机器人的伺服使能状态
获取当前机器人的当前程序运行状态
Get the current program running status of the current robot
机器人的当前的程序运行状态
获取当前机器人的任务列表
Get the task list of the current robot
任务信息的列表
[商业授权] ABB机器人的虚拟服务器,基于WebApi协议构建,可用于读取一些数据信息
[Authorization]The virtual server of ABB robot, built based on the WebApi protocol, can be used to read some data information
本虚拟服务器实例化之后,就可以启动了,需要注意的是,程序需要管理员模式运行,否则启动服务的时候会报错,显示拒绝当前的操作。 支持和进行测试通信。本服务器的运行需要商业授权支持,否则只能运行24小时。
设置用户的登录信息,用户名和密码信息
Set user login information, user name and password information
用户名 密码
埃夫特机器人的数据结构
The data structure of the efort robot
实例化一个默认的对象 报文开始的字符串 数据命令 数据心跳 报警状态,1:有报警,0:无报警 急停状态,1:无急停,0:有急停 权限状态,1:有权限,0:无权限 伺服状态,1:有使能,0:未使能 轴运动状态,1:有运动,0:未运动 程序运行状态,1:有运行,0:未运行 程序加载状态,1:有加载,0:无加载 程序暂停状态,1:有暂停,0:无暂停 模式状态,1:手动,2:自动,3:远程 读读状态,百分比(单位) IoDOut状态 IoDIn状态 IoIOut状态 IoIIn状态 加载工程名 加载程序名 错误信息 一到七轴的角度 X,Y,Z,A,B,C方向,也叫笛卡尔坐标系 一到七轴的速度 一到七轴的加速度 一到七轴的加加速度 一到七轴的力矩 轴反向计数 轴工作总时长 设备开机总时长 报文结束标记 从之前的版本数据构造一个埃夫特机器人的数据类型 真实的数据内容 转换的结果内容 从新版本数据构造一个埃夫特机器人的数据类型 真实的数据内容 转换的结果内容 埃夫特机器人对应型号为ER7B-C10,此协议为定制版,新版报文对齐
The corresponding model of efort robot is er7b-c10. This protocol is the customized version, and the new version is the message alignment
针对的控制器是KEBA控制器
实例化一个默认的对象,并指定IP地址和端口号,端口号通常为8008
Instantiate a default object and specify the IP address and port number, usually 8008
Ip地址 端口号
获取发送的消息的命令
Gets the command to send the message
字节数组命令
本机器人不支持该方法操作,将永远返回失败,无效的操作
This robot does not support this method operation, will always return failed, invalid operation
指定的地址信息,有些机器人可能不支持 原始的字节数据信息 是否成功的写入
本机器人不支持该方法操作,将永远返回失败,无效的操作
This robot does not support this method operation, will always return failed, invalid operation
指定的地址信息,有些机器人可能不支持 字符串的数据信息 是否成功的写入
读取机器人的详细信息,返回解析后的数据类型
Read the details of the robot and return the resolved data type
结果数据信息
埃夫特机器人对应型号为ER7B-C10,此协议为旧版的定制版,报文未对齐的版本
The corresponding model of the efort robot is er7b-c10. This protocol is a customized version of the old version, and the message is not aligned
实例化一个默认的对象,并指定IP地址和端口号,端口号通常为8008
Instantiate a default object and specify the IP address and port number, usually 8008
Ip地址 端口号
获取发送的消息的命令
Gets the command to send the message
字节数组命令
本机器人不支持该方法操作,将永远返回失败,无效的操作
This robot does not support this method operation, will always return failed, invalid operation
指定的地址信息,有些机器人可能不支持 原始的字节数据信息 是否成功的写入
本机器人不支持该方法操作,将永远返回失败,无效的操作
This robot does not support this method operation, will always return failed, invalid operation
指定的地址信息,有些机器人可能不支持 字符串的数据信息 是否成功的写入
读取机器人的详细信息
Read the details of the robot
结果数据信息
Fanuc机器人的报警对象 AlarmID AlarmNumber CauseAlarmID CauseAlarmNumber Severity Time AlarmMessage CauseAlarmMessage SeverityMessage 从字节数据加载真实的信息 字节变换 原始的字节内容 索引 编码 从数据内容创建报警信息 字节变换 原始的字节内容 索引 编码 报警信息 Fanuc机器人的所有的数据信息 从原始的数据内容加载数据 原始的内容 从字节数组解析出fanuc的数据信息 原始的字节数组 fanuc数据 Fanuc的辅助方法信息 Q区数据 I区数据 AQ区数据 AI区数据 M区数据 D区数据 命令数据 从FANUC机器人地址进行解析数据信息,地址为D,I,Q,M,AI,AQ区
Parse data information from FANUC robot address, the address is D, I, Q, M, AI, AQ area
fanuc机器人的地址信息 解析结果
构建读取数据的报文内容 数据类别 偏移地址 长度 报文内容 构建读取返回的数据信息 数据 结果 构建写入的数据报文,需要指定相关的参数信息 数据类别 偏移地址 原始数据内容 写入的数据长度 报文内容 获取所有的命令信息
Get all command information
命令数组
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
如果使用绝对地址进行访问的话,支持的地址格式如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 数据寄存器 D D100,D200 10 × R寄存器 R R1-R10 10 × R1-R5为int类型,R6-R10为float类型,本质还是数据寄存器 输入寄存器 AI AI100,AI200 10 × 输出寄存器 AQ AQ100,Q200 10 × 输入继电器 I I100,I200 10 × 输出继电器 Q Q100,Q200 10 × 中间继电器 M M100,M200 10 × 我们先来看看简单的情况 读取fanuc部分数据 最后是比较高级的任意数据读写
实例化一个默认的对象
Instantiate a default object
指定ip及端口来实例化一个默认的对象,端口默认60008
Specify the IP and port to instantiate a default object, the port defaults to 60008
ip地址 端口号
获取或设置当前客户端的ID信息,默认为1024
Gets or sets the ID information of the current client. The default is 1024.
获取或设置缓存的Fanuc数据的有效时间,对方法有效,默认为100,单位毫秒。也即是在100ms内频繁读取机器人的属性数据的时候,优先读取缓存值,提高读取效率。
Gets or sets the valid time of the cached Fanuc data. It is valid for the 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.
按照字为单位批量读取设备的原始数据,需要指定地址及长度,地址示例: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.
起始地址,地址示例:D1,AI1,AQ1,共计3个区的数据,注意起始的起始为1 读取的长度,字为单位 返回的数据信息结果
写入原始的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.
起始地址,地址示例:D1,AI1,AQ1,共计3个区的数据,注意起始的起始为1 写入值 带有成功标识的结果类对象
按照位为单位批量读取设备的原始数据,需要指定地址及长度,地址示例: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.
起始地址,地址示例:M1,I1,Q1,共计3个区的数据,注意地址的起始为1 读取的长度,位为单位 返回的数据信息结果
批量写入数组数据,返回是否写入成功,需要指定起始地址,地址示例:M1,I1,Q1,共计3个区的数据,注意地址的起始为1
Write 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.
起始地址,地址示例:M1,I1,Q1,共计3个区的数据,注意地址的起始为1 等待写入的数据值 是否写入成功
按照字为单位批量读取设备的原始数据,需要指定数据块地址,偏移地址及长度,主要针对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.
数据块信息 偏移地址 读取的长度,字为单位
写入原始的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.
数据块信息 偏移地址 原始数据内容
按照位为单位批量读取设备的原始数据,需要指定数据块地址,偏移地址及长度,主要针对70, 72, 76的数据块,注意地址的起始为1
数据块信息 偏移地址 读取的长度,字为单位
批量写入数组数据,返回是否写入成功,需要指定数据块地址,偏移地址,主要针对70, 72, 76的数据块,注意起始的起始为1 数据块信息 偏移地址 原始的数据内容 是否写入成功 读取机器人的详细信息,返回解析后的数据类型
Read the details of the robot and return the resolved data type
结果数据信息
读取机器人的SDO信息
Read the SDO information of the robot
偏移地址 读取的长度 结果数据
写入机器人的SDO信息
Write the SDO information of the robot
偏移地址 数据值 是否写入成功
读取机器人的SDI信息
Read the SDI information of the robot
偏移地址 读取长度 结果内容
写入机器人的SDI信息
Write the SDI information of the robot
偏移地址 数据值 是否写入成功
读取机器人的RDI信息 偏移地址 读取长度 结果信息 写入机器人的RDI信息 偏移地址 数据值 是否写入成功 读取机器人的UI信息 偏移地址 读取长度 结果信息 读取机器人的UO信息 偏移地址 读取长度 结果信息 写入机器人的UO信息 偏移地址 数据值 是否写入成功 读取机器人的SI信息 偏移地址 读取长度 结果信息 读取机器人的SO信息 偏移地址 读取长度 结果信息 写入机器人的SO信息 偏移地址 数据值 是否写入成功 读取机器人的GI信息 偏移地址 数据长度 结果信息 写入机器人的GI信息 偏移地址 数据值 是否写入成功 读取机器人的GO信息 偏移地址 读取长度 结果信息 写入机器人的GO信息 偏移地址 数据值 写入结果 读取机器人的PMCR2信息 偏移地址 读取长度 结果信息 写入机器人的PMCR2信息 偏移信息 数据值 是否写入成功 读取机器人的RDO信息 偏移地址 读取长度 结果信息 写入机器人的RDO信息 偏移地址 数据值 是否写入成功 写入机器人的Rxyzwpr信息,谨慎调用, 偏移地址 姿态信息 设置信息 参考系 工具 是否写入成功 写入机器人的Joint信息 偏移地址 关节坐标 参考系 工具 是否写入成功 机器人的姿态数据 Xyzwpr Config Joint UF UT ValidC ValidJ 从原始数据解析出当前的姿态数据 字节变化内容 原始的内容 索引位置 从原始的字节数据创建一个新的姿态数据 原始的内容 索引位置 姿态数据 将short类型的config数组转换成string数组类型的config short数组的值 string数组的值 [商业授权] 虚拟的FANUC机器人的服务器对象,支持I,Q,M,D,AI,AQ数据区的数据读写,其中D区是机器人数据存放的区域,相关的数据需要去机器人区读取。详细参见api文档信息。
[Authorization] The server object of the virtual FANUC robot supports data reading and writing in I, Q, M, D, AI, and AQ data areas, where D area is the area where the robot data is stored, and related data needs to be read in the robot area. See the api documentation for details.
本虚拟服务器需要商业授权,否则只能运行24小时。
实例化一个默认的对象信息,并初始化机器人的相关数据
Instantiate a default object information and initialize the relevant data of the robot
Fanuc机器人的任务类 ProgramName LineNumber State ParentProgramName 从原始的数据对象加载数据信息 字节变换 原始的字节数据 索引信息 编码 从原始的数据信息初始化一个任务对象 字节变换 原始的字节数据 索引信息 编码 任务对象 Hyundai的数据类对象 实例化一个默认的对象 通过缓存对象实例化一个 命令码,从控制器发数据到PC和PC到控制器,两者的命令不一样 虚标记 状态码 标记数据,从PLC发送给机器人的数据,原封不动的返回 虚标记 关节坐标数据,包含X,Y,Z,W,P,R,三个位置数据,三个角度数据。 从字节数组的指定索引开始加载现在机器人的数据 原始的字节数据 起始的索引信息 将现代机器人的数据转换为字节数组 字节数组 现代机器人的UDP通讯类,注意本类是服务器,需要等待机器人先配置好ip地址及端口,然后连接到本服务器才能正确的进行操作。详细参见api文档注释
The UDP communication class of modern robots. Note that this class is a server. You need to wait for the robot to configure the IP address and port first, and then connect to this server to operate correctly. See api documentation for details
为使用联机跟踪功能,通过JOB文件的 OnLTrack 命令激活本功能后对通信及位置增量命令 Filter 进行设置,必要时以 LIMIT 命令设置机器人的动作领域,速度限制项。 最后采用 OnLTrack 命令关闭联机跟踪功能以退出本功能。
功能开始,通信及 Filter 设置,程序示例: OnLTrack ON,IP=192.168.1.254,PORT=7127,CRD=1,Bypass,Fn=10
实例化一个默认的对象
Instantiate a default object
将指定的增量写入机器人,需要指定6个参数,位置和角度信息,其中位置单位为mm,角度单位为°
To write the specified increment to the robot, you need to specify 6 parameters, position and angle information, where the position unit is mm and the angle unit is °
X轴增量信息,单位毫米 Y轴增量信息,单位毫米 Z轴增量信息,单位毫米 X轴角度增量信息,单位角度 Y轴角度增量信息,单位角度 Z轴角度增量信息,单位角度 是否写入机器人成功
将指定的增量写入机器人,需要指定6个参数,位置和角度信息,其中位置单位为mm,角度单位为°
To write the specified increment to the robot, you need to specify 6 parameters, position and angle information, where the position unit is mm and the angle unit is °
增量的数组信息 是否写入机器人成功
将指定的命令写入机器人,该命令是完全自定义的,需要遵循机器人的通讯协议,在写入之前,需要调用 方法
Write the specified command to the robot. The command is completely customized and needs to follow the robot's communication protocol. Before writing, you need to call the
机器人数据 是否写入成功
机器人在X轴上移动一小段距离,单位毫米
The robot moves a short distance on the X axis, in millimeters
移动距离,单位毫米 是否写入成功
机器人在Y轴上移动一小段距离,单位毫米
The robot moves a short distance on the Y axis, in millimeters
移动距离,单位毫米 是否写入成功
机器人在Z轴上移动一小段距离,单位毫米
The robot moves a short distance on the Z axis, in millimeters
移动距离,单位毫米 是否写入成功
机器人在X轴方向上旋转指定角度,单位角度
The robot rotates the specified angle in the X axis direction, the unit angle
旋转角度,单位角度 是否写入成功
机器人在Y轴方向上旋转指定角度,单位角度
The robot rotates the specified angle in the Y axis direction, the unit angle
旋转角度,单位角度 是否写入成功
机器人在Z轴方向上旋转指定角度,单位角度
The robot rotates the specified angle in the Z axis direction, the unit angle
旋转角度,单位角度 是否写入成功
收到机器人消息的事件委托 机器人消息 当接收到机器人数据的时候触发的事件 Kuka机器人的数据交互类,通讯支持的条件为KUKA 的 KRC4 控制器中运行KUKAVARPROXY 这个第三方软件,端口通常为7000
The data interaction class of Kuka robot is supported by the third-party software KUKAVARPROXY running in the KRC4 controller of Kuka. The port is usually 7000
非常感谢 昆山-LT 网友的测试和意见反馈。
其中KUKAVARPROXY 这个第三方软件在来源地址: https://github.com/ImtsSrl/KUKAVARPROXY
如果想要更详细的了解配置,连接,数据读取操作,请点击下面的连接:http://blog.davidrobot.com/2019/03/hsl_for_kuka.html?tdsourcetag=s_pctim_aiomsg
实例化一个默认的对象
Instantiate a default object
实例化一个默认的Kuka机器人对象,并指定IP地址和端口号,端口号通常为7000
Instantiate a default Kuka robot object and specify the IP address and port number, usually 7000
Ip地址 端口号
读取Kuka机器人的数据内容,根据输入的变量名称来读取
Read the data content of the Kuka robot according to the input variable name
地址数据 带有成功标识的byte[]数组
读取Kuka机器人的所有的数据信息,返回字符串信息,解码方式为ANSI,需要指定变量名称
Read all the data information of the Kuka robot, return the string information, decode by ANSI, need to specify the variable name
地址信息 带有成功标识的字符串数据
根据Kuka机器人的变量名称,写入原始的数据内容
Write the original data content according to the variable name of the Kuka robot
变量名称 原始的字节数据信息 是否成功的写入
根据Kuka机器人的变量名称,写入ANSI编码的字符串数据信息
Writes ansi-encoded string data information based on the variable name of the Kuka robot
变量名称 ANSI编码的字符串 是否成功的写入
将核心的指令打包成一个可用于发送的消息对象
Package the core instructions into a message object that can be sent
核心命令 最终实现的可以发送的机器人的字节数据
Kuka机器人的数据交互类,通讯支持的条件为KUKA 的 TCP通讯 实例化一个默认的对象
Instantiate a default object
实例化一个默认的Kuka机器人对象,并指定IP地址和端口号,端口号通常为9999
Instantiate a default Kuka robot object and specify the IP address and port number, usually 9999
Ip地址 端口号
读取Kuka机器人的数据内容,根据输入的变量名称来读取
Read the data content of the Kuka robot according to the input variable name
地址数据 带有成功标识的byte[]数组
读取Kuka机器人的所有的数据信息,返回字符串信息,解码方式为UTF8,需要指定变量名称
Read all the data information of the Kuka robot, return the string information, decode by ANSI, need to specify the variable name
地址信息 带有成功标识的字符串数据
根据Kuka机器人的变量名称,写入原始的数据内容
Write the original data content according to the variable name of the Kuka robot
变量名称 原始的字节数据信息 是否成功的写入
根据Kuka机器人的变量名称,写入UTF8编码的字符串数据信息
Writes ansi-encoded string data information based on the variable name of the Kuka robot
变量名称 ANSI编码的字符串 是否成功的写入
根据Kuka机器人的变量名称,写入多个UTF8编码的字符串数据信息
Write multiple UTF8 encoded string data information according to the variable name of the Kuka robot
变量名称 ANSI编码的字符串 是否成功的写入
启动机器人的指定的程序
Start the specified program of the robot
程序的名字 是否启动成功
复位当前的程序
Reset current program
复位结果
停止当前的程序
Stop current program
复位结果
构建读取变量的报文命令 地址信息 报文内容 构建读取变量的报文命令 地址信息 报文内容 构建写入变量的报文命令 地址信息 数据信息 字符串信息 构建写入变量的报文命令 地址信息 数据信息 字符串信息 雅马哈机器人的数据访问类 实例化一个默认的对象 指定IP地址和端口来实例化一个对象 IP地址 端口号 发送命令行到socket, 并从机器人读取指定的命令行 等待发送的数据 接收的行数 结果的结果数据内容 读取指定的命令的方法,需要指定命令,和接收命令的行数信息
The method of reading the specified command requires the specified command and the line number information of the received command
命令 接收的行数信息 接收的命令
指定程序复位信息,对所有的程序进行复位。当重新启动了程序时,从主程序或者任务 1 中最后执行的程序开头开始执行。
Specify the program reset information to reset all programs. When the program is restarted, execution starts from the beginning of the main program or the last executed program in task 1.
执行结果是否成功
执行程序运行。执行所有的 RUN 状态程序。
Execute the program to run. Execute all RUN state programs.
执行结果是否成功
执行程序停止。执行所有的 STOP 状态程序。
The execution program stops. Execute all STOP state programs.
执行结果是否成功
获取马达电源状态,返回的0:马达电源关闭; 1:马达电源开启; 2:马达电源开启+所有机器人伺服开启
Get the motor power status, return 0: motor power off; 1: motor power on; 2: motor power on + all robot servos on
返回的0:马达电源关闭; 1:马达电源开启; 2:马达电源开启+所有机器人伺服开启
读取模式状态
Read mode status
模式的状态信息
读取关节的基本数据信息
Read the basic data information of the joint
关节信息
读取紧急停止状态,0 :正常状态、1 :紧急停止状态
Read emergency stop state, 0: normal state, 1: emergency stop state
0 :正常状态、1 :紧急停止状态
安川机器人的Ethernet 服务器功能的通讯类
Yaskawa robot's Ethernet server features a communication class
指定机器人的ip地址及端口号来实例化对象
Specify the robot's IP address and port number to instantiate the object
Ip地址 端口号
before read data , the connection should be Initialized connected socket whether is the Initialization is success. before read data , the connection should be Initialized connected socket whether is the Initialization is success. Read string value from socket connected socket string value received string value with is successfully 根据指令来读取设备的信息,如果命令数据为空,则传入null即可,注意,所有的命令不带换行符
Read the device information according to the instructions. If the command data is empty, pass in null. Note that all commands do not have a newline character
命令的内容 命令数据内容 最终的结果内容,需要对IsSuccess进行验证
读取机器人的报警信息
Read the alarm information of the robot
原始的报警信息
读取机器人的坐标数据信息
Read the coordinate data information of the robot
原始的报警信息
校验方式 和校验 CRC校验的方式 用于CRC16验证的类,提供了标准的验证方法,可以方便快速的对数据进行CRC校验
The class for CRC16 validation provides a standard validation method that makes it easy to CRC data quickly
本类提供了几个静态的方法,用来进行CRC16码的计算和验证的,多项式码可以自己指定配置,但是预置的寄存器为0xFF 0xFF 先演示如何校验一串数据的CRC码 然后下面是如何生成你自己的CRC校验码
来校验对应的接收数据的CRC校验码,默认多项式码为0xA001
To verify the CRC check code corresponding to the received data, the default polynomial code is 0xA001
需要校验的数据,带CRC校验码 返回校验成功与否
指定多项式码来校验对应的接收数据的CRC校验码
Specifies a polynomial code to validate the corresponding CRC check code for the received data
需要校验的数据,带CRC校验码 多项式码高位 多项式码低位 返回校验成功与否
获取对应的数据的CRC校验码,默认多项式码为0xA001
Get the CRC check code of the corresponding data, the default polynomial code is 0xA001
需要校验的数据,不包含CRC字节 返回带CRC校验码的字节数组,可用于串口发送
通过指定多项式码来获取对应的数据的CRC校验码
The CRC check code of the corresponding data is obtained by specifying the polynomial code
需要校验的数据,不包含CRC字节 多项式码地位 多项式码高位 预置的高位值 预置的低位值 返回带CRC校验码的字节数组,可用于串口发送
所有串行通信类的基类,提供了一些基础的服务,核心的通信实现
The base class of all serial communication classes provides some basic services for the core communication implementation
实例化一个无参的构造方法
Instantiate a parameterless constructor
初始化串口信息,9600波特率,8位数据位,1位停止位,无奇偶校验
Initial serial port information, 9600 baud rate, 8 data bits, 1 stop bit, no parity
端口号信息,例如"COM3"
初始化串口信息,波特率,8位数据位,1位停止位,无奇偶校验
Initializes serial port information, baud rate, 8-bit data bit, 1-bit stop bit, no parity
端口号信息,例如"COM3" 波特率
初始化串口信息,波特率,数据位,停止位,奇偶校验需要全部自己来指定
Start serial port information, baud rate, data bit, stop bit, parity all need to be specified
端口号信息,例如"COM3" 波特率 数据位 停止位 奇偶校验
根据自定义初始化方法进行初始化串口信息
Initialize the serial port information according to the custom initialization method
初始化的委托方法
打开一个新的串行端口连接
Open a new serial port connection
获取一个值,指示串口是否处于打开状态
Gets a value indicating whether the serial port is open
是或否
关闭当前的串口连接
Close the current serial connection
将原始的字节数据发送到串口,然后从串口接收一条数据。
The raw byte data is sent to the serial port, and then a piece of data is received from the serial port.
发送的原始字节数据 带接收字节的结果对象
将原始的字节数据发送到串口,然后从串口接收一条数据。
The raw byte data is sent to the serial port, and then a piece of data is received from the serial port.
发送的原始字节数据 是否有数据相应,如果为true, 需要等待数据返回,如果为false, 不需要等待数据返回 是否需要对命令重新打包,在重写方法后才会有影响 带接收字节的结果对象
清除串口缓冲区的数据,并返回该数据,如果缓冲区没有数据,返回的字节数组长度为0
The number sent clears the data in the serial port buffer and returns that data, or if there is no data in the buffer, the length of the byte array returned is 0
是否操作成功的方法
发送数据到串口去。
Send data to serial port.
串口对象 字节数据 是否发送成功
从串口接收一串字节数据信息,直到没有数据为止,如果参数awaitData为false, 第一轮接收没有数据则返回
Receives a string of bytes of data information from the serial port until there is no data, and returns if the parameter awaitData is false
串口对象 是否必须要等待数据返回 结果数据对象
获取或设置一个值,该值指示在串行通信中是否启用请求发送 (RTS) 信号。
Gets or sets a value indicating whether the request sending (RTS) signal is enabled in serial communication.
接收数据的超时时间,默认5000ms
Timeout for receiving data, default is 5000ms
连续串口缓冲数据检测的间隔时间,默认20ms,该值越小,通信速度越快,但是越不稳定。
Continuous serial port buffer data detection interval, the default 20ms, the smaller the value, the faster the communication, but the more unstable.
是否在发送数据前清空缓冲数据,默认是false
Whether to empty the buffer before sending data, the default is false
当前连接串口信息的端口号名称
The port name of the current connection serial port information
当前连接串口信息的波特率
Baud rate of current connection serial port information
释放当前的对象 是否在 释放当前的对象 串口交互的核心 串口设备交互类的基类,实现了接口的基础方法方法,需要使用继承重写来实现字节读写,bool读写操作。
The base class of the serial device interaction class, which implements the basic methods of the interface, requires inheritance rewriting to implement byte read and write, and bool read and write operations.
本类实现了不同的数据类型的读写交互的api,继承自本类,重写下面的四个方法将可以实现你自己的设备通信对象 方法,读取字节数组的方法。 方法,写入字节数组的方法。 方法,读取bool数组的方法。 方法,写入bool数组的方法。 如果需要实现异步的方法。那就需要重写下面的四个方法。 方法,读取字节数组的方法。 方法,写入字节数组的方法。 方法,读取bool数组的方法。 方法,写入bool数组的方法。
默认的构造方法实现的设备信息 用于LRC验证的类,提供了标准的验证方法
The class used for LRC verification provides a standard verification method
获取对应的数据的LRC校验码
Class for LRC validation that provides a standard validation method
需要校验的数据,不包含LRC字节 返回带LRC校验码的字节数组,可用于串口发送
检查数据是否符合LRC的验证
Check data for compliance with LRC validation
等待校验的数据,是否正确 是否校验成功
系统的字符串资源及多语言管理中心
System string resource and multi-language management Center
获取或设置系统的语言选项
Gets or sets the language options for the system
将语言设置为中文
Set the language to Chinese
将语言设置为英文
Set the language to English
websocket协议的客户端实现,支持从服务器订阅,发布数据内容信息,详细参考api文档信息
Client implementation of the websocket protocol. It supports subscribing from the server and publishing data content information.
本客户端使用起来非常的方便,基本就是实例化,绑定一个数据接收的事件即可,如下所示 假设我们需要发数据给服务端,那么可以参考如下的方式 如果我们需要搭配服务器来做订阅推送的功能的话,写法上会稍微有点区别,按照下面的代码来写。 当网络发生异常的时候,我们需要这么来进行重新连接。
使用指定的ip,端口来实例化一个默认的对象
Use the specified ip and port to instantiate a default objects
Ip地址信息 端口号信息
使用指定的ip,端口,额外的url信息来实例化一个默认的对象
Use the specified ip, port, and additional url information to instantiate a default object
Ip地址信息 端口号信息 额外的信息,比如 /A/B?C=123456
使用指定的url来实例化一个默认的对象,例如 ws://127.0.0.1:1883/A/B?C=123456 或是 ws://www.hslcommunication.cn:1883
Use the specified url to instantiate a default object, such as ws://127.0.0.1:1883/A/B?C=123456 or ws://www.hslcommunication.cn:1883s
完整的ws地址
Mqtt服务器的ip地址
IP address of Mqtt server
端口号。默认1883
The port number. Default 1883
连接服务器,实例化客户端之后,至少要调用成功一次,如果返回失败,那些请过一段时间后重新调用本方法连接。
After connecting to the server, the client must be called at least once after instantiating the client. If the return fails, please call this method to connect again after a period of time.
连接是否成功
连接服务器,实例化客户端之后,至少要调用成功一次,如果返回失败,那些请过一段时间后重新调用本方法连接。
After connecting to the server, the client must be called at least once after instantiating the client. If the return fails, please call this method to connect again after a period of time.
订阅的消息 连接是否成功
关闭Mqtt服务器的连接。
Close the connection to the Mqtt server.
发送数据到WebSocket的服务器
Send data to WebSocket server
消息 是否发送成功
发送数据到WebSocket的服务器,可以指定是否进行掩码操作
Send data to the WebSocket server, you can specify whether to perform a mask operation
是否进行掩码操作 消息 是否发送成功
发送自定义的命令到WebSocket服务器,可以指定操作码,是否掩码操作,原始字节数据
Send custom commands to the WebSocket server, you can specify the operation code, whether to mask operation, raw byte data
操作码 是否进行掩码操作 原始字节数据 是否发送成功
websocket的消息收到委托
websocket message received delegate
websocket的消息
websocket的消息收到时触发
Triggered when a websocket message is received
连接服务器成功的委托
Connection server successfully delegated
当客户端连接成功触发事件,就算是重新连接服务器后,也是会触发的
The event is triggered when the client is connected successfully, even after reconnecting to the server.
当网络发生异常的时候触发的事件,用户应该在事件里进行重连服务器 获取或设置当前客户端的连接超时时间,默认10,000毫秒,单位ms
Gets or sets the connection timeout of the current client. The default is 10,000 milliseconds. The unit is ms.
获取当前的客户端状态是否关闭了连接,当自己手动处理网络异常事件的时候,在重连之前就需要判断是否关闭了连接。
Obtain whether the current client status has closed the connection. When manually handling network abnormal events, you need to determine whether the connection is closed before reconnecting.
释放当前的对象 websocket的相关辅助的方法 计算websocket返回得令牌 请求的令牌 返回的令牌 根据http网页的信息,计算出返回的安全令牌 网页信息 返回的安全令牌 检测当前的反馈对象是否是标准的websocket请求 http的请求内容 是否验证成功 检测当前的反馈对象是否是标准的websocket请求 http的请求内容 是否验证成功 获取初步握手的时候的完整返回的数据信息 请求的网页信息 完整的返回信息 创建连接服务器的http请求,输入订阅的主题信息 远程服务器的ip地址 远程服务器的端口号 参数信息 通知hsl的服务器,需要订阅的topic信息 报文信息 创建连接服务器的http请求,采用问答的机制 远程服务器的ip地址 远程服务器的端口号 报文信息 根据额外的参数信息,创建新的websocket的请求信息 ip地址 端口号 跟在端口号后面的额外的参数信息 额外的参数信息 报文信息 将普通的文本信息转换成websocket的报文 操作信息码 是否使用掩码 等待转换的数据信息 数据包 将普通的文本信息转换成websocket的报文 操作信息码 是否使用掩码 等待转换的数据信息 数据包 websocket 协议下的单个消息的数据对象
Data object for a single message under the websocket protocol
是否存在掩码
Whether a mask exists
当前的websocket的操作码
The current websocket opcode
负载数据 WebSocket的问答机制的客户端,本客户端将会在请求头上追加 RequestAndAnswer: true,本客户端将会请求服务器的信息,然后等待服务器的返回
Client of WebSocket Q & A mechanism, this client will append RequestAndAnswer: true to the request header, this client will request the server information, and then wait for the server to return
根据指定的ip地址及端口号,实例化一个默认的对象
Instantiates a default object based on the specified IP address and port number
远程服务器的ip地址 端口号信息
和websocket的服务器交互,将负载数据发送到服务器端,然后等待接收服务器的数据
Interact with the websocket server, send the load data to the server, and then wait to receive data from the server
数据负载 返回的结果数据
WebSocket协议的实现,支持创建自定义的websocket服务器,直接给其他的网页端,客户端,手机端发送数据信息,详细看api文档说明
The implementation of the WebSocket protocol supports the creation of custom websocket servers and sends data information directly to other web pages, clients, and mobile phones. See the API documentation for details.
使用本组件库可以非常简单方便的构造属于你自己的websocket服务器,从而实现和其他的客户端进行通信,尤其是和网页进行通讯, 当客户端发送数据给服务器的时候,会发一个事件,并且把当前的会话暴露出来,下面举例打印消息,并且演示一个例子,发送数据给指定的会话。 也可以在其他地方发送数据给所有的客户端,只要调用一个方法就可以了。 当客户端上线之后也触发了当前的事件,我们可以手动捕获到 我们再来看看一个高级的操作,实现订阅,大多数的情况,websocket被设计成了订阅发布的操作。基本本服务器可以扩展出非常复杂功能的系统,我们来看一种最简单的操作。
客户端给服务器发的数据都视为主题(topic),这样服务器就可以辨认出主题信息,并追加主题。如下这么操作。 然后在发布的时候,调用下面的代码。 可以看到,我们这里只有订阅操作,如果想要实现更为复杂的操作怎么办?丰富客户端发来的数据,携带命令,数据,就可以区分了。比如json数据。具体的实现需要看各位能力了。
实例化一个默认的对象
Instantiate a default object
websocket的消息收到委托
websocket message received delegate
当前的会话对象 websocket的消息
websocket的消息收到时触发
Triggered when a websocket message is received
当前websocket连接上服务器的事件委托
Event delegation of the server on the current websocket connection
当前的会话对象
Websocket的客户端连接上来时触发
Triggered when a Websocket client connects
Websocket的客户端下线时触发
Triggered when Websocket client connects
向所有的客户端强制发送消息
Force message to all clients
消息内容
向订阅了topic主题的客户端发送消息
Send messages to clients subscribed to topic
主题 消息内容
向指定的客户端发送数据
Send data to the specified client
会话内容 消息内容
给一个当前的会话信息动态添加订阅的主题
Dynamically add subscribed topics to a current session message
会话内容 主题信息
获取当前的在线的客户端数量
Get the current number of online clients
获取或设置当前的服务器是否对订阅主题信息缓存,方便订阅客户端立即收到结果,默认开启
Gets or sets whether the current server caches the topic information of the subscription, so that the subscription client can receive the results immediately. It is enabled by default.
获取当前的在线的客户端信息,可以用于额外的分析或是显示。 设置的参数,最小单位为1s,当超过设置的时间间隔必须回复PONG报文,否则服务器认定为掉线。默认120秒
Set the minimum unit of the parameter is 1s. When the set time interval is exceeded, the PONG packet must be returned, otherwise the server considers it to be offline. 120 seconds by default
保持连接(Keep Alive)是一个以秒为单位的时间间隔,它是指客户端返回一个PONG报文到下一次返回PONG报文的时候, 两者之间允许空闲的最大时间间隔。客户端负责保证控制报文发送的时间间隔不超过保持连接的值。
获取或是设置用于保持连接的心跳时间的发送间隔。默认30秒钟,需要在服务启动之前设置
Gets or sets the sending interval of the heartbeat time used to keep the connection. 30 seconds by default, need to be set before the service starts
让Websocket客户端正常下线,调用本方法即可自由控制会话客户端强制下线操作。
Let the Websocket client go offline normally. Call this method to freely control the session client to force offline operation.
当前的会话信息 下线的原因,默认为空
释放当前的对象 websocket 的会话客户端 实例化一个默认的对象 当前客户端的激活时间 获取当前的客户端的上线时间 当前客户端绑定的套接字对象 当前客户端订阅的所有的Topic信息 远程的客户端的ip及端口信息 当前的会话是否是问答客户端,如果是问答客户端的话,数据的推送是无效的。 客户端请求的url信息,可能携带一些参数信息 检查当前的连接对象是否在 主题信息 是否包含的结果信息 动态增加一个订阅的信息 订阅的主题 动态移除一个订阅的信息 订阅的主题 websocket 协议的 op的枚举信息 连续消息分片 文本消息分片 二进制消息分片 连接关闭 心跳检查 心跳检查