using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HslCommunication.Core;
namespace HslCommunication
{
///
/// 一个工业物联网的底层架构框架,专注于底层的技术通信及跨平台,跨语言通信功能,实现各种主流的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:读取地址优化,支持读取数组任意起始位置,任意长度,支持结构体嵌套读取。
/// - 其他大量的代码细节优化。
///
///
///
[System.Runtime.CompilerServices.CompilerGeneratedAttribute( )]
public class NamespaceDoc
{
}
// 工作的备忘录
// 1. 三菱的代码提炼,重构,抽象,将MC协议核心提取,适配不同的格式要求。 =================== 基本差不多实现。已完成对三菱3C协议的适配
// 2. redis的协议在Python上的实现,并且测试。 =================== 已实现,通过单元测试
// 3. python新增对串口的支持并测试。
// 4. python新增对ab plc的支持。
// 5. .net端对安川机器人的支持,已经有协议文档。
// 6. .net端对库卡机器人的支持,http://blog.davidrobot.com/2014/09/kukavarproxy_index.html?tdsourcetag=s_pctim_aiomsg ===== 已实现,等待测试。
// 7. .net端对三菱Qna兼容3C帧协议的支持。 ===================== 已实现,通过基本的测试
// 8. .net端对欧姆龙的Fins串口协议的支持 ==================== 已实现,正在最后的测试
// 9. .net端对基恩士PLC的串口支持 https://china.keyence.com/support/user/plc/sample-program/index.jsp ============== 已实现,基本测试通过
// 组件之外的计划
// 1. 研究MQTT协议的通讯 ===================== 研究完成在C#的服务器构建和客户端的数据推送操作
// 2. 研究 ML.NET 的机器学习的平台
// 3. 工业网关的深入集成
// 4. HslCommunication官网集成项目发布接收及案例展示平台
// 5. 研究PyQt的界面开发和实现
// bugs
// IReadWriteNet接口可以读取数据可以,Write方法写入西门子数据不管赋值什么值写入都是0,强制转换成simenss7net 又可以正常写入
//git checkout A
//git log
//找出要合并的commit ID :
//例如
//0128660c08e325d410cb845616af355c0c19c6fe
//然后切换到B分支上
//git checkout B
//git cherry-pick 0128660c08e325d410cb845616af355c0c19c6fe
//然后就将A分支的某个commit合并到了B分支了
}