Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
car-controlserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wenzhongjian
car-controlserver
Commits
c380ff23
Commit
c380ff23
authored
Jun 26, 2025
by
学习的菜鸟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feature://加入了jwt验证,已测试一部分,后端还在测试,测试通过后直接打标签
parent
8deca748
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
94 additions
and
33 deletions
+94
-33
version.h
build/include/version.h
+1
-1
main
build/main
+0
-0
mqtt_verify.h
include/mqtt_verify.h
+7
-2
audioplay.c
src/audioplay.c
+4
-1
mqtt.c
src/mqtt.c
+69
-19
mqtt_verify.c
src/mqtt_verify.c
+0
-0
thread_main.c
src/thread_main.c
+1
-1
gpio_pwm_car0102.c
system/gpio/gpio_pwm_car0102.c
+7
-7
heat.c
system/sensor/heat.c
+1
-0
warm.c
system/sensor/warm.c
+4
-2
No files found.
build/include/version.h
View file @
c380ff23
...
...
@@ -2,5 +2,5 @@
#define PROJECT_VERSION_MINOR 1
#define PROJECT_VERSION_PATCH 8
#define GIT_HASH ""
#define BUILD_TIMESTAMP "2025-06-2
4T10:17:31
"
#define BUILD_TIMESTAMP "2025-06-2
6T03:49:36
"
#define BUILD_USER "orangepi"
build/main
View file @
c380ff23
No preview for this file type
include/mqtt_verify.h
View file @
c380ff23
...
...
@@ -6,10 +6,14 @@
extern
int
gverify_count
;
//验证计时
extern
int
gverify_index
;
//判断是否验证成功
int
receive_jwt
(
cJSON
*
body
);
//jwt验证
//接收安卓发送的mqtt
int
receive_verify
(
cJSON
*
body
);
//int receive_verify(cJSON *body);//为aes验证,暂时不用,注释
//加密并发送mqtt
int
mqtt_encryption
();
//int mqtt_encryption();//为aes验证,暂时不用,注释
int
message2006_verify
(
cJSON
*
body
);
#endif
\ No newline at end of file
src/audioplay.c
View file @
c380ff23
...
...
@@ -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
;
...
...
src/mqtt.c
View file @
c380ff23
...
...
@@ -52,6 +52,7 @@ char *glon=NULL;//加入gps后删除,心跳预留,不更改
time_t
gStart
;
//时间戳
//mqtt初始化
int
mqtt_init
()
{
mosquitto_lib_init
();
// 这里创建mosq可以保留,也可以删除这一行,让创建放到 Mqtt_onnect 里
...
...
@@ -64,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
();
...
...
@@ -76,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);
...
...
@@ -130,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
;
...
...
@@ -151,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
){
...
...
@@ -220,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
...
...
@@ -246,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"
);
// 提取日期
...
...
@@ -274,21 +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
:
receive_verify
(
body
);
if
(
gverify_index
==
0
)
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
:
...
...
@@ -309,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
;
...
...
@@ -318,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
){
...
...
@@ -349,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
);
...
...
@@ -365,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
)
{
...
...
@@ -386,6 +435,7 @@ int mqtt_cycle(struct mosquitto *mosq) {//阻塞型
// }
// }
//mqtt清理
void
mqtt_clean
(
struct
mosquitto
*
mosq
){
// 清理
mosquitto_destroy
(
mosq
);
...
...
src/mqtt_verify.c
View file @
c380ff23
This diff is collapsed.
Click to expand it.
src/thread_main.c
View file @
c380ff23
...
...
@@ -138,7 +138,7 @@ void *delay_count(void *arg) {
Delay_Ms
(
0
,
5
);
device_delay_count
++
;
//设备计时,坦克打击倒退逻辑
gverify_count
++
;
//验证计时,每15s一次
if
(
gverify_count
>=
5000
)
gverify_count
=
5
000
;
if
(
gverify_count
>=
20000
)
gverify_count
=
20
000
;
if
(
device_delay_count
>=
5000
)
device_delay_count
=
5000
;
}
return
NULL
;
...
...
system/gpio/gpio_pwm_car0102.c
View file @
c380ff23
...
...
@@ -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
+
3
0
*
k
);
pwmWrite
(
PWM_PIN_SPEED
,
b
+
4
0
*
k
);
}
else
if
(
gval
<=
60
)
{
pwmWrite
(
PWM_PIN_SPEED
,
b
+
3
0
*
k
);
pwmWrite
(
PWM_PIN_SPEED
,
b
+
4
0
*
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
+
3
0
*
k
);
pwmWrite
(
PWM_PIN_SPEED
,
b
+
4
0
*
k
);
}
else
if
(
gval
<=
75
)
{
pwmWrite
(
PWM_PIN_SPEED
,
b
+
3
0
*
k
);
pwmWrite
(
PWM_PIN_SPEED
,
b
+
4
0
*
k
);
}
else
if
(
gval
<=
90
)
{
pwmWrite
(
PWM_PIN_SPEED
,
b
+
3
0
*
k
);
pwmWrite
(
PWM_PIN_SPEED
,
b
+
4
0
*
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
)
{
...
...
system/sensor/heat.c
View file @
c380ff23
...
...
@@ -5,6 +5,7 @@
char
temperature
[
20
];
float
temp_str
;
//温度获取
int
heat_tem
()
{
FILE
*
file
;
char
line
[
MAX_LINE_LENGTH
];
...
...
system/sensor/warm.c
View file @
c380ff23
...
...
@@ -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
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment