HslCommunication组件库使用说明
一个由个人开发的组件库,携带了一些众多的功能,包含了数据网络通信,文件上传下载,日志组件,PLC访问类,还有一些其他的基础类库。
nuget地址:https://www.nuget.org/packages/HslCommunication/
github地址:https://github.com/dathlin/HslCommunication 如果喜欢可以star或是fork,还可以打赏支持。
API文档的网址:http://api.hslcommunication.cn/ 如果打不开,请通过QQ群,联系作者。
组件官网:http://www.hslcommunication.cn
论坛(暂时已经关闭):http://bbs.hslcommunication.cn/
Java版本的Demo源代码:https://github.com/dathlin/HslCommunicationJavaDemo
Python版本的Demo源代码:https://github.com/dathlin/HslCommunicationPython
创作不易,感谢打赏
联系作者及加群方式(激活码在群里发放):http://www.hslcommunication.cn/Cooperation
如果不能访问,请访问 http://118.24.36.220/Cooperation
本库支持C#版本,java,Python,其中java版本和python为阉割版,具体参照源代码,或是加群了解。
NuGet地址:
https://www.nuget.org/packages/HslCommunication/
安装本组件的NuGet指令为:
Install-Package HslCommunication
也可以在Nuget管理器的界面进行图形化安装。如果不清楚如何安装,请参考:http://www.cnblogs.com/dathlin/p/7705014.html
Mevan地址:
com.github.dathlin:HslCommunication
Pip地址:
pip install HslCommunication
使用限制
个人用户可免费用于学术研究,测试。
如果,个人所有依赖组件的项目年总值小于3000元以下的,只需要一次性付费240rmb,加入普通vip即可获得永久使用的权利,永久发放激活码。
个人商业使用及企业商业使用需要进行授权,授权费用参考官网:http://www.hslcommunication.cn/ 如果不能访问,请访问:http://118.24.36.220
运行环境
.Net Framework
支持 .Net Framework3.5 及以上运行环境。
.Net Standard
这个版本的库主要应用于.Net Core项目,编写其他平台支持的程序时用到。支持.Net Standard 2.0 及 .Net Standard 2.2
移除了原先库中所有窗体,控件代码,所有的网络通讯块都是完成的功能继承。
Java
支持 JDK1.8 及以上运行环境。
Python
支持 python3.4+ 及以上运行环境。
Demo 信息,最新的功能支持请参照DEMO界面更新,最新的更新日志请查找API文档信息
功能列表—-(更新不及时,请参照上面的demo界面)
- 日志记录功能
- 同步网络通讯功能
- 文件管理引擎
- 异步网络通讯功能
- 三菱PLC访问
- 西门子PLC访问
- 欧姆PLC访问
- 邮件功能使用
- 数据订阅推送
- 流水号生成器
- 软件注册码功能
- ModBus 服务器开发(包括tcp和rtu)
- ModBus Tcp客户端开发
- Modbus RTU客户端开发
- 多线程任务功能
- CRC16校验
- 常用控件库
并在本界面开源部分的源代码,尤其是通用的方法
当前最新版: 最新更新日志参照 http://api.hslcommunication.cn
V8.1.3 更新日志:
1. Lsis: 感谢埃及朋友的支持,demo完善了cpu类型的选择。
2. LogNet:新增移除关键字的接口方法,修复linux运行路径解析的bug,完善api文档的示例代码。
3. 大量的细节优化,变量名称单次拼写错误的修复。
4. Modbus: 当地址为x=3;100时,读正常,写入异常的问题修复,功能码自动替换为0x10。
5. FileNet: 修复高并发下载时的下载异常的问题,调整指令头的超时时间。
6. AB plc: 公开一个新的api接口,运行配置一些比较高级的数据。
7. 接下来计划:1.完善hsl的demo,api文档,准备基础的入门视频;2.开始完善java版本的代码,java版本只对超级VIP群开放。
8. 本组件付费授权模式,详细参考官方:http://www.hslcommunication.cn/ 。
V8.1.2 更新日志:
1. Lsis: 感谢埃及朋友的支持,demo增加了bool操作。
2. Knx驱动:增加测试demo,完善驱动,测试通过,有需要的朋友可以查看信息。
3. IntegrationFileClient: 完善文件的收发类,新增重载的构造方法,传入ip地址及端口即可。
4. melsec: 三菱的MC协议部分错误代码关联了文本信息,在测试的时候即可弹出错误信息,方便排查,常见了已经绑定。
5. melsec: 新增3e协议的随机字批量读取操作,支持跨地址,跨数据类型混合交叉读取,一次即可读完。
6. fileserver: 修复linux下的bug,新增上传文件后的触发事件,将文件的信息都传递给调用者。
7. SiemensMpi: 添加MPI协议,并完善demo,等待测试。
8. 本组件付费授权模式,详细参考官方:http://www.hslcommunication.cn/ 。
V8.1.1 更新日志:
1. Lsis: 感谢埃及朋友的支持,修复了一些bug,支持了bool的操作。
2. Redis: 新增db块属性设置,修复短连接下切换db块无效的bug,因为db块是跟随连接的。
3. MQTT: 修复客户端和服务器的长度计算bug,支持和其他mqtt组件混合使用。
4. MQTT Demo: 优化demo功能,支持文本追加或是覆盖选择,文本格式化查看选择。
5. Http Server: 支持跨域属性选择,编码统一为utf-8,兼容浏览器和postman,demo中增加返回类型示例。
6. Modbus server及Lsis Server: 针对.net standard版本,开放串口。
7. 个人商用认定调整,个人用户在一个自然年里所有使用本组件的项目销售总额小于3000元整的不算个人商用,获得激活码即可。
8. 企业商用的使用年限及开放源代码年限调整为20年,感谢所有付费用户的支持。
9. 本组件付费授权模式,详细参考官方:http://www.hslcommunication.cn/ 。
V8.1.0
1. ModbusUdp: 新增一个Modbus的基于udp的协议类,使用的tcp的报文的机制。
2. HttpServer: 新增一个http的服务器封装类,方便实现基于webapi的后台功能,集成GET,POST的接口操作。
3. Serial Ports: standard项目依赖官方串口库,实现所有的设备的串口支持,可应用于跨平台。
4. standard: 在nuget上提供.net standard2.1版本的库。
5. 本组件从v8.0.0开始进入付费授权模式,详细参考官方:http://www.hslcommunication.cn/ 。
V8.0.3
1. Networkbase: 修复套接字网络授权失败时不关闭网络的bug。
2. SoftBasic: 新增一个数组数据格式化的方法信息。
3. MqttServer: 新增一个mqtt的服务器,初步支持订阅,发布订阅,强制发布订阅,在线客户端数量功能等等。
4. Demo: 所有的PLC的demo和modbus协议的demo,支持批量读取各种类型的数组数据。
5. Nuget: 新增本项目的图标,在nuget上搜索时会显示图标。
6. 本组件付费授权模式,详细参考官方:http://www.hslcommunication.cn/ 。
V8.0.2
1. ABBWebClient: abb机器人的api读取日志的接口新增一个参数,读取最近的日志数量。默认为10条。
2. MQTTClient: 修复mqtt客户端类的消息重复bug,修复发送空订阅的bug。
3. SiemensS7Net: 西门子的s7协议的类新增一个api,支持时间的读写,支持异步,时间格式和s7net一致。
4. 本组件付费授权模式,详细参考官方:http://www.hslcommunication.cn/ 。
V8.0.1
1. 所有网口透传类对象完善实例化的方法,都新增一个指定ip及端口的实例方法。
2. ABBWebClient: 完善实例化方法,修改ToString的格式化内容,提炼了webapi的基类,开放ip地址和端口。
3. ABBWebClient: 新增提供了机器人自身IO,扩展IO,最新的报警日志的数据读取API。
4. NetSimplifyClient: 修复了当ReceiveTimeOut小于0,但是实际接收时会发生奔溃的bug。
5. NetPlainSocket: 新增一个基于socket的明文的网络发送和接收类,采用事件驱动的机制。
6. LogNet: 日志类对象新增一个特性,当日志的文件名设置为空的时候,将不会创建文件,仅仅触发 BeforSaveToFile 事件,方便日志显示。
7. XGBCnet: Lsis的plc的串口类修复一个bug,感谢埃及朋友的贡献。
8. SoftIncrementCount: 消息号自增类新增一个方法,重置当前的消息号。
9. PanasonicMewtocol: 修复松下的串口类读写单个bool时异常的bug,地址支持字+位的表示方式,R33=R2.1,方便大家输入测试。
10. MqttClient: 新增一个Mqtt协议的客户端类,支持用户名密码,支持发布,支持订阅,支持重连,欢迎一起测试。
11. 本组件付费授权模式,详细参考官方:http://www.hslcommunication.cn/ 。
V8.0.0
1. SimpleHybirdLock: 简单混合锁的性能优化,基元对象采用懒加载的机制实现,同时增加了高级混合锁的类,支持自旋,线程拥有权,在高竞争的情况下性能大幅增加。
2. NetSoftUpdateServer: 软件自动更新的服务器端支持传送指定目录下的文件及其子文件夹下的所有文件内容,都将更新到客户端的电脑上去。
3. AllenBradleyNet: 修复字符串的读写bug,支持读写任意长度的字符串信息。
4. MelsecFxSerial: 三菱编程口协议支持读写D1024以上地址的数据,感谢 厦门-Mr.T 的贡献。
5. PIDHelper: 新增一个Pid的辅助类,用于模拟pid的波形情况。
6. NetPushClient: 修改一个时间的注释,追加单位信息,时间的单位是毫秒。
7. XGBFastEnet: 感谢埃及的朋友,修复了一些bug信息。
8. MelsecFxSerialOverTcp: 新增基于网口透传的三菱的编程口通讯类。
9. MelsecFxLinksOverTcp: 新增基于网口透传的三菱的计算机链接协议的通讯类。
10. MelsecA3CNet1OverTcp: 新增基于网口透传的三菱的A-3C的协议的通讯类。
11. OmronHostLinkOverTcp: 新增基于网口透传的欧姆龙的hostLink协议的通讯类。
12. PanasonicMewtocolOverTcp: 新增基于网口透传的松下的Mewtocol协议的通讯类。
13. SiemensPPIOverTcp: 新增基于网口透传的西门子PPi协议的通讯类。
14. XGBCnetOverTcp: 新增基于网口透传的Lsis的XGBCnet协议的通讯类。
15. KeyenceNanoSerialOverTcp: 新增基于网口透传的基恩士的NanoSerial串口协议的通讯类。
16. FujiSPBOverTcp: 新增基于网口透传的富士的SPB串口协议的通讯类。
17. FatekProgramOverTcp: 新增基于网口透传的永宏plc的串口协议的通讯类。
18. ModbusRtuOverTcp: 新增基于网口透传的Modbus rtu协议的通讯类。
19. Modbus相关的功能类进行代码精简,重构,优化,api标准化为ReadBool,WriteBool,Read,Write,移除了一些特殊的方法api,本次升级不兼容。
20. FFTFilter: 新增一个基于FFT(快速离散傅立叶变换)的滤波功能,可以作为一个高级的曲线拟合方案,详细参照demo,感谢 北京-monk 网友的支持。
21. KnxUdp: 新增一个KnxUdp的数据通讯类,感谢上海-null的支持。
22. ABBWebApiClient: 新增ABB机器人的基于web api的访问机制的通讯类。
23. SickIcrTcpServer: 新增一个sick的条码读取类,支持被动连接,主动连接,经过测试,同时支持海康,基恩士,DATELOGIC扫码器。
24. Demo: Demo工具新增了一个基于tcp的服务器的测试界面。
25. 本组件付费授权模式,详细参考官方:http://www.hslcommunication.cn/ 。
v5.2.1 更新日志
- API文档中西门子FW协议示例代码修复。
- modbus-rtu修复读取线圈和输入线圈的值错误的bug。
- Demo新增字节转换工具。
v5.2.0 更新日志
- 项目新增api文档,提供离线版和在线版,文档提供了一些示例代码。
- modbus-rtu新增批量的数组读取方法。
- modbus-rtu公开ByteTransform属性,方便的进行数据转换。
- SoftMail删除发送失败10次不能继续发送的机制。
- modbus server新增站号属性,站号不对的话,不响应rtu反馈。
- modbus server修复读取65524和65535地址提示越界的bug。
- Demo项目提供了tcp/ip的调试工具。
v5.1.3 更新日志
1. Modbus服务器新增数据大小端配置。
2. Modbus服务器支持数据存储本地及从本地加载。
3. 修复modbus服务器边界读写bug。
4. ByteTransformBase的double转换bug修复。
5. 修复ReverseWordTransform批量字节转换时隐藏的一些bug。
6. SoftBasic移除2个数据转换的方法。
7. 修复modbus写入单个寄存器的高地位倒置的bug。
8. 修复串口通信过程中字节接收不完整的异常。包含modbus服务器和modbus-rtu。
9. 添加了.net 4.5项目,并且其他项目源代码引用该项目。添加了单元测试,逐步新增测试方法。
v5.1.2 更新日志
-
IByteTransform接口新增bool[]数组转换的2个方法。
-
Modbus Server类新增离散输入数据池和输入寄存器数据池,可以在服务器端读写,在客户端读。
-
Modbus Tcp及Modbus Rtu及java的modbus tcp支持富地址表示,比如”s=2;100″为站号2的地址100信息。
-
Modbus Server修复一个偶尔出现多次异常下线的BUG。
-
其他注释修正。
v5.1.1 更新日志
-
修复西门子fetch/write协议对db块,定时器,计数器读写的BUG。
-
埃夫特机器人修复tostring()的方法。
-
modbus客户端新增两个属性,指示是否字节颠倒和字符串颠倒,根据不同的服务器配置。
-
IReadWriteNet接口补充几个数组读取的方法。
-
新增一个全新的连接池功能类,详细 https://www.cnblogs.com/dathlin/p/9191211.html
-
其他的小bug修复,细节优化。
v5.1.0 更新日志
- Modbus服务器支持串口发送数据时也会触发消息接收。
- IReadWriteNet接口新增Read(string address,ushort length)方法。
- 提炼统一的设备基类,支持Read方法及其扩展的子方法。
- 修复埃夫特机器人的读取BUG。
- 三菱PLC支持读取定时器,计数器的值,地址格式为”T100″,”C100″。
- 新增快速离散的傅立叶频谱变换算法,并在Demo中测试三种周期信号。
v5.0.10 更新日志
- Modbus Tcp及Rtu支持手动更改站号。也就是支持动态站号调整。
- 修复上个版本遗留的Modbus在地址偏移情况下会多减1的BUG。
v 5.0.9 更新日志
- 优化ComplexNet客户端的代码。
- 更新埃夫特机器人的读取机制到最新版。
- Modbus Rtu及串口基类支持接收超时时间设置,不会一直卡死。
- Modbus Tcp及Rtu都支持带功能码输入,比如读取100地址,等同于03X100。(注意:该多功能地址仅仅适用于Read及相关的方法)
v5.0.8 更新日志
- 新增一个埃夫特机器人的数据访问类。
- 双模式客户端的长连接支持延迟连接操作,通过一个新方法完成。
v5.0.7 更新日志
1. Modbus服务器提供在线客户端数量属性。
2. 所有服务器基类添加端口缓存。
3. 双模式客户端完善连接失败,请求超时的消息提示。
4. 修复双模式客户端某些特殊情况下的头子节NULL异常。
5. 修复三菱交互类的ASCII协议下的写入数据异常。
v5.0.6 更新日志
1. 提炼数据转换基类,优化代码,修复WordReverse类对字符串的BUG,相当于修复modbus和omron读写字符串的异常。
2. 新增一个全新的功能类,数据的推送类,轻量级的高效的订阅发布数据信息。具体参照Demo。
v5.0.5 更新日志
1. Modbus相关的代码优化。
2. 新增Modbus-Rtu客户端模式,配合服务器的串口支持,已经可以实现电脑本机的通讯测试了。
v5.0.4 更新日志
1. Modbus-tcp服务器同时支持RTU数据交互。
2. 异形客户端新增在线监测,自动剔除访问异常设备。
3. modbus-tcp支持读取输入点
4. 所有客户端设备的连接超时判断增加休眠,降低CPU负载。
5. 西门子批量读取上限为19个数组。
6. 其他小幅度的代码优化。
v5.0.3 更新日志
1. 修复Modbus-Tcp服务器的空异常。
2. 修复西门子类写入float,double,long数据异常。
3. 修复modbus-tcp客户端读写字符串颠倒异常。
4. 修复三菱多读取数据字节的问题。
5. 双模式客户端新增异形客户端模式,变成了三模式客户端。
6. 提供异形modbus服务器和客户端Demo方便测试。
v5.0.2 更新日志
- 1. ComplexNet服务器代码精简优化,移除客户端的在线信息维护代码。
- 2. 西门子访问类第一次握手信号18字节改为0x02。
- 3. 更新JSON组件到11.0.2版本。
- 4. 日志存储类优化,支持过滤存储特殊关键字的日志。
- 5. Demo项目新增控件介绍信息。
v5.0.1 更新日志
- OperateResult静态方法扩充。
- 文件引擎提升缓存空间到100K,加速文件传输。
- 三菱添加读取单个bool数据。
- Modbus-tcp客户端支持配置起始地址不是0的服务器。
- 其他代码优化。
v5.0.0 更新日志
- 网络核心层重新开发,完全的基于异步IO实现。
- 所有双模式客户端类进行代码重构,接口统一。
- 完善并扩充OperateResult对象的类型支持。
- 提炼一些基础的更加通用的接口方法,在SoftBasic里面。
- 支持欧姆龙PLC的数据交互。
- 支持三菱的1E帧数据格式。
- 不兼容升级,谨慎操作。
v4.3.5 更新日志
- 修复Modbus-tcp服务器接收异常的BUG。
- 修复SoftBasic.ByteTo[U]ShortArray两个方法异常。
v4.3.4 更新日志
- Json组件更新至11.0.1版本。
- 紧急修复日志类的BeforeSaveToFile事件在特殊情况的触发BUG。
v4.3.3 更新日志
- 曲线控件增加一个新的属性,图标标题。
- Modbus tcp服务器端的读写BUG修复。
- 西门子访问类重新支持200smart。
v4.3.2 更新日志
- 曲线控件最新时间显示BUG修复。
- Modbus tcp错误码BUG修复。
- 三菱访问类完善long类型读写。
- 西门子访问类支持1500系列,支持读取订货号。
v4.3.1 更新日志
- 优化modbus tcp客户端的访问类,支持服务器返回错误信息
- 优化曲线控件,支持横轴文本显示,支持辅助线标记,详细见对应博客
v4.3.0 更新日志
- 信号灯控件显示优化
- Modbus Tcp服务端类修复内存暴涨问题
- winfrom客户端提供一个曲线控件,方便显示实时数据,多曲线数据
v4.2.4 更新日志
- 双模式的网络基类中新增一个读取超时的时间设置,如果为负数,那么就不验证返回。
v4.2.3 更新日志
- 修复modbus tcp客户端读取某些特殊设备会读取不到数据的BUG。
v4.2.2 更新日志
- 修复modbus tcp客户端读取 float, int, long,的BUG。
v4.2.1 更新日志
- 饼图控件新增一个是否显示占比很小的信息文本。
- 新增一个旋转开关控件。
- 新增一个信号灯控件。
v4.2.0 更新日志
- 新增一个仪表盘控件。
v4.1.9 更新日志
- 饼图显示优化,新增是否显示百分比的选择。
v4.1.8 更新日志
- 新增一个饼图控件。
v4.1.7 更新日志
- 进度条控件新增一个新的属性对象,是否使用动画。
v4.1.6 更新日志
- OperateResult成功时,消息为成功。
- 数据库辅助类API添加,方便的读取聚合函数
- 日志类分析工具界面,显示文本微调。
v4.1.5 更新日志
- 修复流水号生成器无法生成不带日期格式的流水号BUG。
v4.1.4 更新日志
- modbus tcp提供读取short数组的和ushort数组方法
v4.1.3 更新日志
- 进度条控件修复初始颜色为空的BUG。
- 进度条控件文本锯齿修复。
- 按钮控件无法使用灰色按钮精灵破解。
v4.1.2 更新日志
- 完善Modbus tcp服务器端的数据订阅功能。
- 进度条控件支持水平方向和垂直方向两个模式。
v4.1.1 更新日志
- 完善日志记录,提供关键字记录操作。
- 三菱,西门子,modbus tcp客户端提供自定义数据读写。
- modbus tcp服务端提供数据池功能,并支持数据订阅操作。
- 提供一个纵向的进度控件。
v4.1.0 更新日志
- 修复西门子读取的地址偏大会出现异常的BUG。
- 完善统一了所有三菱,西门子,modbus客户端类的读写方法,已经更新到博客。
v4.0.3 更新日志
- 三菱,西门子,Modbus tcp客户端内核优化重构。
- 三菱,西门子,Modbus tcp客户端提供统一的报文测试方法,该方法也是通信核心,所有API都是基于此扩展起来的。
- 三菱,西门子,Modbus tcp客户端提供了一些便捷的读写API,详细参见对应博客。
- 三菱的地址区分十进制和十六进制。
- 优化三菱的位读写操作。
v4.0.2 更新日志
- 修复Modbus tcp批量写入寄存器时,数据解析异常的BUG。
- 三菱访问器新增长连接模式。
- 三菱访问器支持单个M写入,在数组中指定一个就行。
- 三菱访问器提供了float[]数组写入的API。
- 三菱访问器支持F报警器,B链接继电器,S步进继电器,V边沿继电器,R文件寄存器读写,不过还需要大面积测试。
- 三菱访问器的读写地址支持字符串形式传入。
- 其他的细节优化。
- 感谢 hwdq0012 网友的测试和建议。
- 感谢 吃饱睡好 好朋友的测试
v4.0.1 更新日志
兼容更新:
- 更新了三菱的读取接口,提供了一个额外的字符串表示的方式,OperateResult<byte[]> read = melsecNet.ReadFromPLC(“M100”, 5);
- 更新了西门子的数据访问类和modbus tcp类提供双模式运行,按照之前版本的写法是默认模式,每次请求重新创建网络连接,新增模式二,在代码里先进行连接服务器方法,自动切换到模式二,每次请求都共用一个网络连接,内部已经同步处理,加速数据访问,如果访问失败,自动在下次请求是重新连接,如果调用关闭连接服务器,自动切换到模式一。
v4.0.0 更新日志
与3.X版本不兼容,谨慎升级。如果要升级,OperateResultBytes改成OperateResult<byte[]>,OperateResultString改成OperateResult<string>,主要涉及的代码包含PLC的数据访问和同步数据通信
- 删除了2个类,OperateResultBytes和OperateResultString类,提供了更加强大方便的泛型继承类,多达10个泛型参数。地址见http://www.cnblogs.com/dathlin/p/7865682.html
- 将部分类从HslCommunication命名空间下移动到HslCommunication.Core下面
- 提供了一个通用的ModBus TCP的客户端类,方便和服务器交互。
- 完善了HslCommunication.BasicFramework.SoftBaisc下面的辅助用的静态方法,提供了一些方便的数据转化,在上面进行公开。
v3.17.16 更新日志
- 西门子访问类,提供一个批量bool数据写入,但该写入存在安全隐患,具体见博客
v3.17.15 更新日志
- 完善CRC16校验码功能,完善数据库辅助类方法
v3.17.14 更新日志
- 紧急修复了西门子批量访问时出现的BUG。
v3.17.13 更新日志
- 提供一个ModBus的服务端引擎
v3.17.12 更新日志
- 重新设计西门子的数据读取机制,提供一个更改类型的方法。