diff --git a/DeviceActivate/bin/init b/DeviceActivate/bin/init index a8ef9bb..0f7b58c 100755 Binary files a/DeviceActivate/bin/init and b/DeviceActivate/bin/init differ diff --git a/DeviceActivate/src/main.cpp b/DeviceActivate/src/main.cpp index f220a61..65fd828 100644 --- a/DeviceActivate/src/main.cpp +++ b/DeviceActivate/src/main.cpp @@ -8,6 +8,8 @@ #include #include //和App进行MQTT数据交互 #include +#include +#include #include //用于操作JSON文件 @@ -27,8 +29,10 @@ const string TopicRecv = "/bsd_camera/cmd"; // 接收手机传来的信息 const string TopicSend = "/bsd_camera/init"; // 发送的话题 const int Qos = 1; -atomic isRunning(true); +atomic isRunning(true); // 是否需要激活 atomic Deactivate(false); // 激活标志 +mutex runMutex; +condition_variable runCv; // 条件变量,判断是否可以启动验证程序 mqtt::async_client client(mqtt_url, clientId); @@ -65,17 +69,23 @@ int main() // 初始化MQTT mqttInit(); - while (isRunning) - { - this_thread::sleep_for(1s); // 防止系统占用过高 - } + unique_lock lk(runMutex); + runCv.wait(lk, []() + { return !isRunning.load(); }); + // while (isRunning) + // { + // this_thread::sleep_for(1s); // 防止系统占用过高 + // } return 0; } // 退出程序,开始进行设备验证 void StartCheck() { - isRunning = false; // 退出程序 + // 退出程序 + isRunning = false; + runCv.notify_one(); + string cmd = "../../softWareInit/bin/wifi "; system(cmd.c_str()); } @@ -160,6 +170,7 @@ void messageCallback(mqtt::const_message_ptr msg) if (Deactivate) { // 已激活 + // 启动验证程序 StartCheck(); } } diff --git a/InitAuth/conf/.env b/InitAuth/conf/.env index cc82f8d..ba748ae 100644 --- a/InitAuth/conf/.env +++ b/InitAuth/conf/.env @@ -7,6 +7,11 @@ ServerPwd:"17227ca72f30f8bca8158bb78f25b43e" #以下配置存储GPIO输出高低电平--状态机 outPutMode:false +#以下配置保存摄像头的翻转和镜像 +MEDIA_MIRROR=false +MEDIA_FLIP=false + + #以下配置存储报警距离 NEAR_THRESHOLD=3 MID_THRESHOLD=5 diff --git a/Readme b/Readme new file mode 100644 index 0000000..ec7fc67 --- /dev/null +++ b/Readme @@ -0,0 +1,44 @@ +# 程序清单 + +## DeviceActivate(待测试) +功能: +本程序用于设备激活 +当检测配置文件发现设备未激活时,则系统阻塞 +进行激活,并保存密文 +当检测到设备已被激活后,启动验证程序,并退出本程序 + + +## softWareInit(待测试) +功能: +本程序用于设备验证 +验证通过执行以下功能: +1.启动RTSP推流 +2.启动上传服务,用于上传最新报警图片 +3.启动mqtt,与App进行数据交互,设定报警等参数 +认证失败则会退出程序 + +## GetNet +功能: +初始化4G模块,用于网络连接 + +## GPIOSignal +功能: +用于输出高低电平,提供报警信号 + +## PyApp +功能: +上传服务,用于检测是否存在最新图片,以进行上传报警图片服务服务 +通过设备验证后,由StartService进行启动 + +## StartService +功能: +启动上传服务 + +## StartService +功能: +本程序用于视频分流 +1.推流摄像头画面,使用UDP原生协议进行推流,交由YOLO模型进行处理 +2.接收YOLO传来的坐标和度数据 +3.根据获取到的数据绘制边框和相应数据 +4.根据距离信息进行报警和图片视频保存 +5.输出处理完毕的视频帧 \ No newline at end of file diff --git a/StartService/bin/start.sh b/StartService/bin/start.sh index ea2bfbc..ae34f19 100644 --- a/StartService/bin/start.sh +++ b/StartService/bin/start.sh @@ -1,5 +1,5 @@ -#开启pubimg.service +#开启pubimg.service,上传最新的照片至服务器 sudo systemctl start pubimg.service -#开启fastapi -sudo systemctl start fastApi.service \ No newline at end of file +# #开启fastapi +# sudo systemctl start fastApi.service \ No newline at end of file diff --git a/VideoProsessing/src/main.cpp b/VideoProsessing/src/main.cpp index dccfb1a..9670759 100644 --- a/VideoProsessing/src/main.cpp +++ b/VideoProsessing/src/main.cpp @@ -4,7 +4,7 @@ 2.接收YOLO传来的坐标和度数据 3.根据获取到的数据绘制边框和相应数据 4.根据距离信息进行报警和图片视频保存 -5.将绘制完毕的视频流继续推流至RTSP服务器用于输出 +5.输出处理完毕的视频帧 */ #include diff --git a/softWareInit/bin/wifi b/softWareInit/bin/wifi index 8d3a894..0a6e6be 100755 Binary files a/softWareInit/bin/wifi and b/softWareInit/bin/wifi differ diff --git a/softWareInit/src/main.cpp b/softWareInit/src/main.cpp index c935b85..57be964 100644 --- a/softWareInit/src/main.cpp +++ b/softWareInit/src/main.cpp @@ -2,9 +2,8 @@ 本程序用于设备验证 验证通过执行以下功能: 1.启动RTSP推流 -2.启动系统各项服务,用于和双目交互 +2.启动上传服务,用于上传最新报警图片 3.启动mqtt,与App进行数据交互 - 认证失败则会退出程序 */ @@ -18,6 +17,8 @@ #include #include +#include +#include #include "Netra.hpp" #include "NetRequest.hpp" @@ -48,6 +49,8 @@ const int Qos = 1; std::atomic isRunning(true); // 全局运行标志 std::atomic confirm(true); // 发送卡和ID +condition_variable runCv; +mutex runMutex; // 媒体对象 struct Media @@ -120,7 +123,7 @@ int main(int argc, char *argv[]) // 初始化mqtt mqttInit(); - // 开启系统服务 + // 开启系统服务(上传图片服务) thread(StartService).detach(); // 开启推流服务器 @@ -130,10 +133,14 @@ int main(int argc, char *argv[]) // 进行RTSP视频推流 thread video(VideoStream); - while (isRunning) - { - this_thread::sleep_for(1s); // 防止mpu沾满 - } + unique_lock lk(runMutex); + runCv.wait(lk, []() + { return !isRunning; }); + + // while (isRunning) + // { + // this_thread::sleep_for(1s); + // } // Processing.join(); video.join(); @@ -372,7 +379,7 @@ void OpenRTSP() rtsp_proc = bp::child("/bin/bash", bp::args = {"-c", commnd}); } -// 视频推流 +// 视频推流:推流桌面 void VideoStream() { // 静音ffmpeg的统计输出,保留错误;避免污染日志