Skip to content

salt235/mock_server

Repository files navigation

这是一个简单的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 # 测试无效命令

About

综合小demo——模拟PSDK项目的一些通信和框架

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors