HslCommunication 报警的等级,主要是区分提示性报警,错误性报警,致命性报警。 提示性报警,通常是仅仅作为提示性的消息,会自动恢复的报警 错误性报警,通常是发送质量问题的报警,需要管理人员手动确认的 致命性的报警,出现了重大的设备问题,需要停机维修的情况 单次报警的信息内容 实例化一个默认的对象 使用默认的用户id和报警描述信息来初始化报警 用户的自身的id标识信息 报警的描述信息 使用默认的用户id和报警描述信息来初始化报警 报警的代号 用户的自身的id标识信息 报警的描述信息 本次系统运行的唯一报警信息,用来标识操作的信息的 报警的ID信息 用户自带的标记信息,可以用来区分不同的设备的情况 一个连接池管理器,负责维护多个可用的连接,并且自动清理,扩容 管理的连接类,需要支持IConnector接口 需要先实现 接口的对象,然后就可以实现真正的连接池了,理论上可以实现任意的连接对象,包括modbus连接对象,各种PLC连接对象,数据库连接对象,redis连接对象,SimplifyNet连接对象等等。下面的示例就是modbus-tcp的实现 要想真正的支持连接池访问,还需要服务器支持一个端口的多连接操作,三菱PLC的端口就不支持,如果要测试示例代码的连接池对象,需要使用本组件的来创建服务器对象 下面举例实现一个modbus的连接池对象,先实现接口化的操作 然后就可以实现真正的连接池了 实例化一个连接池对象,需要指定如果创建新实例的方法 创建连接对象的委托 获取可用的对象 可用的连接对象 使用完之后需要通知管理器 连接对象 获取或设置最大的连接数 获取或设置连接过期的时间,单位秒,默认30秒 当前已经使用的连接数 连接池的接口,连接池的管理对象必须实现此接口 为了使用完整的连接池功能,需要先实现本接口,然后配合来使用 下面举例实现一个modbus的连接池对象 指示当前的连接是否在使用用 唯一的GUID码 最新一次使用的时间 打开连接 关闭并释放 离散傅氏变换的快速算法,处理的信号,适合单周期信号数为2的N次方个,支持变换及逆变换 快速傅立叶变换 实数部分 变换后的数组值 获取FFT变换后的显示图形,需要指定图形的相关参数 实数部分的值 图形的宽度 图形的高度 线条颜色 等待呈现的图形 .net standrard2.0 下不支持。 快速傅立叶变换 实数部分,数组长度最好为2的n次方 虚数部分,数组长度最好为2的n次方 变换后的数组值 快速傅立叶变换的逆变换 实数部分,数组长度最好为2的n次方 虚数部分,数组长度最好为2的n次方 2的多少次方 系统的基本授权类 设置本组件系统的授权信息 授权码 一个高效的数组管理类,用于高效控制固定长度的数组实现 泛型类型 实例化一个对象,需要指定数组的最大数据对象 数据的个数 是否从最后一个数添加 获取数据的个数 新增一个数据值 数据值 批量的增加数据 批量数据信息 获取数据的数组值 数组值 获取或设置指定索引的位置的数据 索引位置 数据值 显示作者一些信息的类,应当在软件系统中提供一处链接显示原作者信息,或者以彩蛋方式实现 实例化一个窗口,显示作者的相关信息 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. 作者的技术支持的窗口界面 实例化一个默认的界面 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 获取文件的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 文本数据信息 Md5字符串 获取文本字符串信息的Md5码,使用指定的编码 文本数据信息 编码信息 Md5字符串 获取内存图片的md5码 -> Get the MD5 code of the memory picture 内存图片 Md5字符串 下面举例实现获取一个图像的md5码 从一个字节大小返回带单位的描述 实际的大小值 最终的字符串值 比如说我们获取了文件的长度,这个长度可以来自于本地,也可以来自于数据库查询 从一个时间差返回带单位的描述 实际的时间差 最终的字符串值 比如说我们获取了一个时间差信息 一个通用的数组新增个数方法,会自动判断越界情况,越界的情况下,会自动的截断或是填充 -> 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 数组的类型 等待分割的数组 指定的长度信息 分割后结果内容 将整数进行有效的拆分成数组 整数信息 单个的数组长度 拆分后的数组长度 判断两个字节的指定部分是否相同 -> 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进制表示的字符串 -> 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 输入的字节信息 反转后的数据 将原始的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格式的数据内容 数据 ASCII格式的字节数组 从short构建一个ASCII格式的数据内容 数据 ASCII格式的字节数组 从ushort构建一个ASCII格式的数据内容 数据 ASCII格式的字节数组 从字节数组构建一个ASCII格式的数据内容 字节信息 ASCII格式的地址 将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数组 拼接2个字节数组成一个数组 -> Splicing 2 bytes to to an array 数组一 数组二 拼接后的数组 选择一个byte数组的前面的几个byte数据信息 原始的数据信息 数据的长度 选择的前面的几个数据信息 将一个byte数组的前面指定位数移除,返回新的一个数组 -> Removes the preceding specified number of bits in a byte array, returning a new array 字节数组 等待移除的长度 新的数据 将一个byte数组的后面指定位数移除,返回新的一个数组 -> Removes the specified number of digits after a byte array, returning a new array 字节数组 等待移除的长度 新的数据 将一个byte数组的前后移除指定位数,返回新的一个数组 -> Removes a byte array before and after the specified number of bits, returning a new 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 随机字符串数据 一个线程安全的缓存数据块,支持批量动态修改,添加,并获取快照 这个类可以实现什么功能呢,就是你有一个大的数组,作为你的应用程序的中间数据池,允许你往byte[]数组里存放指定长度的子byte[]数组,也允许从里面拿数据, 这些操作都是线程安全的,当然,本类扩展了一些额外的方法支持,也可以直接赋值或获取基本的数据类型对象。 此处举例一些数据的读写说明,可以此处的数据示例。 使用默认的大小初始化缓存空间 使用指定的容量初始化缓存数据块 初始化的容量 设置指定的位置的数据块,如果超出,则丢弃数据 bool值 目标存储的索引 设置指定的位置的数据块,如果超出,则丢弃数据 bool数组值 目标存储的索引 获取指定的位置的bool值,如果超出,则引发异常 目标存储的索引 获取索引位置的bool数据值 获取指定位置的bool数组值,如果超过,则引发异常 目标存储的索引 读取的数组长度 bool数组值 设置指定的位置的数据块,如果超出,则丢弃数据 数据块信息 目标存储的索引 设置指定的位置的数据块,如果超出,则丢弃数据 数据块信息 目标存储的索引 准备拷贝的数据长度 设置指定的位置的数据块,如果超出,则丢弃数据 数据块信息 Data中的起始位置 目标存储的索引 准备拷贝的数据长度 获取内存指定长度的数据信息 起始位置 数组长度 返回实际的数据信息 获取内存所有的数据信息 实际的数据信息 设置byte类型的数据到缓存区 byte数值 索引位置 设置short类型的数据到缓存区 short数组 索引位置 设置short类型的数据到缓存区 short数值 索引位置 设置ushort类型的数据到缓存区 ushort数组 索引位置 设置ushort类型的数据到缓存区 ushort数值 索引位置 设置int类型的数据到缓存区 int数组 索引位置 设置int类型的数据到缓存区 int数值 索引位置 设置uint类型的数据到缓存区 uint数组 索引位置 设置uint类型的数据到缓存区 uint数值 索引位置 设置float类型的数据到缓存区 float数组 索引位置 设置float类型的数据到缓存区 float数值 索引位置 设置long类型的数据到缓存区 long数组 索引位置 设置long类型的数据到缓存区 long数值 索引位置 设置ulong类型的数据到缓存区 ulong数组 索引位置 设置ulong类型的数据到缓存区 ulong数值 索引位置 设置double类型的数据到缓存区 double数组 索引位置 设置double类型的数据到缓存区 double数值 索引位置 获取byte类型的数据 索引位置 byte数值 获取short类型的数组到缓存区 索引位置 数组长度 short数组 获取short类型的数据到缓存区 索引位置 short数据 获取ushort类型的数组到缓存区 索引位置 数组长度 ushort数组 获取ushort类型的数据到缓存区 索引位置 ushort数据 获取int类型的数组到缓存区 索引位置 数组长度 int数组 获取int类型的数据到缓存区 索引位置 int数据 获取uint类型的数组到缓存区 索引位置 数组长度 uint数组 获取uint类型的数据到缓存区 索引位置 uint数据 获取float类型的数组到缓存区 索引位置 数组长度 float数组 获取float类型的数据到缓存区 索引位置 float数据 获取long类型的数组到缓存区 索引位置 数组长度 long数组 获取long类型的数据到缓存区 索引位置 long数据 获取ulong类型的数组到缓存区 索引位置 数组长度 ulong数组 获取ulong类型的数据到缓存区 索引位置 ulong数据 获取double类型的数组到缓存区 索引位置 数组长度 ulong数组 获取double类型的数据到缓存区 索引位置 double数据 读取自定义类型的数据,需要规定解析规则 类型名称 起始索引 自定义的数据类型 写入自定义类型的数据到缓存中去,需要规定生成字节的方法 自定义类型 实例对象 起始地址 获取或设置当前的数据缓存类的解析规则 释放当前的对象 释放当前的对象 内存队列的基类 字节数据流 数据的长度 数据数组变动时的数据锁 用于从保存的数据对象初始化的 获取原本的数据字节 一个内存队列缓存的类,数据类型为Int64 数据的本身面貌 实例化一个数据对象 用于从保存的数据对象初始化的 线程安全的添加数据 一个内存队列缓存的类,数据类型为Int32 数据的本身面貌 实例化一个数据对象 用于从保存的数据对象初始化的 线程安全的添加数据 安全的获取数组队列 一个自定义的支持序列化反序列化的异常类,具体用法参照第四版《CLR Via C#》P414 泛型异常 用于反序列化的 消息 实例化一个异常对象 消息 内部异常类 实例化一个异常对象 异常消息 消息 内部异常类 获取存储对象的序列化数据 序列化的信息 流的上下文 获取描述当前异常的消息 确定指定的object是否等于当前的object 异常对象 是否一致 用作特定类型的哈希函数 int值 异常消息基类 获取消息文本 软件的邮箱类,用于发送邮箱数据 如果您想实现自己的邮件发送中心,就可以去对应的邮件服务器注册,如果是想快速实现邮件的发送,本系统提供了2个静态的已经注册好了的邮箱发送器。 以下的代码演示了通过静态的发送对象来发送邮件,包含了发送普通的邮件,和发送html邮件。 系统连续发送失败的次数,为了不影响系统,连续三次失败就禁止发送 系统提供一个默认的163邮箱发送账号,只要更改接收地址即可发送服务,可能会被拦截 系统提供一个默认的QQ邮箱发送账号,只要更改接收地址即可发送服务,发送成功概率比较高 实例化一个邮箱发送类,需要指定初始化信息 初始化的方法 发送地址,应该和账户匹配 邮件接收地址 初始化的方法比较复杂,需要参照示例代码。 系统的邮件发送客户端 发送邮件的地址 邮件发送的地址 发生BUG至邮件地址,需要提前指定发送地址,否则失败 异常的BUG,同样试用兼容类型 是否发送成功,内容不正确会被视为垃圾邮件 发送邮件至地址,需要提前指定发送地址,否则失败 邮件主题 邮件内容 是否发送成功,内容不正确会被视为垃圾邮件 发送邮件至地址,需要提前指定发送地址,否则失败 邮件主题 邮件内容 是否是html格式化文本 是否发送成功,内容不正确会被视为垃圾邮件 发生BUG至邮件地址,需要提前指定发送地址,否则失败 异常的BUG,同样试用兼容类型 额外信息 是否发送成功,内容不正确会被视为垃圾邮件 发送邮件的方法,需要指定接收地址,主题及内容 接收地址 邮件主题 邮件内容 是否发送成功,内容不正确会被视为垃圾邮件 发送邮件的方法,默认发送别名,优先级,是否HTML 接收地址 邮件主题 邮件内容 是否是html格式的内容 是否发送成功,内容不正确会被视为垃圾邮件 发送邮件的方法,需要提供完整的参数信息 发送地址 发送别名 接收地址 邮件主题 邮件内容 优先级 邮件内容是否是HTML语言 发生是否成功,内容不正确会被视为垃圾邮件 一个简单通用的消息队列 类型 实例化一个对象 所有临时存储的数据 临时消息存储的最大条数,必须大于10 获取最新添加进去的数据 将集合进行锁定 新增一条数据 获取存储字符串 获取加载字符串 系统的消息类,用来发送消息,和确认消息的 发送方名称 接收方名称 发送时间 发送的消息内容 消息是否已经被查看 一个用于自动流水号生成的类,必须指定保存的文件,实时保存来确认安全 序号生成器软件,当获取序列号,清空序列号操作后,会自动的将ID号存储到本地的文件中,存储方式采用乐观并发模型实现。 此处举个例子,也是Demo程序的源代码,包含了2个按钮的示例和瞬间调用100万次的性能示例。 百万次调用的实际耗时取决于计算机的性能,不同的计算机的表现存在差异,比如作者的:i5-4590cpu,内存ddr3-8G表示差不多在800毫秒左右 实例化一个流水号生成的对象 流水号的头文本 流水号带的时间信息 流水号数字的标准长度,不够补0 流水号存储的文本位置 当前的生成序列号 流水号的文本头 时间格式默认年月日 流水号数字应该显示的长度 获取流水号的值 字符串信息 加载流水号 源字符串信息 清除流水号计数,进行重新计数 获取流水号数据 新增计数后的信息 获取流水号数据 指定一个新的文本头 带头信息的计数后的信息 单纯的获取数字形式的流水号 新增计数后的信息 高性能存储块 一个简单的不持久化的序号自增类,采用线程安全实现,并允许指定最大数字,将包含该最大值,到达后清空从指定数开始 实例化一个自增信息的对象,包括最大值 数据的最大值,必须指定 数据的起始值,默认为0 获取自增信息 计数自增后的值 重置当前序号的最大值 最大值 增加的单元,如果设置为0,就是不增加。注意,不能小于0 返回表示当前对象的字符串 返回具体的值信息 释放当前对象所占用的资源 图形的方向 向上 向下 向左 向右 包含整型和字符串描述的数据类型 数量 描述 图形的呈现方式 直方图 饼图 折线图 静态类,包含了几个常用的画图方法,获取字符串,绘制小三角等 获取一个直方图 数据数组 宽度 高度 刻度划分等级 线条颜色 计算绘图时的相对偏移值 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对象 系统版本类,由三部分组成,包含了一个大版本,小版本,修订版,还有一个开发者维护的内部版 根据格式化字符串的版本号初始化 格式化的字符串,例如:1.0或1.0.0或1.0.0.0503 根据指定的数字实例化一个对象 主版本 次版本 修订版 根据指定的数字实例化一个对象 主版本 次版本 修订版 内部版本号 主版本 次版本 修订版 内部版本号,或者是版本号表示为年月份+内部版本的表示方式 根据格式化为支持返回的不同信息的版本号 C返回1.0.0.0 N返回1.0.0 S返回1.0 格式化信息 版本号信息 获取版本号的字符串形式,如果内部版本号为0,则显示时不携带 版本号信息 判断两个实例是否相等 版本号 是否一致 获取哈希值 哈希值 判断是否相等 第一个版本 第二个版本 是否相同 判断是否不相等 第一个版本号 第二个版本号 是否相同 判断一个版本是否大于另一个版本 第一个版本 第二个版本 是否相同 判断第一个版本是否小于第二个版本 第一个版本号 第二个版本号 是否小于 版本信息类,用于展示版本发布信息 版本的发行日期 版本的更新细节 版本号 获取版本号 字符串信息 一个负责压缩解压数据字节的类 压缩字节数据 等待被压缩的数据 压缩之后的字节数据 解压压缩后的数据 压缩后的数据 压缩前的原始字节数据 瓶子控件 实例化一个新的控件对象 获取或设置瓶子的液位值。 获取或设置瓶子是否处于打开的状态。 获取或设置瓶子的标签信息,用于绘制在瓶子上的信息。 获取或设置瓶子的备注信息,用于绘制在瓶子顶部的信息。 重写消息处理机制 系统消息 重新绘制界面图形 绘制消息 必需的设计器变量。 清理所有正在使用的资源。 如果应释放托管资源,为 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。 设计器支持所需的方法 - 不要修改 使用代码编辑器修改此方法的内容。 进度条的样式 竖直的,纵向的进度条 水平进度条 所有设备通信类的地址基础类 起始地址 解析字符串的地址 地址信息 返回表示当前对象的字符串 字符串数据 设备地址数据的信息,通常包含起始地址,数据类型,长度 数字的起始地址,也就是偏移地址 读取的数据长度 从指定的地址信息解析成真正的设备地址信息 地址信息 数据长度 三菱的数据地址表示形式 实例化一个默认的对象 三菱的数据地址信息 从指定的地址信息解析成真正的设备地址信息,默认是三菱的地址 地址信息 数据长度 从实际三菱的地址里面解析出 三菱的地址数据信息 读取的数据长度 是否成功的结果对象 从实际基恩士的地址里面解析出 基恩士的地址数据信息 读取的数据长度 是否成功的结果对象 计算松下的MC协议的偏移地址的机制 字符串形式的地址 实际的偏移地址 从实际松下的地址里面解析出 松下的地址数据信息 读取的数据长度 是否成功的结果对象 西门子的地址数据信息,当处于写入时,Length无效 需要读取的数据的代码 PLC的DB块数据信息 从指定的地址信息解析成真正的设备地址信息 地址信息 数据长度 计算特殊的地址信息 -> Calculate Special Address information 字符串地址 -> String address 实际值 -> Actual value 从实际的西门子的地址里面 西门子的地址数据信息 读取的数据长度 是否成功的结果对象 从实际的西门子的地址里面 西门子的地址数据信息 读取的数据长度 是否成功的结果对象 Modbus协议地址格式,可以携带站号,功能码,地址信息 实例化一个默认的对象 实例化一个默认的对象,使用默认的地址初始化 传入的地址信息,支持富地址,例如s=2;x=3;100 实例化一个默认的对象,使用默认的地址初始化 传入的地址信息,支持富地址,例如s=2;x=3;100 默认的功能码信息 实例化一个默认的对象,使用默认的地址初始化 站号信息 功能码信息 地址信息 站号信息 功能码 解析Modbus的地址码 地址数据信息 创建一个读取线圈的字节对象 读取的站号 读取数据的长度 原始的modbus指令 创建一个读取离散输入的字节对象 读取的站号 读取数据的长度 原始的modbus指令 创建一个读取寄存器的字节对象 读取的站号 读取数据的长度 原始的modbus指令 创建一个读取寄存器的字节对象 读取的站号 读取数据的长度 原始的modbus指令 创建一个写入单个线圈的指令 站号 原始的modbus指令 创建一个写入单个寄存器的指令 站号 原始的modbus指令 创建一个写入批量线圈的指令 站号 原始的modbus指令 创建一个写入批量寄存器的指令 站号 原始的modbus指令 地址新增指定的数 数据值信息 新增后的地址信息 地址新增1 新增后的地址信息 返回表示当前对象的字符串 地址表示形式 异形消息对象,用于异形客户端的注册包接收以及验证使用 本协议的消息头长度 头子节信息 内容字节信息 检查接收的数据是否合法 令牌 是否合法 从头子节信息中解析出接下来需要接收的数据长度 接下来的数据长度 获取头子节里的特殊标识 标识信息 发送的字节信息 用于和 AllenBradley PLC 交互的消息协议类 消息头的指令长度 从当前的头子节文件中提取出接下来需要接收的数据长度 返回接下来的数据内容长度 检查头子节的合法性 特殊的令牌,有些特殊消息的验证 是否成功的结果 获取头子节里的消息标识 消息id 消息头字节 消息内容字节 发送的字节信息 埃夫特机器人的消息对象 消息头的指令长度 从当前的头子节文件中提取出接下来需要接收的数据长度 返回接下来的数据内容长度 检查头子节的合法性 特殊的令牌,有些特殊消息的验证 是否成功的结果 获取头子节里的消息标识 消息标识 消息头字节 消息内容字节 发送的字节信息 旧版的机器人的消息类对象,保留此类为了实现兼容 消息头的指令长度 从当前的头子节文件中提取出接下来需要接收的数据长度 返回接下来的数据内容长度 检查头子节的合法性 特殊的令牌,有些特殊消息的验证 是否合法 获取头子节里的消息标识 标识信息 消息头字节 消息内容字节 发送的字节信息 西门子Fetch/Write消息解析协议 消息头的指令长度 从当前的头子节文件中提取出接下来需要接收的数据长度 返回接下来的数据内容长度 检查头子节的合法性 特殊的令牌,有些特殊消息的验证 是否合法 获取头子节里的消息标识 消息标识 消息头字节 消息内容字节 发送的字节信息 用于欧姆龙通信的Fins协议的消息解析规则 消息头的指令长度 从当前的头子节文件中提取出接下来需要接收的数据长度 返回接下来的数据内容长度 检查头子节的合法性 特殊的令牌,有些特殊消息的验证 是否成功的结果 获取头子节里的消息标识 消息id 消息头字节 消息内容字节 发送的字节信息 本组件系统使用的默认的消息规则,说明解析和反解析规则的 本协议的消息头长度 头子节信息 内容字节信息 检查接收的数据是否合法 令牌 是否合法 从头子节信息中解析出接下来需要接收的数据长度 接下来的数据长度 获取头子节里的特殊标识 标识信息 发送的字节信息 本系统的消息类,包含了各种解析规则,数据信息提取规则 消息头的指令长度 从当前的头子节文件中提取出接下来需要接收的数据长度 返回接下来的数据内容长度 检查头子节的合法性 特殊的令牌,有些特殊消息的验证 是否成功的结果 获取头子节里的消息标识 消息标识 消息头字节 消息内容字节 发送的字节信息 Kuka机器人的 KRC4 控制器中的服务器KUKAVARPROXY 本协议的消息头长度 头子节信息 内容字节信息 检查接收的数据是否合法 令牌 是否合法 从头子节信息中解析出接下来需要接收的数据长度 接下来的数据长度 获取头子节里的特殊标识 标识信息 发送的字节信息 LSIS的PLC的FastEnet的消息定义 西门子头字节的长度 头子节的数据 内容字节的数据 检查头子节是否合法的判断 令牌 是否合法的 获取剩余的内容长度 数据内容长度 获取消息号,此处无效 消息标识 发送的字节信息 三菱的A兼容1E帧协议解析规则 消息头的指令长度 从当前的头子节文件中提取出接下来需要接收的数据长度 返回接下来的数据内容长度 检查头子节的合法性 特殊的令牌,有些特殊消息的验证 获取头子节里的消息标识 消息头字节 消息内容字节 发送的字节信息 基于MC协议的Qna兼容3E帧协议的ASCII通讯消息机制 消息头的指令长度 从当前的头子节文件中提取出接下来需要接收的数据长度 返回接下来的数据内容长度 检查头子节的合法性 特殊的令牌,有些特殊消息的验证 是否成功的结果 获取头子节里的消息标识 消息标识 消息头字节 消息内容字节 发送的字节信息 三菱的Qna兼容3E帧协议解析规则 消息头的指令长度 从当前的头子节文件中提取出接下来需要接收的数据长度 返回接下来的数据内容长度 检查头子节的合法性 特殊的令牌,有些特殊消息的验证 是否成功的结果 获取头子节里的消息标识 消息标识 消息头字节 消息内容字节 发送的字节信息 Modbus-Tcp协议支持的消息解析类 消息头的指令长度 从当前的头子节文件中提取出接下来需要接收的数据长度 返回接下来的数据内容长度 检查头子节的合法性 特殊的令牌,有些特殊消息的验证 是否成功的结果 获取头子节里的消息标识 消息标识 消息头字节 消息内容字节 发送的字节信息 OpenProtocol协议的消息 本协议的消息头长度 头子节信息 内容字节信息 检查接收的数据是否合法 令牌 是否合法 从头子节信息中解析出接下来需要接收的数据长度 接下来的数据长度 获取头子节里的特殊标识 标识信息 发送的字节信息 西门子S7协议的消息解析规则 西门子头字节的长度 头子节的数据 内容字节的数据 检查头子节是否合法的判断 令牌 是否合法的 获取剩余的内容长度 数据内容长度 获取消息号,此处无效 消息标识 发送的字节信息 丰田工机PLC协议解析规则 消息头的指令长度 检查头子节的合法性 特殊的令牌,有些特殊消息的验证 从当前的头子节文件中提取出接下来需要接收的数据长度 返回接下来的数据内容长度 获取头子节里的消息标识 消息头字节 消息内容字节 发送的字节信息 所有的和设备或是交互类统一读写标准 Modbus类,PLC类均实现了本接口,可以基于本接口实现统一所有的不同种类的设备的数据交互 此处举例实现modbus,三菱,西门子三种设备的统一的数据交互 批量读取底层的数据信息,需要指定地址和长度,具体的结果取决于实现 数据地址 数据长度 带有成功标识的byte[]数组 读取16位的有符号整型 起始地址 带有成功标识的short数据 读取16位的有符号整型数组 起始地址 读取的数组长度 带有成功标识的short数组 读取16位的无符号整型 起始地址 带有成功标识的ushort数据 读取16位的无符号整型数组 起始地址 读取的数组长度 带有成功标识的ushort数组 读取32位的有符号整型 起始地址 带有成功标识的int数据 读取32位有符号整型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取32位的无符号整型 起始地址 带有成功标识的uint数据 读取设备的uint类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取64位的有符号整型 起始地址 带有成功标识的long数据 读取64位的有符号整型数组 起始地址 数组长度 带成功标志的结果数据对象 读取64位的无符号整型 起始地址 带有成功标识的ulong数据 读取64位的无符号整型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取单浮点精度的数据 起始地址 带有成功标识的float数据 读取单浮点精度的数组 起始地址 数组长度 带成功标志的结果数据对象 读取双浮点精度的数据 起始地址 带有成功标识的double数据 读取双浮点精度的数据的数组 起始地址 数组长度 带成功标志的结果数据对象 读取字符串数据, 起始地址 数据长度 带有成功标识的string数据 读取自定义的数据类型,需要继承自IDataTransfer接口 自定义的类型 起始地址 带有成功标识的自定义类型数据 从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 包含是否成功的结果对象 写入byte数组数据 起始地址 写入值 带有成功标识的结果类对象 写入short数据 起始地址 写入值 带有成功标识的结果类对象 写入short数组 起始地址 写入值 带有成功标识的结果类对象 写入ushort数据 起始地址 写入值 带有成功标识的结果类对象 写入ushort数组 起始地址 写入值 带有成功标识的结果类对象 写入int数据 起始地址 写入值 带有成功标识的结果类对象 写入int[]数组 起始地址 写入值 带有成功标识的结果类对象 写入uint数据 起始地址 写入值 带有成功标识的结果类对象 写入uint[]数组 起始地址 写入值 带有成功标识的结果类对象 写入long数据 起始地址 写入值 带有成功标识的结果类对象 写入long数组 起始地址 写入值 带有成功标识的结果类对象 写入ulong数据 起始地址 写入值 带有成功标识的结果类对象 写入ulong数组 起始地址 写入值 带有成功标识的结果类对象 写入float数据 起始地址 写入值 带有成功标识的结果类对象 写入float数组 起始地址 写入值 带有成功标识的结果类对象 写入double数据 起始地址 写入值 带有成功标识的结果类对象 写入double数组 起始地址 写入值 带有成功标识的结果类对象 写入字符串信息,编码为ASCII 起始地址 写入值 带有成功标识的结果类对象 写入指定长度的字符串信息,编码为ASCII 起始地址 写入值 字符串的长度 带有成功标识的结果类对象 写入自定义类型的数据,该类型必须继承自IDataTransfer接口 类型对象 起始地址 写入值 带有成功标识的结果类对象 从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 包含是否成功的结果对象 批量读取底层的数据信息,需要指定地址和长度,具体的结果取决于实现 数据地址 数据长度 带有成功标识的byte[]数组 读取底层的bool数据信息,具体的结果取决于实现 数据地址 带有成功标识的byte[]数组 写入bool数组数据 起始地址 写入值 带有成功标识的结果类对象 写入bool数据 起始地址 写入值 带有成功标识的结果类对象 所有的机器人的统一读写标准 根据地址读取机器人的原始的字节数据信息 指定的地址信息,对于某些机器人无效 带有成功标识的byte[]数组 根据地址读取机器人的字符串的数据信息 地址信息 带有成功标识的字符串数据 根据地址,来写入设备的相关的数据 指定的地址信息,有些机器人可能不支持 原始的字节数据信息 是否成功的写入 根据地址,来写入设备相关的数据 指定的地址信息,有些机器人可能不支持 字符串的数据信息 是否成功的写入 异形客户端的基类,提供了基础的异形操作 默认的无参构造方法 当接收到了新的请求的时候执行的操作 异步对象 终结点 当有服务器连接上来的时候触发 获取返回的命令信息 状态 回发的指令信息 状态登录成功 重复登录 禁止登录 密码错误 检测当前的DTU是否在线 检测当前的dtu是否允许登录 设置密码,长度为6 设置可信任的客户端列表 退出异形客户端 异形客户端的会话 获取本对象的字符串表示形式 带登录认证的服务器类 当客户端的socket登录的时候额外检查的信息 套接字 终结点 验证的结果 获取或设置是否对客户端启动账号认证 新增账户,如果想要启动账户登录,比如将设置为True 账户名称 账户名称 删除一个账户的信息 账户名称 释放当前的对象 是否托管对象 释放当前的对象 本系统所有网络类的基类,该类为抽象类,无法进行实例化 network base class, support basic operation with socket 实例化一个NetworkBase对象 令牌的默认值为空,都是0x00 组件的日志工具,支持日志记录 只要实例化即可以记录日志,实例化的对象需要实现接口 ,本组件提供了三个日志记录类,你可以实现基于 的对象。 如下的实例化适用于所有的Network及其派生类,以下举两个例子,三菱的设备类及服务器类 网络类的身份令牌 适用于Hsl协议相关的网络通信类,不适用于设备交互类。 此处以 服务器类及 客户端类的令牌设置举例 是否使用同步的网络通讯 通讯类的核心套接字 检查网络套接字是否操作超时,需要对套接字进行封装 通常是 对象 接收固定长度的字节数组 Receive Special Length Bytes 网络通讯的套接字 准备接收的数据长度 包含了字节数据的结果类 接收固定长度的字节数组 Receive Special Length Bytes 网络通讯的套接字 准备接收的数据长度 包含了字节数据的结果类 接收一条完整的 数据内容 -> Receive a complete data content 网络的套接字 超时时间 消息的格式定义 带有是否成功的byte数组对象 发送消息给套接字,直到完成的时候返回 网络套接字 字节数据 发送是否成功的结果 发送数据异步返回的方法 异步对象 发送一个异步的数据信息,该方式在NET35里是不可用的。 网络的套接字 数据内容 是否发送成功 创建一个新的socket对象并连接到远程的地址,默认超时时间为10秒钟 Ip地址 端口号 返回套接字的封装结果对象 创建一个新的socket对象并连接到远程的地址 Ip地址 端口号 连接的超时时间 返回套接字的封装结果对象 创建一个新的socket对象并连接到远程的地址 连接的目标终结点 连接的超时时间 返回套接字的封装结果对象 当连接的结果返回 异步对象 读取流中的数据到缓存区 数据流 缓冲区 带有成功标志的读取数据长度 将缓冲区的数据写入到流里面去 数据流 缓冲区 是否写入成功 检查当前的头子节信息的令牌是否是正确的 头子节数据 令牌是验证成功 [自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯 网络套接字 头指令 用户指令 发送的数据 是否发送成功 [自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯 网络套接字 用户指令 发送的数据 是否发送成功 [自校验] 直接发送字符串数据并确认对方接收完成数据,如果结果异常,则结束通讯 网络套接字 用户指令 发送的数据 是否发送成功 [自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯 网络套接字 用户指令 发送的字符串数组 是否发送成功 [自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯 网络套接字 用户指令 用户名 密码 是否发送成功 [自校验] 接收一条完整的同步数据,包含头子节和内容字节,基础的数据,如果结果异常,则结束通讯 套接字 超时时间设置,如果为负数,则不检查超时 包含是否成功的结果对象 result [自校验] 从网络中接收一个字符串数据,如果结果异常,则结束通讯 套接字 包含是否成功的结果对象 [自校验] 从网络中接收一个字符串数组,如果结果异常,则结束通讯 套接字 包含是否成功的结果对象 [自校验] 从网络中接收一串字节数据,如果结果异常,则结束通讯 套接字的网络 包含是否成功的结果对象 从网络中接收Long数据 将long数据发送到套接字 返回表示当前对象的字符串 字符串 所有虚拟的数据服务器的基类 实例化一个默认的数据服务器的对象 从设备读取原始数据 起始地址 地址长度 带有成功标识的结果对象 需要在继承类中重写实现,并且实现地址解析操作 将原始数据写入设备 起始地址 原始数据 带有成功标识的结果对象 需要在继承类中重写实现,并且实现地址解析操作 从字节数据加载数据信息 字节数据 将数据信息存储到字节数组去 所有的内容 将本系统的数据池数据存储到指定的文件 指定文件的路径 从文件加载数据池信息 文件路径 系统的数据转换接口 当接收到来自客户的数据信息时触发的对象,该数据可能来自tcp或是串口 本服务器对象 实际的数据信息 接收到数据的时候就行触发 触发一个数据接收的事件信息 接收数据信息 Show DataSend To PLC OnDataSend RaiseDataSend 单个数据字节的长度,西门子为2,三菱,欧姆龙,modbusTcp就为1,AB PLC无效 对设备来说,一个地址的数据对应的字节数,或是1个字节或是2个字节 当客户端登录后,进行Ip信息的过滤,然后触发本方法,也就是说之后的客户端需要 网络套接字 终端节点 当接收到了新的请求的时候执行的操作 异步对象 终结点 设置并启动受信任的客户端登录并读写,如果为null,将关闭对客户端的ip验证 受信任的客户端列表 检查该Ip地址是否是受信任的 Ip地址信息 是受信任的返回True,否则返回False 获取受信任的客户端列表 字符串数据信息 在线的客户端的数量 新增一个在线的客户端信息 会话内容 移除在线的客户端信息 会话内容 关闭之后进行的操作 读取自定义类型的数据,需要规定解析规则 类型名称 起始地址 带有成功标识的结果对象 需要是定义一个类,选择好相对于的ByteTransform实例,才能调用该方法。 此处演示三菱的读取示例,先定义一个类,实现接口 接下来就可以实现数据的读取了 写入自定义类型的数据到设备去,需要规定生成字节的方法 自定义类型 起始地址 实例对象 带有成功标识的结果对象 需要是定义一个类,选择好相对于的实例,才能调用该方法。 此处演示三菱的读取示例,先定义一个类,实现接口 接下来就可以实现数据的读取了 读取设备的short类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的short类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的ushort数据类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的ushort类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的int类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的int类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的uint类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的uint类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的float类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的float类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的long类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的long类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的ulong类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的ulong类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的double类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的double类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的字符串数据,编码为ASCII 起始地址 地址长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入short数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入short数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入ushort数组,返回是否写入成功 要写入的数据地址 要写入的实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入ushort数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入int数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入int数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入uint数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入uint数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入float数组,返回是否写入成功 数据地址 实际数据 返回写入结果 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入float数据,返回是否写入成功 数据地址 实际数据 返回写入结果 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入long数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入long数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向P设备中写入ulong数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入ulong数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入double数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入double数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入字符串,编码格式为ASCII 数据地址 字符串数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入指定长度的字符串,超出截断,不够补0,编码格式为ASCII 数据地址 字符串数据 指定的字符串长度,必须大于0 是否写入成功的结果对象 -> Whether to write a successful result object 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入字符串,编码格式为Unicode 数据地址 字符串数据 是否写入成功的结果对象 向设备中写入指定长度的字符串,超出截断,不够补0,编码格式为Unicode 数据地址 字符串数据 指定的字符串长度,必须大于0 是否写入成功的结果对象 -> Whether to write a successful result object 释放当前的对象 是否托管对象 返回表示当前对象的字符串 字符串数据 设备类的基类,提供了基础的字节读写方法 指定了消息的解析规则 指定了数据转换的规则 需要继承实现采用使用。 从设备读取原始数据 起始地址 地址长度 带有成功标识的结果对象 需要在继承类中重写实现,并且实现地址解析操作 将原始数据写入设备 起始地址 原始数据 带有成功标识的结果对象 需要在继承类中重写实现,并且实现地址解析操作 单个数据字节的长度,西门子为2,三菱,欧姆龙,modbusTcp就为1,AB PLC无效 对设备来说,一个地址的数据对应的字节数,或是1个字节或是2个字节 读取自定义类型的数据,需要规定解析规则 类型名称 起始地址 带有成功标识的结果对象 需要是定义一个类,选择好相对于的ByteTransform实例,才能调用该方法。 此处演示三菱的读取示例,先定义一个类,实现接口 接下来就可以实现数据的读取了 写入自定义类型的数据到设备去,需要规定生成字节的方法 自定义类型 起始地址 实例对象 带有成功标识的结果对象 需要是定义一个类,选择好相对于的实例,才能调用该方法。 此处演示三菱的读取示例,先定义一个类,实现接口 接下来就可以实现数据的读取了 从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 包含是否成功的结果对象 此处演示西门子的读取示例,先定义一个类,重点是将需要读取的数据,写入到属性的特性中去。 接下来就可以实现数据的读取了 从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 包含是否成功的结果对象 此处演示西门子的读取示例,先定义一个类,重点是将需要读取的数据,写入到属性的特性中去。 接下来就可以实现数据的写入了 读取设备的short类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的short类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的ushort数据类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的ushort类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的int类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的int类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的uint类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的uint类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的float类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的float类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的long类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的long类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的ulong类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的ulong类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的double类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的double类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的字符串数据,编码为ASCII 起始地址 地址长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的字符串数据,编码为指定的编码信息 起始地址 地址长度 编码机制 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 批量读取底层的数据信息,需要指定地址和长度,具体的结果取决于实现 数据地址 数据长度 带有成功标识的bool[]数组 读取底层的bool数据信息,具体的结果取决于实现 数据地址 带有成功标识的bool数组 写入bool数组数据 起始地址 写入值 带有成功标识的结果类对象 写入bool数据 起始地址 写入值 带有成功标识的结果类对象 批量读取底层的数据信息,需要指定地址和长度,具体的结果取决于实现 数据地址 数据长度 带有成功标识的bool[]数组 读取底层的bool数据信息,具体的结果取决于实现 数据地址 带有成功标识的bool数组 写入bool数组数据 起始地址 写入值 带有成功标识的结果类对象 写入bool数据 起始地址 写入值 带有成功标识的结果类对象 使用异步的操作从原始的设备中读取数据信息 起始地址 地址长度 带有成功标识的结果对象 异步读取设备的short类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的ushort类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的ushort数据类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的ushort类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的int类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的int类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的uint类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的uint类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的float类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的float类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的long类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的long类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的ulong类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的ulong类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的double类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的double类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的字符串数据,编码为ASCII 起始地址 地址长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取设备的字符串数据,编码为指定的编码信息 起始地址 地址长度 编码机制 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步将原始数据写入设备 起始地址 原始数据 带有成功标识的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入short数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入short数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入ushort数组,返回是否写入成功 要写入的数据地址 要写入的实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入ushort数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入int数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入int数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入uint数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入uint数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入float数组,返回是否写入成功 数据地址 实际数据 返回写入结果 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入float数据,返回是否写入成功 数据地址 实际数据 返回写入结果 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入long数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入long数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向P设备中写入ulong数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入ulong数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入double数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入double数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入字符串,编码格式为ASCII 数据地址 字符串数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入字符串,使用指定的字符编码 数据地址 字符串数据 字符编码 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入指定长度的字符串,超出截断,不够补0,编码格式为ASCII 数据地址 字符串数据 指定的字符串长度,必须大于0 是否写入成功的结果对象 -> Whether to write a successful result object 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入指定长度的字符串,超出截断,不够补0,指定的编码格式 数据地址 字符串数据 指定的字符串长度,必须大于0 指定的编码格式 是否写入成功的结果对象 -> Whether to write a successful result object 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入字符串,编码格式为Unicode 数据地址 字符串数据 是否写入成功的结果对象 异步向设备中写入指定长度的字符串,超出截断,不够补0,编码格式为Unicode 数据地址 字符串数据 指定的字符串长度,必须大于0 是否写入成功的结果对象 -> Whether to write a successful result object 异步读取自定义类型的数据,需要规定解析规则 类型名称 起始地址 带有成功标识的结果对象 需要是定义一个类,选择好相对于的ByteTransform实例,才能调用该方法。 此处演示三菱的读取示例,先定义一个类,实现接口 接下来就可以实现数据的读取了 异步写入自定义类型的数据到设备去,需要规定生成字节的方法 自定义类型 起始地址 实例对象 带有成功标识的结果对象 需要是定义一个类,选择好相对于的实例,才能调用该方法。 此处演示三菱的读取示例,先定义一个类,实现接口 接下来就可以实现数据的读取了 异步从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 包含是否成功的结果对象 此处演示西门子的读取示例,先定义一个类,重点是将需要读取的数据,写入到属性的特性中去。 接下来就可以实现数据的读取了 异步从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 包含是否成功的结果对象 此处演示西门子的读取示例,先定义一个类,重点是将需要读取的数据,写入到属性的特性中去。 接下来就可以实现数据的写入了 向设备中写入short数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入short数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入ushort数组,返回是否写入成功 要写入的数据地址 要写入的实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入ushort数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入int数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入int数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入uint数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入uint数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入float数组,返回是否写入成功 数据地址 实际数据 返回写入结果 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入float数据,返回是否写入成功 数据地址 实际数据 返回写入结果 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入long数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入long数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向P设备中写入ulong数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入ulong数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入double数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入double数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入字符串,编码格式为ASCII 数据地址 字符串数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入指定编码的字符串 数据地址 字符串数据 字节编码 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入指定长度的字符串,超出截断,不够补0,编码格式为ASCII 数据地址 字符串数据 指定的字符串长度,必须大于0 是否写入成功的结果对象 -> Whether to write a successful result object 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入指定长度并且指定编码的字符串,超出截断,不够补0 数据地址 字符串数据 指定的长度,按照转换后的字节计算 字符编码 是否写入成功的结果对象 -> Whether to write a successful result object 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入字符串,编码格式为Unicode 数据地址 字符串数据 是否写入成功的结果对象 向设备中写入指定长度的字符串,超出截断,不够补0,编码格式为Unicode 数据地址 字符串数据 指定的字符串长度,必须大于0 是否写入成功的结果对象 -> Whether to write a successful result object 返回表示当前对象的字符串 字符串数据 支持长连接,短连接两个模式的通用客户端基类 -> Universal client base class that supports long connections and short connections to two modes 无,请使用继承类实例化,然后进行数据交互,当前的类并没有具体的实现。 默认的无参构造函数 -> Default no-parameter constructor 接收数据的超时时间 是否是长连接的状态 交互的混合锁 当前的socket是否发生了错误 当前客户端的数据变换机制,当你需要从字节数据转换类型数据的时候需要。-> The current client's 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地址 最好实在初始化的时候进行指定,当使用短连接的时候,支持动态更改,切换;当使用长连接后,无法动态更改 以下举例modbus-tcp的短连接及动态更改ip地址的示例 获取或设置服务器的端口号 最好实在初始化的时候进行指定,当使用短连接的时候,支持动态更改,切换;当使用长连接后,无法动态更改 动态更改请参照IpAddress属性的更改。 当前连接的唯一ID号,默认为长度20的guid码加随机数组成,方便列表管理,也可以自己指定 Current Connection ID, conclude guid and random data, also, you can spcified 当前的异形连接对象,如果设置了异形连接的话 具体的使用方法请参照Demo项目中的异形modbus实现。 在读取数据之前可以调用本方法将客户端设置为长连接模式,相当于跳过了ConnectServer的结果验证,对异形客户端无效 以下的方式演示了另一种长连接的机制 切换短连接模式到长连接模式,后面的每次请求都共享一个通道 返回连接结果,如果失败的话(也即IsSuccess为False),包含失败信息 简单的连接示例,调用该方法后,连接设备,创建一个长连接的对象,后续的读写操作均公用一个连接对象。 如果想知道是否连接成功,请参照下面的代码。 使用指定的套接字创建异形客户端 异形客户端对象,查看类型创建的客户端 通常都为成功 简单的创建示例。 如果想知道是否创建成功。通常都是成功。 不能和之前的长连接和短连接混用,详细参考 Demo程序 在长连接模式下,断开服务器的连接,并切换到短连接模式 关闭连接,不需要查看IsSuccess属性查看 直接关闭连接即可,基本上是不需要进行成功的判定 连接上服务器后需要进行的初始化操作 网络套接字 是否初始化成功,依据具体的协议进行重写 有些协议不需要握手信号,比如三菱的MC协议,Modbus协议,西门子和欧姆龙就存在握手信息,此处的例子是继承本类后重写的西门子的协议示例 在将要和服务器进行断开的情况下额外的操作,需要根据对应协议进行重写 网络套接字 目前暂无相关的示例,组件支持的协议都不用实现这个方法。 当断开连接时额外的操作结果 和服务器交互完成的时候调用的方法,无论是成功或是失败,都将会调用,具体的操作需要重写实现 读取结果 是否使用账号登录 设置当前的登录的账户名和密码信息,账户名为空时设置不生效 账户名 密码 认证账号,将使用已经设置的用户名和密码进行账号认证。 套接字 认证结果 获取本次操作的可用的网络套接字 是否成功,如果成功,使用这个套接字 连接并初始化网络套接字 带有socket的结果对象 在其他指定的套接字上,使用报文来通讯,传入需要发送的消息,返回一条完整的数据指令 指定的套接字 发送的完整的报文信息 无锁的基于套接字直接进行叠加协议的操作。 假设你有一个自己的socket连接了设备,本组件可以直接基于该socket实现modbus读取,三菱读取,西门子读取等等操作,前提是该服务器支持多协议,虽然这个需求听上去比较变态,但本组件支持这样的操作。 接收的完整的报文信息 使用底层的数据报文来通讯,传入需要发送的消息,返回一条完整的数据指令 发送的完整的报文信息 接收的完整的报文信息 本方法用于实现本组件还未实现的一些报文功能,例如有些modbus服务器会有一些特殊的功能码支持,需要收发特殊的报文,详细请看示例 此处举例有个modbus服务器,有个特殊的功能码0x09,后面携带子数据0x01即可,发送字节为 0x00 0x00 0x00 0x00 0x00 0x03 0x01 0x09 0x01 释放当前的资源,并自动关闭长连接,如果设置了的话 是否释放托管的资源信息 释放当前的资源 返回表示当前对象的字符串 字符串信息 文件服务器类的基类,为直接映射文件模式和间接映射文件模式提供基础的方法支持 所有文件操作的词典锁 词典的锁 获取当前文件的读写锁,如果没有会自动创建 完整的文件路径 读写锁 接收本次操作的信息头数据 网络套接字 命令 文件名 第一大类 第二大类 第三大类 是否成功的结果对象 获取一个随机的文件名,由GUID码和随机数字组成 文件名 返回服务器的绝对路径 第一大类 第二大类 第三大类 是否成功的结果对象 返回服务器的绝对路径 第一大类 第二大类 第三大类 文件名 是否成功的结果对象 返回相对路径的名称 第一大类 第二大类 第三大类 文件名 是否成功的结果对象 移动一个文件到新的文件去 旧的文件名称 新的文件名称 是否成功 删除文件并回发确认信息,如果结果异常,则结束通讯 网络套接字 完整路径的文件名称 是否成功的结果对象 服务器启动时的操作 检查文件夹是否存在,不存在就创建 文件所存储的路径 获取文件夹的所有文件列表 第一大类 第二大类 第三大类 文件列表 获取文件夹的所有文件夹列表 第一大类 第二大类 第三大类 文件夹列表 获取本对象的字符串标识形式 对象信息 服务器程序的基础类 实例化一个默认的对象 服务器引擎是否启动 服务器的端口号 需要在服务器启动之前设置为有效 异步传入的连接申请请求 异步对象 用于登录的回调方法 socket对象 用于登录的回调方法 socket对象 远程的终结点 当客户端的socket登录的时候额外检查的信息 套接字 终结点 验证的结果 服务器启动时额外的初始化信息 需要在派生类中重写 启动服务器的引擎 指定一个端口号 使用已经配置好的端口启动服务器的引擎 服务器关闭的时候需要做的事情 关闭服务器的引擎 创建一个指定的异形客户端连接,使用Hsl协议来发送注册包 Ip地址 端口号 设备唯一ID号,最长11 是否成功连接 基础的Udp的通信对象 实例化一个默认的方法 Ip地址 端口号信息 接收反馈的超时时间 获取或设置一次接收时的数据长度,默认2KB数据长度,特殊情况的时候需要调整 核心的数据交互读取 完整的报文内容 是否成功的结果对象 Udp报文协议的内容传送 数据转换类型对象 实例化一个默认的对象 从设备读取原始数据 起始地址 地址长度 带有成功标识的结果对象 需要在继承类中重写实现,并且实现地址解析操作 将原始数据写入设备 起始地址 原始数据 带有成功标识的结果对象 需要在继承类中重写实现,并且实现地址解析操作 单个数据字节的长度,西门子为2,三菱,欧姆龙,modbusTcp就为1 对设备来说,一个地址的数据对应的字节数,或是1个字节或是2个字节 当前客户端的数据变换机制,当你需要从字节数据转换类型数据的时候需要。 主要是用来转换数据类型的,下面仅仅演示了2个方法,其他的类型转换,类似处理。 读取自定义类型的数据,需要规定解析规则 类型名称 起始地址 带有成功标识的结果对象 需要是定义一个类,选择好相对于的ByteTransform实例,才能调用该方法。 写入自定义类型的数据到设备去,需要规定生成字节的方法 自定义类型 起始地址 实例对象 带有成功标识的结果对象 需要是定义一个类,选择好相对于的实例,才能调用该方法。 从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 包含是否成功的结果对象 从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 包含是否成功的结果对象 读取设备的short类型的数据 起始地址 带成功标志的结果数据对象 读取设备的short类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的ushort数据类型的数据 起始地址 带成功标志的结果数据对象 读取设备的ushort类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的int类型的数据 起始地址 带成功标志的结果数据对象 读取设备的int类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的uint类型的数据 起始地址 带成功标志的结果数据对象 读取设备的uint类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的float类型的数据 起始地址 带成功标志的结果数据对象 读取设备的float类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的long类型的数据 起始地址 带成功标志的结果数据对象 读取设备的long类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的ulong类型的数据 起始地址 带成功标志的结果数据对象 读取设备的ulong类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的double类型的数据 起始地址 带成功标志的结果数据对象 读取设备的double类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的字符串数据,编码为ASCII 起始地址 地址长度 带成功标志的结果数据对象 批量读取底层的数据信息,需要指定地址和长度,具体的结果取决于实现 数据地址 数据长度 带有成功标识的bool[]数组 读取底层的bool数据信息,具体的结果取决于实现 数据地址 带有成功标识的bool数组 写入bool数组数据 起始地址 写入值 带有成功标识的结果类对象 写入bool数据 起始地址 写入值 带有成功标识的结果类对象 向设备中写入short数组,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入short数据,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入ushort数组,返回是否写入成功 要写入的数据地址 要写入的实际数据 返回写入结果 向设备中写入ushort数据,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入int数组,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入int数据,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入uint数组,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入uint数据,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入float数组,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入float数据,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入long数组,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入long数据,返回是否写入成功 数据地址 实际数据 返回写入结果 向P设备中写入ulong数组,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入ulong数据,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入double数组,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入double数据,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入字符串,编码格式为ASCII 数据地址 字符串数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入指定长度的字符串,超出截断,不够补0,编码格式为ASCII 数据地址 字符串数据 指定的字符串长度,必须大于0 是否写入成功的结果对象 -> Whether to write a successful result object 向设备中写入字符串,编码格式为Unicode 数据地址 字符串数据 是否写入成功的结果对象 向设备中写入指定长度的字符串,超出截断,不够补0,编码格式为Unicode 数据地址 字符串数据 指定的字符串长度,必须大于0 是否写入成功的结果对象 -> Whether to write a successful result object 批量读取底层的数据信息,需要指定地址和长度,具体的结果取决于实现 数据地址 数据长度 带有成功标识的bool[]数组 读取底层的bool数据信息,具体的结果取决于实现 数据地址 带有成功标识的bool数组 写入bool数组数据 起始地址 写入值 带有成功标识的结果类对象 写入bool数据 起始地址 写入值 带有成功标识的结果类对象 使用异步的操作从原始的设备中读取数据信息 起始地址 地址长度 带有成功标识的结果对象 异步读取设备的short类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的ushort类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的ushort数据类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的ushort类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的int类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的int类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的uint类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的uint类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的float类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的float类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的long类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的long类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的ulong类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的ulong类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的double类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的double类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的字符串数据,编码为ASCII 起始地址 地址长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步将原始数据写入设备 起始地址 原始数据 带有成功标识的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入short数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入short数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入ushort数组,返回是否写入成功 要写入的数据地址 要写入的实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入ushort数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入int数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入int数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入uint数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入uint数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入float数组,返回是否写入成功 数据地址 实际数据 返回写入结果 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入float数据,返回是否写入成功 数据地址 实际数据 返回写入结果 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入long数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入long数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向P设备中写入ulong数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入ulong数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入double数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入double数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入字符串,编码格式为ASCII 数据地址 字符串数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入指定长度的字符串,超出截断,不够补0,编码格式为ASCII 数据地址 字符串数据 指定的字符串长度,必须大于0 是否写入成功的结果对象 -> Whether to write a successful result object 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入字符串,编码格式为Unicode 数据地址 字符串数据 是否写入成功的结果对象 异步向设备中写入指定长度的字符串,超出截断,不够补0,编码格式为Unicode 数据地址 字符串数据 指定的字符串长度,必须大于0 是否写入成功的结果对象 -> Whether to write a successful result object 异步读取自定义类型的数据,需要规定解析规则 类型名称 起始地址 带有成功标识的结果对象 需要是定义一个类,选择好相对于的ByteTransform实例,才能调用该方法。 此处演示三菱的读取示例,先定义一个类,实现接口 接下来就可以实现数据的读取了 异步写入自定义类型的数据到设备去,需要规定生成字节的方法 自定义类型 起始地址 实例对象 带有成功标识的结果对象 需要是定义一个类,选择好相对于的实例,才能调用该方法。 此处演示三菱的读取示例,先定义一个类,实现接口 接下来就可以实现数据的读取了 异步从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 包含是否成功的结果对象 异步从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 包含是否成功的结果对象 返回表示当前对象的字符串 字符串信息 包含了主动异步接收的方法实现和文件类异步读写的实现 默认的无参构造方法 发送数据的方法 通信用的核心对象 完整的字节信息 发送回发方法 异步对象 重新开始接收下一次的数据传递 网络状态 是否触发数据处理 指令头接收方法 异步状态信息 数据内容接收方法 [自校验] 将文件数据发送至套接字,如果结果异常,则结束通讯 网络套接字 完整的文件路径 文件的长度 进度报告器 是否发送成功 [自校验] 将文件数据发送至套接字,具体发送细节将在继承类中实现,如果结果异常,则结束通讯 套接字 文件名称,文件必须存在 远程端的文件名称 文件的额外标签 文件的上传人 发送进度报告 是否发送成功 [自校验] 将流数据发送至套接字,具体发送细节将在继承类中实现,如果结果异常,则结束通讯 套接字 文件名称,文件必须存在 远程端的文件名称 文件的额外标签 文件的上传人 发送进度报告 是否成功的结果对象 [自校验] 从套接字中接收文件头信息 套接字的网络 包含文件信息的结果对象 [自校验] 从网络中接收一个文件,如果结果异常,则结束通讯 网络套接字 接收文件后保存的文件名 接收进度报告 包含文件信息的结果对象 [自校验] 从网络中接收一个文件,写入数据流,如果结果异常,则结束通讯,参数顺序文件名,文件大小,文件标识,上传人 网络套接字 等待写入的数据流 接收进度报告 删除文件的操作 预处理文件夹的名称,除去文件夹名称最后一个'\',如果有的话 文件夹名称 数据处理中心,应该继承重写 连接状态 协议头 用户自定义 数据内容 接收出错的时候进行处理 会话内容 异常信息 当远端的客户端关闭连接时触发 会话信息 发送一个流的所有数据到网络套接字 套接字 内存流 发送的数据长度 进度报告的委托 进度报告是否按照百分比报告 是否成功的结果对象 从套接字中接收所有的数据然后写入到流当中去 套接字 数据流 所有数据的长度 进度报告 进度报告是否按照百分比 是否成功的结果对象 获取本对象的字符串表示形式 字符串信息 异形客户端的异步对象 实例化一个默认的参数 网络套接字 唯一的标识 指示当前的网络状态 网络会话信息 实例化一个构造方法 传输数据的对象 IP地址 此连接对象连接的远程客户端 远程对象的别名 心跳验证的时间点 客户端的类型 客户端唯一的标识 UDP通信中的远程端 指令头缓存 已经接收的指令头长度 数据内容缓存 已经接收的数据内容长度 用于关键字分类使用 清除本次的接收内容 返回表示当前对象的字符串,以IP,端口,客户端名称组成 字符串数据 传输数据的对象 发送的数据内容 已经发送长度 关键字 客户端的标识 文件传送的异步对象 操作的流 网络中的异步对象 实例化一个对象 实例化一个对象,指定接收或是发送的数据长度 数据长度 唯一的一串信息 网络套接字 是否关闭了通道 清空旧的数据 携带TaskCompletionSource属性的异步对象 类型 实例化一个对象 实例化一个对象,指定接收或是发送的数据长度 数据长度 异步消息的对象 本次接收或是发送的数据长度 已经处理的字节长度 操作完成的信号 缓存器 是否发生了错误 错误消息 静态的方法支持类,提供一些网络的静态支持,支持从套接字从同步接收指定长度的字节数据,并支持报告进度。 在接收指定数量的字节数据的时候,如果一直接收不到,就会发生假死的状态。接收的数据时保存在内存里的,不适合大数据块的接收。 一个接收的示例 Socket传输中的缓冲池大小 检查是否超时的静态方法 数据封送对象 超时的时间 检查是否超时的方法信息 socket对象 读取socket数据的基础方法,只适合用来接收指令头,或是同步数据 通信对象 接收的长度 接收到的字节数据 接收数据的举例,简单的接收20个字节长度的数据。 如何接收不定长度的数据呢?我们可以将一条数据拆分成2次接收,第一次是接收8个固定的字节,解析成长度,再接收真实的数据。 读取socket数据的基础方法,只适合用来接收指令头,或是同步数据 通信对象 接收的长度 用于报告接收进度的对象 是否按照百分比报告进度 是否回发接收数据长度 接收到的字节数据 接收数据的举例,输出报告,不根据百分比来产生报告,不回复接收进度。 接收一行命令数据,需要自己指定这个结束符 网络套接字 结束符信息 带有结果对象的数据信息 接收一行命令数据,需要自己指定这个结束符 网络套接字 结束符1信息 结束符2信息 带有结果对象的数据信息 从socket套接字读取数据并写入流中,必然报告进度 通信对象 stream 接收的长度 用于报告接收进度的对象 是否按照百分比报告进度 举例从socket读取数据,然后写入到文件流中 读取流并将数据写入socket 文件流 连接的套接字 返回的文件长度 发送的进度报告 是否按照百分比报告进度 举例从文件读取数据,然后写入到套接字中,相当于发送文件到socket 反射的辅助类 从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 读写接口的实现 包含是否成功的结果对象 从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 自定义的数据对象 数据读写对象 包含是否成功的结果对象 使用表达式树的方式来给一个属性赋值 属性信息 对象信息 实际的值 线程的协调逻辑状态 所有项完成 超时 任务取消 一个线程协调逻辑类,详细参考书籍《CLR Via C#》page:681 这个类可惜没有报告进度的功能 每次的操作任务开始前必须调用该方法 在一次任务处理好操作之后,必须调用该方法 该方法必须在发起所有的操作之后调用 回调方法 超时时间 超时的方法 取消任务的执行 生成一次报告 报告的状态 乐观的并发方法模型,具体参照《CLR Via C#》page:686 唯一的目标数据 修改数据的算法 一个用于高性能,乐观并发模型控制操作的类,允许一个方法(隔离方法)的安全单次执行 实例化一个对象,需要传入隔离执行的方法 隔离执行的方法 操作状态,0是未操作,1是操作中 需要操作的次数 启动线程池执行隔离方法 一个高性能的读写锁,支持写锁定,读灵活,读时写锁定,写时读锁定 返回本对象的描述字符串 对象的描述字符串 实例化一个读写锁的对象 释放资源 根据读写情况请求锁 True为写请求,False为读请求 释放锁,将根据锁状态自动区分读写锁 一个简单的混合线程同步锁,采用了基元用户加基元内核同步构造实现 以下演示常用的锁的使用方式,还包含了如何优雅的处理异常锁 释放资源 基元用户模式构造同步锁 基元内核模式构造同步锁 获取锁 离开锁 获取当前锁是否在等待当中 一个用于多线程并发处理数据的模型类,适用于处理数据量非常庞大的情况 等待处理的数据类型 实例化一个数据处理对象 数据处理列表 数据操作方法,应该是相对耗时的任务 需要使用的线程数 操作总数,判定操作是否完成 判断是否所有的线程是否处理完成 准备启动的处理数据的线程数量 指示多线程处理是否在运行中,防止冗余调用 列表数据 需要操作的方法 一个双参数委托 用于报告进度的委托,当finish等于count时,任务完成 已完成操作数量 总数量 成功数量 失败数量 异常发生时事件 报告处理进度时发生 已处理完成数量,无论是否异常 处理完成并实现操作数量 处理过程中异常数量 用于触发事件的混合线程锁 指示处理状态是否为暂停状态 指示系统是否需要强制退出 在发生错误的时候是否强制退出后续的操作 启动多线程进行数据处理 暂停当前的操作 恢复暂停的操作 直接手动强制结束操作 在发生错误的时候是否强制退出后续的操作 一个双检锁的示例,适合一些占内存的静态数据对象,获取的时候才实例化真正的对象 一个高级的混合线程同步锁,采用了基元用户加基元内核同步构造实现,并包含了自旋和线程所有权 释放资源 基元用户模式构造同步锁 基元内核模式构造同步锁 控制自旋的一个字段 指出哪个线程拥有锁 指示锁拥有了多少次 获取锁 离开锁 数据转换类的基础,提供了一些基础的方法实现. 实例化一个默认的对象 使用指定的数据解析来实例化对象 数据规则 从缓存中提取出bool结果 缓存数据 位的索引 bool对象 从缓存中提取出bool数组结果 缓存数据 位的索引 bool长度 bool数组 从缓存中提取byte结果 缓存数据 索引位置 byte对象 从缓存中提取byte数组结果 缓存数据 索引位置 读取的数组长度 byte数组对象 从缓存中提取short结果 缓存数据 索引位置 short对象 从缓存中提取short数组结果 缓存数据 索引位置 读取的数组长度 short数组对象 从缓存中提取ushort结果 缓存数据 索引位置 ushort对象 从缓存中提取ushort数组结果 缓存数据 索引位置 读取的数组长度 ushort数组对象 从缓存中提取int结果 缓存数据 索引位置 int对象 从缓存中提取int数组结果 缓存数据 索引位置 读取的数组长度 int数组对象 从缓存中提取uint结果 缓存数据 索引位置 uint对象 从缓存中提取uint数组结果 缓存数据 索引位置 读取的数组长度 uint数组对象 从缓存中提取long结果 缓存数据 索引位置 long对象 从缓存中提取long数组结果 缓存数据 索引位置 读取的数组长度 long数组对象 从缓存中提取ulong结果 缓存数据 索引位置 ulong对象 从缓存中提取ulong数组结果 缓存数据 索引位置 读取的数组长度 ulong数组对象 从缓存中提取float结果 缓存对象 索引位置 float对象 从缓存中提取float数组结果 缓存数据 索引位置 读取的数组长度 float数组对象 从缓存中提取double结果 缓存对象 索引位置 double对象 从缓存中提取double数组结果 缓存对象 索引位置 读取的数组长度 double数组对象 从缓存中提取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数据 反转双字节的数据信息 数据字节 起始索引,默认值为0 实际字节信息 反转多字节的数据信息 数据字节 起始索引,默认值为0 实际字节信息 反转多字节的数据信息 数据字节 起始索引,默认值为0 实际字节信息 获取或设置数据解析的格式,默认DCBA,也即是无修改,可选ABCD,BADC,CDAB,DCBA格式,对于Modbus协议来说,默认ABCD 所有数据转换类的静态辅助方法 Static helper method for all data conversion classes 结果转换操作的基础方法,需要支持类型,及转换的委托 结果类型 实际转换的委托 转换结果 结果转换操作的基础方法,需要支持类型,及转换的委托 结果类型 源结果 转换结果 应用于多字节数据的解析或是生成格式 按照顺序排序 按照单字反转 按照双字反转 按照倒序排序 支持转换器的基础接口 从缓存中提取出bool结果 缓存数据 位的索引 bool对象 从缓存中提取出bool数组结果 缓存数据 位的索引 bool长度 bool数组 从缓存中提取byte结果 缓存数据 索引位置 byte对象 从缓存中提取byte数组结果 缓存数据 索引位置 读取的数组长度 从缓存中提取short结果 缓存数据 索引位置 short对象 从缓存中提取short数组结果 缓存数据 索引位置 读取的数组长度 short数组对象 从缓存中提取ushort结果 缓存数据 索引位置 ushort对象 从缓存中提取ushort数组结果 缓存数据 索引位置 读取的数组长度 ushort数组对象 从缓存中提取int结果 缓存数据 索引位置 int对象 从缓存中提取int数组结果 缓存数据 索引位置 读取的数组长度 int数组对象 从缓存中提取uint结果 缓存数据 索引位置 uint对象 从缓存中提取uint数组结果 缓存数据 索引位置 读取的数组长度 uint数组对象 从缓存中提取long结果 缓存数据 索引位置 long对象 从缓存中提取long数组结果 缓存数据 索引位置 读取的数组长度 long数组对象 从缓存中提取ulong结果 缓存数据 索引位置 ulong对象 从缓存中提取ulong数组结果 缓存数据 索引位置 读取的数组长度 ulong数组对象 从缓存中提取float结果 缓存对象 索引位置 float对象 从缓存中提取float数组结果 缓存数据 索引位置 读取的数组长度 从缓存中提取double结果 缓存对象 索引位置 double对象 从缓存中提取double数组结果 缓存对象 索引位置 读取的数组长度 从缓存中提取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数据 获取或设置数据解析的格式,默认ABCD,可选BADC,CDAB,DCBA格式 常规的字节转换类 实例化一个默认的对象 使用指定的解析规则来初始化对象 解析规则 字节倒序的转换类 实例化一个默认的对象 使用指定的数据解析来实例化对象 数据规则 从缓存中提取short结果 缓存数据 索引位置 short对象 从缓存中提取ushort结果 缓存数据 索引位置 ushort对象 从缓存中提取int结果 缓存数据 索引位置 int对象 从缓存中提取uint结果 缓存数据 索引位置 uint对象 从缓存中提取long结果 缓存数据 索引位置 long对象 从缓存中提取ulong结果 缓存数据 索引位置 ulong对象 从缓存中提取float结果 缓存对象 索引位置 float对象 从缓存中提取double结果 缓存对象 索引位置 double对象 short数组变量转化缓存数据 等待转化的数组 buffer数据 ushort数组变量转化缓存数据 等待转化的数组 buffer数据 int数组变量转化缓存数据 等待转化的数组 buffer数据 uint数组变量转化缓存数据 等待转化的数组 buffer数据 long数组变量转化缓存数据 等待转化的数组 buffer数据 ulong数组变量转化缓存数据 等待转化的数组 buffer数据 float数组变量转化缓存数据 等待转化的数组 buffer数据 double数组变量转化缓存数据 等待转化的数组 buffer数据 按照字节错位的数据转换类 实例化一个默认的对象 使用指定的数据解析来实例化对象 数据规则 按照字节错位的方法 实际的字节数据 起始字节位置 数据长度 处理过的数据信息 字符串数据是否按照字来反转 从缓存中提取short结果 缓存数据 索引位置 short对象 从缓存中提取ushort结果 缓存数据 索引位置 ushort对象 从缓存中提取string结果,使用指定的编码 缓存对象 索引位置 byte数组长度 字符串的编码 string对象 short数组变量转化缓存数据 等待转化的数组 buffer数据 ushort数组变量转化缓存数据 等待转化的数组 buffer数据 使用指定的编码字符串转化缓存数据 等待转化的数据 字符串的编码方式 buffer数据 证书等级 只允许读取数据的等级 允许同时读写数据的等级 饼图的基本元素 实例化一个饼图基本元素的对象 名称 背景颜色 用于网络传递的信息头,使用上等同于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地址 数据的地址信息 数据长度 实例化一个地址特性,指定地址信息 真实的地址信息 实例化一个地址特性,指定地址信息 真实的地址信息 设备的地址信息 实例化一个地址特性,指定地址信息和数据长度,通常应用于数组的批量读取 真实的地址信息 读取的数据长度 实例化一个地址特性,指定地址信息和数据长度,通常应用于数组的批量读取 真实的地址信息 读取的数据长度 设备类型 加密方法,只对当前的程序集开放 等待加密的数据 加密后的字节数据 解密方法,只对当前的程序集开放 等待解密的数据 解密后的字节数据 超时操作的类 [a class use to indicate the time-out of the connection] 实例化对象 操作的开始时间 操作是否成功 延时的时间,单位毫秒 连接超时用的Socket 用于超时执行的方法 当前对象判断的同步锁 用于PLC通讯及ModBus自定义数据类型的读写操作 主要应用于设备实现设备类的自定义的数据类型读写,以此达到简化代码的操作,但是有一个前提,该数据处于连续的数据区块 此处举例读取三菱的自定义的数据,先实现接口,然后再读写操作 接下来就可以实现数据的读取了 读取的数据长度,对于西门子,等同于字节数,对于三菱和Modbus为字节数的一半 从字节数组进行解析实际的对象 从远程读取的数据源 将对象生成字符源,写入PLC中 准备写入到远程的数据 操作结果的类,只带有成功标志和错误信息 -> The class that operates the result, with only success flags and error messages 为 True 时,忽略 的值 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 指示本次访问是否成功 具体的错误描述 具体的错误代码 获取错误代号及文本描述 包含错误码及错误消息 从另一个结果类中拷贝错误信息 支持结果类及派生类 结果类及派生类的对象 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 目标数据类型三 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 目标数据类型三 目标数据类型四 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 目标数据类型三 目标数据类型四 目标数据类型五 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 目标数据类型三 目标数据类型四 目标数据类型五 目标数据类型六 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 目标数据类型三 目标数据类型四 目标数据类型五 目标数据类型六 目标数据类型七 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 目标数据类型三 目标数据类型四 目标数据类型五 目标数据类型六 目标数据类型七 目标数据类型八 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 目标数据类型三 目标数据类型四 目标数据类型五 目标数据类型六 目标数据类型七 目标数据类型八 目标数据类型九 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个失败的结果对象,该对象复制另一个结果对象的错误信息 目标数据类型一 目标数据类型二 目标数据类型三 目标数据类型四 目标数据类型五 目标数据类型六 目标数据类型七 目标数据类型八 目标数据类型九 目标数据类型十 之前的结果对象 带默认泛型对象的失败结果类 创建并返回一个成功的结果对象 成功的结果对象 创建并返回一个成功的结果对象,并带有一个参数对象 参数类型 类型的值对象 成功的结果对象 创建并返回一个成功的结果对象,并带有两个参数对象 第一个参数类型 第二个参数类型 类型一对象 类型二对象 成的结果对象 创建并返回一个成功的结果对象,并带有三个参数对象 第一个参数类型 第二个参数类型 第三个参数类型 类型一对象 类型二对象 类型三对象 成的结果对象 创建并返回一个成功的结果对象,并带有四个参数对象 第一个参数类型 第二个参数类型 第三个参数类型 第四个参数类型 类型一对象 类型二对象 类型三对象 类型四对象 成的结果对象 创建并返回一个成功的结果对象,并带有五个参数对象 第一个参数类型 第二个参数类型 第三个参数类型 第四个参数类型 第五个参数类型 类型一对象 类型二对象 类型三对象 类型四对象 类型五对象 成的结果对象 创建并返回一个成功的结果对象,并带有六个参数对象 第一个参数类型 第二个参数类型 第三个参数类型 第四个参数类型 第五个参数类型 第六个参数类型 类型一对象 类型二对象 类型三对象 类型四对象 类型五对象 类型六对象 成的结果对象 创建并返回一个成功的结果对象,并带有七个参数对象 第一个参数类型 第二个参数类型 第三个参数类型 第四个参数类型 第五个参数类型 第六个参数类型 第七个参数类型 类型一对象 类型二对象 类型三对象 类型四对象 类型五对象 类型六对象 类型七对象 成的结果对象 创建并返回一个成功的结果对象,并带有八个参数对象 第一个参数类型 第二个参数类型 第三个参数类型 第四个参数类型 第五个参数类型 第六个参数类型 第七个参数类型 第八个参数类型 类型一对象 类型二对象 类型三对象 类型四对象 类型五对象 类型六对象 类型七对象 类型八对象 成的结果对象 创建并返回一个成功的结果对象,并带有九个参数对象 第一个参数类型 第二个参数类型 第三个参数类型 第四个参数类型 第五个参数类型 第六个参数类型 第七个参数类型 第八个参数类型 第九个参数类型 类型一对象 类型二对象 类型三对象 类型四对象 类型五对象 类型六对象 类型七对象 类型八对象 类型九对象 成的结果对象 创建并返回一个成功的结果对象,并带有十个参数对象 第一个参数类型 第二个参数类型 第三个参数类型 第四个参数类型 第五个参数类型 第六个参数类型 第七个参数类型 第八个参数类型 第九个参数类型 第十个参数类型 类型一对象 类型二对象 类型三对象 类型四对象 类型五对象 类型六对象 类型七对象 类型八对象 类型九对象 类型十对象 成的结果对象 操作结果的泛型类,允许带一个用户自定义的泛型对象,推荐使用这个类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据 操作结果的泛型类,允许带两个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 操作结果的泛型类,允许带三个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 用户自定义的泛型数据3 操作结果的泛型类,允许带四个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 用户自定义的泛型数据3 用户自定义的泛型数据4 操作结果的泛型类,允许带五个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 泛型类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 用户自定义的泛型数据3 用户自定义的泛型数据4 用户自定义的泛型数据5 操作结果的泛型类,允许带六个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 用户自定义的泛型数据3 用户自定义的泛型数据4 用户自定义的泛型数据5 用户自定义的泛型数据5 操作结果的泛型类,允许带七个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 用户自定义的泛型数据3 用户自定义的泛型数据4 用户自定义的泛型数据5 用户自定义的泛型数据6 用户自定义的泛型数据7 操作结果的泛型类,允许带八个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 用户自定义的泛型数据3 用户自定义的泛型数据4 用户自定义的泛型数据5 用户自定义的泛型数据6 用户自定义的泛型数据7 用户自定义的泛型数据8 操作结果的泛型类,允许带九个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 用户自定义的泛型数据3 用户自定义的泛型数据4 用户自定义的泛型数据5 用户自定义的泛型数据6 用户自定义的泛型数据7 用户自定义的泛型数据8 用户自定义的泛型数据9 操作结果的泛型类,允许带十个用户自定义的泛型对象,推荐使用这个类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 泛型类 实例化一个默认的结果对象 使用指定的消息实例化一个默认的结果对象 错误消息 使用错误代码,消息文本来实例化对象 错误代码 错误消息 用户自定义的泛型数据1 用户自定义的泛型数据2 用户自定义的泛型数据3 用户自定义的泛型数据4 用户自定义的泛型数据5 用户自定义的泛型数据6 用户自定义的泛型数据7 用户自定义的泛型数据8 用户自定义的泛型数据9 用户自定义的泛型数据10 一个基于异步高性能的客户端网络类,支持主动接收服务器的消息 详细的使用说明,请参照博客http://www.cnblogs.com/dathlin/p/7697782.html 此处贴上了Demo项目的服务器配置的示例代码 实例化一个对象 客户端系统是否启动 重连接失败的次数 客户端登录的标识名称,可以为ID号,也可以为登录名 远程服务器的IP地址和端口 服务器的时间,自动实现和服务器同步 系统与服务器的延时时间,单位毫秒 客户端启动成功的事件,重连成功也将触发此事件 连接失败时触发的事件 服务器的异常,启动,等等一般消息产生的时候,出发此事件 在客户端断开后并在重连服务器之前触发,用于清理系统资源 当接收到文本数据的时候,触发此事件 当接收到字节数据的时候,触发此事件 关闭该客户端引擎 启动客户端引擎,连接服务器系统 连接服务器之前的消息提示,如果是重连的话,就提示10秒等待信息 通信出错后的处理 接收的会话 异常 服务器端用于数据发送文本的方法 用户自定义的命令头 发送的文本 服务器端用于发送字节的方法 用户自定义的命令头 实际发送的数据 客户端的数据处理中心 会话 消息暗号 用户消息 数据内容 心跳线程的方法 返回对象的字符串表示形式 高性能的异步网络服务器类,适合搭建局域网聊天程序,消息推送程序 详细的使用说明,请参照博客http://www.cnblogs.com/dathlin/p/8097897.html 此处贴上了Demo项目的服务器配置的示例代码 实例化一个网络服务器类对象 所支持的同时在线客户端的最大数量,商用限制1000个,最小10个 获取或设置服务器是否记录客户端上下线信息 所有在线客户端的数量 初始化操作 关闭网络时的操作 异常下线 会话信息 异常 正常下线 会话信息 客户端的上下限状态变更时触发,仅作为在线客户端识别 当客户端上线的时候,触发此事件 当客户端下线的时候,触发此事件 当接收到文本数据的时候,触发此事件 当接收到字节数据的时候,触发此事件 当接收到了新的请求的时候执行的操作 异步对象 终结点 服务器端用于数据发送文本的方法 数据发送对象 用户自定义的数据对象,如不需要,赋值为0 发送的文本 服务器端用于发送字节的方法 数据发送对象 用户自定义的数据对象,如不需要,赋值为0 实际发送的数据 服务端用于发送所有数据到所有的客户端 用户自定义的命令头 需要传送的实际的数据 服务端用于发送所有数据到所有的客户端 用户自定义的命令头 需要群发客户端的字节数据 根据客户端设置的别名进行发送消息 客户端上线的别名 用户自定义的命令头 需要传送的实际的数据 根据客户端设置的别名进行发送消息 客户端上线的别名 用户自定义的命令头 需要传送的实际的数据 数据处理中心 会话对象 消息的代码 用户消息 数据内容 获取本对象的字符串表示形式 字符串 通用设备的基础网络信息 实例化一个通用的设备类 当客户端上线的时候,触发此事件 当客户端下线的时候,触发此事件 按照ASCII文本的方式进行触发接收的数据 按照字节的方式进行触发接收的数据 当接收到了新的请求的时候执行的操作 异步对象 终结点 通用设备的基础状态 设备的连接地址 设备的连接时间 网络套接字 上次接收到信息的时间 设备的ip地址 缓冲内存块 文件管理类服务器,负责服务器所有分类文件的管理,特点是不支持文件附加数据,但是支持直接访问文件名 本文件的服务器不支持存储文件携带的额外信息,是直接将文件存放在服务器指定目录下的,文件名不更改,特点是服务器查看方便。 以下的示例来自Demo项目,创建了一个简单的服务器对象。 实例化一个对象 当接收到了新的请求的时候执行的操作 异步对象 终结点 初始化数据 检查文件夹 从网络套接字接收文件并移动到目标的文件夹中,如果结果异常,则结束通讯 用于接收上传文件时的临时文件夹,临时文件使用结束后会被删除 获取本对象的字符串标识形式 字符串对象 文件的基础信息 文件名称 文件大小 文件的标识,注释 文件上传人的名称 文件传输客户端基类,提供上传,下载,删除的基础服务 服务器端的文件管理引擎终结点 获取或设置连接的超时时间,默认10秒 发送三个文件分类到服务器端 套接字对象 一级分类 二级分类 三级分类 是否成功的结果对象 删除服务器上的文件 文件的名称 一级分类 二级分类 三级分类 是否成功的结果对象 基础下载信息 一级分类 二级分类 三级分类 服务器的文件名称 下载的进度报告 数据源信息,决定最终存储到哪里去 是否成功的结果对象 上传文件给服务器 数据源,可以是文件名,也可以是数据流 在服务器保存的文件名,不包含驱动器路径 一级分类 二级分类 三级分类 文件的描述 文件的上传人 汇报进度 是否成功的结果对象 获取本对象的字符串表示形式 字符串信息 文件标记对象类 实例化一个文件标记对象 日志对象 完整的文件名称 新增一个文件的操作,仅仅是删除文件 对当前文件的操作内容 指示该对象是否能被清除 是否能够删除 进入文件的读取状态 离开本次的文件读取状态 文件集容器,绑定一个文件夹的文件信息组 实例化一个新的数据管理容器 日志记录对象,可以为空 文件的路径 包含所有文件列表信息的json文本缓存 获取文件的数量 当文件数量发生变化的时候触发的事件 下载文件时调用 文件的实际名称 文件名映射过去的实际的文件名字 上传文件时掉用 文件名,带后缀,不带任何的路径 文件的大小 文件映射名称 文件的拥有者 文件的额外描述 映射的文件名称 删除一个文件信息 实际的文件名称 映射之后的文件名 缓存JSON文本的方法,该机制使用乐观并发模型完成 从目录进行加载数据,必须实例化的时候加载,加载失败会导致系统异常,旧的文件丢失 单个文件的存储 文件的名称 文件的大小 文件的映射名称 文件的下载次数 文件的上传时间 文件的上传人,拥有者 文件的额外描述 获取大小 文件大小的字符串描述形式 与服务器文件引擎交互的客户端类,支持操作Advanced引擎和Ultimate引擎 这里需要需要的是,本客户端支持Advanced引擎和Ultimate引擎文件服务器,服务的类型需要您根据自己的需求来选择。 此处只演示创建实例,具体的上传,下载,删除的例子请参照对应的方法 实例化一个对象 删除服务器的文件操作 文件名称,带后缀 第一大类 第二大类 第三大类 是否成功的结果对象 下载服务器的文件到本地的文件操作 文件名称,带后缀 第一大类 第二大类 第三大类 下载的进度报告 准备本地保存的名称 是否成功的结果对象 用于分类的参数中间不需要的可以为空,对应的是服务器上的路径系统。

失败的原因大多数来自于网络的接收异常,或是服务器不存在文件。
下载服务器的文件到本地的数据流中 文件名称,带后缀 第一大类 第二大类 第三大类 下载的进度报告 流数据 是否成功的结果对象 用于分类的参数中间不需要的可以为空,对应的是服务器上的路径系统。

失败的原因大多数来自于网络的接收异常,或是服务器不存在文件。
下载服务器的文件到本地的数据流中 文件名称,带后缀 第一大类 第二大类 第三大类 下载的进度报告 内存文件 是否成功的结果对象 用于分类的参数中间不需要的可以为空,对应的是服务器上的路径系统。

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

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

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

失败的原因大多数来自于网络的接收异常,或是客户端不存在文件。
根据三种分类信息,还原成在服务器的相对路径,包含文件 文件名称,包含后缀名 第一类 第二类 第三类 是否成功的结果对象 根据三种分类信息,还原成在服务器的相对路径,仅仅路径 第一类 第二类 第三类 是否成功的结果对象 获取指定路径下的所有的文档 获取得到的文件合集 第一大类 第二大类 第三大类 是否成功的结果对象 用于分类的参数中间不需要的可以为空,对应的是服务器上的路径系统。

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

失败的原因大多数来自于网络的接收异常。
获取指定路径下的所有的文档 想要获取的队列 指令 第一大类 第二大类 第三大类 数组的类型 是否成功的结果对象 终极文件管理服务器,实现所有的文件分类管理,读写分离,不支持直接访问文件名 本文件的服务器支持存储文件携带的额外信息,文件名被映射成了新的名称,无法在服务器直接查看文件信息。 以下的示例来自Demo项目,创建了一个简单的服务器对象。 实例化一个对象 所有文件组操作的词典锁 词典的锁 获取当前目录的读写锁,如果没有会自动创建 相对路径名 读写锁 从套接字接收文件并保存,更新文件列表 套接字 保存的文件名 是否成功的结果对象 根据文件的显示名称转化为真实存储的名称 第一大类 第二大类 第三大类 文件显示名称 是否成功的结果对象 删除已经存在的文件信息 文件的路径 文件的名称 当接收到了新的请求的时候执行的操作 异步对象 终结点 获取本对象的字符串表示形式 字符串对象 发布订阅类的客户端,使用指定的关键订阅相关的数据推送信息 详细的使用说明,请参照博客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的报文信息 字节数据信息 结果报文信息 从原始的结果数据对象中提取出数字数据 原始的字节数据 带有结果对象的数据信息 从原始的结果数据对象中提取出数字数据 原始的字节数据 带有结果对象的数据信息 从结果的数据对象里提取字符串的信息 原始的字节数据 带有结果对象的数据信息 从redis的结果数据中分析出所有的字符串信息 结果数据 带有结果对象的数据信息 Redis协议的订阅操作,一个对象订阅一个或是多个频道的信息 实例化一个发布订阅类的客户端,需要指定ip地址,端口,及订阅关键字 服务器的IP地址 服务器的端口号 订阅关键字 实例化一个发布订阅类的客户端,需要指定ip地址,端口,及订阅关键字 服务器的IP地址 服务器的端口号 订阅关键字 如果Redis服务器设置了密码,此处就需要进行设置。必须在CreatePush方法调用前设置 创建数据推送服务 触发数据推送的委托 是否创建成功 关闭消息推送的界面 返回表示当前对象的字符串 字符串信息 这是一个redis的客户端类,支持读取,写入,发布订阅,但是不支持订阅,如果需要订阅,请使用另一个类 实例化一个客户端的对象,用于和服务器通信 服务器的ip地址 服务器的端口号 密码,如果服务器没有设置,密码设置为null 实例化一个客户端对象,需要手动指定Ip地址和端口 密码,如果服务器没有设置,密码设置为null 如果设置了密码,对密码进行验证 网络的套接字服务 是否成功的对象 在其他指定的套接字上,使用报文来通讯,传入需要发送的消息,返回一条完整的数据指令 指定的套接字 发送的完整的报文信息 无锁的基于套接字直接进行叠加协议的操作。 假设你有一个自己的socket连接了设备,本组件可以直接基于该socket实现modbus读取,三菱读取,西门子读取等等操作,前提是该服务器支持多协议,虽然这个需求听上去比较变态,但本组件支持这样的操作。 接收的完整的报文信息 自定义的指令交互方法,该指令用空格分割,举例: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 。 关键字 设置成功返回 1 。当 key 不存在或者不能为 key 设置生存时间时,返回 0 。 查找所有符合给定模式 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 已经存在并且是一个字符串, 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 不存在时,返回一个空表。 SAVE 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。 保存成功时返回 OK 。 在后台异步(Asynchronously)保存当前数据库的数据到磁盘。 BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。 反馈信息。 获取服务器的时间戳信息,可用于本地时间的数据同步问题 带有服务器时间的结果对象 将信息 message 发送到指定的频道 channel,返回接收到信息 message 的订阅者数量。 频道,和关键字不是一回事 消息 接收到信息 message 的订阅者数量。 切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。默认使用 0 号数据库。 索引值 是否切换成功 返回表示当前对象的字符串 字符串信息 同步访问数据的客户端类,用于向服务器请求一些确定的数据信息 详细的使用说明,请参照博客http://www.cnblogs.com/dathlin/p/7697782.html 此处贴上了Demo项目的服务器配置的示例代码 实例化一个客户端的对象,用于和服务器通信 服务器的ip地址 服务器的端口号 实例化一个客户端对象,需要手动指定Ip地址和端口 连接上服务器后需要进行的初始化操作,无论是否允许操作都要进行验证 网络套接字 是否初始化成功,依据具体的协议进行重写 客户端向服务器进行请求,请求字符串数据,忽略了自定义消息反馈 用户的指令头 发送数据 带返回消息的结果对象 客户端向服务器进行请求,请求字符串数组,忽略了自定义消息反馈 用户的指令头 发送数据 带返回消息的结果对象 客户端向服务器进行请求,请求字节数据 用户的指令头 发送的字节内容 带返回消息的结果对象 客户端向服务器进行请求,请求字符串数据,并返回状态信息 用户的指令头 发送数据 带返回消息的结果对象 客户端向服务器进行请求,请求字符串数据,并返回状态信息 用户的指令头 发送数据 带返回消息的结果对象 客户端向服务器进行请求,请求字符串数据,并返回状态信息 用户的指令头 发送数据 带返回消息的结果对象 需要发送的底层数据 需要发送的底层数据 带返回消息的结果对象 需要发送的底层数据 需要发送的底层数据 带返回消息的结果对象 客户端向服务器进行异步请求,请求字符串数据 用户的指令头 发送数据 客户端向服务器进行异步请求,请求字节数据 用户的指令头 发送的字节内容 带返回消息的结果对象 客户端向服务器进行异步请求,请求字符串数据 用户的指令头 发送数据 客户端向服务器进行请求,请求字符串数据,并返回状态信息 用户的指令头 发送数据 带返回消息的结果对象 客户端向服务器进行请求,请求字符串数据,并返回状态信息 用户的指令头 发送数据 带返回消息的结果对象 客户端向服务器进行请求,请求字符串数据,并返回状态信息 用户的指令头 发送数据 带返回消息的结果对象 获取本对象的字符串表示形式 字符串信息 异步消息处理服务器,主要用来实现接收客户端信息并进行消息反馈的操作,适用于客户端进行远程的调用,要求服务器反馈数据。 详细的使用说明,请参照博客http://www.cnblogs.com/dathlin/p/7697782.html 此处贴上了Demo项目的服务器配置的示例代码 实例化一个服务器消息请求的信息 接收字符串信息的事件 接收字符串数组信息的事件 接收字节信息的事件 向指定的通信对象发送字符串数据 通信对象 用户的指令头 实际发送的字符串数据 向指定的通信对象发送字符串数组 通信对象 用户的指令头 实际发送的字符串数组 向指定的通信对象发送字节数据 连接对象 用户的指令头 实际的数据 关闭网络的操作 当接收到了新的请求的时候执行的操作 异步对象 终结点 处理异常的方法 会话 异常信息 正常下线 会话 数据处理中心 当前的会话 协议指令头 客户端信号 触发的消息内容 当前在线的客户端数量 返回表示当前对象的字符串 用于服务器支持软件全自动更新升级的类 实例化一个对象 更新程序的名称 系统升级时客户端所在的目录,默认为C:\HslCommunication 当接收到了新的请求的时候执行的操作 异步对象 终结点 返回表示当前对象的字符串 字符串信息 UDP客户端的类,只负责发送数据到服务器,该数据经过封装 实例化对象,指定发送的服务器地址和端口号 服务器的Ip地址 端口号 客户端向服务器进行请求,请求字符串数据,忽略了自定义消息反馈 用户的指令头 发送数据 带返回消息的结果对象 客户端向服务器进行请求,请求字节数据 用户的指令头 发送的字节内容 带返回消息的结果对象 客户端向服务器进行请求,请求字符串数据,并返回状态信息 用户的指令头 发送数据 带返回消息的结果对象 客户端向服务器进行请求,请求字符串数据,并返回状态信息 用户的指令头 发送数据 带返回消息的结果对象 需要发送的底层数据 需要发送的底层数据 带返回消息的结果对象 需要发送的底层数据 需要发送的底层数据 带返回消息的结果对象 获取本对象的字符串表示形式 字符串信息 Udp网络的服务器端类 获取或设置一次接收时的数据长度,默认2KB数据长度 根据指定的端口启动Upd侦听 端口号信息 关闭引擎的操作 重新开始接收数据 数据处理中心 向指定的通信对象发送字符串数据 通信对象 用户的指令头 实际发送的字符串数据 向指定的通信对象发送字节数据 连接对象 用户的指令头 实际的数据 当接收到文本数据的时候,触发此事件 当接收到字节数据的时候,触发此事件 获取本对象的字符串表示形式 阿尔泰科技发展有限公司的DAM3601温度采集模块,基于ModbusRtu开发完成。 该温度采集模块是基于modbus-rtu,但不是标准的modbus协议,存在一些小误差,需要重写实现,并且提供了基础的数据转换 实例化一个默认的对象 使用站号实例化默认的对象 站号信息 读取所有的温度数据,并转化成相关的信息 结果数据对象 数据转换方法,将读取的值, 读取的值 转换后的值 从Modbus服务器批量读取寄存器的信息,需要指定起始地址,读取长度 起始地址,格式为"1234",或者是带功能码格式x=3;1234 读取的数量 带有成功标志的字节信息 此处演示批量读取的示例 返回表示当前对象的字符串 字符串 系统的语言基类,默认也即是中文版本 English Version Text 一个通用的日志接口 本组件的日志核心机制,如果您使用了本组件却不想使用本组件的日志组件功能,可以自己实现新的日志组件,只要继承本接口接口。其他常用的日志组件如下:(都是可以实现的) Log4Net NLog 实现类就不放示例代码了,存储日志的使用都是一样的,就是实例化的时候不一致,以下示例代码以单文件日志为例 文件存储模式,1:单文件,2:根据大小,3:根据时间 存储之前引发的事件,允许额外的操作 自定义的消息记录 消息等级 关键字 日志内容 写入一条调试日志 日志内容 写入一条调试日志 关键字 日志内容 写入一条解释性的信息 写入一条错误日志 日志内容 写入一条错误日志 关键字 日志内容 写入一条异常信息 关键字 异常 写入一条异常信息 关键字 内容 异常 写入一条致命日志 日志内容 写入一条致命日志 关键字 日志内容 写入一条信息日志 日志内容 写入一条信息日志 关键字 日志内容 写入一行换行符 写入任意字符串 文本 写入一条警告日志 日志内容 写入一条警告日志 关键字 日志内容 设置日志的存储等级,高于该等级的才会被存储 登记信息 获取已存在的日志文件名称 文件列表 过滤掉指定的关键字的日志,该信息不存储,但仍然触发BeforeSaveToFile事件 关键字 日志存储类的基类,提供一些基础的服务 基于此类可以实现任意的规则的日志存储规则,欢迎大家补充实现,本组件实现了3个日志类 单文件日志类 根据文件大小的类 根据时间进行存储的类 实例化一个日志对象 文件存储的锁 在存储到文件的时候将会触发的事件 日志存储模式,1:单文件,2:按大小存储,3:按时间存储 写入一条调试信息 写入一条调试信息 关键字 文本内容 写入一条普通信息 文本内容 写入一条普通信息 关键字 文本内容 写入一条警告信息 文本内容 写入一条警告信息 关键字 文本内容 写入一条错误消息 文本内容 写入一条错误消息 关键字 文本内容 写入一条致命错误信息 文本内容 写入一条致命错误信息 关键字 文本内容 写入一条异常信息 关键字 异常信息 写入一条异常信息 关键字 内容 异常 记录一条自定义的消息 消息的等级 关键字 文本 写入一条解释性的消息,不需要带有回车键 解释性的文本 写入一条任意字符 内容 写入一条换行符 设置日志的存储等级,高于该等级的才会被存储 消息等级 过滤指定的关键字存储 关键字 获取要存储的文件的名称 完整的文件路径信息,带文件名 返回检查的路径名称,将会包含反斜杠 路径信息 检查后的结果对象 释放资源 是否初次调用 释放资源 带有日志消息的事件 消息信息 日志存储回调的异常信息 使用其他的异常信息来初始化日志异常 异常信息 日志文件输出模式 按每个小时生成日志文件 按每天生成日志文件 按每个周生成日志文件 按每个月生成日志文件 按每季度生成日志文件 按每年生成日志文件 记录消息的等级 一条消息都不记录 记录致命等级及以上日志的消息 记录异常等级及以上日志的消息 记录警告等级及以上日志的消息 记录信息等级及以上日志的消息 记录调试等级及以上日志的信息 单个日志的记录信息 默认的无参构造器 单个记录信息的标识ID,程序重新运行时清空 消息的等级 线程ID 消息文本 消息发生的事件 消息的关键字 是否取消写入到文件中去,在事件BeforeSaveToFile触发的时候捕获即可设置。 返回表示当前对象的字符串 字符串信息 返回表示当前对象的字符串,剔除了关键字 字符串信息 日志类的管理器 存储文件的时候指示单文件存储 存储文件的时候指示根据文件大小存储 存储文件的时候指示根据日志时间来存储 日志文件的头标志 公开的一个静态变量,允许随意的设置 通过异常文本格式化成字符串用于保存或发送 文本消息 异常 异常最终信息 一个日志组件,可以根据时间来区分不同的文件存储 此日志实例将根据日期时间来进行分类,支持的时间分类如下: 小时 月份 季度 年份 实例化一个根据时间存储的日志组件 文件存储的路径 存储文件的间隔 获取需要保存的日志文件 完整的文件路径,含文件名 获取所有的文件夹中的日志文件 所有的文件路径集合 返回表示当前对象的字符串 字符串 根据文件的大小来存储日志信息 此日志的实例是根据文件的大小储存,例如设置了2M,每隔2M,系统将生成一个新的日志文件。 实例化一个根据文件大小生成新文件的 日志文件的保存路径 每个日志文件的最大大小,默认2M 获取需要保存的日志文件 字符串数据 返回所有的日志文件 所有的日志文件信息 获取之前保存的日志文件 获取一个新的默认的文件名称 返回表示当前对象的字符串 字符串数据 单日志文件对象 此日志实例化需要指定一个完整的文件路径,当需要记录日志的时候调用方法,会使得日志越来越大,对于写入的性能没有太大影响,但是会影响文件读取。 实例化一个单文件日志的对象 文件的路径 单日志文件允许清空日志内容 获取单日志文件的所有保存记录 字符串信息 获取所有的日志文件数组,对于单日志文件来说就只有一个 字符串数组,包含了所有的存在的日志数据 获取存储的文件的名称 字符串数据 返回表示当前对象的字符串 日志查看器的窗口类,用于分析统计日志数据 实例化一个日志查看器的窗口 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-Ascii通讯协议的类库,基于rtu类库完善过来 本客户端支持的标准的modbus-tcp协议,内置的消息号会进行自增,地址格式采用富文本表示形式 地址共可以携带3个信息,最完整的表示方式"s=2;x=3;100",对应的modbus报文是 02 03 00 64 00 01 的前四个字节,站号,功能码,起始地址,下面举例 读取线圈 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的值 对于写入来说也是一致的 写入线圈 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 基本的用法请参照下面的代码示例,初始化部分的代码省略 复杂的读取数据的代码示例如下: 写入数据的代码如下: 实例化一个Modbus-ascii协议的客户端对象 指定服务器地址,端口号,客户端自己的站号来初始化 站号 检查当前的Modbus-Ascii响应是否是正确的 发送的数据信息 带是否成功的结果数据 返回表示当前对象的字符串 字符串信息 Modbus协议相关的一些信息 读取线圈 读取离散量 读取寄存器 读取输入寄存器 写单个线圈 写单个寄存器 写多个线圈 写多个寄存器 不支持该功能码 该地址越界 读取长度超过最大值 读写异常 将modbus指令打包成Modbus-Tcp指令 Modbus指令 消息的序号 Modbus-Tcp指令 将modbus指令打包成Modbus-Rtu指令 Modbus指令 Modbus-Rtu指令 将一个modbus-rtu的数据报文,转换成modbus-ascii的数据报文 modbus-rtu的完整报文,携带相关的校验码 可以用于直接发送的modbus-ascii的报文 将一个modbus-ascii的数据报文,转换成的modbus核心数据报文 modbus-ascii的完整报文,携带相关的校验码 可以用于直接发送的modbus的报文 分析Modbus协议的地址信息,该地址适应于tcp及rtu模式 带格式的地址,比如"100","x=4;100","s=1;100","s=1;x=4;100" 起始地址是否从0开始 默认的功能码信息 转换后的地址信息 通过错误码来获取到对应的文本消息 错误码 错误的文本描述 服务器端提供的数据监视服务 本次数据监视的地址 数据写入时触发的事件 数据改变时触发的事件 强制设置触发事件 强制设置触发值变更事件 变更前的值 变更后的值 Modbus-Rtu通讯协议的类库,多项式码0xA001 本客户端支持的标准的modbus-rtu协议,自动实现了CRC16的验证,地址格式采用富文本表示形式 地址共可以携带3个信息,最完整的表示方式"s=2;x=3;100",对应的modbus报文是 02 03 00 64 00 01 的前四个字节,站号,功能码,起始地址,下面举例 读取线圈 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的值 对于写入来说也是一致的 写入线圈 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 基本的用法请参照下面的代码示例,初始化部分的代码省略 实例化一个Modbus-Rtu协议的客户端对象 指定服务器地址,端口号,客户端自己的站号来初始化 客户端自身的站号 获取或设置起始的地址是否从0开始,默认为True 因为有些设备的起始地址是从1开始的,就要设置本属性为True 获取或者重新修改服务器的默认站号信息 当你调用 ReadCoil("100") 时,对应的站号就是本属性的值,当你调用 ReadCoil("s=2;100") 时,就忽略本属性的值,读写寄存器的时候同理 获取或设置数据解析的格式,默认ABCD,可选BADC,CDAB,DCBA格式 对于Int32,UInt32,float,double,Int64,UInt64类型来说,存在多地址的电脑情况,需要和服务器进行匹配 字符串数据是否按照字来反转 字符串按照2个字节的排列进行颠倒,根据实际情况进行设置 生成一个读取线圈的指令头 地址 长度 携带有命令字节 生成一个读取离散信息的指令头 地址 长度 携带有命令字节 生成一个读取寄存器的指令头 地址 长度 携带有命令字节 生成一个读取寄存器的指令头 地址 长度 携带有命令字节 生成一个读取寄存器的指令头 地址 长度 包含结果对象的报文 生成一个写入单线圈的指令头 地址 长度 包含结果对象的报文 生成一个写入单个寄存器的报文 地址 长度 包含结果对象的报文 生成批量写入单个线圈的报文信息 地址 实际数据值 包含结果对象的报文 生成批量写入寄存器的报文信息 地址 实际值 包含结果对象的报文 检查当前的Modbus-Rtu响应是否是正确的 发送的数据信息 带是否成功的结果数据 检查当前接收的字节数据是否正确的 从设备反馈回来的数据 是否校验成功 读取服务器的数据,需要指定不同的功能码 指令 地址 长度 带结果信息的字节返回数据 读取服务器的数据,需要指定不同的功能码 地址 长度 带结果信息的字节返回数据 读取线圈,需要指定起始地址 起始地址,格式为"1234" 带有成功标志的bool对象 批量的读取线圈,需要指定起始地址,读取长度 起始地址,格式为"1234" 读取长度 带有成功标志的bool数组对象 读取输入线圈,需要指定起始地址 起始地址,格式为"1234" 带有成功标志的bool对象 批量的读取输入点,需要指定起始地址,读取长度 起始地址,格式为"1234" 读取长度 带有成功标志的bool数组对象 从Modbus服务器批量读取寄存器的信息,需要指定起始地址,读取长度 起始地址,格式为"1234",或者是带功能码格式x=3;1234 读取的数量 带有成功标志的字节信息 此处演示批量读取的示例 写一个寄存器数据 起始地址 高位 地位 返回写入结果 写一个寄存器数据 起始地址 写入值 返回写入结果 写一个寄存器数据 起始地址 写入值 返回写入结果 将数据写入到Modbus的寄存器上去,需要指定起始地址和数据内容 起始地址,格式为"1234" 写入的数据,长度根据data的长度来指示 返回写入结果 富地址格式,支持携带站号信息,功能码信息,具体参照类的示例代码 此处演示批量写入的示例 写一个线圈信息,指定是否通断 起始地址 写入值 返回写入结果 批量写入线圈信息,指定是否通断 起始地址 写入值 返回写入结果 批量读取线圈或是离散的数据信息,需要指定地址和长度,具体的结果取决于实现 数据地址 数据长度 带有成功标识的bool[]数组 向线圈中写入bool数组,返回是否写入成功 要写入的数据地址 要写入的实际数据,长度为8的倍数 返回写入结果 返回表示当前对象的字符串 字符串信息 ModBus的异步状态信息 实例化一个对象 连接的时间 远端的地址 远端的Ip地址 工作套接字 消息头的缓存 消息头的接收长度 内容数据缓存 内容数据接收长度 回发信息的同步锁 指示客户端是否下线,已经下线则为1 判断当前的客户端是否已经下线,下线成功的话,就返回True 清除原先的接收状态 Modbus-Tcp协议的客户端通讯类,方便的和服务器进行数据交互 本客户端支持的标准的modbus-tcp协议,内置的消息号会进行自增,地址格式采用富文本表示形式 地址共可以携带3个信息,最完整的表示方式"s=2;x=3;100",对应的modbus报文是 02 03 00 64 00 01 的前四个字节,站号,功能码,起始地址,下面举例 读取线圈 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的值 对于写入来说也是一致的 写入线圈 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 基本的用法请参照下面的代码示例 实例化一个MOdbus-Tcp协议的客户端对象 指定服务器地址,端口号,客户端自己的站号来初始化 服务器的Ip地址 服务器的端口号 客户端自身的站号 重写网络连接时的初始化,如果配置了账户信息,就强制启动登录操作 套接字 是否初始化成功 获取或设置起始的地址是否从0开始,默认为True 因为有些设备的起始地址是从1开始的,就要设置本属性为True 获取或者重新修改服务器的默认站号信息,当然,你可以再读写的时候动态指定,参见备注 当你调用 ReadCoil("100") 时,对应的站号就是本属性的值,当你调用 ReadCoil("s=2;100") 时,就忽略本属性的值,读写寄存器的时候同理 获取或设置数据解析的格式,默认ABCD,可选BADC,CDAB,DCBA格式 对于Int32,UInt32,float,double,Int64,UInt64类型来说,存在多地址的电脑情况,需要和服务器进行匹配 字符串数据是否按照字来反转 字符串按照2个字节的排列进行颠倒,根据实际情况进行设置 获取modbus协议自增的消息号,你可以自定义消息的细节。 生成一个读取线圈的指令头 地址 长度 包含结果对象的报文 生成一个读取离散信息的指令头 地址 长度 包含结果对象的报文 生成一个读取寄存器的指令头 地址 长度 包含结果对象的报文 生成一个读取寄存器的指令头 地址 长度 包含结果对象的报文 生成一个读取寄存器的指令头 地址 长度 包含结果对象的报文 生成一个写入单线圈的指令头 地址 长度 包含结果对象的报文 生成一个写入单个寄存器的报文 地址 长度 包含结果对象的报文 生成批量写入单个线圈的报文信息 地址 实际数据值 包含结果对象的报文 生成批量写入寄存器的报文信息 地址 实际值 包含结果对象的报文 检查当前的Modbus-Tcp响应是否是正确的 发送的数据信息 带是否成功的结果数据 读取服务器的数据,需要指定不同的功能码 指令 地址 长度 带是否成功的结果数据 读取服务器的数据,需要指定不同的功能码 地址 长度 带是否成功的结果数据 读取线圈,需要指定起始地址 起始地址,格式为"1234" 带有成功标志的bool对象 批量的读取线圈,需要指定起始地址,读取长度 起始地址,格式为"1234" 读取长度 带有成功标志的bool数组对象 读取输入线圈,需要指定起始地址 起始地址,格式为"1234" 带有成功标志的bool对象 批量的读取输入点,需要指定起始地址,读取长度 起始地址,格式为"1234" 读取长度 带有成功标志的bool数组对象 从Modbus服务器批量读取寄存器的信息,需要指定起始地址,读取长度 起始地址,格式为"1234",或者是带功能码格式x=3;1234 读取的数量 带有成功标志的字节信息 富地址格式,支持携带站号信息,功能码信息,具体参照类的示例代码 此处演示批量读取的示例 写一个寄存器数据 起始地址 高位 地位 返回写入结果 写一个寄存器数据 起始地址 写入值 返回写入结果 写一个寄存器数据 起始地址 写入值 返回写入结果 将数据写入到Modbus的寄存器上去,需要指定起始地址和数据内容 起始地址,格式为"1234" 写入的数据,长度根据data的长度来指示 返回写入结果 富地址格式,支持携带站号信息,功能码信息,具体参照类的示例代码 此处演示批量写入的示例 写一个线圈信息,指定是否通断 起始地址 写入值 返回写入结果 批量写线圈信息,指定是否通断 起始地址 写入值 返回写入结果 批量读取线圈或是离散的数据信息,需要指定地址和长度,具体的结果取决于实现 数据地址 数据长度 带有成功标识的bool[]数组 向线圈中写入bool数组,返回是否写入成功 要写入的数据地址 要写入的实际数据,长度为8的倍数 返回写入结果 返回表示当前对象的字符串 字符串信息 Modbus的虚拟服务器,同时支持Tcp和Rtu的机制,支持线圈,离散输入,寄存器和输入寄存器的读写操作,可以用来当做系统的数据交换池 可以基于本类实现一个功能复杂的modbus服务器,在传统的.NET版本里,还支持modbus-rtu指令的收发,.NET Standard版本服务器不支持rtu操作。服务器支持的数据池如下: 线圈,功能码对应01,05,15 离散输入,功能码对应02 寄存器,功能码对应03,06,16 输入寄存器,功能码对应04,输入寄存器在服务器端可以实现读写的操作 读写的地址格式为富文本地址,具体请参照下面的示例代码。 实例化一个Modbus Tcp的服务器,支持数据读写操作 获取或设置数据解析的格式,默认ABCD,可选BADC,CDAB,DCBA格式 对于Int32,UInt32,float,double,Int64,UInt64类型来说,存在多地址的电脑情况,需要和服务器进行匹配 字符串数据是否按照字来反转 获取或设置服务器的站号信息,对于rtu模式,只有站号对了,才会反馈回数据信息。默认为1。 将数据源的内容生成原始数据,等待缓存 原始的数据内容 从原始的数据复原数据 原始的数据 读取地址的线圈的通断情况 起始地址,示例:"100" True或是False 批量读取地址的线圈的通断情况 起始地址,示例:"100" 读取长度 True或是False 写入线圈的通断值 起始地址,示例:"100" 是否通断 True或是False 写入线圈数组的通断值 起始地址,示例:"100" 是否通断 True或是False 读取地址的离散线圈的通断情况 起始地址,示例:"100" True或是False 批量读取地址的离散线圈的通断情况 起始地址,示例:"100" 读取长度 True或是False 写入离散线圈的通断值 起始地址,示例:"100" 是否通断 写入离散线圈数组的通断值 起始地址,示例:"100" 是否通断 读取自定义的寄存器的值。按照字为单位 起始地址,示例:"100","x=4;100" 数据长度 byte数组值 写入自定义的数据到数据内存中去 地址 数据值 是否写入成功的结果对象 写入寄存器数据,指定字节数据 起始地址,示例:"100",如果是输入寄存器:"x=4;100" 高位数据 地位数据 当客户端登录后,进行Ip信息的过滤,然后触发本方法,也就是说之后的客户端需要 网络套接字 终端节点 创建特殊的功能标识,然后返回该信息 modbus核心报文 错误码 携带错误码的modbus报文 创建返回消息 modbus核心报文 返回的实际数据内容 携带内容的modbus报文 创建写入成功的反馈信号 modbus核心报文 携带成功写入的信息 新增一个数据监视的任务,针对的是寄存器 监视地址对象 移除一个数据监视的任务 在数据变更后,进行触发是否产生订阅 数据地址 修改之前的数 修改之后的数 检测当前的Modbus接收的指定是否是合法的 缓存数据 是否合格 Modbus核心数据交互方法,允许重写自己来实现,报文只剩下核心的Modbus信息,去除了MPAB报头信息 核心的Modbus报文 进行数据交互之后的结果 使用默认的参数进行初始化串口,9600波特率,8位数据位,无奇偶校验,1位停止位 串口信息 使用默认的参数进行初始化串口,8位数据位,无奇偶校验,1位停止位 串口信息 波特率 使用自定义的初始化方法初始化串口的参数 初始化信息的委托 关闭串口 接收到串口数据的时候触发 串口对象 消息 释放当前的对象 是否托管对象 返回表示当前对象的字符串 字符串 监视使用的数据缓存 地址 原有的值 新的值 一个工业物联网的底层架构框架,专注于底层的技术通信及跨平台,跨语言通信功能,实现各种主流的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#几乎是一模一样的,都是可以相互通讯的。
本软件著作权归Richard.Hu所有,开源项目地址:https://github.com/dathlin/HslCommunication 开源协议:LGPL-3.0
博客地址:https://www.cnblogs.com/dathlin/p/7703805.html
打赏请扫码:
正式发布库到互联网上去。 添加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特性类,现在支持直接基于对象的读写操作,提供了一种更加便捷的读写数据的机制,详细的关注后续的论坛。
AB PLC的辅助类,用来辅助生成基本的指令信息 CIP命令中的读取数据的服务 CIP命令中的写数据的服务 CIP命令中的读并写的数据服务 CIP命令中的读片段的数据服务 CIP命令中的写片段的数据服务 CIP命令中的对数据读取服务 bool型数据,一个字节长度 byte型数据,一个字节长度 整型,两个字节长度 长整型,四个字节长度 特长整型,8个字节 实数数据,四个字节长度 实数数据,八个字节的长度 结构体数据,不定长度 字符串数据内容 二进制数据内容 将CommandSpecificData的命令,打包成可发送的数据指令 实际的命令暗号 当前会话的id CommandSpecificData命令 最终可发送的数据命令 打包生成一个请求读取数据的节点信息,CIP指令信息 地址 指代数组的长度 CIP的指令信息 打包生成一个请求读取数据片段的节点信息,CIP指令信息 节点的名称 起始的索引位置 读取的数据长度,对于short来说,最大是489长度 CIP的指令信息 根据指定的数据和类型,生成对应的数据 地址信息 数据类型 字节值 如果节点为数组,就是数组长度 CIP的指令信息 生成读取直接节点数据信息的内容 PLC所在的槽号 cip指令内容 最终的指令值 从PLC反馈的数据解析 PLC的反馈数据 是否是返回的操作 带有结果标识的最终数据 AB PLC Data communication class, support read and write PLC node data thanks 江阴- ∮溪风-⊙_⌒ help test the dll thanks 上海-null 测试了这个dll 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 when read array type, this means the segment length. when data type is 8-byte data, it should set to be 50 After connecting the Allenbradley plc, a next step handshake protocol is required socket after connectting sucessful Success of initialization A next step handshake agreement is required before disconnecting the Allenbradley plc socket befor connection close Whether the disconnect operation was successful Build a read command bytes 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 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 批量读取数据信息,数据长度为读取的数组长度信息 -> Bulk read data information, data length for read array length information 节点的名称 -> 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 array length Results Bytes 使用CIP报文和服务器进行核心的数据交换 Cip commands Results Bytes 读取单个的bool数据信息 -> Read a single BOOL data information 节点的名称 -> Name of the node 带有结果对象的结果数据 -> Result data with result info 批量读取的bool数组信息 -> Bulk read of bool array information 节点的名称 -> 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的short类型的数组 -> Read an array of the short type of the PLC 节点的名称 -> Name of the node 数组长度 -> Array length 带有结果对象的结果数据 -> Result data with result info 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取PLC的ushort类型的数组 -> An array that reads the ushort type of the PLC 节点的名称 -> Name of the node 数组长度 -> Array length 带有结果对象的结果数据 -> Result data with result info 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取PLC的int类型的数组 -> An array that reads the int type of the PLC 节点的名称 -> Name of the node 数组长度 -> Array length 带有结果对象的结果数据 -> Result data with result info 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取PLC的uint类型的数组 -> An array that reads the UINT type of the PLC 节点的名称 -> Name of the node 数组长度 -> Array length 带有结果对象的结果数据 -> Result data with result info 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取PLC的float类型的数组 -> An array that reads the float type of the PLC 节点的名称 -> Name of the node 数组长度 -> Array length 带有结果对象的结果数据 -> Result data with result info 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取PLC的long类型的数组 -> An array that reads the long type of the PLC 节点的名称 -> Name of the node 数组长度 -> Array length 带有结果对象的结果数据 -> Result data with result info 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取PLC的ulong类型的数组 -> An array that reads the ULONG type of the PLC 节点的名称 -> Name of the node 数组长度 -> Array length 带有结果对象的结果数据 -> Result data with result info 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取PLC的double类型的数组 -> An array that reads the double type of the PLC 节点的名称 -> Name of the node 数组长度 -> Array length 带有结果对象的结果数据 -> Result data with result info 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 使用指定的类型写入指定的节点数据 -> 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 向PLC中写入short数组,返回是否写入成功 -> Writes a short array to the PLC to return whether the write was successful 节点的名称 -> Name of the node 实际数据 -> Actual data 是否写入成功 -> Whether to write successfully 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向PLC中写入ushort数组,返回是否写入成功 -> Writes an array of ushort to the PLC to return whether the write was successful 节点的名称 -> Name of the node 实际数据 -> Actual data 是否写入成功 -> Whether to write successfully 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向PLC中写入int数组,返回是否写入成功 -> Writes an int array to the PLC to return whether the write was successful 节点的名称 -> Name of the node 实际数据 -> Actual data 是否写入成功 -> Whether to write successfully 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: Writes an array of UINT to the PLC to return whether the write was successful 节点的名称 -> Name of the node 实际数据 -> Actual data 是否写入成功 -> Whether to write successfully 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: Writes an array of float to the PLC to return whether the write was successful Name of the node Actual data Whether to write successfully 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: Writes an array of long to the PLC to return whether the write was successful Name of the node Actual data Whether to write successfully 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: Writes an array of ulong to the PLC to return whether the write was successful Name of the node Actual data Whether to write successfully 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: Writes an array of double to the PLC to return whether the write was successful Name of the node Actual data Whether to write successfully 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向PLC中写入string数据,返回是否写入成功,该string类型是针对PLC的DINT类型,长度自动扩充到8 节点的名称 -> Name of the node 实际数据 -> Actual data 是否写入成功 -> Whether to write successfully 向PLC中写入bool数据,返回是否写入成功 节点的名称 -> Name of the node 实际数据 -> Actual data 是否写入成功 -> Whether to write successfully 向PLC中写入byte数据,返回是否写入成功 节点的名称 -> Name of the node 实际数据 -> Actual data 是否写入成功 -> Whether to write successfully 向PLC注册会话ID的报文 -> Register a message with the PLC for the session ID 报文信息 -> Message information 获取卸载一个已注册的会话的报文 -> Get a message to uninstall a registered session 字节报文信息 -> BYTE message information 返回表示当前对象的字符串 字符串信息 台湾永宏公司的编程口协议 其所支持的地址形式如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 内部继电器 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 × 实例化默认的构造方法 PLC的站号信息 批量读取PLC的数据,以字为单位,支持读取X,Y,M,S,D,T,C,R,RT,RC具体的地址范围需要根据PLC型号来确认 地址信息 数据长度 读取结果信息 批量写入PLC的数据,以字为单位,也就是说最少2个字节信息,支持X,Y,M,S,D,T,C,R,RT,RC具体的地址范围需要根据PLC型号来确认 地址信息,举例,D100,R200,RC100,RT200 数据值 是否写入成功 批量读取bool类型数据,支持的类型为X,Y,M,S,T,C,具体的地址范围取决于PLC的类型 地址信息,比如X10,Y17,M100 读取的长度 读取结果信息 批量写入bool类型的数组,支持的类型为X,Y,M,S,T,C,具体的地址范围取决于PLC的类型 PLC的地址信息 数据信息 是否写入成功 返回表示当前对象的字符串 字符串 解析数据地址成不同的三菱地址类型 数据地址 地址结果对象 计算指令的和校验码 指令 校验之后的信息 创建一条读取的指令信息,需要指定一些参数 PLCd的站号 地址信息 数据长度 是否位读取 是否成功的结果对象 创建一条别入bool数据的指令信息,需要指定一些参数 站号 地址 数组值 是否创建成功 创建一条别入byte数据的指令信息,需要指定一些参数,按照字单位 站号 地址 数组值 是否创建成功 根据错误码获取到真实的文本信息 错误码 错误的文本描述 富士PLC的SPB协议 使用默认的构造方法实例化对象 PLC的站号信息 批量读取PLC的数据,以字为单位,支持读取X,Y,L,M,D,TN,CN,TC,CC,R具体的地址范围需要根据PLC型号来确认 地址信息 数据长度 读取结果信息 批量写入PLC的数据,以字为单位,也就是说最少2个字节信息,支持读取X,Y,L,M,D,TN,CN,TC,CC,R具体的地址范围需要根据PLC型号来确认 地址信息,举例,D100,R200,RC100,RT200 数据值 是否写入成功 返回表示当前对象的字符串 字符串 解析数据地址成不同的三菱地址类型 数据地址 地址结果对象 计算指令的和校验码 指令 校验之后的信息 创建一条读取的指令信息,需要指定一些参数 PLCd的站号 地址信息 数据长度 是否位读取 是否成功的结果对象 创建一条别入byte数据的指令信息,需要指定一些参数,按照字单位 站号 地址 数组值 是否创建成功 根据错误码获取到真实的文本信息 错误码 错误的文本描述 Keyence PLC的数据类型,此处包含了几个常用的类型 如果您清楚类型代号,可以根据值进行扩展 数据类型的代号 0或1,默认为0 ASCII格式的类型信息 指示地址的多少进制的,10或是16 类型的代号值 数据的类型,0代表按字,1代表按位 当以ASCII格式通讯时的类型描述 指示地址是10进制,还是16进制的 X输入继电器 Y输出继电器 链接继电器 内部辅助继电器 锁存继电器 控制继电器 控制存储器 数据存储器 文件寄存器 文件寄存器 链路寄存器 计时器(当前值) 计时器(接点) 计数器(当前值) 计数器(接点) 基恩士PLC的数据读写类 地址的输入的格式说明如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 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帧协议的通讯对象 实例化一个基恩士的Qna兼容3E帧协议的通讯对象 PLC的Ip地址 PLC的端口 分析地址的方法,允许派生类里进行重写操作 地址信息 数据长度 解析后的数据信息 获取当前对象的字符串标识形式 字符串信息 基恩士PLC的数据通信类 地址的输入的格式说明如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 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帧协议的通讯对象 实例化一个基恩士的Qna兼容3E帧协议的通讯对象 PLC的Ip地址 PLC的端口 分析地址的方法,允许派生类里进行重写操作 地址信息 数据长度 解析后的数据信息 获取当前对象的字符串标识形式 字符串信息 基恩士Nano串口Bytes数据转换规则 以数据格式“位”读取R100~R103时, []表示空格,发送指令如下: ACSII码: R D S [] R 1 0 0 [] 4 /r 16进制码:0x52,0x44,0x53,0x20,0x52,0x31,0x30,0x30,0x20,0x34,0x0d 响应如下 ACSII码: 1 [] 0 [] 1 [] 0 /r /n 16进制码:0x31,0x20,0x30,0x20,0x31,0x20,0x30,0x0d,0x0a 实例化一个默认的对象 数据格式 Nano响应的Bytes转换为string数组 缓存数据 字符串数组 从缓存中提取出bool结果 缓存数据 位的索引 bool对象 从缓存中提取出bool数组结果 缓存数据 位的索引 bool长度 bool数组 从缓存中提取byte结果 缓存数据 索引位置 byte对象 从缓存中提取byte数组结果 缓存数据 索引位置 读取的数组长度 byte数组对象 从缓存中提取short结果 缓存数据 索引位置 short对象 从缓存中提取short数组结果 缓存数据 索引位置 读取的数组长度 short数组对象 从缓存中提取ushort结果 缓存数据 索引位置 ushort对象 从缓存中提取ushort数组结果 缓存数据 索引位置 读取的数组长度 ushort数组对象 从缓存中提取int结果 缓存数据 索引位置 int对象 从缓存中提取int数组结果 缓存数据 索引位置 读取的数组长度 int数组对象 从缓存中提取uint结果 缓存数据 索引位置 uint对象 从缓存中提取uint数组结果 缓存数据 索引位置 读取的数组长度 uint数组对象 从缓存中提取long结果 缓存数据 索引位置 long对象 从缓存中提取long数组结果 缓存数据 索引位置 读取的数组长度 long数组对象 从缓存中提取ulong结果 缓存数据 索引位置 ulong对象 从缓存中提取ulong数组结果 缓存数据 索引位置 读取的数组长度 ulong数组对象 从缓存中提取float结果 缓存对象 索引位置 float对象 从缓存中提取float数组结果 缓存数据 索引位置 读取的数组长度 float数组对象 从缓存中提取double结果 缓存对象 索引位置 double对象 从缓存中提取double数组结果 缓存对象 索引位置 读取的数组长度 double数组对象 从缓存中提取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数据 字节转换类 泛型对象转换为字节数组 基恩士KV上位链路串口通信的对象,适用于Nano系列串口数据,以及L20V通信模块 地址的输入的格式说明如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 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 内部辅助继电器 MR MR100,M200 10 MR00000~MR99915 MR00000~MR99915 MR00000~MR59915 数据存储器 DM DM100,DM200 10 × DM00000~DM65534 DM00000~DM65534 DM00000~DM32767 定时器(当前值) 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 实例化基恩士的串口协议的通讯对象 初始化后建立通讯连接 是否初始化成功 校验读取返回数据状态 校验写入返回数据状态 建立读取指令 软元件地址 读取长度 是否建立成功 读取设备的short类型的数据 起始地址 带成功标志的结果数据对象 读取设备的short类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的ushort数据类型的数据 起始地址 带成功标志的结果数据对象 读取设备的ushort类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的int类型的数据 起始地址 带成功标志的结果数据对象 读取设备的int类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的uint类型的数据 起始地址 带成功标志的结果数据对象 读取设备的uint类型的数组 起始地址 数组长度 带成功标志的结果数据对象 从PLC中读取想要的数据,返回读取结果 成批读取Bool值 地址信息 数组长度 带成功标志的结果数据对象 写入转换后的数据值 软元件地址 转换后的Byte[]数据 是否成功写入的结果 写入位数据的通断,支持的类型参考文档说明 地址信息 是否为通 是否写入成功的结果对象 建立写入指令 软元件地址 转换后的数据 返回表示当前对象的字符串 字符串信息 从PLC反馈的数据进行提炼操作 PLC反馈的真实数据 数据提炼后的真实数据 返回读取的地址及长度信息 读取的地址信息 带起始地址的结果对象 解析数据地址成不同的Keyence地址类型 数据地址 地址结果对象 It is determined to be the XGK/I/R series through a reserved area using FlagBit in Marker for Byte M0.0=1;M0.1=2;M0.2=4;M0.3=8;==========================>M0.7=128 LSisServer LSisServer 读取自定义的寄存器的值 起始地址,示例:"I100","M100" 数据长度 byte数组值 写入自定义的数据到数据内存中去 地址 数据值 是否写入成功的结果对象 读取指定地址的字节数据 西门子的地址信息 带有成功标志的结果对象 将byte数据信息写入到指定的地址当中 西门子的地址信息 字节数据信息 是否成功的结果 读取指定地址的bool数据对象 西门子的地址信息 带有成功标志的结果对象 往指定的地址里写入bool数据对象 西门子的地址信息 是否成功的结果 当客户端登录后,进行Ip信息的过滤,然后触发本方法,也就是说之后的客户端需要 网络套接字 终端节点 从字节数据加载数据信息 字节数据 将数据信息存储到字节数组去 所有的内容 使用默认的参数进行初始化串口,9600波特率,8位数据位,无奇偶校验,1位停止位 串口信息 使用默认的参数进行初始化串口,8位数据位,无奇偶校验,1位停止位 串口信息 波特率 使用自定义的初始化方法初始化串口的参数 初始化信息的委托 关闭串口 接收到串口数据的时候触发 串口对象 消息 返回表示当前对象的字符串 字符串信息 XGB Cnet I/F module supports Serial Port. Instantiate a Default object 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 WriteCoil Read Bytes From PLC, you should specify the length the address of the data the length of the data, in byte unit result contains whether success. Write Data into plc, , you should specify the address the address of the data source data result contains whether success. Returns a string representing the current object 字符串信息 reading address Type of ReadByte plc station address, for example: M100, D100, DW100 read length command bytes One reading address Type of ReadByte plc station address, for example: MX100, DW100, TW100 read length write data to address Type of ReadByte plc station address, for example: M100, D100, DW100 source value command bytes Extract actual data form plc response response data read result 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 [welcome to finish] 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 CPU TYPE Cpu is error RUN, STOP, ERROR, DEBUG FEnet I/F module’s Base No. FEnet I/F module’s Slot No. Read Bytes from plc, you should specify address Start Address, for example: M100 Array of data Lengths Whether to read the successful result object Write bytes to plc, you should specify bytes, can't be null Start Address, for example: M100 source dara Whether to write the successful result object Read single byte value from plc Start address result Write single byte value to plc Start address value Whether to write the successful WriteCoil AnalysisAddress Get DataType to Address 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 Returns a string representing the current object 字符串 三菱PLC的数据类型,此处包含了几个常用的类型 如果您清楚类型代号,可以根据值进行扩展 数据类型的代号 0或1,默认为0 ASCII格式的类型信息 指示地址的多少进制的,10或是16 类型的代号值(软元件代码,用于区分软元件类型,如:D,R) 数据的类型,0代表按字,1代表按位 当以ASCII格式通讯时的类型描述 指示地址是10进制,还是16进制的 X输入寄存器 Y输出寄存器 M中间寄存器 S状态寄存器 D数据寄存器 R文件寄存器 三菱PLC通讯协议,采用A兼容1E帧协议实现,使用二进制码通讯,请根据实际型号来进行选取 本类适用于的PLC列表 FX3U(C) PLC 测试人sandy_liao 数据地址支持的格式如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 内部继电器 M M100,M200 10 输入继电器 X X10,X20 8 输出继电器 Y Y10,Y20 8 步进继电器 S S100,S200 10 数据寄存器 D D1000,D2000 10 × 文件寄存器 R R100,R200 10 × 本通讯类由CKernal推送,感谢 实例化三菱的A兼容1E帧协议的通讯对象 实例化一个三菱的A兼容1E帧协议的通讯对象 PLC的Ip地址 PLC的端口 PLC编号 从三菱PLC中读取想要的数据,返回读取结果 读取地址,格式为"M100","D100","W1A0" 读取的数据长度,字最大值960,位最大值7168 带成功标志的结果数据对象 从三菱PLC中批量读取位软元件,返回读取结果 起始地址 读取的长度 带成功标志的结果数据对象 向PLC写入数据,数据格式为原始的字节类型 初始地址 原始的字节数据 返回写入结果 向PLC中位软元件写入bool数组,返回值说明,比如你写入M100,values[0]对应M100 要写入的数据地址 要写入的实际数据,可以指定任意的长度 返回写入结果 返回表示当前对象的字符串 字符串信息 根据类型地址长度确认需要读取的指令头 起始地址 长度 指示是否按照位成批的读出 PLC编号 带有成功标志的指令数据 根据类型地址以及需要写入的数据来生成指令头 起始地址 数据值 PLC编号 带有成功标志的指令数据 从PLC反馈的数据中提取出实际的数据内容,需要传入反馈数据,是否位读取 反馈的数据内容 是否位读取 解析后的结果对象 基于Qna 兼容3C帧的格式一的通讯,具体的地址需要参照三菱的基本地址 地址的输入的格式说明如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 内部继电器 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 × 实例化默认的构造方法 PLC的站号信息 批量读取PLC的数据,以字为单位,支持读取X,Y,M,S,D,T,C,具体的地址范围需要根据PLC型号来确认 地址信息 数据长度 读取结果信息 批量写入PLC的数据,以字为单位,也就是说最少2个字节信息,支持X,Y,M,S,D,T,C,具体的地址范围需要根据PLC型号来确认 地址信息 数据值 是否写入成功 批量读取bool类型数据,支持的类型为X,Y,S,T,C,具体的地址范围取决于PLC的类型 地址信息,比如X10,Y17,注意X,Y的地址是8进制的 读取的长度 读取结果信息 批量写入bool类型的数组,支持的类型为X,Y,S,T,C,具体的地址范围取决于PLC的类型 PLC的地址信息 数据信息 是否写入成功 远程Run操作 是否成功 远程Stop操作 是否成功 读取PLC的型号信息 返回型号的结果对象 返回表示当前对象的字符串 字符串信息 将命令进行打包传送 mc协议的命令 PLC的站号 最终的原始报文信息 三菱PLC的计算机链接协议,适用的PLC型号参考备注 支持的通讯的系列如下参考 系列 是否支持 备注 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 × 实例化默认的构造方法 PLC的站号信息 报文等待时间,单位10ms,设置范围为0-15 是否启动和校验 批量读取PLC的数据,以字为单位,支持读取X,Y,M,S,D,T,C,具体的地址范围需要根据PLC型号来确认 地址信息 数据长度 读取结果信息 批量写入PLC的数据,以字为单位,也就是说最少2个字节信息,支持X,Y,M,S,D,T,C,具体的地址范围需要根据PLC型号来确认 地址信息 数据值 是否写入成功 批量读取bool类型数据,支持的类型为X,Y,S,T,C,具体的地址范围取决于PLC的类型 地址信息,比如X10,Y17,注意X,Y的地址是8进制的 读取的长度 读取结果信息 批量写入bool类型的数组,支持的类型为X,Y,S,T,C,具体的地址范围取决于PLC的类型 PLC的地址信息 数据信息 是否写入成功 启动PLC 是否启动成功 停止PLC 是否停止成功 解析数据地址成不同的三菱地址类型 数据地址 地址结果对象 计算指令的和校验码 指令 校验之后的信息 创建一条读取的指令信息,需要指定一些参数 PLCd的站号 地址信息 数据长度 是否位读取 是否和校验 等待时间 是否成功的结果对象 创建一条别入bool数据的指令信息,需要指定一些参数 站号 地址 数组值 是否和校验 等待时间 是否创建成功 创建一条别入byte数据的指令信息,需要指定一些参数,按照字单位 站号 地址 数组值 是否和校验 等待时间 是否创建成功 创建启动PLC的报文信息 站号信息 是否和校验 等待时间 是否创建成功 创建启动PLC的报文信息 站号信息 是否和校验 等待时间 是否创建成功 所有三菱通讯类的通用辅助工具类,包含了一些通用的静态方法,可以使用本类来获取一些原始的报文信息。详细的操作参见例子 解析A1E协议数据地址 数据地址 从三菱地址,是否位读取进行创建读取的MC的核心报文 是否进行了位读取操作 三菱Mc协议的数据地址 带有成功标识的报文对象 从三菱地址,是否位读取进行创建读取Ascii格式的MC的核心报文 三菱Mc协议的数据地址 是否进行了位读取操作 带有成功标识的报文对象 以字为单位,创建数据写入的核心报文 三菱Mc协议的数据地址 实际的原始数据信息 带有成功标识的报文对象 以字为单位,创建ASCII数据写入的核心报文 三菱Mc协议的数据地址 实际的原始数据信息 带有成功标识的报文对象 以位为单位,创建数据写入的核心报文 三菱Mc协议的数据地址 原始的bool数组数据 带有成功标识的报文对象 以位为单位,创建ASCII数据写入的核心报文 三菱Mc协议的数据地址 原始的bool数组数据 带有成功标识的报文对象 从三菱的地址中构建MC协议的6字节的ASCII格式的地址 三菱地址 三菱的数据类型 6字节的ASCII格式的地址 将0,1,0,1的字节数组压缩成三菱格式的字节数组来表示开关量的 原始的数据字节 压缩过后的数据字节 将bool的组压缩成三菱格式的字节数组来表示开关量的 原始的数据字节 压缩过后的数据字节 计算Fx协议指令的和校验信息 字节数据 校验之后的数据 检查指定的和校验是否是正确的 字节数据 是否成功 三菱PLC通讯类,采用Qna兼容3E帧协议实现,需要在PLC侧先的以太网模块先进行配置,必须为ASCII通讯格式 地址的输入的格式说明如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 内部继电器 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 × 实例化三菱的Qna兼容3E帧协议的通讯对象 实例化一个三菱的Qna兼容3E帧协议的通讯对象 PLC的Ip地址 PLC的端口 网络号 网络站号 分析地址的方法,允许派生类里进行重写操作 地址信息 数据长度 解析后的数据信息 从三菱PLC中读取想要的数据,返回读取结果,读取的单位为字 读取地址,格式为"M100","D100","W1A0" 读取的数据长度,字最大值960,位最大值7168 带成功标志的结果数据对象 地址支持的列表参考 的备注说明 假设起始地址为D100,D100存储了温度,100.6℃值为1006,D101存储了压力,1.23Mpa值为123,D102,D103存储了产量计数,读取如下: 以下是读取不同类型数据的示例 向PLC写入数据,数据格式为原始的字节类型 初始地址 原始的字节数据 假设起始地址为D100,D100存储了温度,100.6℃值为1006,D101存储了压力,1.23Mpa值为123,D102,D103存储了产量计数,写入如下: 以下是读取不同类型数据的示例 结果 从三菱PLC中批量读取位软元件,返回读取结果 起始地址 读取的长度 带成功标志的结果数据对象 地址支持的列表参考 的备注说明 向PLC中位软元件写入bool数组,返回值说明,比如你写入M100,values[0]对应M100 要写入的数据地址 要写入的实际数据,可以指定任意的长度 返回写入结果 远程Run操作 是否成功 远程Stop操作 是否成功 读取PLC的型号信息 返回型号的结果对象 获取当前对象的字符串标识形式 字符串信息 将MC协议的核心报文打包成一个可以直接对PLC进行发送的原始报文 MC协议的核心报文 网络号 网络站号 原始报文信息 从PLC反馈的数据中提取出实际的数据内容,需要传入反馈数据,是否位读取 反馈的数据内容 是否位读取 解析后的结果对象 三菱PLC的数据类型,此处包含了几个常用的类型 如果您清楚类型代号,可以根据值进行扩展 数据类型的代号 0或1,默认为0 ASCII格式的类型信息 指示地址的多少进制的,10或是16 类型的代号值 数据的类型,0代表按字,1代表按位 当以ASCII格式通讯时的类型描述 指示地址是10进制,还是16进制的 X输入继电器 Y输出继电器 M中间继电器 D数据寄存器 W链接寄存器 L锁存继电器 F报警器 V边沿继电器 B链接继电器 R文件寄存器 S步进继电器 变址寄存器 定时器的当前值 定时器的触点 定时器的线圈 累计定时器的触点 累计定时器的线圈 累计定时器的当前值 计数器的当前值 计数器的触点 计数器的线圈 文件寄存器ZR区 X输入继电器 Y输出继电器 链接继电器 内部辅助继电器 锁存继电器 控制继电器 控制存储器 数据存储器 文件寄存器 文件寄存器 链路寄存器 计时器(当前值) 计时器(接点) 计数器(当前值) 计数器(接点) 输入继电器 输出继电器 链接继电器 内部继电器 数据存储器 链接存储器 计时器(当前值) 计时器(接点) 计数器(当前值) 计数器(接点) 特殊链接继电器 特殊链接存储器 三菱PLC通讯类,采用Qna兼容3E帧协议实现,需要在PLC侧先的以太网模块先进行配置,必须为二进制通讯 目前组件测试通过的PLC型号列表,有些来自于网友的测试 Q06UDV PLC 感谢hwdq0012 fx5u PLC 感谢山楂 Q02CPU PLC L02CPU PLC 地址的输入的格式说明如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 内部继电器 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 × 实例化三菱的Qna兼容3E帧协议的通讯对象 实例化一个三菱的Qna兼容3E帧协议的通讯对象 PLC的Ip地址 PLC的端口 网络号,通常为0 依据PLC的配置而配置,如果PLC配置了1,那么此处也填0,如果PLC配置了2,此处就填2,测试不通的话,继续测试0 网络站号,通常为0 依据PLC的配置而配置,如果PLC配置了1,那么此处也填0,如果PLC配置了2,此处就填2,测试不通的话,继续测试0 分析地址的方法,允许派生类里进行重写操作 地址信息 数据长度 解析后的数据信息 从三菱PLC中读取想要的数据,输入地址,按照字单位读取,返回读取结果 读取地址,格式为"M100","D100","W1A0" 读取的数据长度,字最大值960,位最大值7168 带成功标志的结果数据对象 地址支持的列表参考 的备注说明 假设起始地址为D100,D100存储了温度,100.6℃值为1006,D101存储了压力,1.23Mpa值为123,D102,D103存储了产量计数,读取如下: 以下是读取不同类型数据的示例 向PLC写入数据,数据格式为原始的字节类型 初始地址 原始的字节数据 假设起始地址为D100,D100存储了温度,100.6℃值为1006,D101存储了压力,1.23Mpa值为123,D102,D103存储了产量计数,写入如下: 以下是写入不同类型数据的示例 结果 从三菱PLC中批量读取位软元件,返回读取结果 起始地址 读取的长度 带成功标志的结果数据对象 地址支持的列表参考 的备注说明 向PLC中位软元件写入bool数组,返回值说明,比如你写入M100,values[0]对应M100 要写入的数据地址 要写入的实际数据,可以指定任意的长度 返回写入结果 远程Run操作 是否成功 远程Stop操作 是否成功 远程Reset操作 是否成功 读取PLC的型号信息 返回型号的结果对象 获取当前对象的字符串标识形式 字符串信息 将MC协议的核心报文打包成一个可以直接对PLC进行发送的原始报文 MC协议的核心报文 网络号 网络站号 原始报文信息 从PLC反馈的数据中提取出实际的数据内容,需要传入反馈数据,是否位读取 反馈的数据内容 是否位读取 解析后的结果对象 三菱MC协议的虚拟服务器,支持M,X,Y,D,W的数据池读写操作,使用二进制进行读写操作 实例化一个mc协议的服务器 读取自定义的寄存器的值。按照字为单位 起始地址,示例:"D100","M100" 数据长度 byte数组值 写入自定义的数据到数据内存中去 地址 数据值 是否写入成功的结果对象 读取指定地址的bool数据对象 西门子的地址信息 带有成功标志的结果对象 读取指定地址的bool数据对象 三菱的地址信息 数组的长度 带有成功标志的结果对象 往指定的地址里写入bool数据对象 三菱的地址信息 是否成功的结果 往指定的地址里写入bool数组对象 三菱的地址信息 是否成功的结果 当客户端登录后,进行Ip信息的过滤,然后触发本方法,也就是说之后的客户端需要 网络套接字 终端节点 当收到mc协议的报文的时候应该触发的方法,允许继承重写,来实现自定义的返回,或是数据监听。 mc报文 返回的报文信息 从字节数据加载数据信息 字节数据 将数据信息存储到字节数组去 所有的内容 释放当前的对象 是否托管对象 返回表示当前对象的字符串 字符串信息 三菱的串口通信的对象,适用于读取FX系列的串口数据,支持的类型参考文档说明 字读写地址支持的列表如下: 地址名称 地址代号 示例 地址范围 地址进制 备注 数据寄存器 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 实例化三菱的串口协议的通讯对象 从三菱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 地址信息,每个地址存在一定的范围,需要谨慎传入数据。举例:M10,S10,X5,Y10,C10,T10 True或是False 带报文信息的结果对象 根据类型地址长度确认需要读取的指令头 起始地址 长度 带有成功标志的指令数据 根据类型地址长度确认需要读取的指令头 起始地址 bool数组长度 带有成功标志的指令数据 根据类型地址以及需要写入的数据来生成指令头 起始地址 实际的数据信息 带有成功标志的指令数据 从PLC反馈的数据进行提炼操作 PLC反馈的真实数据 数据提炼后的真实数据 从PLC反馈的数据进行提炼bool数组操作 PLC反馈的真实数据 起始提取的点信息 bool数组的长度 数据提炼后的真实数据 解析数据地址成不同的三菱地址类型 数据地址 地址结果对象 返回读取的地址及长度信息 读取的地址信息 带起始地址的结果对象 返回读取的地址及长度信息,以及当前的偏置信息 读取的地址信息 带起始地址的结果对象 欧姆龙PLC的CIP协议的类,支持NJ,NX,NY系列PLC,支持tag名的方式读写数据 Instantiate a communication object for a OmronCipNet PLC protocol Instantiate a communication object for a OmronCipNet PLC protocol PLC IpAddress PLC Port 返回表示当前对象的字符串 字符串数据 欧姆龙的Fins协议的数据类型 实例化一个Fins的数据类型 进行位操作的指令 进行字操作的指令 进行位操作的指令 进行字操作的指令 DM Area CIO Area Work Area Holding Bit Area Auxiliary Bit Area 欧姆龙PLC通讯类,采用Fins-Tcp通信协议实现 实例化之后,使用之前,需要初始化三个参数信息,具体见三个参数的说明: 第二个需要注意的是,当网络异常掉线时,无法立即连接上PLC,PLC对于当前的节点进行拒绝,如果想要支持在断线后的快速连接,就需要将 设置为True,详细的可以参考
如果在测试的时候报错误码64,经网友 上海-Lex 指点,是因为PLC中产生了报警,如伺服报警,模块错误等产生的,但是数据还是能正常读到的,屏蔽64报警或清除plc错误可解决 地址支持的列表如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 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帧协议的通讯对象 实例化一个欧姆龙PLC Fins帧协议的通讯对象 PLCd的Ip地址 PLC的端口 设备的Ip地址信息 信息控制字段,默认0x80 系统使用的内部信息 网络层信息,默认0x02,如果有八层消息,就设置为0x07 PLC的网络号地址,默认0x00 PLC的节点地址,这个值在配置了ip地址之后是默认赋值的,默认为Ip地址的最后一位 假如你的PLC的Ip地址为192.168.0.10,那么这个值就是10 PLC的单元号地址 通常都为0 上位机的网络号地址 上位机的节点地址,假如你的电脑的Ip地址为192.168.0.13,那么这个值就是13 假如你的电脑的Ip地址为192.168.0.13,那么这个值就是13 上位机的单元号地址 设备的标识号 如果设置为True,当数据读取失败的时候,会自动变更当前的SA1值,会选择自动增加,但不会和DA1一致,本值需要在对象实例化之后立即设置。 将普通的指令打包成完整的指令 根据类型地址长度确认需要读取的指令头 起始地址 长度 是否是位读取 带有成功标志的报文数据 根据类型地址以及需要写入的数据来生成指令头 起始地址 真实的数据值信息 是否是位操作 带有成功标志的报文数据 在连接上欧姆龙PLC后,需要进行一步握手协议 连接的套接字 初始化成功与否 和服务器交互完成的时候调用的方法,无论是成功或是失败,都将会调用,具体的操作需要重写实现 读取结果 从欧姆龙PLC中读取想要的数据,返回读取结果,读取单位为字 读取地址,格式为"D100","C100","W100","H100","A100" 读取的数据长度 带成功标志的结果数据对象 假设起始地址为D100,D100存储了温度,100.6℃值为1006,D101存储了压力,1.23Mpa值为123,D102,D103存储了产量计数,读取如下: 以下是读取不同类型数据的示例 向PLC写入数据,数据格式为原始的字节类型 初始地址 原始的字节数据 结果 假设起始地址为D100,D100存储了温度,100.6℃值为1006,D101存储了压力,1.23Mpa值为123,D102,D103存储了产量计数,读取如下: 以下是写入不同类型数据的示例 从欧姆龙PLC中批量读取位软元件,返回读取结果 读取地址,格式为"D100","C100","W100","H100","A100" 读取的长度 带成功标志的结果数据对象 向PLC中位软元件写入bool数组,返回值说明,比如你写入D100,values[0]对应D100.0 要写入的数据地址 要写入的实际数据,可以指定任意的长度 返回写入结果 返回表示当前对象的字符串 字符串 Omron PLC的FINS协议相关的辅助类 解析数据地址,Omron手册第188页 数据地址 是否是位地址 解析后的结果地址对象 根据读取的地址,长度,是否位读取创建Fins协议的核心报文 地址,具体格式请参照示例说明 读取的数据长度 是否使用位读取 带有成功标识的Fins核心报文 根据写入的地址,数据,是否位写入生成Fins协议的核心报文 地址内容,具体格式请参照示例说明 实际的数据 是否位数据 带有成功标识的Fins核心报文 验证欧姆龙的Fins-TCP返回的数据是否正确的数据,如果正确的话,并返回所有的数据内容 来自欧姆龙返回的数据内容 是否读取 带有是否成功的结果对象 验证欧姆龙的Fins-Udp返回的数据是否正确的数据,如果正确的话,并返回所有的数据内容 来自欧姆龙返回的数据内容 是否读取 带有是否成功的结果对象 获取错误信息的字符串描述文本 错误码 文本描述 欧姆龙的Udp的数据对象 如果在测试的时候报错误码64,经网友 上海-Lex 指点,是因为PLC中产生了报警,如伺服报警,模块错误等产生的,但是数据还是能正常读到的,屏蔽64报警或清除plc错误可解决 地址支持的列表如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 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 实例化一个默认的欧姆龙Udp的对象 Ip地址 端口号 实例化一个默认的欧姆龙Udp的对象 设备的Ip地址信息 信息控制字段,默认0x80 系统使用的内部信息 网络层信息,默认0x02,如果有八层消息,就设置为0x07 PLC的网络号地址,默认0x00 PLC的节点地址,这个值在配置了ip地址之后是默认赋值的,默认为Ip地址的最后一位 假如你的PLC的Ip地址为192.168.0.10,那么这个值就是10 PLC的单元号地址 通常都为0 上位机的网络号地址 上位机的节点地址,假如你的电脑的Ip地址为192.168.0.13,那么这个值就是13 假如你的电脑的Ip地址为192.168.0.13,那么这个值就是13 上位机的单元号地址 设备的标识号 将普通的指令打包成完整的指令 根据类型地址长度确认需要读取的指令头 起始地址 长度 是否是位读取 带有成功标志的报文数据 根据类型地址以及需要写入的数据来生成指令头 起始地址 真实的数据值信息 是否是位操作 带有成功标志的报文数据 从欧姆龙PLC中读取想要的数据,返回读取结果,读取单位为字 读取地址,格式为"D100","C100","W100","H100","A100" 读取的数据长度 带成功标志的结果数据对象 假设起始地址为D100,D100存储了温度,100.6℃值为1006,D101存储了压力,1.23Mpa值为123,D102,D103存储了产量计数,读取如下: 以下是读取不同类型数据的示例 从欧姆龙PLC中批量读取位软元件,返回读取结果 读取地址,格式为"D100","C100","W100","H100","A100" 读取的长度 带成功标志的结果数据对象 向PLC写入数据,数据格式为原始的字节类型 初始地址 原始的字节数据 结果 假设起始地址为D100,D100存储了温度,100.6℃值为1006,D101存储了压力,1.23Mpa值为123,D102,D103存储了产量计数,读取如下: 以下是写入不同类型数据的示例 向PLC中位软元件写入bool数组,返回值说明,比如你写入D100,values[0]对应D100.0 要写入的数据地址 要写入的实际数据,可以指定任意的长度 返回写入结果 返回表示当前对象的字符串 字符串 欧姆龙的HostLink协议的实现 感谢 深圳~拾忆 的测试 欧姆龙的地址参考如下: 地址支持的列表如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 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. PLC的单元号地址 通常都为0 上位机的单元号地址 设备的标识号 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的数据,以字为单位,具体的地址参考文档 地址信息 数据长度 读取结果信息 批量写入PLC的数据,以字为单位,也就是说最少2个字节信息,具体的地址参考文档 地址信息 数据值 是否写入成功 从欧姆龙PLC中批量读取位软元件,返回读取结果 读取地址,具体的地址参考文档 读取的长度 带成功标志的结果数据对象 向PLC中位软元件写入bool数组,返回值说明,比如你写入D100,values[0]对应D100.0 要写入的数据地址,具体的地址参考文档 要写入的实际数据,可以指定任意的长度 返回写入结果 返回表示当前对象的字符串 字符串信息 将普通的指令打包成完整的指令 fins指令 完整的质量 验证欧姆龙的Fins-TCP返回的数据是否正确的数据,如果正确的话,并返回所有的数据内容 来自欧姆龙返回的数据内容 是否读取 带有是否成功的结果对象 开放以太网协议 实例化一个默认的对象 使用指定的IP地址来初始化对象 Ip地址 端口号 连接上服务器后需要进行的初始化操作 网络套接字 是否初始化成功,依据具体的协议进行重写 自定义的命令读取 返回表示当前对象的字符串 字符串信息 构建一个读取的初始报文 松下PLC的MC协议的信息,具体的地址格式请参考备注说明 地址的输入的格式说明如下: 地址名称 地址代号 地址示例一 地址范围 字操作 位操作 输入继电器 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 × 链路寄存器 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帧协议的通讯对象 实例化一个基恩士的Qna兼容3E帧协议的通讯对象 PLC的Ip地址 PLC的端口 分析地址的方法,允许派生类里进行重写操作 地址信息 数据长度 解析后的数据信息 返回表示当前对象的字符串 字符串信息 松下PLC的数据交互协议,采用Mewtocol协议通讯 触点地址的输入的格式说明如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 外部输入继电器 X X0,X100 10 × 外部输出继电器 Y Y0,Y100 10 × 内部继电器 R R0,R100 10 × 定时器 T T0,T100 10 × 计数器 C C0,C100 10 × 链接继电器 L L0,L100 10 × 数据地址的输入的格式说明如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 数据寄存器 DT D D0,D100 10 × 链接寄存器 LT L L0,L100 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通信对象,默认站号为1 站号信息,默认为0xEE 设备的目标站号 从松下PLC中读取数据 起始地址 长度 返回数据信息 将数据写入到松下PLC中 起始地址 真实数据 是否写入成功 批量读取松下PLC的位数据 起始地址 数据长度 读取结果对象 写入bool数据信息,存在一定的风险,谨慎操作 起始地址 数据值信息 返回是否成功的结果对象 返回表示当前对象的字符串 字符串信息 解析数据地址,解析出地址类型,起始地址,DB块的地址 数据地址 解析出地址类型,起始地址,是否位读取 创建读取离散触点的报文指令 地址信息 包含是否成功的结果对象 创建写入离散触点的报文指令 地址信息 bool值数组 包含是否成功的结果对象 创建批量读取触点的报文指令 站号信息 地址信息 数据长度 包含是否成功的结果对象 创建批量读取触点的报文指令 设备站号 地址信息 数据值 数据长度 包含是否成功的结果对象 检查从PLC反馈的数据,并返回正确的数据内容 反馈信号 是否成功的结果信息 使用了Fetch/Write协议来和西门子进行通讯,该种方法需要在PLC侧进行一些配置 -> Using the Fetch/write protocol to communicate with Siemens, this method requires some configuration on the PLC side 与S7协议相比较而言,本协议不支持对单个的点位的读写操作。如果读取M100.0,需要读取M100的值,然后进行提取位数据 地址支持的列表如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 中间寄存器 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存储了产量计数,读取如下: 以下是读取不同类型数据的示例 读取指定地址的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数据,地址格式为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存储了产量计数,写入如下: 以下是写入不同类型数据的示例 向PLC中写入bool数组,返回值说明,比如你写入M100,那么data[0]对应M100.0 -> Write the bool array to the PLC, return the value description, for example, if you write M100, then data[0] corresponds to M100.0 起始地址,格式为M100,I100,Q100,DB1.100 -> Starting address, formatted as M100,I100,Q100,DB1.100 要写入的实际数据,长度为8的倍数 -> The actual data to write, a multiple of 8 in length 是否写入成功的结果对象 -> Whether to write a successful result object 批量写入bool数组存在一定的风险,原因是只能批量写入长度为8的倍数的数组,否则会影响其他的位的数据,请谨慎使用。 -> There is a risk in bulk writing to a bool array, because it is possible to write arrays of multiples of length 8 in bulk, otherwise it will affect the data of other bits, please use sparingly. 向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 返回表示当前对象的字符串 -> Returns a String representing the current object 字符串数据 -> String data 计算特殊的地址信息 字符串信息 实际值 解析数据地址,解析出地址类型,起始地址,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 西门子的PLC类型,目前支持的访问类型 1200系列 300系列 400系列 1500系列PLC 200的smart系列 200系统,需要额外配置以太网模块 西门子的PPI协议,适用于s7-200plc,注意,本类库有个致命的风险需要注意,由于本类库的每次通讯分成2次操作,故而不支持多线程同时读写,当发生线程竞争的时候,会导致数据异常, 想要解决的话,需要您在每次数据交互时添加同步锁。 适用于西门子200的通信,非常感谢 合肥-加劲 的测试,让本类库圆满完成。 注意:M地址范围有限 0-31地址 实例化一个西门子的PPI协议对象 西门子PLC的站号信息 从西门子的PLC中读取数据信息,地址为"M100","AI100","I0","Q0","V100","S100"等,详细请参照API文档 西门子的地址数据信息 数据长度 带返回结果的结果对象 从西门子的PLC中读取bool数据信息,地址为"M100.0","AI100.1","I0.3","Q0.6","V100.4","S100"等,详细请参照API文档 西门子的地址数据信息 数据长度 带返回结果的结果对象 将字节数据写入到西门子PLC中,地址为"M100.0","AI100.1","I0.3","Q0.6","V100.4","S100"等,详细请参照API文档 西门子的地址数据信息 数据长度 带返回结果的结果对象 将bool数据写入到西门子PLC中,地址为"M100.0","AI100.1","I0.3","Q0.6","V100.4","S100"等,详细请参照API文档 西门子的地址数据信息 数据长度 带返回结果的结果对象 从西门子的PLC中读取byte数据信息,地址为"M100.0","AI100.1","I0.3","Q0.6","V100.4","S100"等,详细请参照API文档 西门子的地址数据信息 带返回结果的结果对象 将byte数据写入到西门子PLC中,地址为"M100.0","AI100.1","I0.3","Q0.6","V100.4","S100"等,详细请参照API文档 西门子的地址数据信息 数据长度 带返回结果的结果对象 启动西门子PLC为RUN模式 是否启动成功 停止西门子PLC,切换为Stop模式 是否停止成功 返回表示当前对象的字符串 字符串信息 解析数据地址,解析出地址类型,起始地址,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[]数据值 带有成功标识的结果对象 一个西门子的客户端类,使用S7协议来进行数据交互 -> A Siemens client class that uses the S7 protocol for data interaction 地址支持的列表如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 中间寄存器 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 未测试通过 对于200smartPLC的V区,就是DB1.X,例如,V100=DB1.100 实例化一个西门子的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设置的 PLC的机架号,针对S7-400的PLC设置的 连接上服务器后需要进行的二次握手操作 -> Two handshake actions required after connecting to the server 网络套接字 -> Network sockets 是否初始化成功,依据具体的协议进行重写 -> Whether the initialization succeeds and is rewritten according to the specific protocol 从PLC读取订货号信息 -> Reading order number information from PLC CPU的订货号信息 -> Order number information for the CPU 对PLC进行热启动 是否启动成功的结果对象 对PLC进行冷启动 是否启动成功的结果对象 对PLC进行停止 是否启动成功的结果对象 从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 -> Starting address, formatted as I100,M100,Q100,DB20.100 读取的数量,以字节为单位 -> The number of reads, in bytes 是否读取成功的结果对象 -> Whether to read the successful result object 对于200smartPLC的V区,就是DB1.X,例如,V100=DB1.100 假设起始地址为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个数组的长度,所以不再对外公开该方法 西门子的地址对象 返回的结果对象信息 读取指定地址的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的位是否通断 读取指定地址的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 参考的注释 基础的写入数据的操作支持 -> 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存储了产量计数,写入如下: 以下是写入不同类型数据的示例 写入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 -> 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的倍数的数组,否则会影响其他的位的数据,请谨慎使用。 向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 向设备中写入字符串,编码格式为ASCII 数据地址 字符串数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 读取西门子的地址的字符串信息,这个信息是和西门子绑定在一起,长度随西门子的信息动态变化的 数据地址,具体的格式需要参照类的说明文档 带有是否成功的字符串结果类对象 返回表示当前对象的字符串 -> Returns a String representing the current object 字符串信息 -> String information 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协议,无视PLC的型号,所以在客户端进行操作操作的时候,选择1200或是1500或是300或是400都是一样的。 地址支持的列表如下: 地址名称 地址代号 示例 地址进制 字操作 位操作 备注 中间寄存器 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 未测试通过 对于200smartPLC的V区,就是DB1.X,例如,V100=DB1.100 你可以很快速并且简单的创建一个虚拟的s7服务器 当然如果需要高级的服务器,指定日志,限制客户端的IP地址,获取客户端发送的信息,在服务器初始化的时候就要参照下面的代码: 服务器创建好之后,我们就可以对服务器进行一些读写的操作了,下面的代码是基础的BCL类型的读写操作。 高级的对于byte数组类型的数据进行批量化的读写操作如下: 更高级操作请参见源代码。 实例化一个S7协议的服务器,支持I,Q,M,DB1.X 数据区块的读写操作 读取自定义的寄存器的值 起始地址,示例:"I100","M100" 数据长度 byte数组值 写入自定义的数据到数据内存中去 地址 数据值 是否写入成功的结果对象 读取指定地址的字节数据 西门子的地址信息 带有成功标志的结果对象 将byte数据信息写入到指定的地址当中 西门子的地址信息 字节数据信息 是否成功的结果 读取指定地址的bool数据对象 西门子的地址信息 带有成功标志的结果对象 往指定的地址里写入bool数据对象 西门子的地址信息 是否成功的结果 当客户端登录后,进行Ip信息的过滤,然后触发本方法,也就是说之后的客户端需要 网络套接字 终端节点 从字节数据加载数据信息 字节数据 将数据信息存储到字节数组去 所有的内容 释放当前的对象 是否托管对象 返回表示当前对象的字符串 字符串信息 丰田工机PLC数据类型 实例化一个丰田工机PLC数据类型 以word方式读写的基础地址 以byte方式读写的基础地址 以bit方式读写的基础地址 数据的类型,0代表按字,1代表按位 指示地址是10进制,还是16进制的 M内部继电器 D数据寄存器 Toyopuc工具类 解析Toyopuc数据地址 生成读字命令 生成读位命令 生成写字命令 生成写位命令 丰田工机PLC通讯类(TCP协议) 实例化丰田工机PLC通讯对象 实例化一个丰田工机PLC通讯对象 PLC的Ip地址 PLC的端口 从PLC中读取想要的数据,返回读取结果 读取地址 读取的数据长度 带成功标志的结果数据对象 从PLC批量读取位软元件,返回读取结果 起始地址 读取的长度 带成功标志的结果数据对象 向PLC写入数据,数据格式为原始的字节类型 初始地址 原始的字节数据 返回写入结果 向PLC位写入bool数组,返回值说明,比如你写入M100,values[0]对应M100 要写入的数据地址 要写入的实际数据,可以指定任意的长度 返回写入结果 返回表示当前对象的字符串 字符串信息 根据类型地址长度确认需要读取的指令头 起始地址 长度,小于512(200H) 带有成功标志的指令数据 根据类型地址以及需要写入的数据来生成指令头 起始地址 数据值 带有成功标志的指令数据 从PLC反馈的数据中提取出实际的数据内容,需要传入反馈数据,是否位读取 反馈的数据内容 是否位读取 解析后的结果对象 一个强类型的资源类,用于查找本地化的字符串等。 返回此类使用的缓存的 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 类型的本地化资源。 埃夫特机器人的数据结构 实例化一个默认的对象 报文开始的字符串 数据命令 数据心跳 报警状态,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,此协议为定制版,使用前请测试 实例化一个默认的对象,并指定IP地址和端口号,端口号通常为8008 Ip地址 端口号 获取发送的消息的命令 字节数组命令 读取埃夫特机器人的原始的字节数据信息,该地址参数是没有任何作用的,随便填什么 无效参数 带有成功标识的byte[]数组 读取机器人的所有的数据信息,返回JSON格式的数据对象,地址参数无效 地址信息 带有成功标识的字符串数据 本机器人不支持该方法操作,将永远返回失败,无效的操作 指定的地址信息,有些机器人可能不支持 原始的字节数据信息 是否成功的写入 本机器人不支持该方法操作,将永远返回失败,无效的操作 指定的地址信息,有些机器人可能不支持 字符串的数据信息 是否成功的写入 读取机器人的详细信息,返回解析后的数据类型 结果数据信息 返回表示当前对象的字符串 字符串 埃夫特机器人对应型号为ER7B-C10,此协议为旧版的定制版,使用前请测试 实例化一个默认的对象,并指定IP地址和端口号,端口号通常为8008 Ip地址 端口号 获取发送的消息的命令 字节数组命令 读取埃夫特机器人的原始的字节数据信息,该地址参数是没有任何作用的,随便填什么 无效参数 带有成功标识的byte[]数组 读取机器人的所有的数据信息,返回JSON格式的数据对象,地址参数无效 地址信息 带有成功标识的字符串数据 本机器人不支持该方法操作,将永远返回失败,无效的操作 指定的地址信息,有些机器人可能不支持 原始的字节数据信息 是否成功的写入 本机器人不支持该方法操作,将永远返回失败,无效的操作 指定的地址信息,有些机器人可能不支持 字符串的数据信息 是否成功的写入 读取机器人的详细信息 结果数据信息 返回表示当前对象的字符串 字符串 Kuka机器人的数据交互对象,通讯支持的条件为KUKA 的 KRC4 控制器中运行KUKAVARPROXY 这个第三方软件,端口通常为7000 非常感谢 昆山-LT 网友的测试和意见反馈。 实例化一个默认的对象 实例化一个默认的Kuka机器人对象,并指定IP地址和端口号,端口号通常为7000 Ip地址 端口号 读取埃夫特机器人的原始的字节数据信息,该地址参数是没有任何作用的,随便填什么 无效参数 带有成功标识的byte[]数组 读取机器人的所有的数据信息,返回JSON格式的数据对象,地址参数无效 地址信息 带有成功标识的字符串数据 本机器人不支持该方法操作,将永远返回失败,无效的操作 指定的地址信息,有些机器人可能不支持 原始的字节数据信息 是否成功的写入 本机器人支持该方法操作,根据实际的值记性返回 指定的地址信息,有些机器人可能不支持 字符串的数据信息 是否成功的写入 将核心的指令打包成一个可用于发送的消息对象 核心命令 最终实现的可以发送的机器人的字节数据 返回表示当前对象的字符串 字符串 安川机器人的Ethernet 服务器功能的通讯类 实例化一个默认的对象 Ip地址 端口号 根据地址读取机器人的原始的字节数据信息 指定的地址信息,对于某些机器人无效 带有成功标识的byte[]数组 根据地址读取机器人的字符串的数据信息 地址信息 带有成功标识的字符串数据 根据地址,来写入设备的相关的数据 指定的地址信息,有些机器人可能不支持 原始的字节数据信息 是否成功的写入 根据地址,来写入设备相关的数据 指定的地址信息,有些机器人可能不支持 字符串的数据信息 是否成功的写入 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即可,注意,所有的命令不带换行符 命令的内容 命令数据内容 最终的结果内容,需要对IsSuccess进行验证 读取机器人的报警信息 原始的报警信息 读取机器人的坐标数据信息 原始的报警信息 返回表示当前对象的字符串 字符串信息 用于CRC16验证的类,提供了标准的验证方法 本类提供了几个静态的方法,用来进行CRC16码的计算和验证的,多项式码可以自己指定配置,但是预置的寄存器为0xFF 0xFF 先演示如何校验一串数据的CRC码 然后下面是如何生成你自己的CRC校验码 来校验对应的接收数据的CRC校验码,默认多项式码为0xA001 需要校验的数据,带CRC校验码 返回校验成功与否 指定多项式码来校验对应的接收数据的CRC校验码 需要校验的数据,带CRC校验码 多项式码高位 多项式码低位 返回校验成功与否 获取对应的数据的CRC校验码,默认多项式码为0xA001 需要校验的数据,不包含CRC字节 返回带CRC校验码的字节数组,可用于串口发送 通过指定多项式码来获取对应的数据的CRC校验码 需要校验的数据,不包含CRC字节 多项式码地位 多项式码高位 返回带CRC校验码的字节数组,可用于串口发送 所有串行通信类的基类,提供了一些基础的服务 实例化一个无参的构造方法 初始化串口信息,9600波特率,8位数据位,1位停止位,无奇偶校验 端口号信息,例如"COM3" 初始化串口信息,波特率,8位数据位,1位停止位,无奇偶校验 端口号信息,例如"COM3" 波特率 初始化串口信息,波特率,数据位,停止位,奇偶校验需要全部自己来指定 端口号信息,例如"COM3" 波特率 数据位 停止位 奇偶校验 根据自定义初始化方法进行初始化串口信息 初始化的委托方法 打开一个新的串行端口连接 获取一个值,指示串口是否处于打开状态 是或否 关闭端口连接 读取串口的数据 发送的原始字节数据 带接收字节的结果对象 清除串口缓冲区的数据,并返回该数据,如果缓冲区没有数据,返回的字节数组长度为0 是否操作成功的方法 检查当前接收的字节数据是否正确的 输入字节 检查是否正确 在打开端口时的初始化方法,按照协议的需求进行必要的重写 是否初始化成功 在将要和服务器进行断开的情况下额外的操作,需要根据对应协议进行重写 当断开连接时额外的操作结果 发送数据到串口里去 串口对象 字节数据 是否发送成功 从串口接收一串数据信息,可以指定是否一定要接收到数据 串口对象 是否必须要等待数据返回 结果数据对象 返回表示当前对象的字符串 字符串 当前的日志情况 接收数据的超时时间,默认5000ms 连续串口缓冲数据检测的间隔时间,默认20ms 是否在发送数据前清空缓冲数据,默认是false 本连接对象的端口号名称 本连接对象的波特率 释放当前的对象 是否在 释放当前的对象 基于串口的设备交互类的对象,需要从本类继承,然后实现不同的设备读写操作。 数据解析的规则泛型 默认的构造方法实现的设备信息 从设备读取原始数据 起始地址 地址长度 带有成功标识的结果对象 需要在继承类中重写实现,并且实现地址解析操作 将原始数据写入设备 起始地址 原始数据 带有成功标识的结果对象 需要在继承类中重写实现,并且实现地址解析操作 单个数据字节的长度,西门子为2,三菱,欧姆龙,modbusTcp就为1 对设备来说,一个地址的数据对应的字节数,或是1个字节或是2个字节 当前客户端的数据变换机制,当你需要从字节数据转换类型数据的时候需要。 主要是用来转换数据类型的,下面仅仅演示了2个方法,其他的类型转换,类似处理。 当前连接的唯一ID号,默认为长度20的guid码加随机数组成,方便列表管理,也可以自己指定 Current Connection ID, conclude guid and random data, also, you can spcified 读取自定义类型的数据,需要规定解析规则 类型名称 起始地址 带有成功标识的结果对象 需要是定义一个类,选择好相对于的ByteTransform实例,才能调用该方法。 写入自定义类型的数据到设备去,需要规定生成字节的方法 自定义类型 起始地址 实例对象 带有成功标识的结果对象 需要是定义一个类,选择好相对于的实例,才能调用该方法。 从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 包含是否成功的结果对象 从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 包含是否成功的结果对象 读取设备的short类型的数据 起始地址 带成功标志的结果数据对象 读取设备的short类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的ushort数据类型的数据 起始地址 带成功标志的结果数据对象 读取设备的ushort类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的int类型的数据 起始地址 带成功标志的结果数据对象 读取设备的int类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的uint类型的数据 起始地址 带成功标志的结果数据对象 读取设备的uint类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的float类型的数据 起始地址 带成功标志的结果数据对象 读取设备的float类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的long类型的数据 起始地址 带成功标志的结果数据对象 读取设备的long类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的ulong类型的数据 起始地址 带成功标志的结果数据对象 读取设备的ulong类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的double类型的数据 起始地址 带成功标志的结果数据对象 读取设备的double类型的数组 起始地址 数组长度 带成功标志的结果数据对象 读取设备的字符串数据,编码为ASCII 起始地址 地址长度 带成功标志的结果数据对象 批量读取底层的数据信息,需要指定地址和长度,具体的结果取决于实现 数据地址 数据长度 带有成功标识的bool[]数组 读取底层的bool数据信息,具体的结果取决于实现 数据地址 带有成功标识的bool数组 写入bool数组数据 起始地址 写入值 带有成功标识的结果类对象 写入bool数据 起始地址 写入值 带有成功标识的结果类对象 向设备中写入short数组,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入short数据,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入ushort数组,返回是否写入成功 要写入的数据地址 要写入的实际数据 返回写入结果 向设备中写入ushort数据,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入int数组,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入int数据,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入uint数组,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入uint数据,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入float数组,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入float数据,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入long数组,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入long数据,返回是否写入成功 数据地址 实际数据 返回写入结果 向P设备中写入ulong数组,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入ulong数据,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入double数组,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入double数据,返回是否写入成功 数据地址 实际数据 返回写入结果 向设备中写入字符串,编码格式为ASCII 数据地址 字符串数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 向设备中写入指定长度的字符串,超出截断,不够补0,编码格式为ASCII 数据地址 字符串数据 指定的字符串长度,必须大于0 是否写入成功的结果对象 -> Whether to write a successful result object 向设备中写入字符串,编码格式为Unicode 数据地址 字符串数据 是否写入成功的结果对象 向设备中写入指定长度的字符串,超出截断,不够补0,编码格式为Unicode 数据地址 字符串数据 指定的字符串长度,必须大于0 是否写入成功的结果对象 -> Whether to write a successful result object 批量读取底层的数据信息,需要指定地址和长度,具体的结果取决于实现 数据地址 数据长度 带有成功标识的bool[]数组 读取底层的bool数据信息,具体的结果取决于实现 数据地址 带有成功标识的bool数组 写入bool数组数据 起始地址 写入值 带有成功标识的结果类对象 写入bool数据 起始地址 写入值 带有成功标识的结果类对象 使用异步的操作从原始的设备中读取数据信息 起始地址 地址长度 带有成功标识的结果对象 异步读取设备的short类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的ushort类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的ushort数据类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的ushort类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的int类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的int类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的uint类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的uint类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的float类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的float类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的long类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的long类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的ulong类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的ulong类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的double类型的数据 起始地址 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的double类型的数组 起始地址 数组长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步读取设备的字符串数据,编码为ASCII 起始地址 地址长度 带成功标志的结果数据对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步将原始数据写入设备 起始地址 原始数据 带有成功标识的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入short数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入short数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入ushort数组,返回是否写入成功 要写入的数据地址 要写入的实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入ushort数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入int数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入int数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入uint数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入uint数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入float数组,返回是否写入成功 数据地址 实际数据 返回写入结果 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入float数据,返回是否写入成功 数据地址 实际数据 返回写入结果 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入long数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入long数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向P设备中写入ulong数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入ulong数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入double数组,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入double数据,返回是否写入成功 数据地址 实际数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入字符串,编码格式为ASCII 数据地址 字符串数据 是否写入成功的结果对象 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入指定长度的字符串,超出截断,不够补0,编码格式为ASCII 数据地址 字符串数据 指定的字符串长度,必须大于0 是否写入成功的结果对象 -> Whether to write a successful result object 以下为三菱的连接对象示例,其他的设备读写情况参照下面的代码: 异步向设备中写入字符串,编码格式为Unicode 数据地址 字符串数据 是否写入成功的结果对象 异步向设备中写入指定长度的字符串,超出截断,不够补0,编码格式为Unicode 数据地址 字符串数据 指定的字符串长度,必须大于0 是否写入成功的结果对象 -> Whether to write a successful result object 异步读取自定义类型的数据,需要规定解析规则 类型名称 起始地址 带有成功标识的结果对象 需要是定义一个类,选择好相对于的ByteTransform实例,才能调用该方法。 此处演示三菱的读取示例,先定义一个类,实现接口 接下来就可以实现数据的读取了 异步写入自定义类型的数据到设备去,需要规定生成字节的方法 自定义类型 起始地址 实例对象 带有成功标识的结果对象 需要是定义一个类,选择好相对于的实例,才能调用该方法。 此处演示三菱的读取示例,先定义一个类,实现接口 接下来就可以实现数据的读取了 异步从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 包含是否成功的结果对象 异步从设备里读取支持Hsl特性的数据内容,该特性为,详细参考论坛的操作说明。 自定义的数据类型对象 包含是否成功的结果对象 返回表示当前对象的字符串 字符串数据 用于LRC验证的类,提供了标准的验证方法 获取对应的数据的LRC校验码 需要校验的数据,不包含LRC字节 返回带LRC校验码的字节数组,可用于串口发送 检查对应的数据是否符合LRC的验证 等待校验的数据,是否正确 是否校验成功 系统的字符串资源及多语言管理中心 -> 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 字符串颠倒 输入串 颠倒串 十六进制串转换为二进制串 十六进制串 二进制串 PortOpen--打开串口 端口号 波特率 数据位 停止位 奇偶位 错误信息反馈 正确为true 否则为false 关闭串口 PLC 错误信息 错误编码 错误信息 发送PLC通信命令 命令串 反馈串 错误信息 true-正确执行,false-执行错误 读单触点 触点代码:X,Y,R,T,C,L 触点编号,长度为4:3个BCD+1个HEX 信息反馈,return为true时retstr的第7个字节为触点状态:'0'-OFF,'1'-ON 错误反馈 true-正确执行,false-执行错误 读多触点 触点信息:个数(n)+[触点代码(1字符)+触点编号(4字符)]+...+[触点代码(1字符)+触点编号(4字符)],总共1+5*n个字符 信息反馈,return为true时从retstr的第7个字节开始依次为触点状态:'0'-OFF,'1'-ON 错误信息 true-正确执行,false-执行错误 读数据 数据代码:WX,WY,WR,WL,SV,EV,DT,LD,FL,IX,IY等 起始数据编码 结束数据编码 反馈信息 错误信息 true-正确执行,false-执行错误 写单触点 触点代码:Y,R,L 触点编号,长度为4:3个BCD+1个HEX 写入值:"0"-OFF,"1"-ON 信息反馈 错误信息反馈 true-正确执行,false-执行错误 写多触点 触点信息:[触点代码(1字符)+触点编号(4字符)]+...+[触点代码(1字符)+触点编号(4字符)],总共5*n个字符 写入值(1个字符)*n 命令反馈信息 错误反馈信息 true-正确执行,false-执行错误 写数据 数据代码:WX,WY,WR,WL,SV,EV,DT,LD,FL,IX,IY等 起始数据编码 结束数据编码 4字节BCD*n 反馈信息 错误信息 true-正确执行,false-执行错误 设置触点监视对象 [触点代码(1字符)+触点编号(4字符)]*n,触点代码:X,Y,R,T,C,L 命令反馈信息 错误反馈信息 true-正确执行,false-执行错误 设置数据监视对象 [数据代码(1字符)+数据编码(5字符BCD)]*n,触点代码:D,L,F,S,K 命令反馈信息 错误反馈信息 true-正确执行,false-执行错误 字符串颠倒 输入串 颠倒串 读取监视数据 反馈串 错误信息 true-正确执行,false-执行错误