一、实现难点
- 树莓派双hdmi分屏展示
- 打开任意应用时指定输出屏幕(浏览器,ppt)
- 屏幕透明图层绘图
二、硬件结构
实现一款基于Tall标准协议的投屏客户端及其控制系统。基本框图如图2-1所示,项目核心包括两部分:
- cc-d2v 投屏客户端
- cc-d2v-control 投屏客户端云控制器
图2-1
三、软件架构
- 实现树莓派守护程序raspi-daemon-control(C),主要功能包括:1.通过进程间通讯手段接收外部命令及参数;2.PPT操作(打开、关闭);3.浏览器操作(打开浏览器并跳转到指定url、关闭浏览器);4. 键盘按键模拟(F5、left、right、home、end等)
- 实现树莓派图层程序raspi-daemon-paint(QT),主要功能包括:1.通过进程间通讯手段接收外部命令及参数;2. 在桌面最顶层覆盖一层透明图层; 3. 画图功能(画点、矩形、圆等); 4. 橡皮擦功能; 5.截图保存功能;6. 画笔设置(粗细、颜色) 功能
- 实现树莓派客户端程序tall-raspi-main(C),主要功能包括:1. 内部通过信号量等手段与raspi-daemon-x进行通讯;2. 外部通过2.4G(串口)和wifi与cc-control遥控器和tall服务器进行通讯;3. 实现tall任务调度。
- 实现客户端配置程序tall-raspi-setting(Web),主要功能包括:1. 用户登录;2.项目信息配置(URL路径、ID);3.亮分等URL配置;4.资源上传、下载、预览(ppt);5.客户端启动和关闭
四、功能列表
五、各模块间通讯手段及协议
5.1 tall-raspi-main与raspi-daemon-xx模块之间通信
5.1.1 通信手段
采用IPC中“消息队列”方式进行通讯。
- tall-raspi-main 作为生产者,往“消息队列中发送消息”
- raspi-daemon-control和raspi-daemon-paint作为消费者,分别使用不同的msgtype区分消息
#define MSG_TYPE_CC_CONTROL 201
#define MSG_TYPE_CC_PAINT 202
5.1.2 通信协议
Filter0 | Filter1 | Num | Device | Oper | Data[] | CRC-16 | |
---|---|---|---|---|---|---|---|
1byte | 1byte | 1byte | 1byte | 1byte | X bytes | 1byte | 1byte |
0xFF | 0xFE | 0xXX | 0xXX | 0xXX | 0xXXXX | LSB | MSB |
字段 | 长度**(字节)** | 说明 |
---|---|---|
Filter0 | 1 | 固定为0xFF |
Filter1 | 1 | 固定为0xFE |
Num | 1 | 后续字节的长度(device - crc) |
Device | 1 | 设备代码 |
Oper | 1 | 操作代码 |
Data[] | 不定 | 参数域。在实际命令中,可以不存在。 |
LSB-CRC16 | 1 | CRC16低字节。CRC是从Device到Data[]的CRC16值 |
MSB-CRC16 | 1 | CRC16高字节。 |
#define D_s_PH3_ccmodbus_max 255
typedef struct
{
U8 filter0;
U8 filter1;
U8 num;
U8 device;
U8 oper;
U8 buf[D_s_PH3_ccmodbus_max - 5];
U8 crc[2];
}TS_PH3_ccmodbus;
Device 和 oper 可能的值如下:
5.1.3 通信协议举例
FF FE 0C 80 00 ["c++.pptx"] crc1 crc2 //打开c++.pptx
FF FE 05 80 01 crc1 crc2 //关闭ppt
5.2 tall-raspi-main与cc-control模块之间通信
5.2.1 通信手段
5.2.2 通信协议
Filter0 | Filter1 | Num | Device | Oper | Data[] | CRC-16 | |
---|---|---|---|---|---|---|---|
1byte | 1byte | 1byte | 1byte | 1byte | X bytes | 1byte | 1byte |
0xFF | 0xFE | 0xXX | 0xXX | 0xXX | 0xXXXX | LSB | MSB |
5.3 tall-raspi-main与tall-server之间通信
采用标准的http协议,api由服务器端定义