亚博取款曝顾秒到账

    欢迎进入上海阳合供应链管理有限企业!
  •  13472705338 

  • “视听+云仓储+精准扶贫”电商模式的脱贫经验探讨
  • 仓储型物流企业的经营模式创新
  • 现代仓储管理中条形码技术的运用
  • 基于IOS平台的小型仓储管理系统设计
  • 用6S管理注入仓储管理系统内涵推升仓储运营水准
  • 基于第三方物流的仓储成本控制研究
  • 物流企业仓储管理案例分析
  • 第三方物流企业仓储货位系统优化分析
  • 郑州航空物流仓储合理化研究
  • 新形势下深化完善国有粮食仓储企业内控机制的实践与思考
  • 企业智能仓储作业流程分析——以徐州新沂百世云仓企业为例
  • 医药物流迈向云仓多仓联动
  • RFID技术在铜仁地区烟草仓储物流管理系统中的应用
  • 浅谈粮情测控远程监管系统在仓储管理中的应用
  • 浅谈石油物资仓储管理部门入库验收管理
  • 多层仓储式数据中心建筑设计研究
  • 烟叶仓储害虫综合治理研究进展
  • 无线智能仓储管理系统的设计与实现
  • 静电粉末与杀虫剂混用对仓储甲虫的杀虫效果及谷物品质的影响
  • 关于云计算技术物联网仓储管理系统设计
  • 当前位置:亚博取款曝顾秒到账 >>   资讯资讯资讯资讯

    基于C++/Qt的仓储环境监控客户端应用设计

      信息来源:   发布时间:2021-10-23  点击数:

    随着我国储运行业的不断发展和人们对于储运环节的关注度不断提高, 安全可靠的监控系统对现代化仓储管理系统十分必要。随着多种各样的监控设备及其安防预警系统这些硬件逐步发展地越来越智能化, 意味着App上的设计要同步跟上硬件的发展需求。同时我国的自动化、智能化的检测水平也在不断提高, 在这种良好的社会环境下, 基于C++/Qt的仓储环境监控系统将逐步被广泛采用, 并将实现普及, 从而将我国的储运行业的环境监管提高到更安全的标准。

    Qt由奇趣科技在90年代研制的集编辑、编译、调试与一起的集成开发环境。简单点说Qt就是设计图形界面的App, 当然它自己本身也是一个图形界面。由于Qt底层是C++代码实现, 它不同于C语言, C++是面向对象编程, 相对于C语言面试过程编程, Qt更具有贴近用户的思想。Qt的优势在于具有优秀的跨平台特性、继承了C++面向对象的程序设计思想、丰富的API接口供应用层调用。跨平台特性是指Qt支撑包括Windows、Linux在内的大部分操作系统;由于Qt底层实质是C++编程, 所以C++具有的面向对象编程思想在Qt编程里能够得到更好的体现;Qt包含了多达250个以上的C++类库, 可以这样说Qt其实就是一个大型的C++函数库, 这样丰富的API几乎可以实现操作人员对界面设计的大部分想法。最重要的一点是Qt是开源的, 这一点对于界面开发者来说是最吸引的, 开源意味着你可以随时看到底层源码, 可以更改源码设计出自己的界面。

    1 仓储监控系统框架

    1.1 嵌入式的概念

    仓储监控系统是嵌入式具体应用的方向之一, 嵌入式系统最广泛的定义为:主要把中心放在贴近用户的需求, 同时要求以通用PC技术为基础, 在App和硬件的设计上要尽可能的模块化, 需要更多的应用设计的时候可以扩大其软硬件的功能;在不需要一些功能的时候可以剪裁部分功能以满足嵌入式系统的功耗小、体积小的要求。本设计主要在嵌入式硬件基础上的App开发设计。嵌入式发展空间相对较大, 嵌入式系统是当前社会发展必不可少的技术要求, 主要应用在现代化发展地方方面面, 小到大家平常使用的mp3、手机等电子设备, 大到一些汽车电子、工厂设备、航天航空设备。总之, 嵌入式系统与大家平常使用的通用PC系统不一样, 嵌入式设备更像一个专用计算机系统, 在总的性能方面可能没有PC机那么强大, 但是在个别功能方面却比通用PC的性能强大很多。

    1.2 Qt网络编程机制

    Qt的网络编程和Windows下的网络编程机制很相似, 都是基于C/S网络编程模型。网络编程套接字是通信端点的一种抽象, 它有两种形式:流式套接字和数据报文套接字。本实验采用的是面向连接的流式套接字, 它采用的是传输控制协议TCP。如图1所示, 采用TCP协议的服务器端程序框架图;如图2所示是客户端程序框架图。

    在概述里大家说到Qt包含了多达250个C++类库, 在Qt客户端设计程序里建立和服务器的连接大家需要使用QTcp Socket类。这里大家用到Qt里的信号与槽机制, 信号与槽机制和Windows下的消息机制十分类似, 消息机制是基于回调函数, Qt中用信号与槽来代替函数指针, 使程序安全简洁。信号与槽机制是Qt的核心机制, 可以让编程人员将互不关心的对象绑定在一起, 实现对象之间的通信。客户端在创建和服务器连接之前首先大家需要创建QTcp Socket类的对象socket, 然后通过信号与槽机制的connect函数连接服务器。

    图1 C/S模型服务器端程序框架图

    图1 C/S模型服务器端程序框架图   下载原图


    图2 C/S模型客户器端程序框架图

    图2 C/S模型客户器端程序框架图   下载原图


    1.3 客户端登录信息监测

    客户端程序启动之前做的任务是和服务器建立连接, 当客户端连接上服务器之后出现如图3所示的客户端登录界面, 大家在用户名和密码的编辑框中输入信息, 点击马上登录后, Qt中的转到槽机制启动, 程序会去调用相应的登录函数, 该函数里主要是把用户名和密码栏的信息提取出来, 放在一个自定义结构体中, 在结构体前面加上协议头发送到服务器。服务器读取客户端发送的信息先去提取协议头出来, 然后判断消息类型, 如果是登录请求, 服务器再去把用户名和密码信息提取出来。服务器通过和My SQL数据库中的信息比对来确认登录信息的正确性。

    数据库 (DB) 严格的说是按照一定的数据结构来管理数据的仓库, 数据库的种类有很多, 比如目前流行的My SQL、sqlite等都是数据库的一种。相对sqlite来说My SQL是比较适合本设计的一种数据库, 优势在于My SQL比sqlite更具有完善的服务器数据库, 功能相比而言更全面, 而sqlite更适合于手机端开发的数据库。前面大家提取了用户名和密码, 将这些信息传入到大家编写的一个API函数里, 函数内部主要调用了一些My SQL语句来检测信息在不在数据库中。如果用户信息在服务器的数据库中, 则Qt界面就会跳转到控制台控制界面。

    图3 监控系统客户端登录界面

    图3 监控系统客户端登录界面   下载原图


    1.4 Qt的多线程实现多任务并发设计

    客户端控制台界面起来后相当于一个主程序, 独立运行的主程序也叫进程, 这个主进程在运行的时候可以拆分多个不同的实行路径, 每个路径严格上应该称为线程, 每个线程都是相对独立的, 一个线程崩溃不会影响到其他进程甚至是主进程的运行。如今任何一个系统都是多线程或者多进程设计的, 由于多进程设计的程序在系统调度和资源回收上要占用太多的CPU, 所以想对于多进程设计的客户端, 多线程设计的客户端很少产生卡顿甚至死机的情况。如今的App设计行业已经很多是单进程处理任务事件了。单进程意味着你在接收图片信息的同时不能去发送控制室内设备的命令了, 这在现实监控客户端应用来说是难以想象的。

    Qt的C++类库提供了一些线程相关的类, 本程序中大家使用的是QThread类, 它提供了开始一个新线程的方法。如图4所示是控制台控制界面, 此界面采用的是信号与槽机制中最简单的转到槽机制, 通俗的来说当大家点击任何一个按钮时, 此机制就会运行该按钮对应的槽函数。

    图4 监控系统客户端控制界面

    图4 监控系统客户端控制界面   下载原图


    控制台界面中主程序负责向服务器发送获取温湿度和光照度的请求。此外, 当点击控制界面开始录制的按钮时, Qt的信号与槽机制启动与此相关的槽函数, 在这个槽函数里大家开辟一个新线程用于录制视频信息保存到电脑上位机中。Qt创建一个新线程其实很简单, 首先大家需要通过QThread类创建一个对象, 与此同时, 需要重写编写里面的run () 函数, 程序示例如下:



    接着需要建立上面线程实例对象, 这时需要调用QThread::start () 函数。程序实行到start () 函数时, 创建的新的线程就会去实行run () 函数。在run函数中, 大家实现的就是保存视频图片的操作代码。正是因为线程的特点, 本设计才可以在保存视频图片的同时还可以去做其他任务, 比如大家可以在保存信息的同时可以向服务器发送控制LED灯开的命令, 服务器通过Zig Bee协议向室内终端发送LED灯开控制命令。当保存视频图像的线程崩溃了并不会影响客户端向服务器发送控制命令。

    本GUI界面程序中大家使用了两个线程, 第一个线程就是上述的保存视频图片的线程, 第二个线程大家创建用于获取服务器端发送来的图片信息之后通过QPixmap类将图片显示到视频加载框中。多线程并发实行是可以提高CPU运行效率, 但凡事都有利弊, 带来便利的同时, 如何控制线程间的同步就是需要解决的问题之一。

    QMutex, QRead Write Lcok等是用于同步线程的类库。同步简单点说就是任务实行的需要按照设定好的流程来实行, 就像大家走路一样迈完左脚迈右脚, 不可能迈完左脚后还迈左脚, 这样一来大家右脚一直不动, 是不可能完成任务设定的要求的。大家在程序中使用线程主要是用来控制多个任务并发的实行, 所以控制多个任务实行的顺序即大家需要控制的同步。假如两个不同的线程同时访问一个全局变量 (线程通信的方式之一) , 这个时候问题就产生了, 线程一在实行过程中使用这个全局变量, 而线程二在线程一实行过程中去更改该全局变量在内存中的变量值, 线程一会前后使用的值不一样会造成程序崩溃。所以大家需要上面的控制线程同步的类来实现整个进程安全高效的运行。

    2 模型应用与分析

    图5 监控系统项目框架图

    图5 监控系统项目框架图   下载原图


    整个项目框架图如图5所示, 用户登录时向服务器发送登录用户名和密码, 服务器调用My SQL接口检测用户名和密码是否正确, 成功则登录界面会关闭, 控制台界面会展现出来。控制台界面布满显示仓储环境的控制按钮, 通过点击相应的Button向服务器发送控制室内换气扇、LED开关的命令, 同时客户端控制台界面还可以获取室内温湿度和光照度的信息显示到控制台相应的QLine Edit类的对象中。线程一、二分别向服务器获取图片视频和保存图片视频信息到本地备份。

    通过具体的模型分析与设计应用, 该客户端在电脑上位机中可以正常运行, 本设计的不足之处在于客户端的局限性只能在电脑上运行。要实现随时随地的去监控仓储环境信息大家需要利用Qt的Webkit集成与Qt Network模块, Qt Webkit模块使得Qt widget能够通过HTML的object标签加入到web页面中, 并通过Java Script代码进行访问, 而Qt对象也能相应的访问web页面元素。

    3 结束语

    本文就目前热门的仓储环境监控系统提供了一种客户端设计方案。考虑到单进程系统在运行和调度的局限性, 这里大家采用了多线程设计客户端, 很大程度上提高了客户端在与服务器交互过程中的实时性和高效性。通过移植My SQL数据库来检测用户登录信息的正确性, 保证了整个监控系统的安全性和可控性。鉴于本设计主要阐述了客户端的设计和应用细节, 所以对服务终端只提及了少量和客户端交互的协议和过程, 这里是本文的有待改进之处。这里大家基本实现了一个监控系统所具备的所有因素要求, 获取视频代码实现就是每一秒中向服务器申请十张图片的信息, 能够实时快速的对仓储环境的变化做出应对, 保证了整个嵌入式系统稳定高效的运行。

    权所有©:上海阳合储运
    专业承接上海仓库租赁、亚博取款曝顾秒到账物流、上海电商仓储企业服务与微笑同在"的先进理念不断发展壮大。 

    友情链接: 消防车  分析仪器  北京拓展训练    鸡排加盟   恒温振荡器  别墅泳池设备  外贸论坛    档案管理系统    酒精测试仪    旋转火锅设备  假山制作   烟台装修  地坪漆    实心轮胎   垃圾车 位移传感器     货运管理App   钢制暖气片  济南雕刻机  罗斯蒙特3051  影像测量仪
       食品级软管     鹤管    三相电表   AGV叉车  切削液  有限元分析
    机房监控   数控铣床  原子荧光光谱仪   移动厕所
    沪公网安备 31011402008344号 沪ICP备14036201号-32  
    XML 地图 | Sitemap 地图