Commit e285d9bc authored by 957dd's avatar 957dd

Merge branch 'feature/car-verify' into 'master'

Feature/car verify See merge request !45
parents 2a761b47 c380ff23
cmake_minimum_required(VERSION 3.10)
project(DeviceControlSystem
VERSION 1.1.7
VERSION 1.1.8
LANGUAGES C
)
......@@ -8,10 +8,6 @@ project(DeviceControlSystem
string(TIMESTAMP BUILD_TIMESTAMP)
set(BUILD_USER $ENV{USER})
# 调试信息,确认路径
message(STATUS "CMAKE_CURRENT_SOURCE_DIR: ${CMAKE_CURRENT_SOURCE_DIR}")
message(STATUS "Trying to configure file: ${CMAKE_CURRENT_SOURCE_DIR}/include/version.h.in")
# 配置版本文件
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/include/version.h.in
......@@ -20,7 +16,7 @@ configure_file(
# 添加生成的头文件目录
include_directories(
${CMAKE_CURRENT_BINARY_DIR}/include # 添加这行
${CMAKE_CURRENT_BINARY_DIR}/include
include
device_judg/device
device_judg/judg
......@@ -46,17 +42,25 @@ file(GLOB_RECURSE SOURCES
list(FILTER SOURCES EXCLUDE REGEX "zlog/src/zlog-chk-conf.c")
list(FILTER SOURCES EXCLUDE REGEX "zlog/src/zlog_win.c")
# 创建可执行文件${PROJECT_NAME}
add_executable( main ${SOURCES})
# 设置静态链接选项
set(CMAKE_FIND_LIBRARY_SUFFIXES .a .so)
set(BUILD_SHARED_LIBS OFF)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++ -Wl,-Bstatic -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -Wl,-Bdynamic")
# 创建可执行文件
add_executable(main ${SOURCES})
# 链接库
target_link_libraries( main PRIVATE
# 链接静态库
target_link_libraries(main PRIVATE
-Wl,--start-group
wiringPi
mosquitto
cjson
curl
m
#zlog
ssl
crypto
-Wl,--end-group
)
# 安装规则(可选)
......
......@@ -520,6 +520,30 @@ src/mqtt.c.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/src/mqtt.c.s
.PHONY : src/mqtt.c.s
src/mqtt_verify.o: src/mqtt_verify.c.o
.PHONY : src/mqtt_verify.o
# target to build an object file
src/mqtt_verify.c.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/src/mqtt_verify.c.o
.PHONY : src/mqtt_verify.c.o
src/mqtt_verify.i: src/mqtt_verify.c.i
.PHONY : src/mqtt_verify.i
# target to preprocess a source file
src/mqtt_verify.c.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/src/mqtt_verify.c.i
.PHONY : src/mqtt_verify.c.i
src/mqtt_verify.s: src/mqtt_verify.c.s
.PHONY : src/mqtt_verify.s
# target to generate assembly for a file
src/mqtt_verify.c.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/src/mqtt_verify.c.s
.PHONY : src/mqtt_verify.c.s
src/opensh.o: src/opensh.c.o
.PHONY : src/opensh.o
......@@ -1512,6 +1536,9 @@ help:
@echo "... src/mqtt.o"
@echo "... src/mqtt.i"
@echo "... src/mqtt.s"
@echo "... src/mqtt_verify.o"
@echo "... src/mqtt_verify.i"
@echo "... src/mqtt_verify.s"
@echo "... src/opensh.o"
@echo "... src/opensh.i"
@echo "... src/opensh.s"
......
#define PROJECT_VERSION_MAJOR 1
#define PROJECT_VERSION_MINOR 1
#define PROJECT_VERSION_PATCH 7
#define PROJECT_VERSION_PATCH 8
#define GIT_HASH ""
#define BUILD_TIMESTAMP "2025-06-09T07:19:20"
#define BUILD_TIMESTAMP "2025-06-26T03:49:36"
#define BUILD_USER "orangepi"
No preview for this file type
#ifndef MQTT_VERIFY_H__
#define MQTT_VERIFY_H__
#define AES_BLOCK_SIZE 16
extern int gverify_count;//验证计时
extern int gverify_index;//判断是否验证成功
int receive_jwt(cJSON *body);//jwt验证
//接收安卓发送的mqtt
//int receive_verify(cJSON *body);//为aes验证,暂时不用,注释
//加密并发送mqtt
//int mqtt_encryption();//为aes验证,暂时不用,注释
int message2006_verify(cJSON *body);
#endif
\ No newline at end of file
......@@ -8,6 +8,7 @@ char urlbuf[512];
char keybuf[256];
double audio_volume=0.8;
//接收音频播放
void audioplay_mqtt_receive(cJSON *json) {
// 解析"audioLink"字段(修正了原始JSON中的拼写错误)
cJSON *audio_link = cJSON_GetObjectItemCaseSensitive(json, "audioLink");
......@@ -49,7 +50,8 @@ void audioplay_mqtt_receive(cJSON *json) {
}
}
void audioplay_send_mqtt() {//发送音频播放是否完毕
//发送音频播放是否完毕
void audioplay_send_mqtt() {
cJSON *root = cJSON_CreateObject();
cJSON *body = cJSON_CreateObject();
cJSON *head = cJSON_CreateObject();
......@@ -73,6 +75,7 @@ void audioplay_send_mqtt() {//发送音频播放是否完毕
cJSON_Delete(root);
}
//音频播放
void audioplay_cycle(){
char command[512];
int ret;
......
......@@ -16,6 +16,7 @@
#include "ads1115.h"
#include "audioplay.h"
#include "wifichange.h"
#include "mqtt_verify.h"
struct mosquitto *mosq;
......@@ -51,6 +52,7 @@ char *glon=NULL;//加入gps后删除,心跳预留,不更改
time_t gStart;//时间戳
//mqtt初始化
int mqtt_init() {
mosquitto_lib_init();
// 这里创建mosq可以保留,也可以删除这一行,让创建放到 Mqtt_onnect 里
......@@ -63,7 +65,8 @@ int mqtt_init() {
return 0;
}
void on_connect(struct mosquitto *mosq, void *obj, int rc) {//回调函数
//回调函数
void on_connect(struct mosquitto *mosq, void *obj, int rc) {
if (rc == 0) {
my_zlog_debug("Connected to broker");
topic_middle_value();
......@@ -75,7 +78,8 @@ void on_connect(struct mosquitto *mosq, void *obj, int rc) {//回调函数
}
}
void heartbeat_send() {//心跳发送格式*5/2
//心跳发送格式*5/2
void heartbeat_send() {
float voltage = INA226_readBusVoltage();
float current = INA226_readCurrent();
//my_zlog_debug("%.2f\n", voltage);
......@@ -129,7 +133,8 @@ void heartbeat_send() {//心跳发送格式*5/2
cJSON_Delete(root); // 释放 cJSON 对象
}
void angle_mqtt_send() {
//角度发送
void angle_mqtt_send() {
float angle_shot=ads1115_read_channel(2);
if(angle_shot>0){
angle_shot=angle_shot*360/5;
......@@ -150,14 +155,16 @@ void angle_mqtt_send() {
}
void mqtt_wirte(){//心跳格式,每5s一次心跳
//心跳格式,每5s一次心跳
void mqtt_wirte(){
if( heartbeat_count >= 30) heartbeat_send();
if( AppExit_pin_pwm == 202) angle_mqtt_send();
}
void message_3(cJSON *body){//message_type为3,控制pwm
//message_type为3,控制pwm
void message_3(cJSON *body){
cJSON *pwm_ctrl = cJSON_GetObjectItem(body, "pwm_ctrl");
cJSON *pin_setctrl = cJSON_GetObjectItem(body, "pin_setctrl");
if(pwm_ctrl==NULL||pin_setctrl==NULL){
......@@ -219,7 +226,39 @@ void message_4(cJSON *body){//message 为4时候
if(AppExit_pin_pwm == 202 ) tank_shot_back_stop(gvalt[1],gvalt[2]);
}
int download_message(cJSON *body){//接收的下载的mqtt消息
//当接收到2时候验证
void message_2_judyverify(cJSON *body){
receive_jwt(body);
if(gverify_index == 0) {
refresh_cam();
} else {
my_zlog_warn("验证不通过");
}
}
//当接收到3时候验证
void message_3_judyverify(cJSON *body){
receive_jwt(body);
if(gverify_index == 0) {
message_3(body);
} else {
my_zlog_warn("验证不通过");
}
}
//当接收到4时候验证
void message_4_judyverify(cJSON *body){
receive_jwt(body);
if(gverify_index == 0) {
message_4(body);
} else {
my_zlog_warn("验证不通过");
}
}
//接收的下载的mqtt消息
int download_message(cJSON *body){
if (cJSON_IsObject(body)) {
// 获取 doby 对象
// 获取 site 中的 name 和 url
......@@ -245,6 +284,7 @@ int download_message(cJSON *body){//接收的下载的mqtt消息
return 0;
}
//接收到设备改名函数
int device_mqttchange_name(cJSON *device_id){
cJSON *id = cJSON_GetObjectItem(device_id, "id");// 提取ID
cJSON *date = cJSON_GetObjectItem(device_id, "date");// 提取日期
......@@ -273,20 +313,16 @@ int device_message_receive(cJSON *json){//接收到的控制设备的mqtt消息
gmessage_type=message_type->valueint;
my_zlog_debug("message_type: %d",message_type->valueint);
switch(gmessage_type){
case 1:
system("sudo reboot");//重启香橙派
my_zlog_debug("重启成功");
break;
case 2:
refresh_cam();
my_zlog_debug("刷新成功");
message_2_judyverify(body);
my_zlog_debug("进入刷新");
break;
case 3:
message_3(body);
message_3_judyverify(body);
my_zlog_debug("进入pwm控制");
break;
case 4:
message_4(body);
message_4_judyverify(body);
my_zlog_debug("进入引脚控制");
break;
case 2001:
......@@ -307,6 +343,19 @@ int device_message_receive(cJSON *json){//接收到的控制设备的mqtt消息
break;
case 2005:
download_message(body);
my_zlog_debug("进入下载");
break;
case 2006:
message2006_verify(body);
my_zlog_debug("进入消息为2006验证");
break;
case 2011:
system("sudo reboot");//重启香橙派
my_zlog_debug("重启成功");
break;
case 2012:
refresh_cam();
my_zlog_debug("刷新成功");
break;
default:
break;
......@@ -316,7 +365,8 @@ int device_message_receive(cJSON *json){//接收到的控制设备的mqtt消息
return 0;
}
void on_message(struct mosquitto *mosq, void *obj, const struct mosquitto_message *message) {//消息回环函数
//消息回环函数
void on_message(struct mosquitto *mosq, void *obj, const struct mosquitto_message *message) {
time_t end = time(NULL);
if(gStart+5>end){
......@@ -347,8 +397,8 @@ void on_message(struct mosquitto *mosq, void *obj, const struct mosquitto_messag
}
}
int mqtt_create(struct mosquitto *mosq) { // 返回连接结果,0成功,非0失败
// 返回连接结果,0成功,非0失败
int mqtt_create(struct mosquitto *mosq) {
mosquitto_reconnect_delay_set(mosq, 2, 10, true);
mosquitto_connect_callback_set(mosq, on_connect);
mosquitto_message_callback_set(mosq, on_message);
......@@ -363,7 +413,8 @@ int mqtt_create(struct mosquitto *mosq) { // 返回连接结果,0成功,非0
return 0; // 成功
}
int mqtt_cycle(struct mosquitto *mosq) {//阻塞型
//阻塞型
int mqtt_cycle(struct mosquitto *mosq) {
// 这个函数会阻塞直到连接断开或错误返回
int rc = mosquitto_loop_forever(mosq, -1, 1);
if (rc != MOSQ_ERR_SUCCESS) {
......@@ -384,6 +435,7 @@ int mqtt_cycle(struct mosquitto *mosq) {//阻塞型
// }
// }
//mqtt清理
void mqtt_clean(struct mosquitto *mosq){
// 清理
mosquitto_destroy(mosq);
......
This diff is collapsed.
......@@ -11,6 +11,7 @@
#include "device_exit.h"
#include "thread_main.h"
#include "wifichange.h"
#include "mqtt_verify.h"
pthread_t thread[6]; // 全局线程句柄数组(或传参)
......@@ -135,7 +136,9 @@ void *Mqtt_onnect(void *arg) {
void *delay_count(void *arg) {
while (1) {
Delay_Ms(0,5);
device_delay_count++;
device_delay_count++;//设备计时,坦克打击倒退逻辑
gverify_count++;//验证计时,每15s一次
if(gverify_count >= 20000) gverify_count = 20000;
if(device_delay_count >= 5000) device_delay_count = 5000;
}
return NULL;
......
......@@ -70,19 +70,19 @@ void car0102_mode_2_back(unsigned char gval) {
if (gval < 50) {
pwmWrite(PWM_PIN_SPEED, 0);
} else if (gval <= 55) {
pwmWrite(PWM_PIN_SPEED, b + 30 * k);
pwmWrite(PWM_PIN_SPEED,b + 40 * k);
} else if (gval <= 60) {
pwmWrite(PWM_PIN_SPEED, b + 30 * k);
pwmWrite(PWM_PIN_SPEED,b + 40 * k);
} else if (gval <= 65) {
pwmWrite(PWM_PIN_SPEED, b + 30 * k);
pwmWrite(PWM_PIN_SPEED, b + 40* k);
} else if (gval <= 70) {
pwmWrite(PWM_PIN_SPEED, b + 30 * k);
pwmWrite(PWM_PIN_SPEED, b + 40 * k);
} else if (gval <= 75) {
pwmWrite(PWM_PIN_SPEED, b + 30 * k);
pwmWrite(PWM_PIN_SPEED, b + 40 * k);
} else if (gval <= 90) {
pwmWrite(PWM_PIN_SPEED, b + 30 * k);
pwmWrite(PWM_PIN_SPEED, b + 40 * k);
} else if (gval <= 100) {
pwmWrite(PWM_PIN_SPEED, b + 35 * k);
pwmWrite(PWM_PIN_SPEED, b + 40 * k);
} else if (gval <= 110) {
pwmWrite(PWM_PIN_SPEED, b + 40 * k);
} else if (gval <= 120) {
......
......@@ -5,6 +5,7 @@
char temperature[20];
float temp_str;
//温度获取
int heat_tem() {
FILE *file;
char line[MAX_LINE_LENGTH];
......
......@@ -4,7 +4,8 @@
#include "gpio_pwm_carship.h"
#include "request.h"
int alarm_highest(int index) {//最高警报,最低电压报警
//最高警报,最低电压报警
int alarm_highest(int index) {
if(index == 1) {
pin_value(20,1);//紫灯
if(enable_buzzer_value) {
......@@ -18,7 +19,8 @@ int alarm_highest(int index) {//最高警报,最低电压报警
return index ;
}
int alarm_low(int index) {//比较小警报
//比较小警报
int alarm_low(int index) {
if(index == 1) {
pin_value(16,1);//黄灯
} else if(index == 0) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment