diff --git a/docs/bigscreen/index.html b/docs/bigscreen/index.html index b2b0ae9..040eea5 100644 --- a/docs/bigscreen/index.html +++ b/docs/bigscreen/index.html @@ -671,7 +671,7 @@ header, .context-menu, .megamenu-content, footer{ -readme +可视化大屏系统开发及使用手册
  • 0 前言说明

    0.1 编译说明

    1. 编译后可执行文件在和源码文件夹同级目录的bin文件夹下,配置文件bigscreen.ini文件在可执行文件所在目录下的config文件夹下,数据库文件在可执行文件所在目录下的db文件夹下。
    2. 编译后记得将源码下的file目录下(切记是file目录下而不是file目录)的所有文件复制到可执行文件同一目录。
    3. 大屏中用到了视频监控模块,所以还需要拷贝ffmpeg的动态库文件到可执行文件同一目录,编译成功后记得将dll_ffmpeg4(64位的构建套件对应的是dll_ffmpeg4_64)对应目录下的库复制到可执行文件同一目录。如果是linux系统则那些exe和dll都不需要拷贝,那个是ffmpeg对应win的运行库,linux上采用的静态库。
    4. dll+lib 链接: https://pan.baidu.com/s/13LDRu6mXC6gaADtrGprNVA 提取码: ujm7。
    5. 如果程序异常结束并提示 miniblink.dll 文件不存在请先拷贝,你还需要在dll+lib下载地址的地方找到 dll_miniblink.zip 下载并解压出来拷贝文件到可执行文件目录。一般这个是因为你用的mingw编译器,win+qt5.6以上+mingw编译器,没有浏览器控件,采用的miniblink第三方浏览器控件。
    6. 如果是linux系统,记得将ffmpeg目录下的linuxlib 找到你系统的版本位数,将文件夹版本位数去掉,比如你操作系统是ubuntu16.04 64位的,则将linuxlib16.04.64改成linuxlib即可,这些是ffmpeg对应linux系统的静态库。
    7. 当然你也可以选择不启用视频监控模块,只需要将pro中的videoffmpeg改成videoffmpeg1即可。
    8. 目录下的bigscreen.sql为数据库脚本,可以在系统设置中单击初始化数据来执行。bigscreen_mysql.sql脚本为Navicat工具对应的导入脚本。
    9. 如果发现地图打不开,请先确认file目录下的所有文件有没有拷贝过去,还有就是将MapBaiDu::Instance()->setSaveFile(false); 改成true;
    10. 如果是用vs+qt可能报错 error LNK2026: 模块对于 SAFESEH 映像是不安全的。

    0.2 版本说明

    V20220417

    1. 设备状态监测增加进度条控件,每个设备都有一个进度条对应完成进度。
    2. 设备状态数据库增加字段progress存储进度,flicker控制是否闪烁,1表示闪烁。
    3. 增加大量的代码注释。

    V20211015

    1. 修正停靠窗体鼠标右键弹出菜单复选框样式、右键菜单子菜单三角形图标样式。
    2. 修正全局复选框样式,比如用户管理中勾选用户权限。
    3. 顶部banner改成透明度20%,这样自适应多种背景颜色风格。
    4. 图片文件夹将image改成了image_bigscreen,以便和其他系统区分。
    5. 布局文件夹将layout改成了layout_bigscreen,以便和其他系统区分。
    6. 默认布局文件夹是1920x1080分辨率。用户可以自己在不同分辨率下调整好布局生成布局文件,然后拷贝布局文件夹进行备份。
    7. 将其他几种分辨率布局文件夹删除,去掉了这种机制,后期采用不同用户对应不同布局文件夹的形式。
    8. 将相关文档和布局文件移动到源码下的doc目录。
    9. 系统设置新增全屏模式参数,默认全屏,不全屏则采用最大化显示,有些系统为了不遮挡任务栏需要最大化显示,也方便截图。
    10. 增加悬浮窗体分隔条样式,限定宽度和颜色等。

    V20210323

    1. 编写开发和使用说明书。
    2. 系统设置增加视频拉伸、视频循环播放等配置参数。
    3. 增加多屏幕支持,自动识别多个屏幕。
    4. 新增2K分辨率布局文件夹。
    5. 增加示例自定义添加多个窗体。
    6. 重新设计配置参数界面,重新拆分配置参数分组,使得更清晰明了。
    7. 新增停靠窗体默认尺寸占比,这样在没有布局文件以及新建布局文件的时候自动按照这个尺寸设置停靠窗体的位置,之前没有布局文件默认是挤在一块的。
    8. 配置文件密码改成密文存储。

    0.3 相关站点

    1. 国内站点:https://gitee.com/feiyangqingyun
    2. 国际站点:https://github.com/feiyangqingyun
    3. 个人主页:https://blog.csdn.net/feiyangqingyun
    4. 知乎主页:https://www.zhihu.com/people/feiyangqingyun
    5. 产品主页:https://blog.csdn.net/feiyangqingyun/article/details/97565652
    6. 在线文档:https://feiyangqingyun.gitee.io/qwidgetdemo/bigscreen/
    7. 体验地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取码:01jf 文件名:bin_bigscreen.zip。
    8. 文章导航:https://qtchina.blog.csdn.net/article/details/121327452

    0.4 功能特点

    1. 采用分层设计,整体总共分三级界面,一级界面是整体布局,二级界面是单个功能模块,三级界面是单个控件。
    2. 子控件包括饼图、圆环图、曲线图、柱状图、柱状分组图、横向柱状图、横向柱状分组图、合格率控件、百分比控件、进度控件、设备状态面板、表格数据、地图控件、视频控件等。
    3. 二级界面可以自由拖动悬浮,支持最小化隐藏、最大化关闭、响应双击自定义标题栏。
    4. 数据源支持模拟数据(默认)、数据库采集、串口通信(需定制)、网络通信(需定制)、网络请求等,可自由设定每个子界面的采集间隔即数据刷新频率。
    5. 采用纯QWidget编写,亲测Qt4.6到Qt6.2任意版本,理论上支持后续其他Qt版本。
    6. 超强跨平台,亲测windows、linux、mac、国产uos、国产银河麒麟kylin等系统,效果完美,同时还支持嵌入式linux比如树莓派、香橙派、全志、imx6等。
    7. 同时集成了自定义控件、qchart饼图、echart地图等功能。
    8. 内置多套配色风格样式(紫色、蓝色、深蓝、黑色),默认紫色,自适应任意分辨率。
    9. 可设置系统标题、目标分辨率、布局方案,启动立即应用。
    10. 可设置主背景颜色、面板颜色、十字线游标颜色等各种颜色。
    11. 可设置多条曲线不同颜色,没有设置颜色的情况下内置多套精美颜色随机应用。
    12. 可设置标题栏背景颜色、文字颜色。
    13. 可设置曲线图表背景颜色、文字颜色、网格颜色。
    14. 可设置正常颜色、警戒颜色、报警颜色、禁用颜色、百分比进度颜色。
    15. 可分别设置各种字体大小,比如全局字体、软件名称、标题栏、子标题栏、加粗标签等。
    16. 可设置标题栏高度、表头高度、行高度。
    17. 曲线支持游标、定位线、悬停高亮数据点、悬停显示值。
    18. 柱状图支持顶部(可设置顶端、上部、中间、底部)显示数据,全部自适应计算位置。
    19. 支持平滑曲线,内置多种平滑曲线算法,还支持面积图平滑。
    20. 面积图填充颜色可选多种规则比如单色透明度填充、透明度渐变填充等。
    21. 数据库支持sqlite、mysql、postgresql、oracle、国产人大金仓等数据库。
    22. 主界面直接鼠标右键切换布局、配色方案、关闭开启某个二级窗体。
    23. 自动记忆所有子窗口的大小和位置,下次启动立即应用。
    24. 动态加载布局方案菜单,可以动态新建布局、恢复布局、保存布局、另存布局等,用户可以制造任意布局。
    25. 二级窗体,双击从主窗体分离出来浮动,可以自由调整大小。再次双击标题栏最大化,再次双击还原。
    26. 子模块也可以全屏显示作为一个大屏,这样就可以一个大屏拓展出多个子大屏,放大查看子模块的数据详情,适用多屏展示。
    27. 每个模块都可以自定义采集速度,如果是数据库采集会自动排队处理,后期还可以拓展每个子模块都独立的数据库采集。
    28. 提供系统设置模块进行整体的配置参数设置,效果立即应用。
    29. 提供精美炫酷的大屏地图模块,包括静态图片、闪烁效果、迁徙效果、世界地图、区域地图等,可指定点的经纬度坐标,识别单击响应,可以做地图跳转等,每个点都可以不同的颜色和提示信息。
    30. 除了提供大屏系统外,还将每个模块都做了独立的模块示例界面,每个模块都可以独立学习使用,里面用到的控件也单独做了控件示例界面,方便学习每个控件如何使用。
    31. 非常详细的开发和使用手册,其中包括数据库说明、模块对照图、控件对照图、项目结构、代码说明(精确到每个类)、演示demo、使用方法等。

    1 操作说明

    1.1 使用方法

      系统支持多种数据源,比如数据库采集、http请求、串口通信、网络通信、模拟数据等,为了简化测试过程,默认内置采用的是模拟数据。

    1.1.1 启动窗体

      系统内置了多种启动窗体,默认大屏系统,可以通过鼠标右键菜单进入系统设置,启动窗体下拉框选择进行切换,切换后会自动重启应用,还可选择控件演示、模块演示,在控件演示和模块演示窗体中,左侧是对应子窗体导航,会自动记住最后选中的子界面索引。 diff --git a/docs/iotsystem/index.html b/docs/iotsystem/index.html index a147447..e47a5c3 100644 --- a/docs/iotsystem/index.html +++ b/docs/iotsystem/index.html @@ -671,10 +671,10 @@ header, .context-menu, .megamenu-content, footer{ -readme +物联网平台开发及使用手册

    -
  • 0 前言说明

    0.1 编译说明

    1. 编译完成后记得将源码下的file目录下(切记是file目录下而不是file目录)的所有文件复制到可执行文件同一目录。可执行文件目录bin在当前源码下,和一堆core开头的目录同级别,编译后会自动生成bin目录。
    2. 打开pro文件,修改DEFINES中的 iottool1 为 iottool,则编译出来的是设备模拟工具,用于没有外接硬件设备时候模拟设备数据测试用。
    3. 编译完成后,先双击打开iottool.exe,这个是设备模拟工具,再打开iotsystem.exe,这个是主程序,主程序建议添加两个通信端口,一个串口端口和一个网络端口,设备模拟工具会自动打开串口和网络进行数据的模拟。
    4. db目录下的 iotsystem.mbs 为modbus模拟数据模板,可以用modbus slave软件打开。
    5. db目录为数据库文件夹,iotsystem.db为sqlite数据库文件,sql结尾的为建库脚本,可以自行改成mysql数据库。
    6. 在端口设置中如果不填写串口号则取网络地址,填了串口号则以串口号优先。
    7. 如果导出的数据到excel以后,打开文件有提示,请先执行db目录下的excel禁止提示.reg文件。

    0.2 功能特点

    0.2.1 软件模块

    1. 设备监控模块,包括数据监控(表格形式展示)、设备面板(面板形式展示)、地图监控(地图形式展示)、曲线监控(曲线形式展示)。
    2. 数据查询模块,包括报警记录、运行记录、操作记录。
    3. 系统设置模块,包括基本设置、端口管理、控制器管理、探测器管理、报警联动、类型设置等。
    4. 其他设置模块,包括用户管理、地图管理、位置调整、组态设计、设备调试等。

    0.2.2 基础功能

    1. 设备数据采集,支持串口、网络,串口可设置串口号、波特率,网络可设置IP地址、通讯端口。
    2. 每个端口支持采集周期时间,默认1秒钟一个设备。
    3. 支持设置通讯超时次数,默认3次。
    4. 支持最大重连时间,用于重新读取离线的设备。
    5. 控制器信息,能够添加控制器名称,选择控制器地址、控制器型号,设置该控制器下面的探测器数量。
    6. 探测器信息,能够添加位号、探测器型号、气体种类、气体符号、高报值、低报值、缓冲值、清零值、是否启用、报警声音、背景地图、存储周期、数值换算小数点位数、报警延时时间、报警的类型(HH,LL,HL)等。
    7. 类型管理可配置控制器型号、探测器型号、气体种类、气体符号等。
    8. 地图支持导入和删除,所有的探测器在地图上的位置可自由拖动保存。
    9. 端口信息、控制器信息、探测器信息、类型信息、用户信息等,都支持导入、导出、导出到excel、打印。
    10. 运行记录、报警记录、操作记录,都支持多条件组合查询,比如时间段、控制器、探测器等,所有记录支持导出到excel/pdf和打印。
    11. 运行记录、报警记录、操作记录都可删除指定时间范围内的数据。
    12. 系统设置可选择对应表最大保存记录数,自动清理早期数据,留出足够的空间存储重要的数据。
    13. 报警短信转发,支持多个接收手机号码,可设定发送间隔,比如即时发送或者6个小时发送一次所有的报警信息,短信内容过长,自动拆分多条短信。
    14. 报警邮件转发,支持多个接收邮箱,可设定发送间隔,比如即时发送或者6个小时发送一次所有的报警信息,支持附件发送。
    15. 设置软件的中文标题、英文标题、logo路径、版权所有等。
    16. 开关设置开机运行、报警声音、自动登录、记住密码等。
    17. 报警声音可设置播放次数,界面风格样式提供18套皮肤文件选择。
    18. 用户管理,包括用户权限配置,不同用户可以有不同模块的权限。
    19. 用户登录和用户退出,可以记住密码和自动登录,超过三次报错提示并关闭程序。
    20. 四种监控模式,设备面板监控、地图监控、表格数据监控、曲线数据监控,可自由切换,四种模式下都实时展示采集到的数据,报警闪烁等。
    21. 报警继电器联动,一个位号可以跨串口联动多个模块和继电器号,支持多对多。

    0.2.3 特色功能

    1. 通信协议支持modbus_com、modbus_tcp_rtu,后期拓展mqtt等协议。
    2. 数据源除了真实的硬件设备采集,还可选数据库采集,这样用户可以安排其他程序员比如java程序员将前端采集好的数据放到数据库,本系统直接从数据库采集即可。数据库采集模式可以作为通用的系统使用,更适合多人多系统协作。
    3. 智能跳过超时的设备,加快对在线设备的采集速度,当设备数量很多的时候尤其有用。
    4. 对智能跳过的超时的设备,在设定的重连时间自动采集一次,以便探测设备是否又重新上线。
    5. 每个探测器可控是否启用,不启用则不会采集,也不会在界面显示,相当于运行阶段临时关闭。
    6. 探测器可设置缓冲值和报警延时时间,在该值附近波动产生的报警,不计入报警,只有持续处于报警值且超过报警延时时间才算真正报警,这样可以规避很多波动导致的误报。
    7. 探测器可设置存储周期,按照设定的时间来存储一条运行记录,可以按照重要程度对重要性高的设定存储周期短一些,不重要的设定大一些,这样可以节省不少的存储空间,也保证了重要的数据及时存储。
    8. 探测器可设置清零值,在一些高精度高灵敏的设备可能出厂的时候默认值未必是0,需要设定清零值来表示初始值。
    9. 探测器可设置小数点,用于计算后的真实数据控制小数点点位显示,相当于除以10、除以100、除以1000,这样大部分的探测器数据直接通过小数点位设置控制真实换算后的值,极个别的需要特殊转换的可以在通信协议中约定。
    10. 探测器报警的类型支持多种,有些设备是高于某个值高报,低于某个值低报,而有些设备是在最小值最大值范围内是高报,低于最小值低报,高于最大值正常。这样可以分情况处理,涵盖各种报警类型。
    11. 原创数据导入、导出、打印机制,跨平台不依赖任何组件,瞬间导出数据。
    12. 导出到excel的记录支持所有excel、wps等表格文件版本,不依赖excel等软件。
    13. 高报颜色、低报颜色、正常颜色、默认值颜色等,都可以自由设置。
    14. 支持云端数据同步,将本地采集到的数据实时同步到云端。
    15. 支持网络转发和网络接收,网络接收开启后,软件从udp接收数据进行解析。网络转发支持多个目标IP,这样就实现了本地采集的软件,自由将数据转到客户端,随时查看采集到的数据。
    16. 自动记住用户最后停留的界面以及其他配置信息,重启后自动应用。
    17. 报警自动切换到对应的地图,探测器按钮闪烁,表格数据对应颜色显示。
    18. 双击探测器图标,弹出对应探测器详细信息,可以根据需要定制回控操作。
    19. 数据库支持多种,包括sqlite、mysql、sqlserver、postgresql、oracle、人大金仓等。
    20. 本地设备采集到的数据实时上传到云端,以便手机APP或者web等其他方式提取。
    21. 自带设备模拟工具,支持不同型号的多个设备数据模拟,支持串口和网络,同时还带数据库数据模拟,以便在没有设备的时候测试数据。
    22. 标准modbus协议,各种控制器类型、探测器类型、种类、符号等全部自定义,非常灵活和强大,通信协议示例数据非常完整,通用各种modbus协议系统,适用于各种应用场景接入。
    23. 同时集成了串口通信、网络通信、数据库通信、数据导入导出打印、通信协议解析、界面UI、全局换肤等众多组件和知识点,非常适合新手入门和进阶。
    24. 支持xp、win7、win10、、win11、linux、mac、树莓派、各种国产系统(UOS、中标麒麟、银河麒麟等)、嵌入式linux等系统。
    25. 注释完整,项目结构清晰,超级详细完整的使用开发手册,精确到每个代码文件的功能说明,不断持续迭代版本。

    0.3 相关站点

    1. 国内站点:https://gitee.com/feiyangqingyun
    2. 国际站点:https://github.com/feiyangqingyun
    3. 个人主页:https://blog.csdn.net/feiyangqingyun
    4. 知乎主页:https://www.zhihu.com/people/feiyangqingyun
    5. 产品主页:https://blog.csdn.net/feiyangqingyun/article/details/97565652
    6. 在线文档:https://feiyangqingyun.gitee.io/qwidgetdemo/iotsystem/
    7. 体验地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取码:o05q 文件名:bin_iotsystem.zip。
    8. 文章导航:https://qtchina.blog.csdn.net/article/details/121330922

    0.4 特别说明

    1. 主界面顶部为一级菜单导航,单击切换页面,软件的左侧为二级菜单导航。
    2. 在左侧菜单中,单击按钮可以切换到对应的页面。
    3. 软件会记住最后停留的页面,下次启动后自动切换。
    4. 发现数据不对或者有误,可以直接在设备调试界面查看具体的通信数据。
    5. 离线状态下双击设备面板或者设备按钮会主动立即重连一次,在线双击弹出详细信息。
    6. 本系统中的控制器相当于主设备,探测器相当于子设备节点。软件采集是和控制器之间通信。
    7. 系统采用纯QtWidget(非qml)编写,所有源码开放,并非有封装的库。
    8. 同时集成了数据库、多线程、串口通信、网络通信、协议解析、界面美化、UI布局等众多知识点。
    9. 未经本人许可不可将本项目源码扩散,如有发现本人将追究法律责任,谢谢配合。
    10. 高分屏缩放设置说明 https://qtchina.blog.csdn.net/article/details/124860909

    0.5 简易操作

    1. 第一步:从顶部一级菜单切换到系统设置,然后左侧二级菜单切换到端口管理。
    2. 第二步:添加好端口信息。
    3. 第三步:切换到控制器管理,添加好控制器信息。
    4. 第四步:切换到探测器管理,添加好探测器信息。
    5. 第五步:如果需要地图,则切换到地图管理,导入地图,默认已经有5张地图。
    6. 第六步:重启软件。

    0.6 版本说明

    V20220522

    1. 增加配置参数记录设备模拟工具是否已经通过主程序调用,已经打开了则不用重复打开。
    2. 修正数据库脚本文件,以便支持其他数据库,其他数据库全部测试过一遍。
    3. 增加各种数据库效果图,同步更新文档。
    4. 增加网络转发和云端数据库同步说明及效果图。
    5. 网络转发将分隔符改成字段数据用 , 分隔,行数据用 ; 分隔,最前面标识符用 | 分隔。
    6. 判断模拟工具是否打开算法再次改进,从命令行执行结果查看是否存在该程序。
    7. 所有数据库执行出错打印增加打印错误信息和对应的sql语句。

    V20220508

    1. 设备地图按钮增加报警颜色选项,低报黄色闪烁,高报红色闪烁,其他报警紫色闪烁,正常绿色。
    2. 修正低分辨率比如1366x768情况下默认配置文件窗体尺寸过大的问题。
    3. 修复设备面板在仪表盘样式情况下文字颜色没有和系统样式统一的BUG。
    4. 将设备面板统一到一个类,多种样式选择,普通样式、仪表样式等。
    5. 说明书中通信协议举例,重新整理,更丰富更完整。
    6. 消息栏改成0表示自动设置行数,100表示设置0行,其他表示选择的行数。
    7. 将面板样式切换直接移到主界面,方便直接切换立即应用。
    8. 删减合并一些冗余的代码。
    9. 修复离线后仪表盘的值没有清零的BUG。
    10. 修复有部分权限页面控制不准的BUG。
    11. 新增自启动设备模拟工具配置参数,可以在系统设置中功能激活启用。
    12. 将模拟工具启动放在主窗体加载完成后,之前的main函数中不妥当,会导致用户还没登录就运行了设备模拟工具。
    13. 探测器节点信息,系统设置新增排序规则,可以按照位号排序,或者种类+位号等方式。
    14. 增加在win以外的其他系统,自动new出来设备模拟工具。
    15. 改进默认地图算法,取第一个有背景地图的设备的图片作为默认图片,可能默认图片不存在则取图片列表中的第一张。

    V20220428

    1. 将项目统一命名为iotsystem,对应设备模拟工具iottool。
    2. 将多个模块提炼成通用模块,比如用户登录退出、数据库设置、用户管理等,这样可以和其他系统完全公用模块。
    3. 统一调整项目模块,统一规划。
    4. 重新截图,重新编写说明书和开发使用手册。
    5. 权限控制增加用户管理、组态设计等,替换之前备用的模块A、模块B。
    6. 将用户管理、组态设计、设备调试等模块移动到其他设置大类,方便管理。
    7. 修复非最大化界面,拖动设备按钮会触发界面移动并且乱跳的BUG。
    8. 修复本地电脑开启网络代理的情况下,网络链接本地IP地址报错提示 The proxy type is invalid for this operation 的BUG。
    9. 模拟工具增加一键复位和一键报警按钮,用于设置没有报警的值和报警的值。
    10. 修复Qt6中报警后重复触发报警声音会崩溃的BUG。
    11. 统一梳理所有数据库字段长度,留有足够的余地。
    12. 修复设备面板在低报高报互相切换状态的时候报警颜色不正确的BUG。

    V20190712

    1. 控制器型号+探测器型号+气体种类+气体符号改成表格存储,新增探测器数量字段。
    2. 当节点数量小于列数时候会宽度变宽的BUG。
    3. 新增阿里云数据库同步,数据库采集模式会将数据库数据实时同步到阿里云。

    V20190624

    1. nodeinfo表新增nodezero字段,用于存储消零值,小于该值则显示为0,大于则显示真实值。
    2. alarmlog表增加confirmuser、confirmtime、confirmcontent三个字段,存储报警记录的确认用户、确认时间、确认内容。
    3. 新增了数据库读取模式,用于数据库采集显示数据。
    4. 修复了Qt5.10版本以上,数据清理线程提示不能运行的BUG。不能在线程中用主线程创建的数据库。
    5. 改进了部分代码。
    6. 模拟器新增数据库模拟。
    7. 配置文件新增模拟器的配置信息。
    8. 修复表格中设置了单独的文字颜色,在选中时会被覆盖的BUG。
    9. 新增报警右下角弹框。可以配置文件更改是否开启以及显示多久,默认开启。
    10. 新增报警记录鼠标右键删除记录,支持多选批量删除。
    11. 设备表格,按照气体种类升序+位号升序排列,以前是按照位号。
    12. 控制器对应的最大探测器数量,已禁用,直接选择好探测器类型自动设置。

    1 用户登录退出

    1.1 用户登录

    +

  • 0 前言说明

    0.1 编译说明

    1. 编译完成后记得将源码下的file目录下(切记是file目录下而不是file目录)的所有文件复制到可执行文件同一目录。可执行文件目录bin在当前源码下,和一堆core开头的目录同级别,编译后会自动生成bin目录。
    2. 打开pro文件,修改DEFINES中的 iottool1 为 iottool,则编译出来的是设备模拟工具,用于没有外接硬件设备时候模拟设备数据测试用。
    3. 编译完成后,先双击打开iottool.exe,这个是设备模拟工具,再打开iotsystem.exe,这个是主程序,主程序建议添加两个通信端口,一个串口端口和一个网络端口,设备模拟工具会自动打开串口和网络进行数据的模拟。
    4. db目录下的 iotsystem.mbs 为modbus模拟数据模板,可以用modbus slave软件打开。
    5. db目录为数据库文件夹,iotsystem.db为sqlite数据库文件,sql结尾的为建库脚本,可以自行改成mysql数据库。
    6. 在端口设置中如果不填写串口号则取网络地址,填了串口号则以串口号优先。
    7. 如果导出的数据到excel以后,打开文件有提示,请先执行db目录下的excel禁止提示.reg文件。

    0.2 功能特点

    0.2.1 软件模块

    1. 设备监控模块,包括数据监控(表格形式展示)、设备面板(面板形式展示)、地图监控(地图形式展示)、曲线监控(曲线形式展示)。
    2. 数据查询模块,包括报警记录、运行记录、操作记录。
    3. 系统设置模块,包括基本设置、端口管理、控制器管理、探测器管理、报警联动、类型设置等。
    4. 其他设置模块,包括用户管理、地图管理、位置调整、组态设计、设备调试等。

    0.2.2 基础功能

    1. 设备数据采集,支持串口、网络,串口可设置串口号、波特率,网络可设置IP地址、通讯端口。
    2. 每个端口支持采集周期时间,默认1秒钟一个设备。
    3. 支持设置通讯超时次数,默认3次。
    4. 支持最大重连时间,用于重新读取离线的设备。
    5. 控制器信息,能够添加控制器名称,选择控制器地址、控制器型号,设置该控制器下面的探测器数量。
    6. 探测器信息,能够添加位号、探测器型号、气体种类、气体符号、高报值、低报值、缓冲值、清零值、是否启用、报警声音、背景地图、存储周期、数值换算小数点位数、报警延时时间、报警的类型(HH,LL,HL)等。
    7. 类型管理可配置控制器型号、探测器型号、气体种类、气体符号等。
    8. 地图支持导入和删除,所有的探测器在地图上的位置可自由拖动保存。
    9. 端口信息、控制器信息、探测器信息、类型信息、用户信息等,都支持导入、导出、导出到excel、打印。
    10. 运行记录、报警记录、操作记录,都支持多条件组合查询,比如时间段、控制器、探测器等,所有记录支持导出到excel/pdf和打印。
    11. 运行记录、报警记录、操作记录都可删除指定时间范围内的数据。
    12. 系统设置可选择对应表最大保存记录数,自动清理早期数据,留出足够的空间存储重要的数据。
    13. 报警短信转发,支持多个接收手机号码,可设定发送间隔,比如即时发送或者6个小时发送一次所有的报警信息,短信内容过长,自动拆分多条短信。
    14. 报警邮件转发,支持多个接收邮箱,可设定发送间隔,比如即时发送或者6个小时发送一次所有的报警信息,支持附件发送。
    15. 设置软件的中文标题、英文标题、logo路径、版权所有等。
    16. 开关设置开机运行、报警声音、自动登录、记住密码等。
    17. 报警声音可设置播放次数,界面风格样式提供18套皮肤文件选择。
    18. 用户管理,包括用户权限配置,不同用户可以有不同模块的权限。
    19. 用户登录和用户退出,可以记住密码和自动登录,超过三次报错提示并关闭程序。
    20. 四种监控模式,设备面板监控、地图监控、表格数据监控、曲线数据监控,可自由切换,四种模式下都实时展示采集到的数据,报警闪烁等。
    21. 报警继电器联动,一个位号可以跨串口联动多个模块和继电器号,支持多对多。

    0.2.3 特色功能

    1. 通信协议支持modbus_com、modbus_tcp_rtu,后期拓展mqtt等协议。
    2. 数据源除了真实的硬件设备采集,还可选数据库采集,这样用户可以安排其他程序员比如java程序员将前端采集好的数据放到数据库,本系统直接从数据库采集即可。数据库采集模式可以作为通用的系统使用,更适合多人多系统协作。
    3. 智能跳过超时的设备,加快对在线设备的采集速度,当设备数量很多的时候尤其有用。
    4. 对智能跳过的超时的设备,在设定的重连时间自动采集一次,以便探测设备是否又重新上线。
    5. 每个探测器可控是否启用,不启用则不会采集,也不会在界面显示,相当于运行阶段临时关闭。
    6. 探测器可设置缓冲值和报警延时时间,在该值附近波动产生的报警,不计入报警,只有持续处于报警值且超过报警延时时间才算真正报警,这样可以规避很多波动导致的误报。
    7. 探测器可设置存储周期,按照设定的时间来存储一条运行记录,可以按照重要程度对重要性高的设定存储周期短一些,不重要的设定大一些,这样可以节省不少的存储空间,也保证了重要的数据及时存储。
    8. 探测器可设置清零值,在一些高精度高灵敏的设备可能出厂的时候默认值未必是0,需要设定清零值来表示初始值。
    9. 探测器可设置小数点,用于计算后的真实数据控制小数点点位显示,相当于除以10、除以100、除以1000,这样大部分的探测器数据直接通过小数点位设置控制真实换算后的值,极个别的需要特殊转换的可以在通信协议中约定。
    10. 探测器报警的类型支持多种,有些设备是高于某个值高报,低于某个值低报,而有些设备是在最小值最大值范围内是高报,低于最小值低报,高于最大值正常。这样可以分情况处理,涵盖各种报警类型。
    11. 原创数据导入、导出、打印机制,跨平台不依赖任何组件,瞬间导出数据。
    12. 导出到excel的记录支持所有excel、wps等表格文件版本,不依赖excel等软件。
    13. 高报颜色、低报颜色、正常颜色、默认值颜色等,都可以自由设置。
    14. 支持云端数据同步,将本地采集到的数据实时同步到云端。
    15. 支持网络转发和网络接收,网络接收开启后,软件从udp接收数据进行解析。网络转发支持多个目标IP,这样就实现了本地采集的软件,自由将数据转到客户端,随时查看采集到的数据。
    16. 自动记住用户最后停留的界面以及其他配置信息,重启后自动应用。
    17. 报警自动切换到对应的地图,探测器按钮闪烁,表格数据对应颜色显示。
    18. 双击探测器图标,弹出对应探测器详细信息,可以根据需要定制回控操作。
    19. 数据库支持多种,包括sqlite、mysql、sqlserver、postgresql、oracle、人大金仓等。
    20. 本地设备采集到的数据实时上传到云端,以便手机APP或者web等其他方式提取。
    21. 自带设备模拟工具,支持不同型号的多个设备数据模拟,支持串口和网络,同时还带数据库数据模拟,以便在没有设备的时候测试数据。
    22. 标准modbus协议,各种控制器类型、探测器类型、种类、符号等全部自定义,非常灵活和强大,通信协议示例数据非常完整,通用各种modbus协议系统,适用于各种应用场景接入。
    23. 同时集成了串口通信、网络通信、数据库通信、数据导入导出打印、通信协议解析、界面UI、全局换肤等众多组件和知识点,非常适合新手入门和进阶。
    24. 支持xp、win7、win10、、win11、linux、mac、树莓派、各种国产系统(UOS、中标麒麟、银河麒麟等)、嵌入式linux等系统。
    25. 注释完整,项目结构清晰,超级详细完整的使用开发手册,精确到每个代码文件的功能说明,不断持续迭代版本。

    0.3 相关站点

    1. 国内站点:https://gitee.com/feiyangqingyun
    2. 国际站点:https://github.com/feiyangqingyun
    3. 个人主页:https://blog.csdn.net/feiyangqingyun
    4. 知乎主页:https://www.zhihu.com/people/feiyangqingyun
    5. 产品主页:https://blog.csdn.net/feiyangqingyun/article/details/97565652
    6. 在线文档:https://feiyangqingyun.gitee.io/qwidgetdemo/iotsystem/
    7. 体验地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取码:o05q 文件名:bin_iotsystem.zip。
    8. 文章导航:https://qtchina.blog.csdn.net/article/details/121330922

    0.4 特别说明

    1. 主界面顶部为一级菜单导航,单击切换页面,软件的左侧为二级菜单导航。
    2. 在左侧菜单中,单击按钮可以切换到对应的页面。
    3. 软件会记住最后停留的页面,下次启动后自动切换。
    4. 发现数据不对或者有误,可以直接在设备调试界面查看具体的通信数据。
    5. 离线状态下双击设备面板或者设备按钮会主动立即重连一次,在线双击弹出详细信息。
    6. 本系统中的控制器相当于主设备,探测器相当于子设备节点。软件采集是和控制器之间通信。
    7. 系统采用纯QtWidget(非qml)编写,所有源码开放,并非有封装的库。
    8. 同时集成了数据库、多线程、串口通信、网络通信、协议解析、界面美化、UI布局等众多知识点。
    9. 未经本人许可不可将本项目源码扩散,如有发现本人将追究法律责任,谢谢配合。
    10. 高分屏缩放设置说明 https://qtchina.blog.csdn.net/article/details/124860909

    0.5 简易操作

    1. 第一步:从顶部一级菜单切换到系统设置,然后左侧二级菜单切换到端口管理。
    2. 第二步:添加好端口信息。
    3. 第三步:切换到控制器管理,添加好控制器信息。
    4. 第四步:切换到探测器管理,添加好探测器信息。
    5. 第五步:如果需要地图,则切换到地图管理,导入地图,默认已经有5张地图。
    6. 第六步:重启软件。

    0.6 版本说明

    V20220522

    1. 增加配置参数记录设备模拟工具是否已经通过主程序调用,已经打开了则不用重复打开。
    2. 修正数据库脚本文件,以便支持其他数据库,其他数据库全部测试过一遍。
    3. 增加各种数据库效果图,同步更新文档。
    4. 增加网络转发和云端数据库同步说明及效果图。
    5. 网络转发将分隔符改成字段数据用 , 分隔,行数据用 ; 分隔,最前面标识符用 | 分隔。
    6. 判断模拟工具是否打开算法再次改进,从命令行执行结果查看是否存在该程序。
    7. 所有数据库执行出错打印增加打印错误信息和对应的sql语句。
    8. 修复开启自动行数的时候,如果默认页面停留在其他页面,消息行数计算不准确的BUG。改成了默认采用左侧堆栈控件的高度作为参照标准,因为该控件永远显示,可以拿到正确的高度。
    9. 报警记录表格增加支持多选删除,可以批量删除选中的记录。
    10. 修复报警声音播放的BUG,在Qt5中默认播放首次设置的声音文件成功其余有杂音。
    11. 修复设备按钮报警颜色中低报和高报颜色搞反了的BUG。

    V20220508

    1. 设备地图按钮增加报警颜色选项,低报黄色闪烁,高报红色闪烁,其他报警紫色闪烁,正常绿色。
    2. 修正低分辨率比如1366x768情况下默认配置文件窗体尺寸过大的问题。
    3. 修复设备面板在仪表盘样式情况下文字颜色没有和系统样式统一的BUG。
    4. 将设备面板统一到一个类,多种样式选择,普通样式、仪表样式等。
    5. 说明书中通信协议举例,重新整理,更丰富更完整。
    6. 消息栏改成0表示自动设置行数,100表示设置0行,其他表示选择的行数。
    7. 将面板样式切换直接移到主界面,方便直接切换立即应用。
    8. 删减合并一些冗余的代码。
    9. 修复离线后仪表盘的值没有清零的BUG。
    10. 修复有部分权限页面控制不准的BUG。
    11. 新增自启动设备模拟工具配置参数,可以在系统设置中功能激活启用。
    12. 将模拟工具启动放在主窗体加载完成后,之前的main函数中不妥当,会导致用户还没登录就运行了设备模拟工具。
    13. 探测器节点信息,系统设置新增排序规则,可以按照位号排序,或者种类+位号等方式。
    14. 增加在win以外的其他系统,自动new出来设备模拟工具。
    15. 改进默认地图算法,取第一个有背景地图的设备的图片作为默认图片,可能默认图片不存在则取图片列表中的第一张。

    V20220428

    1. 将项目统一命名为iotsystem,对应设备模拟工具iottool。
    2. 将多个模块提炼成通用模块,比如用户登录退出、数据库设置、用户管理等,这样可以和其他系统完全公用模块。
    3. 统一调整项目模块,统一规划。
    4. 重新截图,重新编写说明书和开发使用手册。
    5. 权限控制增加用户管理、组态设计等,替换之前备用的模块A、模块B。
    6. 将用户管理、组态设计、设备调试等模块移动到其他设置大类,方便管理。
    7. 修复非最大化界面,拖动设备按钮会触发界面移动并且乱跳的BUG。
    8. 修复本地电脑开启网络代理的情况下,网络链接本地IP地址报错提示 The proxy type is invalid for this operation 的BUG。
    9. 模拟工具增加一键复位和一键报警按钮,用于设置没有报警的值和报警的值。
    10. 修复Qt6中报警后重复触发报警声音会崩溃的BUG。
    11. 统一梳理所有数据库字段长度,留有足够的余地。
    12. 修复设备面板在低报高报互相切换状态的时候报警颜色不正确的BUG。

    V20190712

    1. 控制器型号+探测器型号+气体种类+气体符号改成表格存储,新增探测器数量字段。
    2. 当节点数量小于列数时候会宽度变宽的BUG。
    3. 新增阿里云数据库同步,数据库采集模式会将数据库数据实时同步到阿里云。

    V20190624

    1. nodeinfo表新增nodezero字段,用于存储消零值,小于该值则显示为0,大于则显示真实值。
    2. alarmlog表增加confirmuser、confirmtime、confirmcontent三个字段,存储报警记录的确认用户、确认时间、确认内容。
    3. 新增了数据库读取模式,用于数据库采集显示数据。
    4. 修复了Qt5.10版本以上,数据清理线程提示不能运行的BUG。不能在线程中用主线程创建的数据库。
    5. 改进了部分代码。
    6. 模拟器新增数据库模拟。
    7. 配置文件新增模拟器的配置信息。
    8. 修复表格中设置了单独的文字颜色,在选中时会被覆盖的BUG。
    9. 新增报警右下角弹框。可以配置文件更改是否开启以及显示多久,默认开启。
    10. 新增报警记录鼠标右键删除记录,支持多选批量删除。
    11. 设备表格,按照气体种类升序+位号升序排列,以前是按照位号。
    12. 控制器对应的最大探测器数量,已禁用,直接选择好探测器类型自动设置。

    1 用户登录退出

    1.1 用户登录

    系统启动后,首先会弹出用户登录界面,从用户姓名的下拉框选择用户名,然后输入密码(默认用户名密码都是admin),单击登录按钮,密码正确则会进入到系统主界面,错误会弹出提示,错误超过三次自动关闭,需要重新打开软件。

    在登录界面可以勾选是否记住密码,是否自动登录,如果勾选了记住密码,则下次启用软件会自动填入最后用户的密码,勾选了自动登录(以最后的用户信息作为当前登录用户)则启动后直接进入主界面。如果开启了自动登录,不会弹出登录界面,可以在系统设置中关闭自动登录和记住密码。

    1.2 用户退出

    在主界面单击右上角的关闭按钮,会弹出用户退出界面,需要输入密码验证防止误关闭,会自动填入登录的用户名,密码输入正确才会退出软件。用户登录和退出都内置了超级密码a防止管理员忘记密码。

    2 系统设置

    2.1 基本设置

    2.1.1 常规设置

    基本设置中有部分参数的切换会自动重启应用。

    参数说明

    1. 开机运行:开启以后自动随着系统启动运行,默认开启。
    2. 自动登录:开启以后会自动以最后登录的用户信息登录到系统,默认关闭。
    3. 记住密码:开启以后会自动填入最后登录的用户信息到登录窗体,默认关闭。
    4. 中文标题:软件左上角标题栏的中文标题,改动立即应用。
    5. 英文标题:软件左上角标题栏的英文标题,改动立即应用。
    6. 版权所有:当前软件版权所有的公司,显示在软件的底部信息栏中。
    7. 调试日志:开启后会将打印日志输出到日志文件,默认关闭。
    8. 运行时间:开启后会实时记录系统的运行时间,记录当前软件启动后运行了多久。
    9. 工作模式:默认设备采集,可选数据库采集、数据库读取、设备采集2等,一般都是特殊定制需求的在这里切换工作模式。
    10. 导航样式:用于选择顶部导航栏和左侧导航栏的样式,上侧+左侧表示顶部导航栏上侧样式(图标在上面,文字在下面),左侧导航栏左侧样式(图标在左侧,文字在右侧)。
    11. 界面样式:系统自带17套皮肤,可以在这里自动换肤,默认视频黑。
    12. 软件图标:自动从logo文件夹读取,可以自行选择对应的logo文件。
    13. 报警声音:开启后当探测器报警后,会播放报警声音,默认开启。
    14. 播放次数:播放报警声音的次数,默认1次。
    15. 警情行数:主界面运行监测左侧显示报警信息的最大行数。新警情自动追加在最前面。0表示自动根据尺寸填充,100表示禁用。
    16. 自动确认:开启后自动确认警情存入报警记录,默认开启。
    17. 设备列数:设备监控主界面设备面板的列数。
    18. 记录行数:在数据查询的表格中,显示的记录的行数。

    工作模式

    1. 设备采集:本地直接采集网络和串口过来的数据,每个数据位2字节表示一个含义。
    2. 数据库采集:定时器读取数据库表NodeData,具体字段含义见数据库表说明。
    3. 数据库采集2:和数据库采集逻辑一样,就是具体的报警标志位含义不一样。
    4. 设备采集2:用户定制的一套解析协议,和上面设备采集的区别是收发协议两样,带有电源、报警标志位,每个探测器4寄存器=8字节。
    • 设备采集模式 nodeStatus 0-低报 1-低报恢复 2-高报 3-高报恢复 5-其他报警 6-其他报警恢复
    • 数据库采集模式 nodeStatus 0-离线 1-在线 2-低报 3-高报
    • 数据库采集2模式 nodeStatus 0-离线 1-正常 2-报警 3-高报 4-失效
    • 设备采集2模式 nodeStatus 0-预热中 1-工作中 2-低限报警 3-高限报警 4-传感器故障 7-探测器离线

    2.1.2 本地数据库设置

    参数说明

    1. 远程同步:开启后将会启用云端数据同步功能,将本地数据实时同步到远程数据库中。
    2. 主机类型:和本地数据库设置一样,可选多种。
    3. 数据库名:对应数据库的数据库名称,一个数据库系统中可以有多个数据库实例。
    4. 主机地址:数据库所在的网络地址,可以是IP地址或者网址。
    5. 通信端口:数据库开放通信的端口,不同数据库默认端口不同,比如mysql是3306,postgres是5432,sqlserver是1433。
    6. 用户名称:登录到网络数据库对应的用户名称,所有的网络型数据库都需要用户认证。sqlite是文件型数据库一般不需要认证。
    7. 用户密码:登录到网络数据库对应的用户密码,所有的网络型数据库都需要用户认证。sqlite是文件型数据库一般不需要认证。
    8. 连接测试:单击后主动连接一次当前填入的数据库信息,连接成功与失败都会弹框提示。
    9. 初始数据:单击后会执行sql脚本文件,重置数据库,会将原来的数据一并清空。务必记得只有需要的时候才执行。

    其他说明

    1. 默认提供了数据库脚本文件(拓展名sql结尾的文件)。
    2. 单击初始化数据按钮可以对整个数据库进行新建和重置,相当于恢复出厂。
    3. 系统支持多种数据库,默认sqlite(Qt内置的数据库,无需安装),可选mysql、postgresql、oracle、人大金仓等。
    4. 具体还需要对应Qt版本有数据库插件支持,没有插件支持可以自行编译对应缺失的插件比如mysql,也可选直接通过万能的ODBC来连接。
    5. 除了sqlite数据库外,其余数据库都需要输入数据库名称、主机地址、通信端口、用户名称、用户密码信息,输入好以后可以单击连接测试按钮测试下是否正常。
    6. 默认提供的是mysql的动态库libmysql.dll,需要放到可执行文件同一目录,严格区分32位和64位的动态库。

    2.1.3 云端数据库同步

    参数说明

    1. 远程同步:开启后将会启用云端数据同步功能,将本地数据实时同步到远程数据库中。
    2. 主机类型:和本地数据库设置一样,可选多种。
    3. 数据库名:对应数据库的数据库名称,一个数据库系统中可以有多个数据库实例。
    4. 主机地址:数据库所在的网络地址,可以是IP地址或者网址。
    5. 通信端口:数据库开放通信的端口,不同数据库默认端口不同,比如mysql是3306,postgres是5432,sqlserver是1433。
    6. 用户名称:登录到网络数据库对应的用户名称,所有的网络型数据库都需要用户认证。sqlite是文件型数据库一般不需要认证。
    7. 用户密码:登录到网络数据库对应的用户密码,所有的网络型数据库都需要用户认证。sqlite是文件型数据库一般不需要认证。
    8. 连接测试:单击后主动连接一次当前填入的数据库信息,连接成功与失败都会弹框提示。
    9. 初始数据:单击后会执行sql脚本文件,重置数据库,会将原来的数据一并清空。务必记得只有需要的时候才执行。

    2.1.4 日志设置

    参数说明

    1. 报警记录:报警记录存储最大数量,超过会自动清理,相当于永远存储最近的记录,把早期数据清空,留给最新的数据,节约空间。
    2. 运行记录:运行记录存储最大数量,超过会自动清理,相当于永远存储最近的记录,把早期数据清空,留给最新的数据,节约空间。
    3. 操作记录:操作记录存储最大数量,超过会自动清理,相当于永远存储最近的记录,把早期数据清空,留给最新的数据,节约空间。
    4. 记录排序:在报警记录查询界面中,按照何种方式排序,默认按照时间降序,相当于最新的记录在最前面。
    5. 报警弹框:报警触发后在右下角弹框信息停留时间,0秒表示一直停留直到手动关闭,10000秒表示不弹出。
    6. 小数点位:设备采集到的数据,最后按照几位小数点显示。

    2.1.5 网络转发设置

    网络转发的功能,是用来将本地的采集的所有设备的数据,通过UDP协议转发到指定的IP和端口,对方只要开启网络接收即可查看到设备的实时运行数据。网络转发和网络接收不能同时开启,本地负责采集的软件开启网络转发,远程需要查看数据的电脑开启网络接收,转发的端口和接收的端口必须保持一致,支持多个IP,中间用英文的分号 ; 隔开。单击同步数据的按钮会将本地的端口+设备+节点信息传送到接收端,不需要手动设置。这样就保证了本地的信息和远程的信息完全一致。远程的IP必须保证可达,比如ping的通。

    参数说明

    1. 网络转发:开启后会将本地的数据通过udp协议发到指定的网络地址和端口。
    2. IP及端口:网络转发要去达的网络地址和端口,用英文冒号 : 隔开。
    3. 网络接收:开启后将采用接收端形式运行,接收转发过来的设备数据作为采集源。
    4. 接收端口:网络接收端口。
    5. 同步数据:开启网络转发后,单击该按钮,会将本地的端口信息、控制器信息、探测器信息发送到远端,这样远端接收到数据后不用手动添加。

    2.1.6 告警短信转发

    当探测器发生报警后,如果开启了短信告警,会将报警信息以短信的形式发送到预先设定的接收者的手机号码上,短信内容格式为:位号: AT400001 控制器: 控制器A 探测器: 探测器A 触发值: 70.8 PPM 类型: 浓度上限报警 时间: 2019-01-05 12:12:12。需要本地发短信的硬件支持。

    参数说明

    1. 串口名称:短信猫设备接入的串口号。
    2. 波 特 率:短信猫设备通信所使用的波特率。
    3. 接收号码:接收者的手机号码,可以填写多个,中间用英文的分号 ; 隔开。
    4. 发送间隔:短信发送的间隔,默认10000表示不开启,0表示实时发送。
    5. 测试短信:单击该按钮会立即发送一条测试短信到接收者手机用于测试功能是否正常。

    2.1.7 告警邮件转发

    当探测器发生报警后,如果开启了邮件转发告警,会将报警信息以邮件的形式发送到预先设定的接收者的邮箱中,邮件内容格式为:位号: AT400001 控制器: 控制器A 探测器: 探测器A 触发值: 70.8 PPM 类型: 浓度上限报警 时间: 2019-01-05 12:12:12。后期会将警情统计的报表数据以excel表格的形式发送到接收者邮箱。如果发现邮箱登录失败等,请先在邮箱后台设置开启smtp和pop3。

    参数说明

    1. 发件邮箱:发件人的邮箱地址,必须保证该邮箱开启过POP3。
    2. 发件密码:发件人的邮箱的密码,会以加密的形式存储在配置文件。
    3. 接收邮箱:接收者的邮箱地址,支持多个,用英文的分号 ; 隔开。
    4. 发送间隔:邮件发送的间隔,默认10000表示不开启,0表示实时发送。
    5. 测试邮件:单击该按钮会立即发送一条测试邮件到接收者邮箱用于测试功能是否正常。

    2.1.8 系统时间设置

    用来设置本地电脑的系统时间,为什么需要这个设置,因为软件很可能在嵌入式linux上运行,需要手动设置时间。

    2.1.9 功能激活

    参数说明

    1. 表格联动:开启后在数据监控的表格中会自动实时显示采集的设备数据。
    2. 面板联动:开启后在设备面板对应的设备会自动显示采集的设备数据。
    3. 按钮联动:开启后在地图监控上对应的按钮会自动显示采集的设备数据。
    4. 设备地图:开启后会显示设备地图模块,默认关闭,大部分场景用不上,只需要表格展示数据,最高效。

    2.1.10 颜色设置

    参数说明

    1. 离线颜色:探测器离线后对应文字显示的颜色。
    2. 高报颜色:探测器发生上限报警(高报)后对应文字显示的颜色。
    3. 低报颜色:探测器发生下限报警(低报)后对应文字显示的颜色。
    4. 正常颜色:探测器运行正常时对应文字显示的颜色。
    5. 曲线背景:探测器实时曲线界面背景颜色。
    6. 曲线文字:探测器实时曲线界面文字颜色。
    7. 曲线颜色:探测器实时曲线界面曲线的颜色。
    8. 待定颜色:目前备用的颜色。

    2.2 端口管理

    本系统支持串口接入和网络接入两种方式,对应的端口需要提前设置,后期可能还会新增mqtt等方式,选择不同的协议类型即可。

    字段说明

    1. 端口编号:端口的编号,从1开始。
    2. 端口名称:端口的别名,方便记忆。
    3. 协议类型:默认Modbus_Com为串口通信,TCP通信选择Modbus_Tcp_Rtu。
    4. 串 口 号:如果用的是串口通信,这里填入串口号即可。
    5. 波 特 率:串口通信使用的波特率。
    6. IP 地 址:设备的IP地址。
    7. 通讯端口:该设备网络通信所使用的端口,默认502,即modbus通信的端口。
    8. 采集周期:该通讯处理中对每个控制器轮询的间隔时间。单位秒,如果要0.2s=200毫秒则填0.2即可,默认浮点数处理。
    9. 通讯超时:该通讯处理中大于几次未收到回应消息则判断为离线,默认3次。
    10. 重连时间:如果某个设备离线状态,最大多长时间重新读取一次,默认60秒。

    2.2.1 端口添加

    单击添加按钮,会自动规则生成默认的信息,直接表格中修改即可,修改好以后单击保存按钮保存所有的信息。

    2.2.2 端口删除

    如果要删除某个端口信息,需要先选中该行,然后单击删除按钮,删除后会自动保存。

    2.2.3 端口清空

    单击清空按钮会对整个表进行清空操作,清空后数据不能恢复,慎用。

    2.2.4 端口信息导入

    单击导入按钮,可以选择之前导出的csv格式的文件导入数据。

    2.2.5 端口信息导出

    单击导出按钮,将表格数据导出到csv格式的文件,用户可以打开文件编辑,然后再次导入,这样可以作为简易的备份机制使用,也可将繁琐的基础数据录入交给小姑娘去做。  

    2.2.6 端口信息打印

    单击打印按钮可以将表格中的内容打印出来,打印前会弹出打印预览界面,可以自行做边距的调整等,可以查看等待打印的内容,翻页切换。

    2.2.7 导出到Excel

    单击导出按钮可以将表格中的内容导出到excel表格,独创的excel导出数据算法,极速导出,支持任意系统,无依赖。

    2.3 控制器管理

    字段说明

    1. 控制器编号:控制器的编号,从1开始。
    2. 通 讯 端口:通讯所采用的通讯端口名称,和端口管理中的端口名称一致。
    3. 控制器名称:控制器的别名,以便记忆。
    4. 控制器地址:控制器的地址,最大255。
    5. 控制器型号:控制器的型号,不一样的控制器可能通信的协议不一致。
    6. 探测器数量:该控制器下面挂载的探测器的数量,必须和真实安装的数量完全一致。

    2.3.1 控制器添加

    单击添加按钮,会自动规则生成默认的信息,直接表格中修改即可,修改好以后单击保存按钮保存所有的信息。

    2.3.2 控制器删除

    如果要删除某个控制器信息,需要先选中该行,然后单击删除按钮,删除后会自动保存。

    2.3.3 控制器清空

    单击清空按钮会对整个表进行清空操作,清空后数据不能恢复,慎用。

    2.3.4 控制器信息导入

    单击导入按钮,可以选择之前导出的csv格式的文件导入数据。

    2.3.5 控制器信息导出

    单击导出按钮,将表格数据导出到csv格式的文件,用户可以打开文件编辑,然后再次导入,这样可以作为简易的备份机制使用,也可将繁琐的基础数据录入交给小姑娘去做。  

    2.3.6 控制器信息打印

    单击打印按钮可以将表格中的内容打印出来,打印前会弹出打印预览界面,可以自行做边距的调整等,可以查看等待打印的内容,翻页切换。

    2.3.7 导出到Excel

    单击导出按钮可以将表格中的内容导出到excel表格,独创的excel导出数据算法,极速导出,支持任意系统,无依赖。

    2.4 探测器管理

    字段说明

    1. 编 号:节点的编号,从1开始。
    2. 位 号:探测器的位置编号,用于唯一标识一个探测器。
    3. 控 制 器:对应挂载的主设备名称。
    4. 探 测 器:探测器的名称,方便记忆,可以填写地理位置。
    5. 地 址:探测器对应在控制器的编号索引。
    6. 型 号:探测器的型号,从下拉框选择。
    7. 气体种类:探测器对应采集的气体的种类。
    8. 气体型号:探测器对应采集气体的型号。
    9. 上 限 值:报警的上限值。
    10. 下 限 值:报警的下限值
    11. 最 大 值:最大的警戒值,超过该值则显示为该值。
    12. 消 零:最小的警戒值,小于该值则显示0,大于显示真实值。
    13. 量 程:假设量程0.25则 实际数=模拟量/4000x量程 模拟量就是采集的值。
    14. 状 态:默认启用,当某个探测器未接时候可以选择禁用。
    15. 声 音:报警后对应的声音文件。
    16. 地 图:探测器所位于的地图文件。
    17. 存 储:探测器记录存储的周期,单位分钟。即隔多久存储一次记录到本地。
    18. 小 数 点:计算解析数据的数据位对应的小数点位数。
    19. 报警延时:报警后,延时多久处理,以便过滤数据抖动偏差造成的误报。默认0。
    20. 报警类型:HH LL HL。
    21. X坐 标:探测器位于地图上的X坐标。
    22. Y坐 标:探测器位于地图上的Y坐标。

    报警类型

    • 根据设定的不同的报警类型处理,假定上限值100,下限值25。
    • HH表示超过25是低报,超过100是高报,低于25正常。
    • HL表示低于25是低报,超过100是高报,25到100之间正常。
    • LL表示低于25是高报,低于100是低报,大于100正常。

    2.4.1 探测器添加

    单击添加按钮,会自动规则生成默认的信息,直接表格中修改即可,修改好以后单击保存按钮保存所有的信息。

    2.4.2 探测器删除

    如果要删除某个探测器信息,需要先选中该行,然后单击删除按钮,删除后会自动保存。

    2.4.3 探测器清空

    单击清空按钮会对整个表进行清空操作,清空后数据不能恢复,慎用。

    2.4.4 探测器信息导入

    单击导入按钮,可以选择之前导出的csv格式的文件导入数据。

    2.4.5 探测器信息导出

    单击导出按钮,将表格数据导出到csv格式的文件,用户可以打开文件编辑,然后再次导入,这样可以作为简易的备份机制使用,也可将繁琐的基础数据录入交给小姑娘去做。  

    2.4.6 探测器信息打印

    单击打印按钮可以将表格中的内容打印出来,打印前会弹出打印预览界面,可以自行做边距的调整等,可以查看等待打印的内容,翻页切换。

    2.4.7 导出到Excel

    单击导出按钮可以将表格中的内容导出到excel表格,独创的excel导出数据算法,极速导出,支持任意系统,无依赖。

    2.5 报警联动

    在报警联动设置中,可以设置每个位号报警后,对应的继电器联动,支持探测器串口和新独立的串口(如果是和探测器并用的串口则不会重新打开串口,直接用原有的串口发数据联动,如果是新的串口则会重新打开串口),模块地址为继电器板子的地址,联动地址集合为需要联动报警的位,支持多个,多对多关系,一个探测器报警可以联动多个联动模块上的多个继电器地址,中间丨杠隔开。

    字段说明

    1. 位置编号:下拉选择,从探测器信息表取,表示哪个位置的探测器报警。
    2. 串 口 号:串口号,可以是之前端口信息中的串口,会自动检测切换。
    3. 波 特 率:报警端口转发串口对应的波特率,默认9600。
    4. 模块地址:对应联动模块的地址,挂在总线上的联动模块的唯一地址,该模块专门用来做继电器联动。
    5. 联动地址:联动模块上有一排继电器地址,对应报警后,可以触发联动一个或者多个继电器,需要哪个地址就填哪些地址。
    6. 启 用:可以动态关闭不需要的联动信息,但是不删除,这样只需要这里取消启用即可,而不是删除,不然又要重新添加。

    2.5.1 联动添加

    单击添加按钮,会自动规则生成默认的信息,直接表格中修改即可,修改好以后单击保存按钮保存所有的信息。

    2.5.2 联动删除

    如果要删除某个联动信息,需要先选中该行,然后单击删除按钮,删除后会自动保存。

    2.5.3 联动清空

    单击清空按钮会对整个表进行清空操作,清空后数据不能恢复,慎用。

    2.5.4 联动信息导入

    单击导入按钮,可以选择之前导出的csv格式的文件导入数据。

    2.5.5 联动信息导出

    单击导出按钮,将表格数据导出到csv格式的文件,用户可以打开文件编辑,然后再次导入,这样可以作为简易的备份机制使用,也可将繁琐的基础数据录入交给小姑娘去做。  

    2.5.6 联动信息打印

    单击打印按钮可以将表格中的内容打印出来,打印前会弹出打印预览界面,可以自行做边距的调整等,可以查看等待打印的内容,翻页切换。

    2.5.7 导出到Excel

    单击导出按钮可以将表格中的内容导出到excel表格,独创的excel导出数据算法,极速导出,支持任意系统,无依赖。

    2.6 类型设置

    参数说明

    • 本表格中的数据并不是严格的对应关系。
    • 其中控制器信号、探测器数量是一对,其余全部独立。
    • 用来在系统设置中对应下拉框中的信息。
    • 这样就非常灵活,用户后期增加了新的产品直接在这里添加好就行,其他地方都是自动下拉选择。

    2.6.1 类型添加

    单击添加按钮,会自动规则生成默认的信息,直接表格中修改即可,修改好以后单击保存按钮保存所有的信息。

    2.6.2 类型删除

    如果要删除某个类型信息,需要先选中该行,然后单击删除按钮,删除后会自动保存。

    2.6.3 类型清空

    单击清空按钮会对整个表进行清空操作,清空后数据不能恢复,慎用。

    2.6.4 类型信息导入

    单击导入按钮,可以选择之前导出的csv格式的文件导入数据。

    2.6.5 类型信息导出

    单击导出按钮,将表格数据导出到csv格式的文件,用户可以打开文件编辑,然后再次导入,这样可以作为简易的备份机制使用,也可将繁琐的基础数据录入交给小姑娘去做。  

    2.6.6 类型信息打印

    单击打印按钮可以将表格中的内容打印出来,打印前会弹出打印预览界面,可以自行做边距的调整等,可以查看等待打印的内容,翻页切换。

    2.6.7 导出到Excel

    单击导出按钮可以将表格中的内容导出到excel表格,独创的excel导出数据算法,极速导出,支持任意系统,无依赖。

    3 其他设置

    3.1 用户管理

    用户管理是后面增加的一个模块,用于设置不同的用户不同的类型+权限,可以细分到每个模块的权限,勾选表示具有该权限,内置了7种权限选择,后期还可以在此基础上增加其他权限等。

    3.1.1 用户添加

    单击添加按钮,会自动规则生成默认的信息,直接表格中修改即可,修改好以后单击保存按钮保存所有的信息。

    3.1.2 用户删除

    如果要删除某个用户信息,需要先选中该行,然后单击删除按钮,删除后会自动保存。不允许删除内置的admin用户。

    3.1.3 用户清空

    单击清空按钮会对整个表进行清空操作,清空后数据不能恢复,慎用。

    3.1.4 用户信息导入

    单击导入按钮,可以选择之前导出的csv格式的文件导入数据。

    3.1.5 用户信息导出

    单击导出按钮,将表格数据导出到csv格式的文件,用户可以打开文件编辑,然后再次导入,这样可以作为简易的备份机制使用,也可将繁琐的基础数据录入交给小姑娘去做。

    3.1.6 用户信息打印

    单击打印按钮可以将表格中的内容打印出来,打印前会弹出打印预览界面,可以自行做边距的调整等,可以查看等待打印的内容,翻页切换。

    3.1.7 导出到Excel

    单击导出按钮可以将表格中的内容导出到excel表格,独创的excel导出数据算法,极速导出,支持任意系统,无依赖。

    3.1.8 权限验证

    假设设置了用户没有系统设置和删除记录的权限,则关闭系统的时候会弹出错误信息提示当前用户没有权限。

    3.2 地图管理

    在地图管理中,可以导入和删除地图。

    3.3 位置调整

    位置调整中,可以拖动探测器到正确的位置,右侧单击地图切换可以看到对应的该地图对应的探测器,全部位置调整好之后,单击右下角保存按钮即可,会立即应用。

    3.4 组态设计

    组态设计模块中提供的是简单的示例,演示如何加载自定义控件动态库、将控件拖曳到背景地图上,配置好对应控件的属性,可定义用户属性,可导出控件的配置信息到xml文件,并支持导入xml文件自动加载上次保存的控件配置信息。目前是一个简单的组态雏形,等后期架构好如何应用再重写整个模块。

    本系统默认不包括里面控件的源码,提供动态库的形式使用,如果还想学习自定义控件大全的源码(目前共202个控件卖700元),需要额外单独购买。

    3.5 设备调试

    可以自行选择通讯端口+设备名称进行数据的过滤,可查看所有的通信数据。不同收发数据不同颜色,还可以指定关键字过滤数据,每个收发数据都有对应的中文解释。能够很方便的对运行中的系统查看设备数据,规避是下位机还是上位机问题扯皮的事情。

    4 设备监控

    设备监控界面主要包括4个模块,分别是数据监控、设备面板、地图监控、曲线监控,设备的实时数据可以同时反应到四个模块上面,相当于以4种不同的表现形式展现采集到的数据。

    模式说明

    • 数据监控:表格形式一行行展示数据。
    • 设备面板:每个探测器都是个独立的一个面板展示数据和信息。
    • 地图监控:设备按钮放在对应地图上,长条状显示数据和符号单位。
    • 曲线监控:对每个设备过滤曲线显示采集到的数据。
    • 设备报警后,如果设置了报警弹窗,则右下角都会弹出对应的报警信息。
    • 设备报警后,对应表格行、设备面板、地图按钮等都会突出颜色显示。

    4.1 数据监控

    本页面会是使用频率最高的页面,默认就是停留在本页面实时查看所有探测器的数据。左侧为警情信息栏,分别显示时间、位号、报警值。如果有探测器报警,则消息自动追加到最前面。 diff --git a/docs/video_system/index.html b/docs/video_system/index.html index 449a032..cad8f99 100644 --- a/docs/video_system/index.html +++ b/docs/video_system/index.html @@ -671,14 +671,14 @@ header, .context-menu, .megamenu-content, footer{ -readme +视频监控系统开发及使用手册

    -
  • 0 前言说明

    0.1 系统说明

    1. 本视频监控系统做的是通用的系统,主要偏重整体框架和UI交互等。
    2. 主要功能包括摄像机管理,实时视频显示,视频轮询、视频存储、设备地图显示,各种画面切换,各种悬停子模块、onvif搜索设备和云台控制及预置位,通用的NVR视频流播放(比如海康的NVR支持直接取流回放)等功能。
    3. 如果是依赖SDK去实现的功能(雨刷、去雾等)都没有做,那个破坏了兼容性,无法通用其他摄像机设备以及其他操作系统。
    4. 每个厂家SDK和定制的功能都不一样,如果有这方面的需要都是买过去自己加上SDK的功能和自己定制需要的功能。
    5. 整个项目源代码行数大概30W行(项目代码本身除去第三方库以后约7W行,就是自己写的部分),其中代码13.5W行(占比45%),注释12.7W行(占比42%),空行3.5W行。分层设计注释详细。
    6. 本程序会一直持续迭代更新,包括项目源码、整体框架、使用说明等,购买者可永久免费升级,一次购买终生售后。

    0.2 特别说明

    1. 程序本身是个客户端(直接从摄像机取rtsp视频流)并不是服务器程序。
    2. 摄像机管理没有限制摄像机的数量,理论上10000路肯定没有问题,就是个数据库记录。
    3. 实时显示具体能支持多少路,和具体的电脑配置有关(亲测1.8G主频8G内存I5子码流64路,总之比海康大华客户端要更优秀)。
    4. 程序实时显示界面最大可以到64路,每个通道都是打开的时候才会去建立连接取视频流,而不是一开始就建立了连接。
    5. 系统采用onvif协议+rtsp视频流机制,并不限定支持哪家的摄像机,只要符合这两种协议的都支持,市面上99%的网络摄像机都支持这两种基础协议,包括但不限于海康、大华、宇视、天地伟业、华为等各种安防厂家的摄像机。
    6. 本系统没有内置人脸识别等任何相关算法,提供的是相关的接口,比如自己的算法识别到人脸区域后,将区域坐标传入视频控件自动绘制。
    7. 本系统适用于安防行业,所有录制视频也是针对摄像机的视频流,包括摄像机自身的rtsp格式视频流,摄像机重新推流的rtmp或者http的视频流,凡是源头不是摄像机的视频流一概不存储或者存储不成功,因为可能编码格式不一样。比如中央卫视、大雄兔等视频流是不存储的,因为源头不是摄像机。任何监控厂家的视频监控系统都是只存储监控摄像机的视频,其他一概不存储甚至添加都没法添加到系统中因为过滤掉了。
    8. 系统采用纯QtWidget(非qml)编写,解码采用ffmpeg,搜索采用onvif协议,视频播放采用rtsp协议,所有源码开放,并非有封装的库。
    9. 同时集成了数据库、多线程、串口通信、网络通信、音视频解码和同步、网页地图、界面美化、UI布局等众多知识点。
    10. 未经本人许可不可将本项目源码扩散,如有发现本人将追究法律责任,谢谢配合。

    0.3 相关站点

    1. 国内站点:https://gitee.com/feiyangqingyun
    2. 国际站点:https://github.com/feiyangqingyun
    3. 个人主页:https://blog.csdn.net/feiyangqingyun
    4. 知乎主页:https://www.zhihu.com/people/feiyangqingyun
    5. 产品主页:https://blog.csdn.net/feiyangqingyun/article/details/97565652
    6. 在线文档:https://feiyangqingyun.gitee.io/qwidgetdemo/video_system/
    7. 体验地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取码:01jf 文件名:bin_video_system.zip。
    8. 文章导航:https://qtchina.blog.csdn.net/article/details/121327495

    0.4 功能特点

    0.4.1 软件模块

    1. 视频监控模块,各种停靠小窗体子模块,包括设备列表、图文警情、窗口信息、云台控制、预置位、巡航设置、设备控制、悬浮地图、网页浏览等。
    2. 视频回放模块,包括本地回放、远程回放、设备播放、图片回放、视频上传等。
    3. 电子地图模块,包括图片地图、在线地图、离线地图、路径规划等。
    4. 日志查询模块,包括本地日志、设备日志等。
    5. 系统设置模块,包括系统设置(基本设置、视频参数、数据库设置、地图配置、串口配置等)、录像机管理、摄像机管理、轮询配置、用户管理等。

    0.4.2 基础功能

    1. 支持各种视频流(rtsp、rtmp、http等)、视频文件(mp4、rmvb、avi等)、本地USB摄像机播放。
    2. 支持多画面切换,包括1、4、6、8、9、13、16、25、36、64画面切换。
    3. 支持全屏切换,多种切换方式包括鼠标右键菜单、工具栏按钮、快捷键(alt+enter全屏,esc退出全屏)。
    4. 支持视频轮询,包括1、4、9、16画面轮询,可设置轮询分组(轮询预案)、轮询间隔、码流类型等。
    5. 支持onvif协议,包括设备搜索、云台控制、预置位、设备控制(图片参数、校对时间、系统重启,抓拍图片等)。
    6. 支持权限管理,不同的用户可以对应不同的模块权限,比如删除日志、关闭系统等。
    7. 数据库支持多种,包括sqlite、mysql、sqlserver、postgresql、oracle、人大金仓等。
    8. 本地USB摄像机支持设置分辨率、帧率等参数。
    9. 所有停靠模块都自动生成对应的菜单用来控制显示和隐藏,在标题栏右键可以弹出。
    10. 支持显示所有模块、隐藏所有模块、复位普通布局、复位全屏布局。
    11. 双击设备弹出实时预览视频,支持图片地图、在线地图、离线地图等。
    12. 摄像机节点拖曳到对应窗体播放视频,同时支持拖曳本地文件直接播放。
    13. 删除视频支持鼠标右键删除、悬浮条关闭删除、拖曳到视频监控面板外删除等多种方式。
    14. 图片地图上设备按钮可自由拖动,自动保存位置信息。百度地图上可以鼠标单击获取经纬度信息,用来更新设备位置。
    15. 视频监控面板窗体中任意通道支持拖曳交换,瞬间响应。
    16. 封装了百度地图,视图切换,运动轨迹,设备点位,鼠标按下获取经纬度等。
    17. 双击节点、拖曳节点、拖曳窗体交换位置等操作,均自动更新保存最后的播放地址,下次软件打开自动应用。
    18. 右下角音量条控件,失去焦点自动隐藏,音量条带静音图标。
    19. 支持视频截图,可指定单个或者对所有通道截图,底部小工具栏也有截图按钮。
    20. 支持超时自动隐藏鼠标指针、自动全屏机制。
    21. 支持onvif云台控制,可上下左右移动云台摄像机,包括复位和焦距调整等。
    22. 支持任意onvif摄像机,包括但不限于海康、大华、宇视、天地伟业、华为等。
    23. 可保存视频,可选定时存储或者单文件存储,可选存储间隔时间。
    24. 可设置视频流通信方式tcp+udp,可设置视频解码是速度优先、质量优先、均衡等。
    25. 可设置软件中文名称、英文名称、LOGO图标等。
    26. 存储的视频文件支持导出到指定目录,支持批量上传到服务器。

    0.4.3 特色功能

    1. 主界面采用停靠窗体模式,各种组件以小模块的形式加入,可自定义任意模块加入。
    2. 停靠模块可拖动任意位置嵌入和悬浮,支持最大化全屏,支持多屏幕。
    3. 双重布局文件存储机制,正常模式、全屏模式都对应不同的布局方案,自动切换和保存,比如全屏模式可以突出几个模块透明显示在指定位置,更具科幻感现代化。
    4. 原创onvif协议机制,采用底层协议解析(udp广播搜索+http请求执行命令)更轻量易懂易学习拓展,不依赖任何第三方组件比如gsoap。
    5. 原创数据导入、导出、打印机制,跨平台不依赖任何组件,瞬间导出数据。
    6. 内置多个原创组件,宇宙超值超级牛逼,包括数据导入导出组件(导出到xls、pdf、打印)、数据库组件(数据库管理线程、自动清理数据线程、万能分页、数据请求等)、地图组件、视频监控组件、文件多线程收发组件、onvif通信组件、通用浏览器内核组件等。
    7. 自定义信息框+错误框+询问框+右下角提示框(包含多种格式)等。
    8. 精美换肤,高达17套皮肤样式随意更换,所有样式全部统一,包括菜单等。
    9. 视频控件悬浮条可以自行增加多个按钮,监控界面底部小工具栏也可自行增加按钮。
    10. 双击摄像机节点自动播放视频,双击节点自动依次添加视频,会自动跳到下一个,双击父节点自动添加该节点下的所有视频。可选主码流、子码流。
    11. 录像机管理、摄像机管理,可添加删除修改导入导出打印信息,立即应用新的设备信息生成树状列表,不需重启。
    12. 可选多种内核自由切换,ffmpeg、vlc、mpv等,均可在pro中设置。推荐用ffmpeg,跨平台最多,默认提供好了linux和mac平台上编译好的库。
    13. 支持硬解码,可设置硬解码类型(qsv、dxva2、d3d11va等)。
    14. 默认采用opengl绘制视频,超低的CPU资源占用,支持yuyv和nv12两种格式绘制,很牛逼。
    15. 高度可定制化,用户可以很方便的在此基础上衍生自己的功能,比如增加自定义模块,增加运行模式、机器人监控、无人机监控、挖掘机监控等。
    16. 支持xp、win7、win10、win11、linux、mac、各种国产系统(UOS、中标麒麟、银河麒麟等)、嵌入式linux等系统。
    17. 注释完整,项目结构清晰,超级详细完整的使用开发手册,精确到每个代码文件的功能说明,不断持续迭代版本。

    0.5 目录说明

    1. 本源码项目文件中对编译生成的临时文件和可执行文件做了重定向,可执行文件并不在build开头的目录下,而是在源码同级目录的bin目录下。
    2. config目录放的是软件的配置文件、地图模块需要的图片资源等。
    3. db目录一般有三个文件,key.db是秘钥文件、video_system.db是对应sqlite的数据库文件、video_system.sql是对应数据库脚本(可以在系统设置中数据库管理部分执行脚本用来切换到mysql等其他数据库)。
    4. logo目录存放的各种左上角软件LOGO图片,可以在系统设置中下拉选择。
    5. map目录存放的图片地图模块所用的地图图片文件,可以手动拷贝到此。
    6. sound目录存放的本系统所用的声音文件。
    7. layout目录存放的不同工作模式不同界面对应的布局方案配置文件。

    0.6 编译说明

    0.6.1 特别提示

    1. 本系统没有说基于哪个Qt版本,由于系统中电子地图模块用到了浏览器模块,所以理论上要求你电脑的Qt版本也有浏览器模块才行
    2. windows上Qt5.6以上的版本需要msvc编译器的版本才有,其余系统都会有。
    3. 如果没有则电子地图模块不可用,但是其余功能全部可用没有任何影响。
    4. 本人亲测4.7、4.8、5.5、5.6、5.7、5.9、5.12、5.13、5.14、5.15、6.1等。
    5. 2021-1-6开始集成了miniblink浏览器内核,意味着mingw版本的qt5.6以上版本也全部支持,这样就所有系统都有浏览器模块不需要担心没有电子地图的问题。
    6. 部分构建套件可能不支持预编译头,预编译头仅仅是为了加快编译速度,和程序本身无关。比如在win+Qt5.5 5.6就发现不支持,也可能是支持的不够全面,如果编译发生错误可以试着打开pro文件注释掉PRECOMPILED_HEADER = head.h 这行。
    7. 源码如果在嵌入式linux arm上编译,默认取消了视频监控内核ffmpeg,如果已经交叉编译好了对应arm的ffmpeg库,可以在pro中注释掉这个限制。 +

    0 前言说明

    0.1 系统说明

    1. 本视频监控系统做的是通用的系统,主要偏重整体框架和UI交互等。
    2. 主要功能包括摄像机管理,实时视频显示,视频轮询、视频存储、设备地图显示,各种画面切换,各种悬停子模块、onvif搜索设备和云台控制及预置位,通用的NVR视频流播放(比如海康的NVR支持直接取流回放)等功能。
    3. 如果是依赖SDK去实现的功能(雨刷、去雾等)都没有做,那个破坏了兼容性,无法通用其他摄像机设备以及其他操作系统。
    4. 每个厂家SDK和定制的功能都不一样,如果有这方面的需要都是买过去自己加上SDK的功能和自己定制需要的功能。
    5. 整个项目源代码行数大概30W行(项目代码本身除去第三方库以后约7W行,就是自己写的部分),其中代码13.5W行(占比45%),注释12.7W行(占比42%),空行3.5W行。分层设计注释详细。
    6. 本程序会一直持续迭代更新,包括项目源码、整体框架、使用说明等,购买者可永久免费升级,一次购买终生售后。

    0.2 特别说明

    1. 程序本身是个客户端(直接从摄像机取rtsp视频流)并不是服务器程序。
    2. 摄像机管理没有限制摄像机的数量,理论上10000路肯定没有问题,就是个数据库记录。
    3. 实时显示具体能支持多少路,和具体的电脑配置有关(亲测1.8G主频8G内存I5子码流64路,总之比海康大华客户端要更优秀)。
    4. 程序实时显示界面最大可以到64路,每个通道都是打开的时候才会去建立连接取视频流,而不是一开始就建立了连接。
    5. 系统采用onvif协议+rtsp视频流机制,并不限定支持哪家的摄像机,只要符合这两种协议的都支持,市面上99%的网络摄像机都支持这两种基础协议,包括但不限于海康、大华、宇视、天地伟业、华为等各种安防厂家的摄像机。
    6. 本系统没有内置人脸识别等任何相关算法,提供的是相关的接口,比如自己的算法识别到人脸区域后,将区域坐标传入视频控件自动绘制。
    7. 本系统适用于安防行业,所有录制视频也是针对摄像机的视频流,包括摄像机自身的rtsp格式视频流,摄像机重新推流的rtmp或者http的视频流,凡是源头不是摄像机的视频流一概不存储或者存储不成功,因为可能编码格式不一样。比如中央卫视、大雄兔等视频流是不存储的,因为源头不是摄像机。任何监控厂家的视频监控系统都是只存储监控摄像机的视频,其他一概不存储甚至添加都没法添加到系统中因为过滤掉了。
    8. 系统采用纯QtWidget(非qml)编写,解码采用ffmpeg,搜索采用onvif协议,视频播放采用rtsp协议,所有源码开放,并非有封装的库。
    9. 同时集成了数据库、多线程、串口通信、网络通信、音视频解码和同步、网页地图、界面美化、UI布局等众多知识点。
    10. 未经本人许可不可将本项目源码扩散,如有发现本人将追究法律责任,谢谢配合。

    0.3 相关站点

    1. 国内站点:https://gitee.com/feiyangqingyun
    2. 国际站点:https://github.com/feiyangqingyun
    3. 个人主页:https://blog.csdn.net/feiyangqingyun
    4. 知乎主页:https://www.zhihu.com/people/feiyangqingyun
    5. 产品主页:https://blog.csdn.net/feiyangqingyun/article/details/97565652
    6. 在线文档:https://feiyangqingyun.gitee.io/qwidgetdemo/video_system/
    7. 体验地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取码:01jf 文件名:bin_video_system.zip。
    8. 文章导航:https://qtchina.blog.csdn.net/article/details/121327495

    0.4 功能特点

    0.4.1 软件模块

    1. 视频监控模块,各种停靠小窗体子模块,包括设备列表、图文警情、窗口信息、云台控制、预置位、巡航设置、设备控制、悬浮地图、网页浏览等。
    2. 视频回放模块,包括本地回放、远程回放、设备播放、图片回放、视频上传等。
    3. 电子地图模块,包括图片地图、在线地图、离线地图、路径规划等。
    4. 日志查询模块,包括本地日志、设备日志等。
    5. 系统设置模块,包括系统设置(基本设置、视频参数、数据库设置、地图配置、串口配置等)、录像机管理、摄像机管理、轮询配置、用户管理等。

    0.4.2 基础功能

    1. 支持各种视频流(rtsp、rtmp、http等)、视频文件(mp4、rmvb、avi等)、本地USB摄像机播放。
    2. 支持多画面切换,包括1、4、6、8、9、13、16、25、36、64画面切换。
    3. 支持全屏切换,多种切换方式包括鼠标右键菜单、工具栏按钮、快捷键(alt+enter全屏,esc退出全屏)。
    4. 支持视频轮询,包括1、4、9、16画面轮询,可设置轮询分组(轮询预案)、轮询间隔、码流类型等。
    5. 支持onvif协议,包括设备搜索、云台控制、预置位、设备控制(图片参数、校对时间、系统重启,抓拍图片等)。
    6. 支持权限管理,不同的用户可以对应不同的模块权限,比如删除日志、关闭系统等。
    7. 数据库支持多种,包括sqlite、mysql、sqlserver、postgresql、oracle、人大金仓等。
    8. 本地USB摄像机支持设置分辨率、帧率等参数。
    9. 所有停靠模块都自动生成对应的菜单用来控制显示和隐藏,在标题栏右键可以弹出。
    10. 支持显示所有模块、隐藏所有模块、复位普通布局、复位全屏布局。
    11. 双击设备弹出实时预览视频,支持图片地图、在线地图、离线地图等。
    12. 摄像机节点拖曳到对应窗体播放视频,同时支持拖曳本地文件直接播放。
    13. 删除视频支持鼠标右键删除、悬浮条关闭删除、拖曳到视频监控面板外删除等多种方式。
    14. 图片地图上设备按钮可自由拖动,自动保存位置信息。百度地图上可以鼠标单击获取经纬度信息,用来更新设备位置。
    15. 视频监控面板窗体中任意通道支持拖曳交换,瞬间响应。
    16. 封装了百度地图,视图切换,运动轨迹,设备点位,鼠标按下获取经纬度等。
    17. 双击节点、拖曳节点、拖曳窗体交换位置等操作,均自动更新保存最后的播放地址,下次软件打开自动应用。
    18. 右下角音量条控件,失去焦点自动隐藏,音量条带静音图标。
    19. 支持视频截图,可指定单个或者对所有通道截图,底部小工具栏也有截图按钮。
    20. 支持超时自动隐藏鼠标指针、自动全屏机制。
    21. 支持onvif云台控制,可上下左右移动云台摄像机,包括复位和焦距调整等。
    22. 支持任意onvif摄像机,包括但不限于海康、大华、宇视、天地伟业、华为等。
    23. 可保存视频,可选定时存储或者单文件存储,可选存储间隔时间。
    24. 可设置视频流通信方式tcp+udp,可设置视频解码是速度优先、质量优先、均衡等。
    25. 可设置软件中文名称、英文名称、LOGO图标等。
    26. 存储的视频文件支持导出到指定目录,支持批量上传到服务器。

    0.4.3 特色功能

    1. 主界面采用停靠窗体模式,各种组件以小模块的形式加入,可自定义任意模块加入。
    2. 停靠模块可拖动任意位置嵌入和悬浮,支持最大化全屏,支持多屏幕。
    3. 双重布局文件存储机制,正常模式、全屏模式都对应不同的布局方案,自动切换和保存,比如全屏模式可以突出几个模块透明显示在指定位置,更具科幻感现代化。
    4. 原创onvif协议机制,采用底层协议解析(udp广播搜索+http请求执行命令)更轻量易懂易学习拓展,不依赖任何第三方组件比如gsoap。
    5. 原创数据导入、导出、打印机制,跨平台不依赖任何组件,瞬间导出数据。
    6. 内置多个原创组件,宇宙超值超级牛逼,包括数据导入导出组件(导出到xls、pdf、打印)、数据库组件(数据库管理线程、自动清理数据线程、万能分页、数据请求等)、地图组件、视频监控组件、文件多线程收发组件、onvif通信组件、通用浏览器内核组件等。
    7. 自定义信息框+错误框+询问框+右下角提示框(包含多种格式)等。
    8. 精美换肤,高达17套皮肤样式随意更换,所有样式全部统一,包括菜单等。
    9. 视频控件悬浮条可以自行增加多个按钮,监控界面底部小工具栏也可自行增加按钮。
    10. 双击摄像机节点自动播放视频,双击节点自动依次添加视频,会自动跳到下一个,双击父节点自动添加该节点下的所有视频。可选主码流、子码流。
    11. 录像机管理、摄像机管理,可添加删除修改导入导出打印信息,立即应用新的设备信息生成树状列表,不需重启。
    12. 可选多种内核自由切换,ffmpeg、vlc、mpv等,均可在pro中设置。推荐用ffmpeg,跨平台最多,默认提供好了linux和mac平台上编译好的库。
    13. 支持硬解码,可设置硬解码类型(qsv、dxva2、d3d11va等)。
    14. 默认采用opengl绘制视频,超低的CPU资源占用,支持yuyv和nv12两种格式绘制,很牛逼。
    15. 高度可定制化,用户可以很方便的在此基础上衍生自己的功能,比如增加自定义模块,增加运行模式、机器人监控、无人机监控、挖掘机监控等。
    16. 支持xp、win7、win10、win11、linux、mac、各种国产系统(UOS、中标麒麟、银河麒麟等)、嵌入式linux等系统。
    17. 注释完整,项目结构清晰,超级详细完整的使用开发手册,精确到每个代码文件的功能说明,不断持续迭代版本。

    0.5 目录说明

    1. 本源码项目文件中对编译生成的临时文件和可执行文件做了重定向,可执行文件并不在build开头的目录下,而是在源码同级目录的bin目录下。
    2. config目录放的是软件的配置文件、地图模块需要的图片资源等。
    3. db目录一般有三个文件,key.db是秘钥文件、video_system.db是对应sqlite的数据库文件、video_system.sql是对应数据库脚本(可以在系统设置中数据库管理部分执行脚本用来切换到mysql等其他数据库)。
    4. logo目录存放的各种左上角软件LOGO图片,可以在系统设置中下拉选择。
    5. map目录存放的图片地图模块所用的地图图片文件,可以手动拷贝到此。
    6. sound目录存放的本系统所用的声音文件。
    7. layout目录存放的不同工作模式不同界面对应的布局方案配置文件。

    0.6 编译说明

    0.6.1 特别提示

    1. 本系统没有说基于哪个Qt版本,由于系统中电子地图模块用到了浏览器模块,所以理论上要求你电脑的Qt版本也有浏览器模块才行
    2. windows上Qt5.6以上的版本需要msvc编译器的版本才有,其余系统都会有。
    3. 如果没有则电子地图模块不可用,但是其余功能全部可用没有任何影响。
    4. 本人亲测4.7、4.8、5.5、5.6、5.7、5.9、5.12、5.13、5.14、5.15、6.1等。
    5. 2021-1-6开始集成了miniblink浏览器内核,意味着mingw版本的qt5.6以上版本也全部支持,这样就所有系统都有浏览器模块不需要担心没有电子地图的问题。
    6. 部分构建套件可能不支持预编译头,预编译头仅仅是为了加快编译速度,和程序本身无关。比如在win+Qt5.5 5.6就发现不支持,也可能是支持的不够全面,如果编译发生错误可以试着打开pro文件注释掉PRECOMPILED_HEADER = head.h 这行。
    7. 源码如果在嵌入式linux arm上编译,默认取消了视频监控内核ffmpeg,如果已经交叉编译好了对应arm的ffmpeg库,可以在pro中注释掉这个限制。 contains(QT_ARCH, arm) { DEFINES -= videoffmpeg }
    8. Qt6.2的mingw版本的multimedia模块不可用,msvc版本的正常。
    9. 推荐用64位的Qt搭配64位的ffmpeg,目前绝大部分系统都是64位的,能获得最大性能提升,本人亲自对比测试32位和64位,64位无论资源占用和操作响应等体验都更优。

    0.6.2 注意事项

    1. 可执行文件在源码同级目录的bin目录下。
    2. 编译完成后记得将源码下的file目录下(切记是file目录下而不是file目录)的所有文件复制到可执行文件同一目录。
    3. 如果开启了视频监控(默认开启),则记得将对应的动态库文件复制到可执行文件同一目录。比如采用ffmpeg内核(默认就是ffmpeg)的话,则将下载到的dll_ffmpeg4下的所有文件复制到可执行文件同一目录。
    4. 各个操作系统的ffmpeg和vlc编译好的动态库以及miniblink的动态库下载地址。 -https://pan.baidu.com/s/13LDRu6mXC6gaADtrGprNVA  提取码: ujm7。
    5. 如果是64位的qt则对应的dll时候拷贝dll_ffmpeg4_64目录下的。
    6. 如果使用的ffmpeg3则对应dll目录就是dll_ffmpeg,在ffmpeg.pri文件中可以看到具体启用的是ffmpeg3(支持XP)还是ffmpeg4(不支持XP),默认是ffmpeg4。
    7. 如果编译运行提示miniblink文件不存在请先拷贝,则说明你当前用的Qt版本没有浏览器模块,要么没安装,要么不支持,你也不用担心啥,此时自动切换用的miniblink浏览器内核,你还需要将ffmpeg库下载的网盘的地方找到dll_miniblink.zip下载解压到可执行文件同一目录即可。
    8. 系统中所有的图标,都采用的图形字体,对照表在doc目录下的FontAwesome.png、FontAliBaBa.png,对应图形字体类IconHelper中加载的图形字体,后期如果还有增加的其他图形字体也是放在这里,一个类支持多种图形字体,通过不同的值范围自动设置。
    9. 如果发现地图打不开或者提示秘钥文件丢失,请先确认file目录下的所有文件有没有拷贝过去。
    10. 如果是用vs+qt可能报错 error LNK2026,解决办法详细见文档中其他说明。
    11. 默认用户名admin 密码admin。
    12. 系统配置参数在加载的时候会对节点值进行过滤判断,如果为空会自动用初始值生成新的配置文件,如果不想要显示版权所有公司,可以填xxx而不是删掉整个值。
    13. 如果是用vlc推流的rtsp地址,比如 rtsp://:8554/aabb,由于vlc推流默认写死的采用的udp协议,所以监控系统也必须在系统设置中通信方式选择udp才行(默认tcp)。

    0.6.3 离线地图

    1. 离线地图可以用网上的瓦片地图下载器下载百度的离线地图放到对应目录即可。
    2. 也可以直接下载网盘中已经下载好的上海市的离线地图。
    3. 下载地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取码:o05q 文件名称:bin_map_tiles.tar.xz

    使用说明

    1. 将压缩包下的两个文件夹复制到对应可执行文件下的config文件夹下,和map.js文件同一级目录。
    2. tiles文件夹是街道图,tiles_hybrid文件夹是卫星图,tiles_self是路网图,路网图和卫星图合并就是混合图。
    3. 默认提供的是上海市徐汇区的瓦片地图,如果自己用万能地图下载器下载的百度地图的瓦片文件,也可以对应替换就行。
    4. 要注意的是格式,默认是jpg,如果下载的瓦片地图格式是png则需要打开config文件夹下的map_load.js文件,将.jpg改成.png保存即可。

    0.7 视频格式

    0.7.1 USB摄像头

    1. 内核ffmpeg写法:video=USB2.0 PC CAMERA(具体要看设备名)。
    2. 内核vlc写法:dshow://:dshow-vdev=Default (或者填USB2.0 PC CAMERA)
    3. 带参数写法:2020-12-12以后增加USB摄像头直接url带分辨率帧率写法,默认分辨率640x480。

    写法举例

    1. video=USB2.0 PC CAMERA|1920x1080|30(表示1920*1080分辨率30帧)
    2. video=USB2.0 PC CAMERA|640x480(表示640*480分辨率)
    3. dshow://:dshow-vdev=USB2.0 PC CAMERA(表示打开视频设备USB2.0 PC CAMERA、其他参数全部默认)
    4. dshow://:dshow-vdev=USB2.0 PC CAMERA:dshow-adev=麦克风 (USB Audio Device):dshow-size=1920*1080:live-caching=300(表示打开视频设备USB2.0 PC CAMERA、打开音频设备麦克风 (USB Audio Device)、分辨率640x480、缓存时间300毫秒)

    0.7.2 网络地址

    1. 下面的地址有时候会失效,可以自行网上找找其他的地址,网络视频地址建议在晚上测试会更流畅。
    2. 大雄兔:rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
    3. 大雄兔:http://r.ossrs.net/live/bbb.flv
    4. 海康萤石:https://hls01open.ys7.com/openlive/6e0b2be040a943489ef0b9bb344b96b8.hd.m3u8
    5. 在线摄像机:http://vts.simba-cn.com:280/gb28181/21100000001320000002.m3u8
    6. 摄像机格式:https://blog.csdn.net/qq_38880380/article/details/80652697

    0.7.3 中央卫视

    1. 中央卫视1:rtmp://58.200.131.2:1935/livetv/cctv1
    2. 中央卫视2:rtmp://58.200.131.2:1935/livetv/cctv2
    3. 中央卫视3:rtmp://58.200.131.2:1935/livetv/cctv3
    4. 中央卫视4:rtmp://58.200.131.2:1935/livetv/cctv4
    5. 中央卫视5:rtmp://58.200.131.2:1935/livetv/cctv5
    6. 中央卫视6:rtmp://58.200.131.2:1935/livetv/cctv6
    7. 中央卫视7:rtmp://58.200.131.2:1935/livetv/cctv7
    8. 中央卫视8:rtmp://58.200.131.2:1935/livetv/cctv8
    9. 中央卫视9:rtmp://58.200.131.2:1935/livetv/cctv9
    10. 中央卫视10:rtmp://58.200.131.2:1935/livetv/cctv10

    0.7.4 视频文件

    万能办法,用谷歌或者谷歌内核的浏览器,打开时光网http://www.mtime.com/ ,随便打开个视频,这里一般是预告片,按F12切换到审查元素,顶部切换到网络,选中媒体,刷新网页,按照尺寸排列,最大的那个MP4文件就是,鼠标右键复制地址,这个地址就是完整的网络地址。

    1. http://vfx.mtime.cn/Video/2019/02/04/mp4/190204084208765161.mp4
    2. http://vfx.mtime.cn/Video/2019/03/19/mp4/190319212559089721.mp4
    3. http://vfx.mtime.cn/Video/2019/03/17/mp4/190317150237409904.mp4
    4. http://vfx.mtime.cn/Video/2019/03/14/mp4/190314223540373995.mp4

    0.7.5 网友提供

    1. rtmp://live.yihtc.com:10935/hls/stream_3
    2. rtmp://live.yihtc.com:10935/hls/stream_13
    3. rtmp://218.3.205.46/live/ggpd_sd
    4. rtmp://hls.hsrtv.cn/hls/hstv2
    5. rtmp://hls.hsrtv.cn/hls/hstv1
    6. rtmp://222.173.22.119:1935/live/jnyd_sd
    7. rtmp://222.173.22.119:1935/live/xwhd_hd
    8. rtmp://livetv.dhtv.cn:1935/live/peoples
    9. rtmp://livetv.dhtv.cn:1935/live/citylife
    10. rtmp://livetv.dhtv.cn:1935/live/financial
    11. rtmp://livetv.dhtv.cn:1935/live/news

    0.8 版本说明

    0.8.1 精益求精

    0.8.2 破茧成蝶

    • 考虑增加mediaplayer内核,限定Qt5.有些嵌入式板子支持mediaplay硬解码。
    • 考虑提取抽象视频控件类,可以将vlc、ffmpeg、mpv、海康等视频类移除大量重复代码。

    V20220515

    1. 将用户退出中的退出系统权限验证去掉,理论上对退出系统这个限制没啥意义,还可以通过任务管理器强制关闭进程。
    2. 将退出系统的权限名称改成调整布局,没有调整布局权限则不能调整拖动停靠窗体位置等。
    3. 视频面板窗体对象指针放到了全局静态变量,这样很多地方可以直接使用,比如声音控制、布局调整、视频轮询等。这样就不用繁琐的信号槽切换,可以省略很多不必要的代码,性能更高。
    4. 修复静音状态下调整音量可能不正确的BUG,静音状态下只改变音量值变量而不是正常改变音量。
    5. 实现右下角音量面板静音切换、音量值调整,全局视频控件应用。
    6. 改进默认地图算法,取第一个有背景地图的设备的图片作为默认图片,可能默认图片不存在则取图片列表中的第一张。

    V20220413

    1. 修复视频控件设置自定义背景颜色的时候,没有考虑边框的范围问题。
    2. 选项卡样式去掉悬停样式,经过观察对比Qt自带的样式都是没有悬停样式,直接是选中样式。
    3. 修复自定义委托复选框不居中的问题,之前计算不准确会有细微偏差。
    4. 自定义委托增加悬停颜色。
    5. 重写自定义委托禁用列,支持文字颜色、背景颜色、字体等特性。
    6. 修复用户登录、用户退出界面标题栏字体被放大的BUG,因为样式冲突了。
    7. 将NvrInfo和IpcInfo中的地址字段改名为mark备注字段,涵盖内容更广。
    8. 地图模块默认卫星图增加了叠加层,更符合实际需求,对应地图综合应用示例做了极大升级改善,比如下载离线地图改成了最新的地址,可以下载到和在线地图一样的瓦片图片文件,离线地图下载改成了多线程,速度提升10倍以上。
    9. 自定义委托增加quistyle标记,有该标记则自动代码内部引用换肤全局颜色变量,这样删除了大量的设置自定义委托背景颜色的代码。
    10. 修复Qt6中msvc编译器下,强制指定miniblink浏览器内核的时候编译通不过的BUG,其实这个操作有点吃饱了撑着,因为msvc下有webengine浏览器内核。但是就是因为有极个别人有这个需求,客户就是上帝。
    11. 增加用户管理权限。
    12. 将用户权限和用户信息相关类合并到通用的类userhelper中,做成通用的权限组件。
    13. 修复Qt6中自定义复选框委托,在设置了全局样式的情况下,会不断切换选中的BUG。
    14. 效果图重新截图,用最新的运行界面。
    15. 组件示例增加4通道视频同时播放,进度条控制。

    V20220106

    1. 彻底修复全屏模式+webengine同时存在的情况下鼠标右键菜单无法弹出以及视频可能黑屏的BUG,这是Qt的BUG。
    2. 同时测试多屏幕下正常状态和全屏状态的情况,多屏幕不同分辨率。
    3. 增加其他设置界面,将串口设置、网络设置等移动到其他设置。随着功能越来越多,也很有必要单独拆分设置。
    4. 修复打印预览看不到文字的BUG,原来是设置了QGraphicsView的前景色导致的,把前景色和背景色设置成一样的了,其实是有文字的,鬼想得到QPrintPreviewDialog里面的预览原来用的是QGraphicsView绘制的。
    5. 修复qchart图表控件鼠标按下松开后会跟随窗体移动的BUG,因为qchart鼠标按下是UngrabMouse事件而不是MouseButtonRelease。
    6. 修复表格行按下后自定义委托颜色在部分样式方案下设置不正确的BUG。
    7. 增加视频弹窗按钮,封装的统一的视频弹窗静态函数,直接传入url地址即可。
    8. 修复鼠标按下视频预览底部工具栏也能拖曳视频的BUG。
    9. 海康内核解析增加对通道的解析,比如可能是一个摄像机有多个通道,或者NVR多个通道。同时完善主码流子码流的解析,可以解析多个码流,之前只能解析主码流子码流两个。
    10. 海康内核句柄模式下增加等比例缩放自适应。
    11. onvif模块修复部分厂家摄像机比如天地伟业,搜索返回的媒体地址等一系列请求地址,没有加onvif节点的BUG。

    V20211220

    1. 重新梳理整个onvif模块,调整对应的结构,删除多余的变量和设置等,对应云台控制等操作需要指定profile,通过参数传入。
    2. 对应图片参数操作需要指定videosource,通过参数传入。
    3. 去除数据库字段mediaurl、ptzurl,因为这两个数据每次都是更新重新获取的,通过getServices获取,这两个字段改成了videosource、profiletoken,用来从数据库读取出来,每次使用的时候自动下发。
    4. 预置位表格中的按钮样式调整,去掉圆角,增加边距,效果更完美。
    5. 新增nvr多个通道onvif支持,改动onvif模块代码和数据库结构。
    • 搜索设备后判断是否多个videosource,多个表示有多个视频源,一般是NVR,也有部分IPC自带多个视频源。
    • 有多个则根据不同厂家不同规则,找出对应的每个通道的videosource、profiletoken、rtspmain、rtspsub用分隔符 | 插入到临时表格中。
    • 摄像机管理界面接收到添加设备的时候,在addDevice槽函数中,判断发过来的数据,带了 | 要分别取出来作为通道添加到数据库中。
    1. 重新定义搜索的摄像机设备命名规则,按照摄像机#ip地址末尾数字的方式。
    2. 如果是NVR过来的摄像机,增加自动查找NVR的名称插入数据库。
    3. 获取预置位增加立即清空所有行,之前是先清空内容再根据读取到的预置位个数设置行数。
    4. 增加双击打开NVR(也叫分组)对应策略 0-最后空白通道 1-从头清空通道。
    5. 增加双击打开IPC(也叫设备)对应策略 0-最后空白通道 1-最后按下通道。
    6. 改进在分辨率不同缩放比例保持一致的UI体验,不受缩放比例的影响。
    7. 修正异或加密,增加对@String开头的密文进行过滤,防止高版本产生的配置文件到低版本的Qt程序不能正确解析的BUG。
    8. 如果打开视频流出错提示 Server returned 5XX Server Error reply 表示摄像机的码流满了,可能多个地方在拉取码流导致摄像机输出的视频流被占满,已经没有更多资源。

    V20211205

    1. 地图内核增加了海量点接口。
    2. 路径规划模块彻底重写,支持重新绘制、沿线移动等模式,数据表格显示。
    3. 设备轨迹模块改成从gps点集合文本文件加载进行循环动态模拟移动,默认飞机图标,以便转动角度。
    4. 设备播放增加保存视频开关配置参数,可以直接在界面上开启,开启后,通过rtsp从nvr取流比如回放视频,可以将回放的视频保存MP4文件到本地。
    5. 修正Qt6通过属性设置标签labtip不能居中对齐的BUG。
    6. 封装通用的设置一堆按钮比如添加、删除、保存、导入、导出等按钮图形字体的函数,直接传入父面板即可,自动查找对应的objname设置图标,省去一堆重复代码。
    7. 新增飞行轨迹模块frmDeviceGps2,之前的frmDeviceGps作为通过外部函数调用移动。
    8. 样式统一整理规范,分类6大类:normal、black、light、dark、flat、other。
    \ No newline at end of file