编程语言:熟悉 C/C++语言,熟悉 C++11 相关特性(智能指针、Lambda 表达式、SLT 容器
等),熟悉迭代器与模版的使用,深入理解 QT 对象模型(MOC、内存管理、父子对象机制);
数据库:熟悉 MySQL/SQLite 和相关操作:增删改查,熟悉数据模型、视图、代理的相关操作
(Model/View/Delegate),掌握 QT 核心模块:Widgets、Network、SerialPort、SQL、Charts 等
操作系统:了解 Windows/Linux 操作系统,熟悉进程、线程以及进程间通信与线程同步,熟悉
QT 框架、信号槽机制、事件处理,熟悉 QT 动态库 dll 与静态库 lib 的封装与使用;
计算机网络:熟悉 OSI 七层模型,熟悉 Modbus RTU/TCP、TCP/UDP、HTTP/Webservice、RS232/485
等协议,熟悉基于 Socket 套接字的编程;熟悉 select、poll、epoll 网络模型;
设计模式与算法:熟悉 C++常见的设计模式:单例模式、工厂模式、策略模式等,了解基本的
数据结构与算法:链表、队列、栈、排序、查找的算法
工具:熟悉 QtCreator;熟悉网络调试助手、易佰特网络配置、postman 等调试软件;熟悉 Enigma
Virtual Box、INNO Setup 6 打包软件,熟悉 SVN 软件版本管理;
基于 QWidget 实现自动化设备上位机软件
项目描述:该项目是入职深圳艾而特参与研发的产品,属于自动化设备上位机整体软件,包括界面
操作、曲线展示、下位机通讯、数据存储、日志打印和工厂主机 MES 通信等的客户端程序;
1 界面操作:基于 QWidget 搭建上位机界面,实现工艺参数的控制与存储、用户管理、界面控件权限
管理、数据收集与展示、日志管理、报警交互和机器整体流程的运行等功能;
2 曲线展示:基于 QChart 类实现数据曲线的展示,QLineSeries 序列中添加数据,序列添加在 QChart
对象即可在 QChartView 里显示,加载相应的 QMouseEvent 事件去分析区域内的数据
3 下位机通讯:基于 RS232/485 或 Modbus tcp 实现与设备连通,通过多线程去实现数据的采集与下
发,使用定时器的方式防止出现黏包和粘包问题,实现重发机制减少数据的丢失情况,通过严格的
数据帧结构去保证数据传输
4 数据存储:(1)基于 QSqlite 数据库、CSV 表格在多线程的加载下存储数据,使用 SQL 语句搭配
互斥锁 QMutex 将数据加入数据库,通过 model、view 将数据映射在界面,使用连表查询和模糊匹配
的方式去搜索数据。
(2)通过调用 QTextStream 或者 QDataStream 将完成数据写入到 csv 表中
5 工厂主机 MES 通信:基于通过 Http/Webservice 协议,实现设备参数与报警上报、菜单切换与核验
和远程控制,达到产品数据能实现校验与过站的功能
6 多语言切换:基于 Qt Lingust 实现多种语言的切换,在配置文件里添加翻译文件(.ts),更新翻译
后在 Lingust 实现具体化的翻译生成目标文件(.qm)通过 QTranslator 加载并写好注册表即可
7 界面管理:基于 Qt 信号与槽机制、QStackWidget 控件去管理控制 UI,用户界面、参数界面、数据
界面、运行界面等
(1)用户界面:运行 MD5 加密的方法去管控密码
(2)参数界面:使用 QLabel、QLineEdit、QSpinBox、QComboBox、QPushButton 等控件组成
(3)数据界面:通过 Model、View、Delegate 完成显示、编辑等功能
(4)运行界面:使用 QGraphicsView 类将 View、Sceen、Item 交互以便显示图形的变化
8 整体框架设计: 整体基于 MVC 架构,实现 UI、业务逻辑和数据模型的分离;不同模块的组合采用
桥接的方式,单个模块采用组合的方式将数据和控制分开便于复用
9 核心技术点:RS232/485 或 Modbus tcp 通信、Http/Webservice 协议、QMutex 互斥锁、多线程、
数据库、信号与槽、Model、View、Delegate 等
该上位机实现 数据采集 、分析(曲线)、 数据保存(数据库/CSV)、日志保存、UI的设定、语言国际化、 人机交互 Sop指引 MES对接、通信设置
该上位机是通过usb协议通信 主要功能是负责测试而已 配合其他部门去完成设备的测试 (参数接受/下发、设备的状态采集、通信、日志、数据库等)