无人机界面修改要求

This commit is contained in:
yinkanglong_lab
2020-10-15 10:41:05 +08:00
parent 850801194c
commit 5e0041c064
2 changed files with 169 additions and 66 deletions

View File

@@ -1,66 +0,0 @@
# 桌面应用程序开发
## 技术范式
> 1. 选择合适的技术范式。√====>electron
> 2. 对技术细节进行学习了解√====>javascript,nodejs,electron
> 3. 寻找开源的模板代码搭建框架
> 4. 根据任务需求进行快速开发
### C++ QT开发
### Python PyQT开发
卡掉因为是C项目用python的qt反而多此一举。
### JAVA SWING开发
理由同上。可以用C++,与原生的代码结合较好。
### nodeJS Electron桌面开发
easy-window小程序。
> 显然我觉得HTML桌面应用程序开发是最简单的能够实现极其好看的界面。
## 2 开发步骤
### 熟悉工程代码√
* 源代码使用代码库qtopenssl √
* 使用qtCreator对代码进行编译调试
* 源代码暴露的接口√
* cmake编译工具+gcc√
### 使用nodejs封装C/C++接口√
* 使用napi封装借口√
* node-gyp编译测试接口√
* cmake-js编译测试√
### 使用electron呈现界面
* 数据渲染模板应用√template_js,arttemplate,jsrender,juicer选择了第一个数据渲染方式
* 前端页面布局设计√ 选定了库上传到了gitee非常好用以后可以借鉴
* 对页面布局进行调整和优化√(主要包括添加图标,修改颜色,添加标题)
* electron开发和调试菜单栏和应用进程使用vscode和webtool工具对electron应用进行了调试
### 根据需求规范工程
* 将工程上传到gitee√
* 根据新的需求修改函数借口。增加返回的message√
* 对sm2函数的明明进行规范test->encrypt√
### 工程部署使用nodejs封装工具发布。
* 使用electron-package对工程进行打包√
* 使用electron-build或者electron-asar对工程进行发布。创建安装程序。√
## 3 解决的bug问题
### append之后页面刷新元素消失的问题
* 因为在button周围由form标签导致提交后页面刷新之前的数据消失。
* [参考文献](https://blog.csdn.net/muyi_amen/article/details/79086281?utm_source=blogxgwz4&utm_medium=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-1.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-1.nonecase)
### template_js无法加载模板渲染数据的问题
* 相似的库太多了导致下载成了template.js和template-js
### Message传递参数的问题
* 因为长度并不能自适应,同一个接口函数需要调用两次,第一次获取缓冲区长度,第二次将值复制到缓冲区。
* github的issue真的是个解决问题的好地方。segmentfault和stackoverflow也非常好用。

View File

@@ -0,0 +1,169 @@
# 桌面应用程序开发
-----------------------------------------
第一阶段技术栈选择
## 技术范式
> 1. 选择合适的技术范式。√====>electron
> 2. 对技术细节进行学习了解√====>javascript,nodejs,electron
> 3. 寻找开源的模板代码搭建框架
> 4. 根据任务需求进行快速开发
### C++ QT开发
### Python PyQT开发
卡掉因为是C项目用python的qt反而多此一举。
### JAVA SWING开发
理由同上。可以用C++,与原生的代码结合较好。
### nodeJS Electron桌面开发
easy-window小程序。
> 显然我觉得HTML桌面应用程序开发是最简单的能够实现极其好看的界面。
## 2 开发步骤
### 熟悉工程代码√
* 源代码使用代码库qtopenssl √
* 使用qtCreator对代码进行编译调试
* 源代码暴露的接口√
* cmake编译工具+gcc√
### 使用nodejs封装C/C++接口√
* 使用napi封装借口√
* node-gyp编译测试接口√
* cmake-js编译测试√
### 使用electron呈现界面
* 数据渲染模板应用√template_js,arttemplate,jsrender,juicer选择了第一个数据渲染方式
* 前端页面布局设计√ 选定了库上传到了gitee非常好用以后可以借鉴
* 对页面布局进行调整和优化√(主要包括添加图标,修改颜色,添加标题)
* electron开发和调试菜单栏和应用进程使用vscode和webtool工具对electron应用进行了调试
### 根据需求规范工程
* 将工程上传到gitee√
* 根据新的需求修改函数借口。增加返回的message√
* 对sm2函数的明明进行规范test->encrypt√
### 工程部署使用nodejs封装工具发布。
* 使用electron-package对工程进行打包√
* 使用electron-build或者electron-asar对工程进行发布。创建安装程序。√
## 3 解决的bug问题
### append之后页面刷新元素消失的问题
* 因为在button周围由form标签导致提交后页面刷新之前的数据消失。
* [参考文献](https://blog.csdn.net/muyi_amen/article/details/79086281?utm_source=blogxgwz4&utm_medium=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-1.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-1.nonecase)
### template_js无法加载模板渲染数据的问题
* 相似的库太多了导致下载成了template.js和template-js
### Message传递参数的问题
* 因为长度并不能自适应,同一个接口函数需要调用两次,第一次获取缓冲区长度,第二次将值复制到缓冲区。
* github的issue真的是个解决问题的好地方。segmentfault和stackoverflow也非常好用。
-----------------------------------------------------
第二阶段 接口封装
## 1 接口封装
```c++
//函数声明
//签密函数
void signcryption(string plaintext, bool *flag_signcrytion, string *ciphertext,
double *time_signcrytion);
//解签密函数
void unsigncryption(string ciphertext, bool *flag_unsigncrytion, string *plaintext,
double *time_unsigncrytion, bool *flag_replay_attack, bool *flag_tamper_attack, string *timestamp);
//密文截获函数
void intercept_cipher(string ciphertext, bool *flag_intercept, string *intercepted_ciphertext);
//密文篡改攻击函数
void tamper_attack(string intercepted_ciphertext, bool *flag_do_tamper, string *ciphertext_new);
//消息重放攻击函数
void replay_attack(string intercepted_ciphertext, bool *flag_do_replay, string *ciphertext);
```
## 2 接口测试
* 使用nodejs封装了C++的接口并使用addon_test对接口进行了测试。
------------------------------------------------------
第三阶段 界面优化和文档
## 1 主要内容
1. 添加题目√
2. 修改成表格显示数据√
3. 修改按钮的相对文职√
4. 字体的大小和对其√
5. 字体、字号√
6. 表格的分布与自动换行√
7. cmake编译调试√
8. 公钥私钥的生成页面√
9. 复习bootstrap√
10. 修改配色方案√
11. 修改背景√
12. 色块转换与动态效果,添加动画√
13. 图形标注loading和其他图标√
14. 功能实现,逻辑测试√
15. 设置透明度√
16. 设置美化界面显示的内容(表格和文字)√
17. 模态框、警示框,用来显示异常信息√
18. 使用collaspe动态显示图标内容×
19. 尝试使用jQuery简化js代码√
## 2 bug调试
段错误
### 可能的原因
* 未初始化的指针和空指针
* 堆栈内存溢出
### 解决办法
* 联调
* 堆栈扩充
* 其他办法(代码空间释放)
### 错误分析
* 结论1
* unsigned调用比出错
* 随着调用内容的减少,出错后裔
* 由于堆栈溢出内容减少,出错后裔
* 结论2
* sign与unsign 具有相似性
* sign无论调用多少次都不会出问题
* unsgin只要调用1次就一定会报错
* 问题一定处在代码内而不是由于执行次数过多导致内存溢出。unsigned本身存在不贵的可能性
* 在unsgin中存在在某种特殊条件下会触发的段错误
* 方法:
* nodejs的napi接口中出现问题
* cmakejs编译选项调整出现问题
* unsign函数本身出现问题
### 最终结果
* 使用为自己在nodejs调用接口中使用了较小的数组导致数组长度溢出引发了段错误。
* 段错误很难定位,因为它报错的地方和犯错的地方,往往不在同一个地方。
* 记住段错误,一定是引用了错误地址的数据造成的
* 如在静态数据区写数据
* 在不属于自己的内存段写数据。随机指针写数据,空指针写数据,溢出的数组写数据。
-------------------------------------------------------
第四阶段 无人机元素和花里胡哨
## 1 要求
* 添加无人机元素。背景就改成动态的模拟空间的无人机飞行的网络图
* 各个card改成半透明黑色背景数据使用白色内容进行显示。
* 可以动态修改cardcollaspe的应用到位。
* 添加一个card表示执行过程中的状态转换图。使用js代码修改使其能够动态地添加到状态转换图当中。执行过的步骤执行中的步骤未执行的步骤使用不同的状态标注像是打卡系统当前的执行流程或者地铁站的线路点亮过程。
* 添加一个card表示无人机当前的飞行状态。胡乱显示就好。主要包括无人机飞行的各个参数无人机飞行的速度仪表盘无人机的横向视角和纵向视角。参考下载的地图。