当前位置:网站首页>TC软件详细设计文档(手机群控)
TC软件详细设计文档(手机群控)
2022-06-21 09:18:00 【才鲸嵌入式】
TC软件详细设计文档(手机群控)
作者:将狼才鲸
日期:2021-06-27
一、整体框图
1、UI界面
主界面:顶部是LOGO、快捷键、设置,左侧是设备管理列表,中间是手机界面展示,右侧是日志信息(可隐藏)

设置弹出框:设置全局参数(具体选项待调整),并保存到配置文件

2、功能框图

二、业务流程图
1、主流程图

三、模块实现
1、adb模块
adb模块功能 | 查询所有设备 | 开启设备触摸 | 开启反向控制 | 安装apk | 发送并启动server |
调用adb的模块 | 群组列表模块 | 设备模块 | server模块 | 文件模块 | |
adb依赖的模块 | 所有连接的手机 | ||||
adb负责查询所有设备、开启设备触摸、开启反向控制、安装apk、发送并启动server建立tcp连接,后续的工作都交给tcp连接来完成。
需要用到adb的有主界面、设备模块、server模块、文件模块
2、群组列表模块
群组列表模块 | json文件读写 | json处理:增删改查 | 设备列表动态显示 | 设备管理 | ||||||||||||
显示状态 | 修改设备名 | 修改组名 | 增删组 | 增删设备 | 设备切换分组 | 设备连接和断开 | 设备组指定反向主控 | 设备组指定脚本 | ||||||||
自己被谁调用 | 主界面 | |||||||||||||||
自己要调用哪些模块 | 快捷键栏模块 | 设备管理模块 | adb模块 | |||||||||||||
设备群组列表模块包含json解析处理模块、列表显示、设备列表管理(显示状态、增加、删除、连接、断开、分组、指定主控)。
3、鼠标键盘系统模块
当UI界面上有键盘按下、鼠标键按下或者鼠标键按下并移动的事件产生时,根据指针所在位置,通知当前位置下UI对应模块的处理函数。
接收键盘键值的界面区域只有主程序、UI上的文本输入框和手机界面显示区域。
接收鼠标事件的区域只有UI上的按钮、文本输入框和手机界面显示区域。
4、设备管理模块
设备管理模块 | 管理一组设备 | 连接和断开当前组所有设备 | 连接和断开单个设备 | 更新群组键值映射配置 | 更新群组操作脚本 | 取消和绑定快捷键操作按钮 | 设置反向群控主机 | 映射所有群控从机 | ||
自己被谁调用 | 群组列表模块 | |||||||||
自己要调用哪些模块 | 设备模块 | 快捷键模块 | 键值事件 | |||||||
设备管理模块:管理一组设备(一个主控设备,多个被控设备)、连接和断开单个设备、连接和断开当前组所有设备、更新群组键值映射配置、更新群组操作脚本、取消和绑定快捷键操作按钮、设置反向群控主机、映射所有群控从机、响应群控主机的手机操作并发送到其它从机
5、快捷键模块
快捷键模块:根据当前被选中的设备或设备组,向设备管理模块发送以下命令:设置为主控设备、下拉通知栏、显示触摸、息屏、关机、音量大、音量小、切换应用、菜单栏、返回、返回主界面、截屏。
6、设备模块
设备模块的功能:操作一台设备,响应键值操作,响应群控操作,响应发送文件、安装apk操作,adb连接手机,启动TCP传输视频流和消息。
设备模块使用了:键值事件、server模块、视频帧缓存、解码、文件操作、视频流处理、画面显示UI、控制器键值映射、配置。
server子模块:传输和启动设备server,设置反向控制
server子模块使用了:TCP Socket
解码子模块:使用ffmpeg库
videobuffer子模块:处理解码完之后的一帧图片
avframeconvert 子模块:将解码后的原始YUV格式的一帧图片转换成RGB格式,以便用于显示
控制器子模块:使用tcp连接,响应快捷键操作,进行剪切板操作,进行键值映射转换
设备画面UI模块:使用openGL显示、安装快捷键映射、响应键值。
四、参考资料
ffmpeg:FFmpeg 多媒体处理工具
genymobile(Android server):Scrcpy投屏原理浅析-设备控制篇
TCP socket:基于TCP协议的Socket通信
OpenGL:OpenGL 开放图形技术规范
QT:QT
边栏推荐
- 如何使用 adb shell 查询进程流量情况
- Stm32mp1 cortex M4 development part 8: LED lamp control experiment of expansion board
- [early knowledge of activities] list of recent activities of livevideostack
- Application configuration management, basic principle analysis
- Several ways to trigger link jump
- [actual combat] STM32 FreeRTOS migration series tutorial 7: FreeRTOS event flag group
- 【实战】STM32 FreeRTOS移植系列教程7:FreeRTOS 事件标志组
- Base de données de sauvegarde DumpLiNg
- Clipboard learning records and pit encountered
- Leetcode: print the common part of two ordered linked lists
猜你喜欢

PingCAP 入选 2022 Gartner 云数据库“客户之声”,获评“卓越表现者”最高分
![[early knowledge of activities] list of recent activities of livevideostack](/img/8c/f8007931b1a5944f3a0a243a5afcc4.png)
[early knowledge of activities] list of recent activities of livevideostack

The internal structure of MySQL and how an SQL statement is executed

Application configuration management, basic principle analysis

leetcode:19. 删除链表的倒数第 N 个结点

Tidb3.0- 4.0 memory control / modification log saving days / maximum index length
![[practice] stm32mp157 development tutorial FreeRTOS system 3: FreeRTOS counting semaphore](/img/b1/e4b944877fecc079a772b81c55bfc8.jpg)
[practice] stm32mp157 development tutorial FreeRTOS system 3: FreeRTOS counting semaphore

Abstractqueuedsynchronizer (AQS) source code analysis - cyclicbarrier source code analysis

Understanding and use of advanced pointer

Alibaba cloud OSS uploading and intelligent image recognition garbage recognition
随机推荐
R language uses the < - operator to create a new variable, uses the existing data column (sum, mean) to create a new data column, uses the ifelse function or conditional judgment to create a discrete
leetcode:打印两个有序链表的公共部分
The R language uses the sink function to export the dataframe data and save it as a CSV file in the specified directory. In practice, if no directory is specified, it will be output to the current wor
R language ggplot2 visualization, draw two lines in the same ggplot2 graph in a graph, and use postscript function to save the visualization image to PS format file in the specified directory
Detailed analysis of abstractqueuedsynchronizer (AQS) source code - Analysis of lock release and response interrupt locking processes
The @transactional in JUnit disappears. Can @rollback test the flag of rollback?
在使用各种软件时 积累的快捷键
[practice] STM32 FreeRTOS migration series tutorial 5:freertos message queue
南京理工大学MOOC慕课:程序设计基础(Ⅰ)第8章测试选择题答案及解析
如何使用 adb shell 查询进程流量情况
The R language uses the sink function to export the string to the txt file in the specified directory. If no directory is specified, it will be output to the current working dir
Base de données de sauvegarde DumpLiNg
【MGT】代码解读之model-MGT
Abstractqueuedsynchronizer (AQS) source code detailed analysis - condition queue process analysis
《网络是怎么样连接的》读书笔记 - FTTH
Summary of problems and errors encountered in tidb4.0.0 (tiup deployment)
Unmanned, automation technology affects the world
R language uses as The character function converts date vector data to string (character) vector data
智能制造的下一站:云原生+边缘计算双轮驱动
Lodash real on demand approach