diff --git a/docs/bigscreen/index.html b/docs/bigscreen/index.html index 4d3bc5b..bb085e0 100644 --- a/docs/bigscreen/index.html +++ b/docs/bigscreen/index.html @@ -199,6 +199,7 @@ mark .md-meta { color: rgb(0, 0, 0); } .typora-export-no-collapse-outline .outline-expander::before { content: "" !important; } .typora-export-show-outline .outline-item-active > .outline-item .outline-label { font-weight: 700; } .md-inline-math-container mjx-container { zoom: 0.95; } +mjx-container { break-inside: avoid; } .CodeMirror { height: auto; } @@ -671,11 +672,11 @@ header, .context-menu, .megamenu-content, footer{ 可视化大屏系统开发及使用手册
-
  • 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 启动窗体

      系统内置了多种启动窗体,默认大屏系统,可以通过鼠标右键菜单进入系统设置,启动窗体下拉框选择进行切换,切换后会自动重启应用,还可选择控件演示、模块演示,在控件演示和模块演示窗体中,左侧是对应子窗体导航,会自动记住最后选中的子界面索引。 +

  • 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 映像是不安全的。
    • 第一步:打开该项目的“属性页”对话框。
    • 第二步:单击“链接器”文件夹。
    • 第三步:单击“命令行”属性页。
    • 第四步:将 /SAFESEH:NO 键入“附加选项”框中,然后点击应用。

    0.2 版本说明

    V20220718

    1. 中间地图模块增加隐藏地图功能,只保留最顶部的标题栏。
    2. 增加表格看板模块,通用的表格窗体模块,指定表名、列名、列宽即可,自动刷新对应表数据。可以作为ERP库存电子看板使用。

    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 启动窗体

      系统内置了多种启动窗体,默认大屏系统,可以通过鼠标右键菜单进入系统设置,启动窗体下拉框选择进行切换,切换后会自动重启应用,还可选择控件演示、模块演示,在控件演示和模块演示窗体中,左侧是对应子窗体导航,会自动记住最后选中的子界面索引。

    1.1.1.1 大屏系统

    1.1.1.2 模块演示

    1.1.1.3 控件演示

    1.1.2 系统菜单

    在大屏的顶部中间标题栏或者子模块以外的标题栏,鼠标右键弹出的是系统的菜单,包括布局切换和样式切换等。

    1.1.3 模块菜单

    -

    在模块的标题栏,鼠标右键弹出的是模块可视化的菜单,这个是Qt内置生成的,加载了多少个子模块就会生成多少个菜单项,可以对每个模块进行显示隐藏切换。

    1.1.4 布局切换

    在弹出的系统菜单选择布局方案,在弹出的二级菜单选择默认已经设置好的布局方案,直接切换即可。

    1.1.5 新建布局

    在弹出的系统菜单选择新建布局,在弹出的框中输入布局名称,确认后,自由拖动调整模块位置,打开模块、隐藏模块,之后单击保存布局即可。

    1.1.6 全局换肤

    在弹出的系统菜单选择配色方案,在弹出的二级菜单选择对应的配色方案,默认有四种:紫色风格、蓝色风格、深蓝风格、黑色风格。

    1.1.7 模块拖动

    鼠标移动到子模块的标题栏,鼠标按下可以拖动这个模块到任意位置,模块也可以拖动独立位置展示,也可以嵌入到对应布局中,拖动好位置以后自动保存到布局方案,下次启动自动应用。双击模块标题栏可以剥离窗体使之悬浮。

    1.1.8 调整间距

    鼠标移动到模块与模块的边缘,鼠标变成调整间距样式,可以左右或者上下拉动,调整好间距以后自动保存到布局方案,下次启动自动应用。

    1.2 系统设置

    系统设置中的参数,可能会不定期做调整和修改及增加,下面的图示和参数描述未必全部一致,以最新的为准。

    1.2.1 基本设置

    参数说明

    1. 开机启动:默认关闭,开启后软件会随系统启动而启动。
    2. 模块拖动:默认开启,开启后模块可以自由拖动到合适的位置松开,一般在布局固定后在关闭,防止使用者在现场又托乱了。
    3. 切左下角:开启裁掉左下角以后,左侧底部和整体底部合并为一体,作为全局底部的一部分,就可以拖动模块到左侧底部,否则左侧底部作为左侧的一部分。
    4. 切右下角:开启裁掉右下角以后,右侧底部和整体底部合并为一体,作为全局底部的一部分,就可以拖动模块到右侧底部,否则右侧底部作为右侧的一部分。
    5. 定位线条:系统中曲线图表内置了定位线条,比如1月份,方便查看,可以开启。
    6. 百分符号:系统中曲线图表Y轴,有时候需要按照 100% 后面带百分比符号显示。
    7. 隐藏鼠标:鼠标未操作多久自动隐藏鼠标指针,默认5秒钟。
    8. 启动窗体:选择程序运行的启动窗体,默认大屏系统,还可选择控件演示、模块演示。
    9. 工作模式:默认工作模式是模拟数据,还可以选择数据库采集、串口采集(未实现)、网络采集(未实现)、网络请求。
    10. 地图样式:可选择静态图片、闪烁效果、迁徙效果、世界地图、区域地图多种样式,如果没有开启浏览器模块则自动采用静态图片的方式,区域地图默认是江西省吉安市,可以在代码中修改。
    11. 布局方案:和系统右键菜单中的布局方案功能一样。
    12. 软件标题:软件的标题文字,显示在软件中间顶部。
    13. 请求地址:工作模式选择网络请求的时候发送的网络请求地址。

    1.2.2 视频设置

    参数说明

    1. 视频循环:开启后设定的视频打开后会循环播放。
    2. 视频拉伸:开启后视频会填充整个窗体拉伸图像,否则按照比例自动拉伸。
    3. 视频回调:开启后采用CPU绘制图像,部分设备没有GPU需要开启。
    4. 视频循环:开启后会不断循环播放视频文件。
    5. 视频地址:视频窗体对应的视频地址,可以下拉选择内置的一些地址,也可以手动填写,如果多个视频窗口则自己增加对应的配置参数,支持本地视频文件、USB摄像头、网络摄像头、视频流地址等各种。

    1.2.3 采集间隔设置

    采集间隔设置不用做说明,一看就懂,单位毫秒,可定制每个模块都对应自己的采集方式、数据库、间隔等。

    1.2.4 数据库设置

    理论上支持Qt支持的所有数据库,和具体程序无关,只要有对应的数据库的动态库和插件库就行,或者支持odbc数据源也可以,程序打通了odbc数据源的通信方式,所以支持各种数据库,可以先自己用对应的数据库工具连接数据库试试,通了数据库正常后在来测试程序。

    亲测 Sqlite(Qt内置无需额外动态库)、MySql(高版本Qt需要自行编译插件)、PostgreSQL(开源免费的数据库,很好用)、SqlServer(需要设置ODBC数据源)、kingbase(国产人大金仓数据库,该数据库其实是基于PostgreSQL改的,通过odbc数据源方式测试无误)。

    连接测试用来测试当前选择的数据库类型以及数据库信息,是否能连接数据库正常,可以避免数据库不通的情况下用来检测是否信息填写正确。

    初始化数据库按钮用来执行sql脚本来生成对应的数据库,部分数据库支持数据库文件不存在的情况下通过sql语句来创建数据库,比如mysql、postgres等就支持直接sql语句新建数据库,有部分数据库可能不支持,需要手动先在数据库管理工具中新建好数据库,然后再来这里执行初始化数据库用来新建表和初始数据。

    1.3 工作模式

    本系统支持多种工作模式,以便适应各种需求,默认采用随机模拟数据,大屏基础版本也采用此工作模式。

    1.3.1 模拟数据

    如果工作模式选择的是模拟数据,则采用随机数模拟生成数据并设置。

    1.3.2 数据库采集

    具体数据库表字段说明参见后面的数据库说明。

    如果工作模式选择的是数据库采集,则会自动连接设置的数据库,可以用对应的数据库管理工具连接数据库,打开对应的表,然后更改其中的数据,保存,可看到对应的数据反应到界面上。

    系统支持一个系统下的软件远程访问另一个系统下的数据库,比如linux系统或者mac系统远程访问win系统上的mysql数据库,数据库也可以放在云端比如阿里云(亲测无误),只要对应IP和端口可达就行,验证是否可达可以用对应的数据库管理工具连接即可。

    理论上odbc的方式支持多种数据库,比如sql server,oracle,postgresql等,所以如果没有插件支持的数据库可以考虑用odbc的方式,odbc也是跨平台的。

    如果需要远程访问mysql数据库,mysql数据库需要设置用户 root@% +

    在模块的标题栏,鼠标右键弹出的是模块可视化的菜单,这个是Qt内置生成的,加载了多少个子模块就会生成多少个菜单项,可以对每个模块进行显示隐藏切换。

    1.1.4 布局切换

    在弹出的系统菜单选择布局方案,在弹出的二级菜单选择默认已经设置好的布局方案,直接切换即可。

    1.1.5 新建布局

    在弹出的系统菜单选择新建布局,在弹出的框中输入布局名称,确认后,自由拖动调整模块位置,打开模块、隐藏模块,之后单击保存布局即可。

    1.1.6 全局换肤

    在弹出的系统菜单选择配色方案,在弹出的二级菜单选择对应的配色方案,默认有四种:紫色风格、蓝色风格、深蓝风格、黑色风格。

    1.1.7 模块拖动

    鼠标移动到子模块的标题栏,鼠标按下可以拖动这个模块到任意位置,模块也可以拖动独立位置展示,也可以嵌入到对应布局中,拖动好位置以后自动保存到布局方案,下次启动自动应用。双击模块标题栏可以剥离窗体使之悬浮。

    1.1.8 调整间距

    鼠标移动到模块与模块的边缘,鼠标变成调整间距样式,可以左右或者上下拉动,调整好间距以后自动保存到布局方案,下次启动自动应用。

    1.2 系统设置

    系统设置中的参数,可能会不定期做调整和修改及增加,下面的图示和参数描述未必全部一致,以最新的为准。

    1.2.1 基本设置

    参数说明

    1. 开机启动:默认关闭,开启后软件会随系统启动而启动。
    2. 模块拖动:默认开启,开启后模块可以自由拖动到合适的位置松开,一般在布局固定后在关闭,防止使用者在现场又托乱了。
    3. 切左下角:开启裁掉左下角以后,左侧底部和整体底部合并为一体,作为全局底部的一部分,就可以拖动模块到左侧底部,否则左侧底部作为左侧的一部分。
    4. 切右下角:开启裁掉右下角以后,右侧底部和整体底部合并为一体,作为全局底部的一部分,就可以拖动模块到右侧底部,否则右侧底部作为右侧的一部分。
    5. 定位线条:系统中曲线图表内置了定位线条,比如1月份,方便查看,可以开启。
    6. 百分符号:系统中曲线图表Y轴,有时候需要按照 100% 后面带百分比符号显示。
    7. 隐藏鼠标:鼠标未操作多久自动隐藏鼠标指针,默认5秒钟。
    8. 启动窗体:选择程序运行的启动窗体,默认大屏系统,还可选择控件演示、模块演示。
    9. 工作模式:默认工作模式是模拟数据,还可以选择数据库采集、串口采集(未实现)、网络采集(未实现)、网络请求。
    10. 地图样式:可选择静态图片、闪烁效果、迁徙效果、世界地图、区域地图多种样式,如果没有开启浏览器模块则自动采用静态图片的方式,区域地图默认是江西省吉安市,可以在代码中修改。
    11. 布局方案:和系统右键菜单中的布局方案功能一样。
    12. 软件标题:软件的标题文字,显示在软件中间顶部。
    13. 请求地址:工作模式选择网络请求的时候发送的网络请求地址。

    1.2.2 视频设置

    参数说明

    1. 视频循环:开启后设定的视频打开后会循环播放。
    2. 视频拉伸:开启后视频会填充整个窗体拉伸图像,否则按照比例自动拉伸。
    3. 视频回调:开启后采用CPU绘制图像,部分设备没有GPU需要开启。
    4. 视频循环:开启后会不断循环播放视频文件。
    5. 视频地址:视频窗体对应的视频地址,可以下拉选择内置的一些地址,也可以手动填写,如果多个视频窗口则自己增加对应的配置参数,支持本地视频文件、USB摄像头、网络摄像头、视频流地址等各种。

    1.2.3 采集间隔设置

    采集间隔设置不用做说明,一看就懂,单位毫秒,可定制每个模块都对应自己的采集方式、数据库、间隔等。

    1.2.4 数据库设置

    理论上支持Qt支持的所有数据库,和具体程序无关,只要有对应的数据库的动态库和插件库就行,或者支持odbc数据源也可以,程序打通了odbc数据源的通信方式,所以支持各种数据库,可以先自己用对应的数据库工具连接数据库试试,通了数据库正常后在来测试程序。

    亲测 Sqlite(Qt内置无需额外动态库)、MySql(高版本Qt需要自行编译插件)、PostgreSQL(开源免费的数据库,很好用)、SqlServer(需要设置ODBC数据源)、kingbase(国产人大金仓数据库,该数据库其实是基于PostgreSQL改的,通过odbc数据源方式测试无误)。

    连接测试用来测试当前选择的数据库类型以及数据库信息,是否能连接数据库正常,可以避免数据库不通的情况下用来检测是否信息填写正确。

    初始化数据库按钮用来执行sql脚本来生成对应的数据库,部分数据库支持数据库文件不存在的情况下通过sql语句来创建数据库,比如mysql、postgres等就支持直接sql语句新建数据库,有部分数据库可能不支持,需要手动先在数据库管理工具中新建好数据库,然后再来这里执行初始化数据库用来新建表和初始数据。

    1.3 工作模式

    本系统支持多种工作模式,以便适应各种需求,默认采用随机模拟数据,大屏基础版本也采用此工作模式。

    1.3.1 模拟数据

    如果工作模式选择的是模拟数据,则采用随机数模拟生成数据并设置。

    1.3.2 数据库采集

    具体数据库表字段说明参见后面的数据库说明。

    如果工作模式选择的是数据库采集,则会自动连接设置的数据库,可以用对应的数据库管理工具连接数据库,打开对应的表,然后更改其中的数据,保存,可看到对应的数据反应到界面上。

    系统支持一个系统下的软件远程访问另一个系统下的数据库,比如linux系统或者mac系统远程访问win系统上的mysql数据库,数据库也可以放在云端比如阿里云(亲测无误),只要对应IP和端口可达就行,验证是否可达可以用对应的数据库管理工具连接即可。

    理论上odbc的方式支持多种数据库,比如sql server,oracle,postgresql等,所以如果没有插件支持的数据库可以考虑用odbc的方式,odbc也是跨平台的。

    如果需要远程访问mysql数据库,mysql数据库需要设置用户 root@% sql server数据库的配置规则,下面的链接只是参考,基本上正常电脑安装好以后都不需要下面的配置。 https://blog.csdn.net/mozhi111/article/details/80281388 @@ -684,7 +685,7 @@ header, .context-menu, .megamenu-content, footer{ https://blog.csdn.net/weixin_36816337/article/details/81739819 人大金仓数据库kingbase,其实就是postgresql数据库改的,如果是WIN10系统建议安装在系统盘以外,不然没有权限,导致奇奇怪怪的问题。

    特别提示

    • 数据库有位数区分,如果是32位的qt,对应打包目录要放32位的数据库的dll,比如放32位的libmysql.dll,不然会提示找不到驱动。
    • 无论32位还是64位的qt程序,都能连接64位的数据库。
    • 意思是在开发阶段,必须放正确位数的dll,而数据库只需要安装64位的即可。
    • sqlserver数据库采用odbc数据源的方式进行连接,而且是微软亲生的,估计在系统层做了无微不至的关怀,qt程序发布的时候啥也不用带。

    1.3.3 串口采集

    需要定制协议,比如RS232、RS485、Modbus、Mqtt等

    1.3.4 网络采集

    需要定制协议,比如tcp client、tcp server、udp client、udp server、websocket等。

    1.3.5 网络请求

    找到bigscreen可执行文件所在目录下的httpserver文件,双击运行,切换到网络请求服务器页面,回复数据选择文件内容,单击启动服务器,左侧消息栏可以看到实时打印的数据,从json文件读取的数据,实际中可以是从数据库中采集的数据等。网络请求客户端/服务器工具httpserver,也是纯Qt编写的工具。

    功能特点

    1. 支持多个客户端连接并发同时处理,100个毫无压力。
    2. 可设置http请求是长连接还是短连接,默认长连接。
    3. 支持多种回复数据格式,其中包括网页内容、json数据等。
    4. 服务端示例中同时包含读取文件回复、读取数据库回复。
    5. 支持8种配色方案(暗黑、灰黑、深绿、浅黄、深蓝、深黑、暗蓝、默认)。
    6. 客户端可指定请求地址,服务端可指定网卡和端口进行监听。
    7. 所有请求和连接都有计数,所有在线请求的IP和端口都显示在表格中。
    8. 可以提供一个简易的网页配置服务,包括交互,作为设备的web配置。
    9. 可自由拓展增加权限校验等,作为一个http请求服务器。
    10. 纯Qt实现,代码框架整洁,注释完整,支持任意Qt版本、任意编译器、任意操作系统。

    1.3.6 请求格式

    请求地址:http://127.0.0.1:6000 可以自行在系统设置中更改。

    1.3.6.1 请求数据

    其他表请求格式完全一致。 -tag=t_1_1_mold_prod_total&tableName=t_1_1_mold_prod_total&columnName=name,prod_1,prod_2

    名称说明
    tag标识符,用于服务端接收到请求后按照这个标识符返回数据,这里内容填的是具体的表名,方便收到数据直接解析并发送信号到对应模块窗体显示数据。
    tableName要查询的表名。
    columnName对应表的字段名称集合,用英文逗号隔开。
    1.3.6.2 返回数据
    名称说明
    tag唯一标识符,用于标识当前接收到哪个请求的回复数据,对方请求的时候会发过来。
    result结果数组,内容按照表格行一行行包装的数据。
    1.3.6.3 整体流程

    客户端发送请求,指定了唯一标识符+表名+要查询的字段名称集合,服务器收到请求后,解析表名+字段名称集合,从数据库中查询对应的内容组成json字符串返回,带上唯一标识符。

    具体解析数据在datahttp类中,如果是自定义的表和字段,则需要在datahttp类中的initTable方法自行添加表名和字段名即可,非常方便,一个表只需要增加一行代码。

    1.3.7 拓展构想

    现在数据采集无论是数据库采集还是网络请求采集,对应的表名和字段名都是写死在代码中,尽管目前已经封装好了可以自行添加表和字段,但是还不够通用,后期打算通过从配置文件读取。

    1.4 其他说明

    1. 可执行文件同级文件夹有layout+layout_1440+layout_1920,程序默认自动识别分辨率并加载对应的布局文件夹,比如1920分辨率则从layout_1920文件夹加载布局,并作为整体布局文件夹。
    2. 如果发现布局拖动乱了,可以直接鼠标右键选择恢复布局即可,在保存布局以前。
    3. 在中间地图模块鼠标右键可以弹出菜单,切换布局和配色方案等。
    4. 在模块的标题栏上右键可以弹出默认的dock菜单,用来显示和隐藏各模块。
    5. 软件关闭过程中会自动保存布局,下次启动以后自动应用。
    6. 如果使用的默认的配色方案比如紫色风格,则配置文件中的颜色全部无效,会自动应用代码中的颜色,如果需要启用自定义的颜色,则需要先将配置文件的皮肤参数修改成 Theme=\x81ea\x5b9a\x4e49\x98ce\x683c 即可。此时打开软件会应用配置文件中的颜色。
    7. 右键菜单可以截图保存,默认命名为 配色方案名称_布局方案名称.png 保存在snap目录下。
    8. 在二级窗体的标题栏上右键弹出模块菜单,可以对单个模块打开关闭,其他地方右键全局菜单。

    2 数据库说明

    数据库表的设计按照模块的顺序,比如frmmodule1主模块中包括4个子模块,每个子模块都对应一个表,所有表名的前缀是 t_ 以便区分,第一个数字表示主模块编号,第二个数字表示子模块编号。

    表名格式如下:

    • t_1_1_mold_prod_total
    • t_1_2_mold_prod_monthly
    • t_1_3_wp_prod_total
    • t_1_4_wp_prod_monthly

    源码目录下的bigscreen.sql为数据库脚本,可以在系统设置中单击初始化数据来执行。 +tag=t_1_1_mold_prod_total&tableName=t_1_1_mold_prod_total&columnName=name,prod_1,prod_2

    名称说明
    tag标识符,用于服务端接收到请求后按照这个标识符返回数据,这里内容填的是具体的表名,方便收到数据直接解析并发送信号到对应模块窗体显示数据。
    tableName要查询的表名。
    columnName对应表的字段名称集合,用英文逗号隔开。
    1.3.6.2 返回数据
    名称说明
    tag唯一标识符,用于标识当前接收到哪个请求的回复数据,对方请求的时候会发过来。
    result结果数组,内容按照表格行一行行包装的数据。
    1.3.6.3 整体流程

    客户端发送请求,指定了唯一标识符+表名+要查询的字段名称集合,服务器收到请求后,解析表名+字段名称集合,从数据库中查询对应的内容组成json字符串返回,带上唯一标识符。

    具体解析数据在datahttp类中,如果是自定义的表和字段,则需要在datahttp类中的initTable方法自行添加表名和字段名即可,非常方便,一个表只需要增加一行代码。

    1.3.7 拓展构想

    现在数据采集无论是数据库采集还是网络请求采集,对应的表名和字段名都是写死在代码中,尽管目前已经封装好了可以自行添加表和字段,但是还不够通用,后期打算通过从配置文件读取。

    1.4 其他说明

    1. 可执行文件同级文件夹有layout+layout_1440+layout_1920,程序默认自动识别分辨率并加载对应的布局文件夹,比如1920分辨率则从layout_1920文件夹加载布局,并作为整体布局文件夹。
    2. 如果发现布局拖动乱了,可以直接鼠标右键选择恢复布局即可,在保存布局以前。
    3. 在中间地图模块鼠标右键可以弹出菜单,切换布局和配色方案等。
    4. 在模块的标题栏上右键可以弹出默认的dock菜单,用来显示和隐藏各模块。
    5. 软件关闭过程中会自动保存布局,下次启动以后自动应用。
    6. 如果使用的默认的配色方案比如紫色风格,则配置文件中的颜色全部无效,会自动应用代码中的颜色,如果需要启用自定义的颜色,则需要先将配置文件的皮肤参数修改成 Theme=\x81ea\x5b9a\x4e49\x98ce\x683c 即可。此时打开软件会应用配置文件中的颜色。
    7. 右键菜单可以截图保存,默认命名为 配色方案名称_布局方案名称.png 保存在snap目录下。
    8. 在二级窗体的标题栏上右键弹出模块菜单,可以对单个模块打开关闭,其他地方右键全局菜单。

    2 数据库说明

    数据库表的设计按照模块的顺序,比如frmmodule1主模块中包括4个子模块,每个子模块都对应一个表,所有表名的前缀是 t_ 以便区分,第一个数字表示主模块编号,第二个数字表示子模块编号。

    表名格式如下:

    • t_1_1_mold_prod_total
    • t_1_2_mold_prod_monthly
    • t_1_3_wp_prod_total
    • t_1_4_wp_prod_monthly

    源码目录下的bigscreen.sql为数据库脚本,可以在系统设置中单击初始化数据来执行。 如果是需要对接自己的系统,可能涉及到部分数据不一致的情况,你可以: 第一:尽量用现有的表,现有的表各种各样都有,你找到你类似的往里面填数据就行。 第二:如果没有合适的表,则需要调整对应的模块代码。

    2.1 产量汇总模块

    子模块表名对应表:

    子模块标题子模块表名
    模具产量t_1_1_mold_prod_total
    每月模具产量趋势图t_1_2_mold_prod_monthly
    零件产量t_1_3_wp_prod_total
    每月零件产量趋势图t_1_4_wp_prod_monthly

    2.1.1 模具产量

    表名:t_1_1_mold_prod_total

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    name名称VARCHAR255不为空
    prod_1系列1INTEGER11 
    prod_2系列2INTEGER11 

    默认数据:

    internal_idnameprod_1prod_2
    1设变1412
    2修模2025
    3新模4025

    2.1.2 每月模具产量趋势图

    表名:t_1_2_mold_prod_monthly

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    year年份INTEGER4不为空
    month月份INTEGER4不为空
    prod_1系列1INTEGER11 
    prod_2系列2INTEGER11 
    prod_3系列3INTEGER11 

    默认数据:

    internal_idyearmonthprod_1prod_2prod_3
    120185月325480
    220186月423433
    320187月456244
    420188月233865
    520189月121277
    6201810月223334
    7201811月234522
    8201812月326543
    920191月122365
    1020192月217755
    1120193月228733
    1220194月234534

    2.1.3 零件产量

    表名:t_1_3_wp_prod_total

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    name名称VARCHAR255不为空
    prod_1系列1INTEGER11 
    prod_2系列2INTEGER11 

    默认数据:

    internal_idnameprod_1prod_2
    1其他854410000
    2钢件10005002
    3电极20003000

    2.1.4 每月零件产量趋势图

    表名:t_1_4_wp_prod_monthly

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    year年份INTEGER4不为空
    month月份INTEGER4不为空
    prod_1系列1INTEGER11 
    prod_2系列2INTEGER11 
    prod_3系列3INTEGER11 

    默认数据:

    internal_idyearmonthprod_1prod_2prod_3
    120185月325423
    220186月423430
    320187月456244
    420188月233865
    520189月121277
    6201810月223334
    7201811月234522
    8201812月326543
    920191月122365
    1020192月217755
    1120193月228733
    1220194月234534

    2.2 当月计划模块

    子模块表名对应表:

    子模块标题子模块表名
    模具达成率t_2_1_mold_achie_rate
    零件达成率t_2_2_wp_achie_rate
    零件数t_2_3_wp_achie_number
    每日工序达成数t_2_4_process_achie_number

    2.2.1 模具达成率

    表名:t_2_1_mold_achie_rate

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    plan计划数INTEGER11 
    achieved达成数INTEGER11 

    默认数据:1 200 110

    2.2.2 零件达成率

    表名:t_2_2_wp_achie_rate

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    name名称VARCHAR255不为空
    plan计划数INTEGER11 
    achieved达成数INTEGER11 

    默认数据:

    internal_idnameplanachieved
    1模仁100200
    2镶件122100
    3辅件300500
    4电极155200

    2.2.3 零件数

    表名:t_2_3_wp_achie_number

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    wp_achie_number零件数INTEGER11 

    默认数据:1 1234

    2.2.4 每日工序达成数

    表名:t_2_4_process_achie_number

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    day日期VARCHAR2 
    green绿色数量INTEGER11 
    blue蓝色数量INTEGER11 
    red红色数量INTEGER11 

    默认数据:

    internal_iddaygreenbluered
    112030
    222020
    332330
    443240
    554350
    662330
    774405
    881205
    995404
    10104203
    11114760
    12123440
    13132530
    14143860
    15154304
    16165603
    17176540
    18184350
    19193405
    20205530
    21214760
    22223440
    23232530
    24243860
    25254304
    26265603
    27276540
    28284350
    29293405
    30305530
    31314203

    2.3 设备监控模块

    子模块表名对应表:

    子模块标题子模块表名
    设备运行状态t_3_1_device_runtime
    稼动率t_3_2_oee

    2.3.1 设备运行状态

    表名:t_3_1_device_runtime

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    group_name分组名称VARCHAR4不为空
    no_id分组编号INTEGER11不为空
    name名称VARCHAR255不为空
    text_1文字1VARCHAR255 
    text_2文字2VARCHAR255 
    status状态 1-开机 2-待机 3-维护 4-空INTEGER1不为空
    progress进度INTEGER3 
    flicker是否闪烁INTEGER1 

    默认数据:

    internal_idgroup_nameno_idnametext_1text_2statusprogressflicker
    1CNC1CNC1190411PID11100
    2CNC2CNC2190412PID12100
    3CNC3CNC3190413PID13100
    4CNC4CNC4190414PID14200
    5CNC5CNC5190415PID15100
    6CNC6CNC6190416PID16200
    7CNC7CNC7190417PID17100
    8CNC8   400
    9EDM1EDM1190421PID21100
    10EDM2EDM2190422PID23200
    11EDM3EDM3190423PID23100
    12EDM4EDM4190424PID24300
    13EDM5EDM5190425PID25100
    14EDM6EDM6190426PID26100
    15EDM7EDM7190427PID27100
    16EDM8EDM8190428PID28200
    17WEDM1WEDM1190431PID28100
    18WEDM2WEDM2190432PID28300
    19WEDM3WEDM3190434PID29200
    20WEDM4WEDM4190435PID30100
    21WEDM5WEDM5190436PID36100
    22WEDM6WEDM6190437PID37300
    23WEDM7   400
    24WEDM8   400

    2.3.2 稼动率

    表名:t_3_2_oee

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    cnc类别-cncINTEGER3不为空
    edm类别-edmINTEGER3不为空
    wedm类别-wedmINTEGER3不为空

    默认数据:1 110 90 90

    2.4 模具进度模块

    子模块表名对应表:

    子模块标题子模块表名
    模具进度t_4_1_mold_progress
    模具状态统计t_4_2_mold_status_parcent
    加工中模具数量t_4_3_mold_processing_num

    2.4.1 模具进度

    表名:t_3_2_oee

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    mold_no模具编号VARCHAR11 
    tn_no版本号VARCHAR11 
    type类型VARCHAR255 
    status状态VARCHAR255 
    product_name产品名称VARCHAR255 
    plan_date计划交期VARCHAR255 
    green当前进度绿色INTEGER11 
    yellow当前进度黄色INTEGER11 
    red当前进度红色INTEGER11 

    默认数据:

    internal_idmold_notn_notypestatusproduct_nameplan_dategreenyellowred
    1IK19001T0新模加工中后盖2019/3/29602020
    2IK19002T1修模加工中前盖2019/4/350500
    3IK29003T2修模加工中外壳2019/4/830700
    4IK19004T0新模加工中侧边2019/4/189055
    5IK19005T3修模加工中边框2019/4/360400
    6IK19006T0新模加工中后盖2019/4/2670255
    7IK19007T0新模加工中面板2019/4/7252550
    8IK19008T0新模加工中插件2019/3/31204040
    9IK19009T1修模加工中面板2019/3/12106030
    10IK19010T2修模加工中后盖2019/2/1201000

    2.4.2 模具状态统计

    表名:t_4_2_mold_status_parcent

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    finished正常交付百分比INTEGER11不为空
    processing加工中百分比INTEGER11不为空
    delay延期百分比INTEGER11不为空

    默认数据: @@ -693,7 +694,7 @@ header, .context-menu, .megamenu-content, footer{ 1, 100, 99, 89, 95, 95, 92, 98, 100, 96, 97, 98, 99, 90, 85, 84

    2.6.2 电极合格率

    表名:t_6_2_ele_qual_rate

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    date_1第1天合格率INTEGER3 
    date_x第x天合格率INTEGER3 
    date_15第15天合格率INTEGER3 

    默认数据: 1, 100, 99, 89, 95, 95, 92, 98, 100, 96, 97, 98, 99, 90, 85, 84

    2.6.3 当天合格率

    表名:t_6_3_qual_rate_today

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    qual_rate合格率INTEGER3 

    默认数据:90

    2.6.4 模具零件合格率

    表名:t_6_4_mold_qual_rate

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    mold_name模块名称VARCHAR255 
    qual_rate合格率INTEGER3 

    默认数据:

    internal_idmold_namequal_rate
    1IK1900195
    2IK1900288
    3IK1900394
    4IK1900475
    5IK1900594
    6IK1900689

    2.7 品质统计模块

    子模块表名对应表:

    子模块标题子模块表名
    品质占比t_7_1_qual_percent
    班组合格率t_7_2_group_qual_rate
    每日合格率统计t_7_3_qual_rate_daily

    2.7.1 品质占比

    表名:t_7_1_qual_percent

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    green绿色百分比INTEGER3 
    blue蓝色百分比INTEGER3 
    yellow黄色百分比INTEGER3 
    red红色百分比INTEGER3 

    默认数据: 1 45 30 15 10

    2.7.2 班组合格率

    表名:t_7_2_group_qual_rate

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    group_name分组名称VARCHAR255 
    qual_rate合格率INTEGER3 

    默认数据:

    internal_idgroup_namequal_rate
    1CNC90
    2EDM85
    3WEDM92
    4磨床94
    5铣床93
    6外协92

    2.7.3 每日合格率统计

    表名:t_7_3_qual_rate_daily

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    group_name分组名称VARCHAR255 
    day_1第1天INTEGER3 
    day_x第x天INTEGER3 
    day_31第31天INTEGER3 

    默认数据: -1, 'all', 90, 90, 97, 91, 92, 88, 89, 90, 78, 87, 86, 90, 80, 97, 87, 87, 88, 89, 90, 90, 89, 86, 90, 80, 97, 87, 87, 89, 89, 89, 90

    2.8 物料管理模块

    子模块表名对应表:

    子模块标题子模块表名
    库存占比t_8_1_key_invt
    主要零件库存t_8_2_invt_table

    2.8.1 库存占比

    表名:t_8_1_key_invt

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    name名称VARCHAR255 
    upper_bound上限INTEGER11 
    current库存INTEGER11 

    默认数据:

    internal_idnameupper_boundcurrent
    1刀具A1200110
    2顶针B10070
    3线割丝C100300
    4树脂D10010

    2.8.2 主要零件库存

    表名:t_8_2_invt_table

    字段名中文名类型长度说明
    internal_id序号INTEGER11主键自增
    invt_no编号VARCHAR255 
    name品名VARCHAR255 
    spec规格VARCHAR255 
    mat材料VARCHAR255 
    size尺寸VARCHAR255 
    target目标库存INTEGER11 
    current当前库存INTEGER11 

    默认数据:

    internal_idinvt_nonamespecmatsizetargetcurrent
    1SSDDS1品名1规格1材料134542020090
    2SSDDS2品名2规格2材料2345420100120
    3SSDDS3品名3规格3材料334542010067
    4SSDDS4品名4规格4材料434542010088
    5SSDDS5品名5规格5材料534542010045
    6SSDDS6品名6规格6材料634542010087
    7SSDDS7品名7规格7材料73454201009
    8SSDDS8品名8规格8材料834542010044
    9SSDDS9品名9规格9材料9345420100100

    3 配置参数说明

    3.1 基本配置1

    字段描述默认值
    IndexStart启动窗体索引 0-大屏系统 1-控件演示 2-模块演示0-大屏系统
    IndexControl控件演示窗体选中子窗体索引0
    IndexModule模块演示窗体选中子窗体索引0
    WorkMode工作模式timer
    MapStyle中间地图样式point
    Title软件标题,默认值:数字化工厂信息中心 
    Ratio分辨率,目前无意义,备用参数1920*1080
    Layout布局方案,每次切换布局方案以后都会保存完整布局
    Theme配色方案,每次切换配色方案以后都会保存紫色风格
    HttpUrl网络请求地址,默认http://127.0.0.1:6000 

    工作模式

    • timer-模拟数据
    • db-数据库采集
    • com-串口采集
    • tcp-网络采集
    • http-post请求

    地图样式

    • image-静态图片
    • point-闪烁效果
    • move-迁徙效果
    • world-世界地图
    • area-区域地图

    3.2 基本设置2

    字段描述默认值
    AutoRun是否开机启动false
    MoveEnable模块是否可以拖动,启用以后模块可以任意拖动true
    CutLeftBottom底部布局左侧是否切掉true
    CutRightBottom底部布局右侧是否切掉true
    StaticLine是否绘制静态定位线,为假则绘制游标十字线false
    ShowPercentY轴是否显示百分比false
    StepYY轴大尺度步长6
    CursorHideTime用户不操作鼠标自动隐藏鼠标的时间间隔,单位秒5

    3.3 视频设置

    字段描述默认值
    VideoFillImage视频缩放,拉伸填充整个窗体false
    VideoCallback视频回调,开启后采用painter走GPU绘制视频false
    VideoPlayAudio播放音频,开启后视频同步播放音频true
    VideoPlayRepeat视频循环播放,开启后视频会循环播放false
    VideoUrl视频流地址,视频模块播放的视频地址变动的

    3.4 颜色配置1

    字段描述默认值
    ColorMainBg主背景颜色QColor(4, 7, 38)
    ColorPanelBg面板背景颜色QColor(26, 29, 60)
    ColorLine十字线定位线颜色QColor(255, 0, 0)
    ColorLine1线条1颜色QColor(0, 176, 180)
    ColorLine2线条2颜色QColor(32, 159, 223)
    ColorLine3线条3颜色QColor(255, 192, 0)

    3.5 颜色配置2

    字段描述默认值
    ColorTitleBg标题栏背景颜色QColor(48, 48, 85)
    ColorTitleText标题栏文字颜色QColor(255, 255, 255)
    ColorChartBg曲线图表背景颜色QColor(38, 41, 74)
    ColorChartText曲线图表文字颜色QColor(250, 250, 250)
    ColorChartGrid曲线图表网格颜色QColor(180, 180, 180)

    3.6 颜色配置3

    字段描述默认值
    ColorOk正常颜色QColor(0, 176, 180)
    ColorLow警戒颜色QColor(255, 192, 0)
    ColorAlarm报警颜色QColor(214, 77, 84)
    ColorDisable禁用背景颜色QColor(210, 210, 210)
    ColorPercent环形百分比背景颜色QColor(0, 254, 254)

    3.7 字体配置

    字段描述默认值
    MainFont全局字号微软雅黑,12
    NameFont软件名称字号19
    LabFont加粗标签字号12
    DeviceFont设备面板字号12
    SubTitleFont模块子标题栏字号13
    TitleFont模块标题栏字号15

    3.8 尺寸配置

    字段描述默认值
    TitleHeight模块标题栏高度23
    HeadHeight表格表头高度28
    RowHeight表格行高度25
    LayoutSpacing布局空隙间隔6
    SwitchBtnWidth开关按钮宽度65
    SwitchBtnHeight开关按钮高度26
    ScrollWidth滚动条宽度15

    3.9 采集速度

    字段描述默认值
    IntervalModule1模块1采集间隔,单位毫秒5000
    IntervalModule2模块2采集间隔,单位毫秒5100
    IntervalModule3模块3采集间隔,单位毫秒5200
    IntervalModule4模块4采集间隔,单位毫秒5300
    IntervalModule5模块5采集间隔,单位毫秒5400
    IntervalModule6模块6采集间隔,单位毫秒5500
    IntervalModule7模块7采集间隔,单位毫秒5600
    IntervalModule8模块8采集间隔,单位毫秒5700

    3.10 数据库配置

    字段描述默认值
    LocalDBType本地数据库类型,Sqlite、Mysql等Sqlite
    LocalDBIP本地数据库主机地址127.0.0.1
    LocalDBPort本地数据库端口3306
    LocalDBName本地数据库名称bigscreen
    LocalUserName本地数据库用户名root
    LocalUserPwd本地数据库密码,以密文存储root

    4 程序框架说明

    4.1 整体代码结构

    整个大屏系统就是由一个个子模块组成,每个子模块都用到了一些自定义控件,再打通数据库采集和网络请求采集等,将采集到的数据设置到对应的模块界面上。

    4.2 主模块说明

    主模块说明
    3rd一些第三方开源的类库,比如图表qcustomplot。
    class存放系统初始化、样式控制、自定义控件等。
    core本人一直持续更新完善的通用的类库,比如ffmpeg视频监控。
    ui所有的界面都分门别类放在这里。

    4.3 子模块说明

    主模块子模块说明
    3rd3rd_qcustomplot大名鼎鼎的第三方开源的图表组件。
    classapi存放数据库表映射成对应的全局队列数据、通用的辅助函数类。
    classapp全局配置参数管理类、秘钥管理类、通用函数。
    classusercontrol当前系统的自定义控件全部放在这里,其中包括自定义饼图控件、进度仪表盘、百分比仪表盘、环形进度条、三态进度条等控件。
    corecore_control通用自定义控件,很多系统经常用到的控件全部放在这里。
    corecore_customplot继承自qcustomplot类的自定义图表组件,专为大屏系统定制的各种图表组件。
    corecore_db数据库集成应用组件,比如数据库管理线程类、数据库清理线程类、数据库采集类、网络请求采集类等
    corecore_ffmpeg视频监控内核,采用ffmpeg解码,支持各种视频流和本地视频文件,支持声音播放和音视频同步。
    corecore_map地图内核,包括了百度echart封装类,区域轮廓数据转换js函数封装类,百度地图封装类等。
    corecore_opengl视频绘制类,采用opengl绘制,走GPU绘制。
    corecore_webview通用浏览器控件类,同时支持webkit、wenengine、miniblink三种内核,打通了所有的Qt版本。
    uifrmcontrol大屏控件演示示例,每个功能演示都是个独立的窗体,方便查看代码学习如何使用。
    uifrmmain主界面模块,包括了系统配置界面、大屏主界面、大屏指定分辨率用于截图的主界面、设备面板窗体。
    uifrmmodule大屏子模块,包括了产量汇总、当月计划、设备监控、模具进度、负荷分布、送检合格率、品质管理、物料管理、视频监控、大屏地图等。

    4.4 辅助处理

    4.4.1 数据库表映射

    将对应的用户表映射到变量队列存储,以便用户登录和整体判断权限等。

    4.4.2 通用辅助函数类

    这个类就像万能胶一样,在本人写的所有的项目中都有,本类就是将平时常用的一些通用函数都丢在这里,不断完善和持续改进,包括了16进制数据转换、图形字体设置、自定义消息框、错误框、提示框等,集成设置窗体居中显示、设置翻译文件、设置编码、设置延时、设置系统时间等静态方法。

    10.1 windows-7

    10.2 windows-11

    10.3 linux-ubuntu

    10.4 linux-fedora

    10.5 linux-centos

    10.6 linux-uos

    10.7 linux-kylin

    10.8 linux-neokylin

    10.9 linux-newstart

    10.10 linux-debian

    10.11 unix-mac

    11 程序框架说明

    备注:下面的截图和说明未必是最新的,但是大部分是一致的,整体的框架不会改变,可能会有新增加子模块和代码,或者部分类文件有调整或者删除,具体以最新的代码为准。

    11.1 整体代码结构

    本系统采用模块化的设备,有用到第三方开源类库比如串口通信qextserialport,全部放在3rd下面,有用到很多自己封装完善的通用类库比如ffmpeg视频监控,全部放在core下面,设备通信和辅助处理全部放在class下面,所有界面全部放在ui下面,相当于一个个小的组件合起来,最终形成了整个监控系统的完整代码。

    11.2 主模块说明

    名称说明
    3rd一些第三方开源的类库,比如串口通信qextserialport。
    class存放系统初始化、样式控制、自定义控件、设备通信等。
    core本人一直持续更新完善的通用的类库,比如ffmpeg视频监控。
    ui所有的界面都分门别类放在这里。

    11.3 子模块说明

    11.3.1 第三方类库

    这里放的全部是第三方开源的轮子,感谢开源、感谢github、gitee等开源社区。

    名称说明
    3rd_qextserialport第三方串口通信qextserialport,这个类比较稳定可靠,经过了几十个项目持续数十年运行的考验,不用Qt自带的串口类。

    具体代码不做过多说明。

    11.3.2 通信及辅助类

    这里放的都是一些系统初始化、设备通信相关的类。

    名称说明
    api存放数据库表映射成对应的全局队列数据、通用的辅助函数类。
    app全局配置参数管理类、秘钥管理类、通用函数。
    devicecustom用户自定义设备通信管理,比如机器人通信、无人机通信等。
    devicevideo视频监控相关处理类,包括设备地图、表格消息、线程UI通信、人工智能处理等。
    usercontrol当前系统的自定义控件全部放在这里,其中包括云台仪表盘、天气面板等控件。
    11.3.2.1 模块-api
    名称说明
    dbdata将数据库表映射到全局变量数据队列,比如将摄像机表ipcinfo转成QStringList存放一行行数据,这样在程序中运算比较速度极快,直接内存比较,不用每次都去读取数据库。
    dbquery所有的数据库查询插入更新等操作都在这里,比如查询摄像机表、插入日志记录等。
    11.3.2.2 模块-app
    名称说明
    appconfig配置参数类,整个系统的配置参数存放在ini文件中,跨平台,所有参数都对应一个变量,读取配置参数的时候将值赋值给变量,写入的时候将变量值写入到配置文件。
    appdata全局变量类,系统中无可避免需要一些全局变量方便处理,都放在此类,比如版本号、录像机类型、摄像机类型、当前用户信息、地图宽度高度、左侧右侧顶部底部宽高等。
    appevent全局事件转发类,系统越复杂信号需要传递的层级越多,所以需要一个全局事件转发类,用来中转这些事件,这样永远只需要两层就可以收到信号进行处理,而且整个系统看起来干净整洁,不会说一个信号传递到了N个地方乱七八糟,建议需要跨层级传递的信号都放在这里中转。比如软件退出信号,可能多个界面需要收到退出信号进行保存和其他处理,如果从关闭界面发出信号传递给需要的界面,那不知道要中间层层传递多少次,有了这个全局事件转发类,你只需要将事件传给appevent,需要接收事件的地方关联这个信号就行,appevent为全局单例类,整个系统唯一。通用的一些信号有软件退出、全局样式改变、主窗体变化(0-最小化 1-最大化 2-恢复 3-关闭 4-移动 5-尺寸变化)等。
    appinit程序初始化类,在main函数中,会先执行这个初始化的类,比如初始化皮肤、字体、数据库、样式等操作,这些都是要优先在窗体加载前执行的,执行完毕以后再打开窗体主界面。
    appstyle全局样式管理类,整个系统的样式全部放在这里,一般加载流程是先读取样式表文件,然后将本系统独特的样式(比如开关按钮、视频监控、云台仪表盘)内容追加到后面,最后统一设置全局样式,在main函数中加载,和appinit类一样放在最前面执行。
    appurl视频监控系统中常用的默认的视频地址集合。
    11.3.2.3 模块-devicecustom
    名称说明
    devicerobot机器人串口通信管理类。
    devicerobot2机器人串口通信管理类2,有串口数据转发功能。
    deviceuavsserver无人机后端服务类,当前为空,用户自己添加。
    deviceuavsvideo无人机视频监控类,将视频控件设置过来,然后就可以将自己人工智能算法处理后的图片传过来进行绘制,类似于实时视频效果。
    11.3.2.4 模块-devicevideo
    名称说明
    devicehelper整个系统设备管理辅助类,比如插入窗口消息、加载设备列表、加载图片地图、加载设备按钮、初始化视频控件等。
    devicemap设备图片地图管理类,相当于一次性加载所有图片到内存,当要切换或者显示的时候,直接从内存取出来设置即可,速度极快,瞬间相应,纯粹是为了加快相应速度以及可能在图片上进行绘制增加的功能,比从文件系统读取图片文件显示快N倍。
    deviceonvif设备onvif通信管理类,比如获取当前选中通道的onvif地址、开启事件订阅、校对时间、重启设备、获取视频参数、设置视频参数、云台控制等,这里是具体的需要和摄像机信息表及视频通道关联的处理,所以不能放到通用的onvif模块中。
    devicethreadui演示线程通知UI更新,包括每隔一段时间插入消息、异步调用添加表格消息和图文警情、设备GPS移动、报警闪烁、指定通道编号设置视频和通道交换等。
    devicevideosmart人工智能处理类,最常见的应用就是设置一个视频控件,然后在视频控件上绘制人脸框、文字信息等,比如设备的实时运行状态。
    11.3.2.5 模块-usercontrol
    名称说明
    gaugecloud云台仪表盘控件。
    cityhelper省市县联动类,通过从json文件读取省市县信息。
    weather城市天气类,最后显示在标题栏上,实时显示设置的城市的最近几天的天气。
    widgetsound声音面板控件,主界面右下角单击弹出音量条。

    11.3.3 核心通用类库

    这里放的全部是个人一直持续更新完善的独创的轮子,所有的项目都公用这些轮子,用到哪个就包含哪个进来,更新只需要更新轮子代码就行。

    视频监控系统包含的轮子超级丰富给力,物超所值,涵盖了数据导出模块、数据库应用、音频播放和录制、视频播放和录制、ONVIF通信、TCP文件传输、地图应用、通用浏览器内核等。

    名称说明
    core_audio音频播放和录制,包括音频输入输出管理、音频曲线、音频播放、音频录制、音频振幅控件等。
    core_common通用函数,包括通用秘钥、通用导航、通用样式、声音播放、日志记录、运行时间记录等。
    core_control通用自定义控件,很多系统经常用到的控件全部放在这里,比如开关按钮、设备容器、设备按钮、颜色下拉框等。
    core_dataout数据导入导出到xls/pdf和打印类库,极速、跨平台、无依赖。
    core_db数据库通用类库比如数据库线程管理、数据清理、数据采集等。
    core_form通用的用户登录、用户退出、用户管理、数据库配置界面类等。
    core_map地图综合应用类库,百度地图(支持在线离线)和echart封装类等。
    core_onvifonvif功能封装类,包括设备搜索、云台控制、设备参数设置等。
    core_qui通用的辅助类,包括自定义对话框,全局辅助函数,图形字体等。
    core_tcpfile文件多线程收发类,支持多个并发。
    core_video视频播放核心类,包括了监控画面切换控件、视频回放控件、视频播放组件结构体、视频播放辅助函数、视频解码线程类、视频显示控件类等。
    core_videobase视频相关基类,包括音视频文件保存基类、视频解码基类、视频控件基类、视频悬浮工具栏、视频控件结构体等。
    core_videoffmpeg视频监控内核ffmpeg版本,本系统默认采用的内核。
    core_videoopenglopengl封装类,支持打开yuv/nv12文件,绘制yuv/nv12帧数据,一般搭配ffmpeg视频内核显示视频,直接走GPU绘制。
    core_videosave音视频保存组件,包括音频保存类、视频保存类、保存相关辅助函数类。
    core_webview通用浏览器控件类,同时支持webkit、wenengine、miniblink三种内核,打通了所有的Qt版本。
    11.3.3.1 模块-core_audio
    名称说明
    audiohelper音频相关辅助函数,比如获取音频输入输出设备、根据设备名称查找设备对象、初始化音频格式、获取对应音频格式最大振幅、获取对应音频格式音频数据的振幅级别等。
    audiolevel音频振幅控件,根据传入的音频振幅大小绘制振幅,可设置颜色。
    audioplayer音频播放类,可以设置声音大小和静音状态,支持带参数打开音频输入和输出设备,自动关联音频输入输出设备形成话筒和音响联动。
    audioplot音频曲线类,包括初始化图表、添加振幅数据、添加音频数据等。
    audiorecorder音频录制类,可以设置音频录制的参数,包括采样大小、比特率、通道数、质量级别、编码模式等。
    11.3.3.2 模块-core_common
    名称说明
    base64helper图片及文字和base64编码之间转换的类。
    commonkey通用秘钥管理类,指定校验秘钥文件,可设置运行时间、设备数量等限制,支持根据硬件指纹特征生成机器码文件等。
    commonnav通用菜单导航管理类,用来控制和显示顶部导航栏、左侧导航栏的样式。很多子界面需要用到,所以封装成一个专门管理这个的类。
    commonstyle通用样式管理类,比如Qt自带类窗体样式、自定义控件样式、分页导航样式、导航按钮样式、开关按钮样式等。相当于将多个项目常用的自定义样式封装一起做成通用。
    framelesswidget2无边框窗体拉伸类,边框四周八个方位都可以自由拉伸,可设置是否允许拖动和拉伸。
    playwav声音文件播放类,通用Qt456,自动识别当前Qt版本使用对应的类,Qt4采用QSound,Qt5以上采用QSoundEffect,嵌入式采用对应的命令行aplay、mpv来播放。
    savelog日志钩子类,将系统中所有的打印信息转为日志存储或者输出到网络等,可以开启用来打印输出日志信息。
    saveruntime保存运行时间类,用来存储系统启动后每隔一段时间就输出一条记录用来记录启动后软件运行了多久,方便分析问题。
    11.3.3.3 模块-core_control
    名称说明
    bottomwidget通用底部状态栏控件,可以设置软件名称、版本号、运行时间等。
    colorcombobox颜色下拉框控件,在系统设置中有。
    cpumemorylabelCPU和内存使用情况标签控件,主界面右上角显示。
    customtitlebar停靠窗体自定义标题栏控件。
    devicebutton设备按钮控件,比如图片地图模块中用到,可设置不同的图标样式和状态等,双击发出信号进行相应处理比如弹出对应窗体等。
    lcddatetime软件右上角显示时间的控件。
    panelwidget面板容器控件,主界面子模块表格消息,就用到此控件,用于将一堆widget放到此容器进行管理,自动形成滚动条等。
    switchbutton开关按钮控件,在系统设置中存在大量该控件。
    xslider滑动条控件,在原有滑动条基础上增加了鼠标按下立即定位等。
    11.3.3.4 模块-core_dataout
    名称说明
    datacreat通用数据报表内容创建类,比如生成表格格式的html内容,然后赋值给dataprint直接打印,里面举例了图文混排的报告内容,后期会不断增加其他模板,也可以自行增加其他模板数据。
    datacsv导入导出数据,csv格式,可设置分隔符。拓展名。过滤条件等。
    datahead当前组件通用头文件。
    datahelper辅助类,比如校验规则函数,通用数据导出+打印函数。
    dataprint数据打印到pdf及纸张,支持多线程。
    dataxls数据导出到xls类,支持多线程导出。
    11.3.3.5 模块-core_db
    名称说明
    dbcleanthread自动清理数据线程类。
    dbconnthread数据库通信管理线程类。
    dbdelegate自定义委托全家桶,包括复选框、下拉框、密码框、按钮等。
    dbhead当前组件通用头文件。
    dbhelper各种数据库应用函数封装,比如初始化数据库、执行sql语句等。
    dbhttpthread网络请求数据采集类。
    dbpage数据库通用翻页类。
    dbpagemodel数据库翻页类数据模型。
    navpage分页导航控件。
    11.3.3.6 模块-core_form
    名称说明
    formhelper封装的导入导出、导出数据到xls/pdf和打印数据、自动备份数据、保存最后打开的文件夹等。
    frmconfigdb通用数据库管理界面类,可选不同的数据库类型,填入用户信息,执行检测连接和初始化数据操作。
    frmconfiguser通用用户管理界面类,可添加、删除、修改用户信息,包括权限分配等,可导入导出打印用户信息。
    frmlogin通用用户登录界面类,包括自动登录和记住密码复选框,多次密码错误校验,记住当前用户信息等。三次错误关闭,下拉可选用户,内置超级密码。
    frmlogout通用用户退出界面类,三次错误关闭,下拉可选用户,内置超级密码。
    userhelper通用用户权限管理类,内置7种类型权限,对应权限名称可自定义,一般在用户切换对应界面或者单击了对应功能按钮的时候触发。
    11.3.3.7 模块-core_map
    名称说明
    echartjsechart模块中用到的json文件转js文件,获取js文件中的名字和经纬度等处理。
    echartsechart封装类,可加载仪表盘、闪烁点图、迁徙图、世界地图、区域地图等,每个点可自定义颜色和提示信息等。
    mapbaidu百度地图封装类,支持在线和离线两种模式。
    11.3.3.8 模块-core_onvif
    名称说明
    onvifbase基础类,用于获取设备信息、服务文件地址、能力文件地址、媒体文件地址、视频流地址等。
    onvifdevice设备类,核心处理及管理,包括设置用户信息请求onvif地址、获取设备信息、云台控制、事件订阅、抓拍图片等。
    onvifevent事件订阅具体实现类,可设置请求超时时间等。
    onvifhead当前组件通用头文件。
    onvifhelper辅助类,比如获取UUID用于请求、判断IP合法、获取本机IP地址集合、管理系统中所有onvif设备对象等。
    onvifmedia获取媒体文件具体解析类。
    onvifother其他处理类,比如系统重启、NTP校时、获取和设置网络信息、获取和设备时间、获取和设置图片参数等。
    onvifptz云台控制实现类,包括绝对移动、相对移动等。
    onvifquery数据查询类,用于将接收到的xml数据解析,并赋值字符串比如命名空间、设备地址、媒体地址、事件地址等。
    onvifrequest网络请求类,包括设置用户信息、获取用户token数据、获取xml头部数据等,通用的请求数据返回结果函数。
    onvifsearch设备搜索类,支持广播搜索、指定地址搜索,可获取设备信息集合、获取设备地址集合。
    onvifservices服务类,用于获取媒体地址、云台地址等。
    onvifsnap图片抓拍实现类,包括获取抓图地址、抓拍图片等。
    11.3.3.9 模块-core_qui

    本组件涵盖的功能较多,所以采用了分层管理代码结构。

    名称说明
    iconhelper万能图形字体类,可传入多种图形字体文件,一个类通用所有图形字体。
    quiconfig存储当前组件的配置参数信息,比如全局的字体名称、字号、无边框窗体的最小化最大化关闭等图标、样式表的颜色值。
    quihead当前组件通用头文件。
    quistyle当前组件通用样式设置管理类,可以指定枚举类型样式、传入样式内容设置、获取样式表文件对应的颜色值等。当前组件样式相关的处理函数都放在这里,统一管理。
    名称说明
    quiabout关于系统对话框,可传入软件标题、版本、版权、网址等信息。
    quidateselect自定义日期范围选择对话框。
    quiinputbox自定义输入框窗体,可指定不同的输入类型比如文本框、下拉框等。
    quimessagebox自定义信息消息框窗体,可设置关闭倒计时,不同的类型比如信息框、询问框、错误框等。
    quisplash自定义弹出提示信息,提示完自动消息关闭。
    quitipbox自定义右下角信息对话框,可设置对齐方式、关闭倒计时等。
    quiwidget自定义无边框窗体,可设置标题,各种图标等。
    名称说明
    quihelper项目通用辅助类,各种常用函数的封装,比如获取当前屏幕分辨率、设置字体、设置编码、加载翻译文件、各种进制数据转换、弹出各种对话框、设置延时时间等。
    quihelpercore获取当前桌面分辨率,设置编码、字体、翻译文件等。
    quihelperdata16进制、2进制、10进制互相转换,16进制字符串、字节数组互相转换,字节数组转int和short,CRC校验等。
    quihelperfile选择文件、保存文件、选择目录等对话框,复制文件、删除文件等。
    quihelperform设置无边框窗体、边框阴影,弹出信息框、错误框、询问框、日期选择框、关于对话框、中间提示框等。
    quihelperimage获取等比例缩放图片,通用设置logo图片,支持资源文件、本地图片、图形字体、svg自动变色等多种形式。
    quihelpernet获取本机IP地址集合,获取外网IP地址,判断IP、MAC等是否合法,下载网络文件,IP地址字符串与整型互相转换。
    quihelperother初始化数据库文件,设置系统时间、开机启动,设置图标到按钮,写入临时消息的文本文件等。
    11.3.3.10 模块-core_tcpfile
    名称说明
    tcpfilehead当前组件通用头文件。
    tcpfilehelper辅助类,包括将字节转为MB单位、初始化表格控件、生成表格行、数据加密解密、解压文件、重启系统等。
    tcpreceivefileserver接收文件服务类,管理多个接收文件线程,支持监听端口被动接收文件和主动连接服务器接收文件。
    tcpreceivefilethread接收文件线程类,根据发送的文件名、包编号、块大小、挨个接收数据最终形成文件,可设置保存文件夹等。
    tcpsearchfileserver搜索文件服务类,目前没用,用于接收请求搜索文件是否存在。
    tcpsendfilethread发送文件线程类,按照 文件开始符+文件大小+文件内容+文件结束符 逐个分包发送,可对文件的每个包进行加密传输。
    11.3.3.11 模块-core_video

    视频组件继承和依赖关系说明:

    1. videobase是基类组件,video是视频播放组件,依赖基类组件,videoffmpeg是具体的内核实现组件,依赖视频播放组件,videosave是视频保存组件,依赖基类组件。
    2. video组件中的videothread解码线程类继承自videobase基类组件中的abstractvideothread。
    3. video组件中的videowidgetx视频显示类继承自videobase基类组件中的abstractvideowidget。
    4. videosave组件中的saveaudio和savevideo继承自videobase组件中的abstractsavethread。
    5. videoffmpeg组件中的ffmpegthread继承自video组件中的videothread。
    6. videoffmpeg组件中的ffmpegsave继承自videobase组件中的abstractsavethread。
    7. 按照此规则还有其他内核比如vlc组件中的vlcthread也是继承自videothread,mpv组件中的mpvthread也是继承自videothread。这样新增一种内核只要具体实现部分处理函数即可应用整个视频框架。
    8. 通过多层基类继承关系,使得动态挂载任意解码内核极为方便。
    9. 为何在video视频组件的基础上还要提炼一个videobase基类组件?因为该基类组件还可以提供给QCamera本地摄像头采集组件使用,基类中的变量、函数、处理逻辑几乎一致,但是又有特殊性,所以需要分开再提炼出videobase基类。
    名称说明
    videobox监控画面切换控件,将所有通道切换处理全部集中到一个类,通用异形布局切换函数,可以参考进行自定义异形布局,通道布局切换发出信号通知,支持自定义子菜单布局内容。
    videohelper视频播放内核辅助函数,比如根据url地址取出ip地址、校验网络地址是否可达、检查地址是否正常、加载解析内核到下拉框、根据地址获取本地摄像头参数、创建视频采集类、对采集线程设置参数等。
    videomanage视频线程管理类,全局单例,将所有视频控件发给此类管理,负责挨个打开视频、应用录像计划等。
    videoplayback视频回放控件,支持多个通道,显示每个通道对应的视频段。
    videostruct视频播放组件结构体定义类,包括解析内核枚举值、视频类型枚举值、解码策略枚举值、视频采集参数结构体。
    videotask视频任务线程类,全局单例,可以随时插入一些视频相关的任务进行处理,比如vlc录制视频后需要重命名文件,mpv内核关闭视频后鼠标指针打圈圈需要复位。
    videothread视频解码线程类,内置了共享解码线程处理逻辑,可以打开视频、关闭视频、设置视频宽高比例、获取文件总时长、获取媒体信息、获取和设置播放位置、获取和设置播放速度、获取和设置音量大小、获取和设置静音状态等。
    videourl视频地址相关静态函数,可以读取和写入地址到文本文件,用作历史记录,内置了各种类型(rtsp、http、音频文件、视频文件、网络文件、本地USB摄像头)的测试音视频地址集合。
    videowidgetx视频播放控件,一个控件对应一个解码线程,提供播放成功、播放结束、收到截图、工具栏按钮单击等处理,提供开始播放、停止播放、暂停播放、继续播放、抓拍截图、开始录制、暂停录制、停止录制等接口。
    11.3.3.12 模块-core_videobase
    名称说明
    abstractsavethread音视频存储基类,可以设置需要保存的音视频文件类型,比如音频文件类型有pcm、wav、aac,视频文件类型有yuv、h264、mp4,提供开始保存、暂停保存、停止保存等接口。
    abstractvideosurface视频回调基类,用于Qt中的QCamera和QMedia类播放后拿到回调视频数据,这样可以取到一张张图片。
    abstractvideothread视频解码线程基类,摄像头采集线程和视频采集线程都继承自此类,将各种公用的变量、函数、接口、信号槽全部放在基类,包括了停止线程标志位、打开是否成功标志位、暂停采集标志位、开始截图标志位、正在录制标志位,提供了虚函数开始播放、停止播放、暂停播放、继续播放、抓拍截图、截图完成、开始录制、暂停录制、停止录制等,提供写入视频数据到文件、写入音频数据到文件槽函数。
    abstractvideowidget视频显示控件基类,
    audioplayer音频播放类,空的,纯粹为了在没有Qt音频播放类QAudioOutput的时候使用,有些Qt版本或者嵌入式板子环境未必有这个类,但是又不能影响整个组件的运行,于是定义了空的类,函数正常调用但是不做任何处理。
    bannerwidget悬浮工具栏控件,可以设置各种颜色、按钮图标集合、按钮名称集合、按钮提示信息集合等,悬浮条位置支持上下左右四个方位。
    imagelabel图片标签控件,多线程绘制传入的图片,性能比setpixmap更优。
    widgethelper窗体相关辅助函数,包括传入图片尺寸和窗体区域及边框大小返回居中区域(scaleMode: 0-自动调整 1-等比缩放 2-拉伸填充)、绘制矩形区域比如人脸框、绘制点集合多边形路径比如三角形、绘制路径集合、显示截图预览等。
    11.3.3.13 模块-core_videoffmpeg
    名称说明
    ffmpeghelper相关辅助函数,包括打印输出各种信息、打印设备列表和参数、格式枚举值转字符串、视频帧旋转、通用硬解码、通用软解码、通用软编码、释放数据帧数据包、超时回调(包括打开超时和读取超时)等。
    ffmpegrun执行ffmpeg命令,包括yuv420p文件转mp4文件、mp4文件转yuv420p文件、wav文件转aac文件、合并aac以及h264文件或者mp4文件到带声音的mp4文件、转换视频文件到mp4文件等。
    ffmpegrunthread执行ffmpeg命令行线程,可以设置执行完成是否删除转换前的文件、可执行文件路径,传入需要执行的指令即可。
    ffmpegsave视频存储类,用于保存h264和mp4文件。
    ffmpegsync音视频同步线程类,解码后的音视频数据发给本类进行时间同步处理,采用的外部时钟同步策略。音视频播放的进度也在本类中。
    ffmpegthread视频解码线程核心,从打开地址、分配解码器、初始化参数、取出音视频数据解码、关闭并释放资源等都在本类实现。
    11.3.3.14 模块-core_videoopengl
    名称说明
    openglinclude当前组件头文件。
    nv12glwidget空类,用于没有opengl的Qt版本中保证程序能够继续运行。
    nv12openglwidget继承自QOpenGLWidget的NV12格式OPENGL绘制窗体。
    yuvglwidget空类,用于没有opengl的Qt版本中保证程序能够继续运行。
    yuvopenglwidget继承自QOpenGLWidget的YUV格式OPENGL绘制窗体。
    11.3.3.15 模块-core_videosave
    名称说明
    saveaudio音频保存类,继承自videobase组件中的abstractsavethread,可以设置音频文件类型、采样率、通道数等,支持pcm、wav、aac三种格式。
    savevideo视频保存类,继承自videobase组件中的abstractsavethread,可以设置视频文件类型、宽度、高度、帧率,支持yuv原始数据格式。
    savehelper音视频保存相关辅助函数,包括pcm文件转wav文件、aac文件采样率下标、aac文件添加adts头等。
    11.3.3.16 模块-core_webview
    名称说明
    webcore.pri通用的根据不同的Qt版本、不同的编译器环境、不同的操作系统,加载对应的浏览器内核模块和定义不同的变量。
    miniblinkminiblink封装处理类。
    webhelper经纬度转换、获取小数点经纬度值等常用处理函数。
    webjsdata通用的浏览器控件和Qt程序交互数据中转类。
    webview通用浏览器控件,支持webkit、webengine、miniblink。

    11.3.4 界面UI

    界面说明

    1. 这里分门别类存放的各种功能集合的界面类。
    2. 每个类都一个ui文件、一个h头文件、一个cpp实现文件。
    3. 可以方便快速查找对应功能的界面,也方便拓展增加界面。
    4. 不仅分文件夹存放的,而且命名也尽量按照对应功能打头,比如系统设置模块中的都用frmconfig打头。
    5. 外层文件夹是整齐的,内部代码也是整齐的。
    名称说明
    frmconfig系统设置模块,包括基本设置、录像机管理、摄像机管理、轮询管理、用户管理、视频上传等。
    frmdata日志查询模块,包括本地日志、设备日志等。
    frmdemo演示demo示例,用于演示具体控件或者功能的使用,方便学习参考,比如视频图片、视频控件、视频存储都单独的使用demo。
    frmipc存放摄像机处理相关的模块,比如设备控制,云台控制、预置位、巡航设置等。之前放在frmmodule模块中,后面独立出来管理更方便。
    frmmain主界面模块,包括登录登出界面、主界面、右上角时间组件、欢迎组件等。
    frmmap地图模块,包括通用地图内核界面、图片地图、在线地图、离线地图、路径规划等。
    frmmodule停靠子窗体模块,包括停靠窗体管理核心类、设备列表、窗口信息、图文警情、设备轨迹、网页浏览等模块。将摄像机、机器人、无人机相关的模块放到了对应的模块文件夹,这里放的是系统通用的模块。
    frmrobot无人机模块,包括图像增强、飞行监控等模块。
    frmuavs无人机模块,包括图像增强、飞行监控等模块。
    frmvideo视频监控模块,所有视频监控相关的都放在这里,包括主界面的视频监控布局窗体、视频回放、远程回放、图片回放等。
    11.3.4.1 模块-frmconfig
    名称说明
    frmconfig系统设置模块主界面,采用堆栈窗体形式,加载多个子界面比如摄像机管理、轮询管理等。
    frmconfigipc摄像机管理,可以增加、删除、修改、清空、导入、导出、打印摄像机信息。
    frmconfigipcsearchonvif设备搜索,独立出来的窗体,可以搜索局域网内的所有onvif摄像机信息,搜索完以后获取摄像机的视频流地址等,最后可以单个添加或者批量选中添加到摄像机信息表格中。
    frmconfignvr录像机管理,可以增加、删除、修改、清空、导入、导出、打印录像机信息。
    frmconfigpoll轮询管理,可以增加、删除、修改、清空、导入、导出、打印轮询点信息。可以按照设定规则批量生成轮询点信息。
    frmconfigpollplus将轮询管理中的轮询参数配置、分组管理、批量添加等独立出来的界面,方便管理和拓展。
    frmconfigsave录像计划,可以对每个通道每周每天每半小时时间段设置是否存储录像。
    frmconfigsystem系统设置,包括基本设置、视频参数、数据库设置、地图配置、功能激活、颜色配置、串口配置、网络配置等。
    11.3.4.2 模块-frmdata
    名称说明
    frmdata日志查询模块主界面,采用堆栈窗体形式,加载多个子界面包括本地日志、设备日志等。
    frmdatadevice设备日志,通过私有协议从NVR取对应设备日志信息。
    frmdatauser本地地址,用户操作的日志信息,可查询和导出打印数据记录。
    11.3.4.3 模块-frmdemo
    名称说明
    frmdemo单独的功能演示示例主窗体,加载多个子界面比如视频控件等。
    frmdemoqui通用辅助示例,主要演示qui通用组件中封装的函数如何使用,比如各种消息框、提示框等。
    frmdemovideoimage视频图片示例,从图片文件夹读取图片集合,定时器绘制取出图片发给视频控件绘制。
    frmdemovideoplus视频叠加示例,多个视频控件叠加在一起同时播放,可以设置在四个角落位置。
    frmdemovideosave视频保存示例,演示如何对视频控件进行视频保存,可动态保存。
    frmdemovideowidget视频控件示例,演示视频控件如何使用。
    11.3.4.4 模块-frmipc
    名称说明
    frmipccontrol设备控制模块,可对选中设备进行图片参数调节、NTP校时、设备重启、抓拍图片(ONVIF抓图)等。
    frmipcnavigate巡航管理模块,暂未实现,后期完善。
    frmipcreset预置位管理模块,暂未实现,后期完善。
    frmipcptz云台控制模块,可对选中的摄像机进行云台控制。
    11.3.4.5 模块-frmmain
    名称说明
    frmmain系统主界面,采用堆栈窗体,加载各个子模块。
    frmmain1备用模块1界面,根据参数设置决定是否启用。
    frmtimecpu右上角日期时间+CPU内存显示。
    frmwelcome右上角欢迎信息界面。
    11.3.4.6 模块-frmmap
    名称说明
    frmmap地图管理主界面,采用堆栈窗体形式,加载各个子界面比如图片地图、在线地图、离线地图、路径规划等。
    frmmapcore通用百度地图内核界面,用来加载百度地图,可设置在线、离线模式,有很多个窗体用到类似功能特意封装到一个类,重复利用,比如悬浮地图、飞行轨迹、路径规划等模块都用到了此内核。
    frmmapdevice通用的设备地图界面,在线地图和离线地图界面公用这个界面,唯一区别就是设置下地图的模式是在线还是离线。
    frmmapimage图片地图界面,设备作为一个个按钮点显示在对应地图上,可以拖动,双击弹出预览实时视频。
    frmmaplocal离线地图界面,可更新经纬度值、模拟运动轨迹等。
    frmmapweb在线地图界面,可更新经纬度值、模拟运动轨迹等。
    frmmaproute路径规划界面,可查询路线得到路线的经纬度坐标集合。
    11.3.4.7 模块-frmmodule
    名称说明
    frmdevicegps设备轨迹模块,对设定的设备随机模拟轨迹,也可传入经纬度坐标值自动移动并绘制轨迹线条,不同设备可以不同颜色。
    frmdevicetree设备列表模块,读取设备信息加载形成树状列表,双击或者拖动到视频监控窗体直接播放视频,提供右键菜单作为演示如何使用。
    frmmodule主界面中心部分窗体,采用QMainWindow类,中间加载的视频监控面板,其余new出来每个子模块,子模块可停靠和悬浮拖动等。不同工作模式下的各种子模块都在此加载。同时负责管理模块的显示隐藏菜单。
    frmmsglist图文警情模块,也叫消息列表模块,带有右键菜单添加、删除、清空列表中的消息,双击可以弹出大图预览。
    frmmsglistitem图文警情模块子类,都是由一个个item组成放到panelwidget面板控件中,自动形成滚动条。
    frmmsgtable窗口消息模块,也叫表格消息模块,表格形式显示打印信息,不同的内容可以不同颜色区分。
    frmwebview网页浏览模块,传入一个url地址打开对应的网页,比如打开一个3D的网页。
    11.3.4.8 模块-frmrobot
    名称说明
    frmrobotdata仿真数据模块,启动机器人通信服务,接收数据解析显示。
    frmrobotdebug数据调试模块,可模拟发送轨迹数据测试解析类。
    frmrobotdebug2新数据调试模块,打印多个串口数据,不同颜色显示。
    frmrobotemulate运动仿真模块,预留给用户实现,一般放个3D效果。
    frmrobotlog机器人实时数据模块,预留给用户实现。
    11.3.4.9 模块-frmvideo
    名称说明
    frmvideo视频回放模块主界面,堆栈窗体形式,加载多个子界面比如本地回放、远程回放、设备播放等。
    frmvideopanel视频监控面板,主界面中间部分,这是核心,管理多个通道,通道可移除删除,拖曳打开,拖曳交换等。
    frmvideopaneltool视频监控底部工具栏,独立出来一个类专门管理。
    frmvideoplayimage图片回放模块,按照规则查询图片目录,然后可设定播放速度进行图片序列播放。
    frmvideoplaylocal本地回放模块,查询对应通道的本地存储的视频文件,双击播放,可暂停和拖动进度条位置。
    frmvideoplaynvr设备播放模块,通过RTSP视频流的形式从远程设备取视频进行播放,支持摄像机和录像机,手动填入地址也行。
    frmvideoplayweb远程回放模块,需要用厂家sdk去实现,从NVR回放录像。
    frmvideopreview视频预览窗体,比如图片或者地图上双击设备弹出的视频预览,可以多个,关闭的时候自动释放资源。
    frmvideoupload视频上传,将本地存储的视频文件上传到服务器。

    12 二次开发说明

    12.1 通用开发环境搭建

    1. 第一步:安装系统,推荐用vmware虚拟机。
    2. 第二步:安装qt环境,可以直接用官方下载的run安装包安装,有些要求用命令行安装。
    3. 第三步:写个空白窗体程序测试下是否环境正常。
    4. 第四步:编译ffmpeg,生成对应的动态库或者静态库。
    5. 第五步:打开video_system.pro项目进行编译。
    6. 第六步:打包发布,为了发布方便,推荐用静态编译的Qt+静态编译的ffmpeg,这样打包发布很清爽,就一个可执行文件。

    12.2 不同系统注意事项

    12.3 监控系统组件示例

    本系统功能比较多,封装了多个控件,尤其是核心的视频监控控件,所以特意安排了独立的使用示例演示如何使用,可以在main函数找到 AppConfig::IndexStart = 0; 改成AppConfig::IndexStart = 1;即可,这样编译运行的是监控系统组件示例。

    12.3.1 通用辅助

    演示通用组件比如qui封装的类的使用。

    1. 弹出信息框
    2. 弹出错误框
    3. 弹出询问框
    4. 带自动关闭倒计时
    5. 弹出右下角信息框
    6. 隐藏右下角信息框
    7. 弹出时间选择框
    8. 弹出中间提示信息
    9. 弹出关于对话框

    12.3.2 视频图片

    演示加载图片文件夹,进行图片序列的播放。

    12.3.3 视频控件

    演示通用视频控件如何使用,包括打开、关闭、暂停、继续、截图、自动抓拍等功能。

    12.3.4 视频存储

    演示视频控件如何存储视频文件到本地,单击开始按钮开始存储视频,单击关闭则关闭存储。

    12.3.5 视频叠加

    演示如何用多个视频控件做视频叠加播放,可以设置叠加的位置在四个角落。

    12.3.6 同步播放

    演示如何同步播放多个视频,切换进度条自动全部切换播放进度。

    12.4 人工智能集成

    13 其他说明

    13.1 海康onvif设置

    新版的海康的摄像机,默认onvif是关闭的,需要手动开启,开启以后记得添加onvif用户,并重启摄像机应用。提示:海康旗下的萤石目前暂时不支持onvif协议。

    13.2 大华onvif设置

    大华摄像机,需要在用户管理中添加onvif用户,添加好以后建议重启摄像机应用。

    13.3 国际onvif工具

    工具的名字叫ONVIF Device Manager,可以自行搜索下载,此工具位国际官方工具,如果此工具搜索不到摄像机,则说明该摄像机不是真正的onvif摄像机,不是标准的摄像机,目前市面上的绝大部分网络摄像机都支持onvif。具体用法可以参考 https://www.cnblogs.com/lsdb/p/9157302.html

    现在大部分厂家的NVR也逐渐支持onvif,并将每个通道都可以单独列出来。

    13.4 报警输入设置

    -

    操作说明

    • 默认摄像机IO输入或者开关量输入是关闭的,需要手动开启。
    • 一般都是登录到摄像机的web页面找到开关量的地方,可能描述不一样但是大致的意思差不多。
    • 一般摄像机会有两组开关量输入,而且开关量报警有常开常闭两种,都需要自己手动选择。
    • 如果是常开的话意味着闭合是属于报警,反之亦然。
    • 找两个导线接在对应口子(详见摄像机厂家的说明书,摄像机背面板也会有对应字样标识一般叫 in)。
    • 短接或者扒开,都会有反应,onvif工具都能接收到信息(前提是单击过订阅事件按钮,而且顺利返回了订阅地址才行)。
    • 会收到LogicalState关键字的信息,true或者1表示报警,false或者0表示正常。
    • 可能每个厂家会有所区别,需要自己拿到数据后做特殊处理,但是大部分厂家都是相似的,实在不行无非搞个contains方法判断好了。

    13.5 环境使用qt+vs

    +

    操作说明

    1. 默认摄像机IO输入或者开关量输入是关闭的,需要手动开启。
    2. 一般都是登录到摄像机的web页面找到开关量的地方,可能描述不一样但是大致的意思差不多。
    3. 一般摄像机会有两组开关量输入,而且开关量报警有常开常闭两种,都需要自己手动选择。
    4. 如果是常开的话意味着闭合是属于报警,反之亦然。
    5. 找两个导线接在对应口子(详见摄像机厂家的说明书,摄像机背面板也会有对应字样标识一般叫 in)。
    6. 短接或者扒开,都会有反应,onvif工具都能接收到信息(前提是单击过订阅事件按钮,而且顺利返回了订阅地址才行)。
    7. 会收到LogicalState关键字的信息,true或者1表示报警,false或者0表示正常。
    8. 可能每个厂家会有所区别,需要自己拿到数据后做特殊处理,但是大部分厂家都是相似的,实在不行无非搞个contains方法判断好了。

    13.5 环境使用qt+vs

    打开项目:QT VS TOOLS – Open Qt Project File 选择 video_system.pro,然后等待项目加载完毕。 由于项目中用到了ffmpeg和vlc,引用了对应的lib库,所以在用vs+qt的开发环境中,很可能报错提示映像是不安全的错误,导致编译通不过,需要做个设置。

    解决方法

    1. 第一步:打开该项目的“属性页”对话框。
    2. 第二步:单击“链接器”文件夹。
    3. 第三步:单击“命令行”属性页。
    4. 第四步:将 /SAFESEH:NO 键入“附加选项”框中,然后点击应用。
    5. 如果设置完发现还是不行,那应该是没有一开始就设置这个步骤,你需要打开项目以后就设置好这个步骤,再去编译,建议重新解压项目来一遍。

    13.6 数据库设置mysql

    如果在数据库设置中选择了mysql数据库,需要对mysql数据库做个设置,就是将编码设置成utf8,已设置可以跳过,不然很可能数据库无法正常使用。

    32位的Qt程序,带对应32位的libmysql动态库,可以访问32/64位的mysql数据库,64位的也是一样可以访问32/64位的mysql数据库,只需要带上对应位数的动态库就行。查看mysql是32位还是64位命令 mysql.exe -V。

    13.7 打开USB摄像头

    在加载USB摄像机的时候,需要填写对应USB设备的名称,可以通过命令行和设备管理器查看对应的名称,要英文的。

    在需要加载多个USB摄像机的场景下,有时候会遇到同名的USB名称设备,此时需要打开注册表进行设备名称修改后,按照新修改后的设备名称填入即可。

    diff --git a/docs/video_system/snap/10-1-1.jpg b/docs/video_system/snap/10-1-1.jpg index d2557b0..570b22a 100644 Binary files a/docs/video_system/snap/10-1-1.jpg and b/docs/video_system/snap/10-1-1.jpg differ diff --git a/docs/video_system/snap/10-10-1.jpg b/docs/video_system/snap/10-10-1.jpg index 71ab720..13d403c 100644 Binary files a/docs/video_system/snap/10-10-1.jpg and b/docs/video_system/snap/10-10-1.jpg differ diff --git a/docs/video_system/snap/10-11-1.jpg b/docs/video_system/snap/10-11-1.jpg new file mode 100644 index 0000000..13ab7da Binary files /dev/null and b/docs/video_system/snap/10-11-1.jpg differ diff --git a/docs/video_system/snap/10-2-1.jpg b/docs/video_system/snap/10-2-1.jpg index 98e6c70..b0b22a2 100644 Binary files a/docs/video_system/snap/10-2-1.jpg and b/docs/video_system/snap/10-2-1.jpg differ diff --git a/docs/video_system/snap/10-3-1.jpg b/docs/video_system/snap/10-3-1.jpg index d7f4beb..2b6d745 100644 Binary files a/docs/video_system/snap/10-3-1.jpg and b/docs/video_system/snap/10-3-1.jpg differ diff --git a/docs/video_system/snap/10-4-1.jpg b/docs/video_system/snap/10-4-1.jpg index bb32b40..3606154 100644 Binary files a/docs/video_system/snap/10-4-1.jpg and b/docs/video_system/snap/10-4-1.jpg differ diff --git a/docs/video_system/snap/10-5-1.jpg b/docs/video_system/snap/10-5-1.jpg index 25fc4a6..1254c82 100644 Binary files a/docs/video_system/snap/10-5-1.jpg and b/docs/video_system/snap/10-5-1.jpg differ diff --git a/docs/video_system/snap/10-6-1.jpg b/docs/video_system/snap/10-6-1.jpg index 0ddae9a..3cd6a2e 100644 Binary files a/docs/video_system/snap/10-6-1.jpg and b/docs/video_system/snap/10-6-1.jpg differ diff --git a/docs/video_system/snap/10-7-1.jpg b/docs/video_system/snap/10-7-1.jpg index 39306b1..a903d9c 100644 Binary files a/docs/video_system/snap/10-7-1.jpg and b/docs/video_system/snap/10-7-1.jpg differ diff --git a/docs/video_system/snap/10-8-1.jpg b/docs/video_system/snap/10-8-1.jpg index d86d54c..abf5316 100644 Binary files a/docs/video_system/snap/10-8-1.jpg and b/docs/video_system/snap/10-8-1.jpg differ diff --git a/docs/video_system/snap/10-9-1.jpg b/docs/video_system/snap/10-9-1.jpg index 5d67018..e63488f 100644 Binary files a/docs/video_system/snap/10-9-1.jpg and b/docs/video_system/snap/10-9-1.jpg differ diff --git a/docs/video_system/snap/12-3-1.jpg b/docs/video_system/snap/12-3-1.jpg index ccfb894..d64a672 100644 Binary files a/docs/video_system/snap/12-3-1.jpg and b/docs/video_system/snap/12-3-1.jpg differ diff --git a/docs/video_system/snap/12-3-2.jpg b/docs/video_system/snap/12-3-2.jpg index 7fc918f..1451a1e 100644 Binary files a/docs/video_system/snap/12-3-2.jpg and b/docs/video_system/snap/12-3-2.jpg differ diff --git a/docs/video_system/snap/12-3-3.jpg b/docs/video_system/snap/12-3-3.jpg index 9e67232..f5e7a63 100644 Binary files a/docs/video_system/snap/12-3-3.jpg and b/docs/video_system/snap/12-3-3.jpg differ diff --git a/docs/video_system/snap/12-3-4.jpg b/docs/video_system/snap/12-3-4.jpg index 10f20c6..68faea1 100644 Binary files a/docs/video_system/snap/12-3-4.jpg and b/docs/video_system/snap/12-3-4.jpg differ diff --git a/docs/video_system/snap/12-3-5.jpg b/docs/video_system/snap/12-3-5.jpg index d8c1ed8..da776a7 100644 Binary files a/docs/video_system/snap/12-3-5.jpg and b/docs/video_system/snap/12-3-5.jpg differ diff --git a/docs/video_system/snap/12-3-6.jpg b/docs/video_system/snap/12-3-6.jpg new file mode 100644 index 0000000..c8cd59e Binary files /dev/null and b/docs/video_system/snap/12-3-6.jpg differ diff --git a/docs/video_system/snap/2-0-1.jpg b/docs/video_system/snap/2-0-1.jpg index 42a52eb..34815e3 100644 Binary files a/docs/video_system/snap/2-0-1.jpg and b/docs/video_system/snap/2-0-1.jpg differ diff --git a/docs/video_system/snap/6-6-2.jpg b/docs/video_system/snap/6-6-2.jpg new file mode 100644 index 0000000..a6311a4 Binary files /dev/null and b/docs/video_system/snap/6-6-2.jpg differ diff --git a/docs/video_system/snap/6-6-3.jpg b/docs/video_system/snap/6-6-3.jpg new file mode 100644 index 0000000..1a81f11 Binary files /dev/null and b/docs/video_system/snap/6-6-3.jpg differ diff --git a/docs/video_system/snap/6-6-4.jpg b/docs/video_system/snap/6-6-4.jpg new file mode 100644 index 0000000..034bd35 Binary files /dev/null and b/docs/video_system/snap/6-6-4.jpg differ