这是一个简单的demo,来模拟PSDK中的一些通信和框架
UDP 收到 JSON 命令
↓
解析成 json
↓
放入线程安全队列
↓
main 主线程取出命令
↓
调用 mock_psdk_xxx()
覆盖如下知识:
std::thread
std::queue
std::mutex
std::condition_variable
JSON
UDP
mock PSDK
项目模块:
mock_server/
├── CMakeLists.txt
├── main.cpp
├── command_queue.h
├── command_queue.cpp
├── udp_server.h
├── udp_server.cpp
├── mock_psdk.h
└── mock_psdk.cpp
文件职责:
main.cpp
程序入口,启动 UDP 线程,主循环取命令执行
command_queue.h / .cpp
线程安全命令队列
udp_server.h / .cpp
UDP 接收线程,负责收 JSON 命令并放入队列
mock_psdk.h / .cpp
模拟 PSDK 起飞、降落、移动函数
如何运行:
mkdir build # 新建编译目录
cd build # 进入编译目录
cmake .. # 根据上一层的 CMakeLists.txt 生成 Makefile
make # 真正开始编译如何测试: 重新打开一个终端,进入同一个 build 目录,或者任意目录都可以,只要本机能访问 127.0.0.1:9000。
echo '{"command":"takeoff","command_id":1}' | nc -u 127.0.0.1 9000 # 测试起飞命令
echo '{"command":"land","command_id":2}' | nc -u 127.0.0.1 9000 # 测试降落命令
echo '{"command":"move","command_id":3,"x":1.0,"y":0.0,"z":0.5,"yaw":30.0}' | nc -u 127.0.0.1 9000 # 测试移动命令
echo 'hello' | nc -u 127.0.0.1 9000 # 测试错误JSON
echo '{"x":1}' | nc -u 127.0.0.1 9000 # 测试缺少command字段
echo '{"command":"666666","command_id":1}' | nc -u 127.0.0.1 9000 # 测试无效命令