Browse Source

更新README.md文档

xj 2 months ago
parent
commit
ab30cebdff
1 changed files with 352 additions and 41 deletions
  1. 352 41
      README.md

+ 352 - 41
README.md

@@ -1,41 +1,352 @@
-# ISCS_LOTO_Linux
-
-锁控机柜系统
-
-# 项目结构说明
-
-./src目录
-
-## httpclient
-
-./src/httpclient
-
-- 用于访问后台的功能模块
-
-## interactice
-
-./src/interactive
-
-- C++与QML交互的模块
-
-## qml
-
-./src/qml
-
-- 用户界面UI
-
-# usr
-
-./src/usr
-
-- 基本配置信息
-
-- 用户信息、用户登录等功能
-
-# resources
-
-./src/resources
-
-- 图片、字体等相关静态资源
-
-find /home/kim/Desktop/ISCS_LOTO_Linux/src -type f -printf '%P\n' | grep png
+# ISCS_LOTO_Linux
+
+锁控机柜系统
+
+# 项目结构说明
+
+./src目录
+
+## httpclient目录
+
+./src/httpclient
+
+- 用于访问后台的功能模块
+
+```
+调用HttpClient对象的大致流程(以HttpPasswordLogin为例):
+1. HttpPasswordLogin类声明有关请求的信号
+    1.1 signalPostRequestData: 发送Post请求,HttpClient对象处理相关业务逻辑
+    1.2 signalLoginReturnStat: 前端(Qml)端处理信号响应槽函数
+    1.3 signalLoginReturnParam: 槽函数更新参数
+2. HttpClient对象的响应signalPostRequestData信号,执行槽函数slotPostRequestData。
+    2.1 HttpClient类中有slotPostRequestData、slotGetRequestData和slotPutRequestData等槽函数以对应Post请求、Get请求和Put请求
+3. 在这些槽函数中执行postJsonRequest、postFormdataRequest、getRequest和putJsonRequest等请求方法,并接收到返回结果,再根据请求的Url字符串进行判断触发其对应的信号
+4. HttpPasswordLogin对象接收到signalResponsePasswordLoginData信号触发,执行slotHttpResponseUsernameLogin槽函数,其解析返回结果,然后将解析后的信息作为参数传入signalLoginReturnStat信号中,触发signalLoginReturnStat信号
+5. 前端(Qml端)响应signalLoginReturnStat信号执行槽函数onSignalLoginReturnStat,其根据解析的信息在前端(Qml端)进行显示或执行其他操作
+```
+
+### HttpCardLogin.h
+
+- 处理工卡登录
+
+### HttpClient.h
+
+- 访问后台的子线程
+
+```
+HttpClient类是以postJsonRequest、postFormdataRequest、getRequest和putJsonRequest等请求方法处理与后台的交互逻辑
+```
+
+### HttpFaceLogin.h
+
+- 处理人脸登录
+
+### HttpGetJobTickets.h
+
+- 获取当前用户所关联的所有工作任务信息
+
+### HttpGetUserInfo.h
+
+- 获取当前用户的信息
+
+### HttpGetWorkNodeDetail.h
+
+- 获取表单详情信息
+
+### HttpPasswordLogin.h
+
+- 处理用户名/密码登录
+
+### HttpUpdateNodeApproval.h
+
+- 更新任务节点的信息和是否完成的状态
+
+### HttpUpdateUserInfo.h
+
+- 在设置页面中提交更新用户信息
+
+### HttpUpdateUserPassword.h
+
+- 在设置页面中修改用户密码
+
+### JobTicketModel.h
+
+- 单例对象,关联当前用户的所有工作任务信息的数据模型
+
+### UserInfoModel.h
+
+- 单例对象,存储当前用户的信息的数据模型
+
+### WorkNodeFormModel.h
+
+- 单例对象,存储当前任务节点(录入信息、上锁隔离、解除隔离等)的所有信息的数据模型
+
+## interactice目录
+
+./src/interactive
+
+- C++与QML交互的模块
+
+### InteractiveCAN.h
+
+- 处理前端(Qml)与钥匙和锁等硬件交互功的单例对象
+
+- 处理前端(Qml)与蓝牙交互功的单例对象
+
+```
+1. 前端(Qml端)点击“立即获取锁具”按钮,执行InteractiveCAN::openEKey函数,开始分配钥匙
+2. 获取到钥匙Nfc后,依据Nfc向后台查询(发出信号InteractiveCAN::signalGetRequestData)钥匙的MAC地址,同时查询隔离点位的信息创建作业票(InteractiveCAN::createJobTicket)
+3. 调用InteractiveCAN::connectBLEDevice连接蓝牙,成功连接后,(InteractiveCAN::sendJobTicket)下发作业票到钥匙中
+4. 成功下发作业票后,执行InteractiveCAN::getLocks方法打开锁的卡扣
+5. 成功打开锁的卡扣后,执行InteractiveCAN::getEKey方法打开锁的卡扣
+6. 取出钥匙和锁后,弹出提示框"成功取出设备,请执行上锁操作"
+```
+
+### InteractiveData.h
+
+- 计划作为与前端交互的数据模型集合,暂时未开发
+
+### InteractiveFace.h
+
+- 处理前端(Qml)人脸识别交互功能的单例对象
+
+### ReturnKeyLockManager.h
+
+- 处理前端(Qml)归还设备交互功能的单例对象
+
+## qml目录
+
+./src/qml
+
+### Login.qml
+
+- 登录界面
+
+### JobTicketPage.qml
+
+- 显示关联当前用户的所有任务
+
+### SettingPage.qml
+
+- 用户信息设置页面
+
+### WorkingPage.qml
+
+- 任务详情页面,包含录入信息、上锁隔离、解除隔离等页面
+
+### components组件目录
+
+#### AlertDialog.qml
+
+- 弹窗对话框
+
+#### AvatarCard.qml
+
+- 用户头像组件
+
+#### BlurMask.qml
+
+- 模糊遮罩,qt5版本效果不好
+
+#### CustomVirtualKeyboard.qml
+
+- 自定义虚拟键盘组件
+
+#### FormCard.qml
+
+- 自定义详情表单组件
+
+#### IconText.qml
+
+- 图标加文字的提示组件
+
+#### JobTicketCard.qml
+
+- 显示单个任务信息
+
+- 点击该组件后跳转到对应的任务详情
+
+#### JobTicketColockProcess.qml
+
+- 与解除隔离类型节点有关的交互界面
+
+#### JobTicketProcess.qml
+
+- 与上锁隔离类型节点有关的交互界面
+
+#### JobTicketSubProcess.qml
+
+- 显示上锁隔离/解除隔离任务节点中取出设备相关进度
+
+#### LoadingDialog.qml
+
+- Loading提示对话框
+
+#### LockStatusCard.qml
+
+- 与上锁状态/共锁状态有关的组件
+
+#### LoginCard.qml
+
+- 显示不同登录方式的界面,有人脸、工卡和用户名/密码等方式
+
+#### MBlurCard.qml
+
+- 自定义遮罩组件
+
+#### MButton.qml
+
+- 自定义按钮组件
+
+#### MCalendar.qml
+
+- 自定义日期组件
+
+#### MComboBox.qml
+
+- 自定义下拉框组件
+
+#### MDatePicker.qml
+
+- 自定义选择日期组件
+
+#### MDateRange.qml
+
+- 自定义选择时间范围组件
+
+#### MDateTimePicker.qml
+
+- 自定义选择时间(时分秒)组件
+
+#### MInput.qml
+
+- 自定义输入框组件
+
+#### MNavCard.qml
+
+- 自定义导航卡片组件
+
+#### MRadioButton.qml
+
+- 自定义单选框组件
+
+#### MScrollBar.qml
+
+- 自定义滑动条组件
+
+#### MSelectDateTime.qml
+
+- 自定义选择日期时间组件
+
+#### MSwitchButton.qml
+
+- 自定义SwitchButton按钮组件
+
+#### MTextArea.qml
+
+- 自定义文本块组件
+
+#### MTheme.qml
+
+- 自定义样式对象
+
+#### MTimePicker.qml
+
+- 自定义选择日期组件
+
+#### MVirtualKeyboard.qml
+
+- 自定义虚拟键盘组件
+
+#### NoJobTicketDialog.qml
+
+- 无任务信息的提示对话框
+
+#### ReturnKeyLockProcess.qml
+
+- 归还设备的交互界面
+
+#### SettingFormCard.qml
+
+- 自定义设置表单卡片
+
+#### UpdatePasswordDialog.qml
+
+- 更新用户密码的交互界面
+
+#### UserInfoCard.qml
+
+- 显示用户信息的卡片组件
+
+## usr目录
+
+./src/usr
+
+- 基本配置信息
+
+- 用户信息、用户登录等功能
+
+### define.h
+
+- 宏:根据CAN通讯协议.pdf文件,定义CAN读/写报文结构等信息的宏
+
+### config.h
+
+- 基础配置信息的单例对象
+
+- 有关访问后台API的成员变量
+
+### BluetoothClient.h
+
+- 低功耗蓝牙类
+
+### CANClient.h
+
+- CAN通讯类
+
+- 存储硬件信息的结构体
+    ```
+    读操作相关:
+        1. struct CANKeyBaseStatus: 左/右钥匙的基本状态
+        2. struct CANKeyBaseControlStaus: 左/右钥匙卡扣的状态
+        3. struct CANSingleLockStatus: 单个锁的基本状态
+        4. struct CANLocksControl: 5路挂锁(包含1~5号锁)的卡扣状态
+        5. struct CANKeyRFIDStatus: 左/右钥匙的RFID(Nfc)信息
+        6. struct CANLockRFIDStatus: 5路挂锁(包含1~5号锁)的RFID(Nfc)信息
+        
+    写操作相关:
+        1. struct CANKeyBaseChargeStatus: 写入左/右钥匙的卡扣状态
+        2. struct CANLocksControl: 写入5路挂锁(包含1~5号锁)的卡扣状态
+    其他:
+        1. struct CANReturnKeyDevices: 存储归还设备信息
+            1.1 key是钥匙的Nfc信息
+            1.2 value是钥匙对应的主索引号
+    ```
+
+- 重要成员变量
+
+    - 需注意的是每对左右锁对应一个主索引号,一个5路挂锁对应一个主索引号,故使用主索引号作为其key值
+
+    ```
+    钥匙相关:
+        1. m_keyBaseStatus:钥匙的基本状态
+        2. m_keyBaseControlStatus: 钥匙卡扣的状态
+        3. m_keyRFIDStatus: 钥匙的RFID(Nfc)信息
+
+    锁相关:
+        1. m_locksControlStatus: 锁的基本状态
+        2. m_locksControl: 5路挂锁(包含1~5号锁)的卡扣状态
+        3. m_locksRFIDStatus: 5路挂锁(包含1~5号锁)的RFID(Nfc)信息
+    ```
+
+### LotoQmlPlugin.h
+
+- C++类注册到Qml端的插件类
+
+# resources
+
+./src/resources
+
+- 图片、字体等相关静态资源
+
+find /home/kim/Desktop/ISCS_LOTO_Linux/src -type f -printf '%P\n' | grep png