【发布】工业串口和网络软件通讯平台(SuperIO v2.2.4)
更新说明:
1.修复无法把数据输出给IAppService的问题,以及无法触发删除操作事件。
2.侦听端口,可以设置。
3.设备接口,增加Object属性,方便平台使用。
4.中断时间改为轮询模式中断时间。
转载地址:http://www.bmpj.net/article-1-1.html
一、SuperIO 的特点:
1)支持二次开发,快速构建自己的通讯数据采集平台软件
2)快速构建设备驱动、协议驱动、命令缓冲、自定义参数和实时数据
3)快速二次开发图形显示、数据输出、服务驱动
4)一个设备驱动,同时支持串口(COM)和网络(TCP Server/Tcp Client)通讯机制,可以自由切换
5)内置协议驱动,可以把第三方协议转换成自定义的协议
6)内置设备命令缓冲器,可以设置命令发送的优先级别
7)以插件的方式挂载设备驱动、显示、输出、服务模块等
8)以服务驱动方式(IAppService)二次开发OPC服务、4-20mA输出、LED大屏显示、短信服务等
9)快速开发、运行稳定、扩展性强大
10)适用工业上位机软件,以及系统集成中采集远程设备数据
11)支持Windows XP/7/8/8.1、Windows Server 2008/2012
二、SuperIO 的设计思想:
公司的硬件产品分类比较多,早期的时候,每一个硬件产品都对应一个上位机软件,都有专人维护。而客户的需求日益变化,造成维护成本比较高。也没打算用组态软件进行开发,因为组态软件的费用比较高,有些特殊的业务或复杂的业务无法完成。
基于现实情况,打算开发一个平台性质的软件,核心部分是数据采集部分,相对来说比较固定,把数据展示、数据导出等类似业务功能设计灵活,变化比较多、比较大。最终实现大家都能在同一平台下进行开发工作,专人维护核心部分
三、SuperIO 开发背景和应用场景:
在工业领域,经常遇到软硬件之间的交互,面临着复杂的现场环境,例如:(1)复杂的、多样的通讯协议。有标准的Modbus协议,也有很多是自定义协议,
并且千差万别。对于不好的软件架构,疲于应对,增加设备或协议要对整个软件进行梳理,往往在此过程中出现新的问题或BUG。(2)不同用户对软件界面或功
能的要求有很大不同,使之满足不同用户的显示要求。(3)在做集成项目的时候,输入输出数据的多样性。首先我们要集成其他厂家的设备,要在平台软件上很方
便的进行接入。其次,还有很多是其他厂家要集成自己家的设备,就涉及的输出数据的问题。没有统一的标准,也是千差万别。(4)通讯链路的多种性,对于同一
个设备可能要支持RS232/RS485/RS422、RJ45、3G/4G等通讯方式,所以对于一个设备要对应多种通讯方式,也给我们的开发造成很大的
障碍。(5)一种类型的设备对应一套软件,在早期的时候,公司可能一个类型的软件对应一套软件,不同的人员在维护不同的设备软件,造成很高的维护成本、人
员成本以及时间成本。这些情况造成我们的软件版本兼容性很差,管理起来比较麻烦。
为了解决以上诸多问题,开发一个软件框架,支持二次开发。在不对软件框架改动的情况下,能够很方便的接入设备、维护设备、集成设备、处理设备业务数据等。软件框架是相对稳定的,把不稳定的部分完全以灵活的方式进行设计。
四、SuperIO 开发事例程序



增加设备

系统配制工具
方便开发者对系统进行管理,配制包括:系统参数、设备挂载配制、设备展示挂载配制、输出数据挂载配制。

【发布】工业串口和网络软件通讯平台(SuperIO v2.2.4)的更多相关文章
- 【工业串口和网络软件通讯平台(SuperIO)教程】七.二次开发服务驱动
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 服务接口的作用 围绕着设备驱动模块采集的数据,根据需求提供多种应用服务,例如:数据上传服务.数 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】六.二次开发导出数据驱动
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 导出数据接口的作用 在数据集成系统项目中,要么是自已集成其他厂家的设备,要么是其他厂家集成自己 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】五.二次开发图形显示界面
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 图形显示接口的作用 用于显示采集终端设备的数据,可以把不同类型设备的数据以多种形式集成显示在不 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】四.开发设备驱动
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 开发准备 把“开发包”内的所有文件复制到项目的“bin”目录下,或项目下的专用生成目录.开发包 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】二.架构和组成部分
1.1 架构结构图 1.1.1 层次示意图 1.1.2 模型对象示意图 1.2 IO管理器 IO管理器是对串口和网络通讯链路的管理.调度.针对串口和网络通讯链路的特点,在IO管 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】九.重写通讯接口函数,实现特殊通讯方式
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 统一的IO接口 开发一套设备驱动同时具备串口和网络通讯能力,通讯接口在逻辑上是统一的,在此基础 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】一.通讯机制
1.1 应用场景 通讯平台的交互对象包括两方面:第一.与硬件产品交互.第二.与软件产品交互.基本这两方面考虑,通讯平台一般会应用在两个场景: 1)通讯平台应用在PC机上 主要应用在自动站的工控机 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】八.SuperIO通讯机制与设备驱动对接的说明
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 通讯机制说明 通讯的总体机制采用呼叫应答方式,就是上位机软件主动发送请求数据命令,下位机终端接 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】三.二次开发流程
1.1 二次开发流程图 1.2 引用相关组件 找到“开发包”,引用里边的相关组件.如下图: 1.3 开发设备驱动模块 1.3.1 开发发送协议驱动 继承SuperIO.Devi ...
- 工业串口和网络软件通讯平台(SuperIO 2.0)发布
下载:SuperIO 2.0(开发手册.Demo.组件包) 官网:进入 交流群:54256083 SuperIO 2.0版本正式发布.把SCL正式更改名称为SuperIO. 一.此次升级主要包括两个方 ...
随机推荐
- Atitti onvif 设备发现与原理
Atitti onvif 设备发现与原理 1.1. ,有以下几个步骤:1 1.2. 设备搜索原理及编程技巧:2 1.3. Ws disconvert 的组播地址和端口就是37022 1)发现ipca ...
- BUG级别定义标准
通过图片另存为 或者 放大浏览器倍率 查看.
- android 画虚线,虚线圆
Paint paint = new Paint(); paint.setAntiAlias(true); paint.setStyle(Paint.Style.STROKE); paint.set ...
- Java 超简单实现发送邮件(可动态控制发送人数)
发送邮件的实现 需要事先引入以下几个架包,最重要的架包是jodd-3.7这个 以上架包下载地址:http://pan.baidu.com/s/1kVs7Tyv 提取密码:h22x 新建一个Util类 ...
- OpenCASCADE Performance Test
OpenCASCADE Performance Test eryar@163.com Abstract. Use the Draw Test Harness to test the performan ...
- 基于X86平台的PC机通过网络发送一个int(32位)整数的字节顺序
1.字节顺序 字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端.大端两种字节顺序.小端字节序指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处:大端字节序是高字节数据存 ...
- Stop sucking,Become awesome.这一年我做到了么
一年前,我因一些原因,工作变动,当时痛下决心,引用了<程序员的呐喊>封面的那句话: Just stop sucking and become awesome! 一年很快就过去了,最近看了不 ...
- 纪念我曾经的 JAVA 姿势--转
原文地址:https://segmentfault.com/a/1190000007122432?hmsr=toutiao.io&utm_medium=toutiao.io&utm_s ...
- java 连接数据库之一个完整的函数
第一个参数要查询的列名第二个参数是连接的url第三个参数是用户名第四个参数密码第五个参数是执行的命令. 注意,url格式是 jdbc:mysql://localhost:3306/wechat jdb ...
- swift中Range的使用书名
在swift中Range有两种用法 1.把字符串转换成NSString来使用 //这里是把swift的字符换转换成了nsstring 使用 let str :NSString = text.strin ...