Commit 00d76b09 authored by 957dd's avatar 957dd

加入了mqtt改名和版本回退

parent c755df0d
......@@ -1108,6 +1108,7 @@ CMakeFiles/main.dir/device_judg/judg/judg.c.o
/home/orangepi/car/master/device_judg/device/pao.h
/home/orangepi/car/master/include/fileopen.h
/home/orangepi/car/master/system/gpio/gpio_pwm_tank0202.h
/home/orangepi/car/master/device_judg/device/device_change.h
CMakeFiles/main.dir/src/delay.c.o
/home/orangepi/car/master/src/delay.c
......@@ -1566,6 +1567,7 @@ CMakeFiles/main.dir/src/fileopen.c.o
/home/orangepi/car/master/include/log.h
/home/orangepi/car/master/include/delay.h
/home/orangepi/car/master/include/delay.h
/home/orangepi/car/master/device_judg/device/device_change.h
CMakeFiles/main.dir/src/ip.c.o
/home/orangepi/car/master/src/ip.c
......
......@@ -1100,7 +1100,8 @@ CMakeFiles/main.dir/device_judg/judg/judg.c.o: ../device_judg/judg/judg.c \
../device_judg/device/ship.h \
../device_judg/device/pao.h \
../include/fileopen.h \
../system/gpio/gpio_pwm_tank0202.h
../system/gpio/gpio_pwm_tank0202.h \
../device_judg/device/device_change.h
CMakeFiles/main.dir/src/delay.c.o: ../src/delay.c \
/usr/include/stdc-predef.h \
......@@ -1555,7 +1556,8 @@ CMakeFiles/main.dir/src/fileopen.c.o: ../src/fileopen.c \
../system/gpio/gpio_common.h \
../include/log.h \
../include/delay.h \
../include/delay.h
../include/delay.h \
../device_judg/device/device_change.h
CMakeFiles/main.dir/src/ip.c.o: ../src/ip.c \
/usr/include/stdc-predef.h \
......
......@@ -141,4 +141,5 @@ CMakeFiles/main.dir/device_judg/judg/judg.c.o: \
/home/orangepi/car/master/device_judg/device/ship.h \
/home/orangepi/car/master/device_judg/device/pao.h \
/home/orangepi/car/master/include/fileopen.h \
/home/orangepi/car/master/system/gpio/gpio_pwm_tank0202.h
/home/orangepi/car/master/system/gpio/gpio_pwm_tank0202.h \
/home/orangepi/car/master/device_judg/device/device_change.h
......@@ -129,4 +129,5 @@ CMakeFiles/main.dir/src/fileopen.c.o: \
/home/orangepi/car/master/system/gpio/gpio_common.h \
/home/orangepi/car/master/include/log.h \
/home/orangepi/car/master/include/delay.h \
/home/orangepi/car/master/include/delay.h
/home/orangepi/car/master/include/delay.h \
/home/orangepi/car/master/device_judg/device/device_change.h
......@@ -2,5 +2,5 @@
#define PROJECT_VERSION_MINOR 1
#define PROJECT_VERSION_PATCH 0
#define GIT_HASH ""
#define BUILD_TIMESTAMP "2025-05-10T10:40:46"
#define BUILD_TIMESTAMP "2025-05-12T08:19:12"
#define BUILD_USER "orangepi"
No preview for this file type
......@@ -6,6 +6,8 @@
#define BUFFER_SIZE 1024
char buffer_device_change_fail[40]; // 用于回退存储文件内容
// 判断文件是否存在
int file_exists(const char *path) {
return access(path, F_OK) == 0;
......@@ -137,7 +139,7 @@ time_t extract_timestamp(const char *filename) {
return 0;
}
// 查找目录中最新的设备备份文件
// 查找目录中最
char *find_latest_file(const char *dir_path) {
DIR *dir = opendir(dir_path);
if (!dir) {
......@@ -230,5 +232,27 @@ char *device_changename_back_fail(void) {
my_zlog_debug("回退路径为: %s", full_path);
free(latest_file);
return full_path;
}
//读取失败备份内容
char *read_device_back_fail() {
FILE *file;
char *device_back_fail =device_changename_back_fail();
if(device_back_fail !=NULL) { //如果在备份文件中找到
file = fopen(device_back_fail, "r"); // 以只读模式打开文件
if (fgets(buffer_device_change_fail, sizeof(buffer_device_change_fail), file) != NULL) {
// 如果文件内容不为空
fclose(file);
my_zlog_debug("读取到备份文件内容: %s", buffer_device_change_fail);
free(device_back_fail);
return buffer_device_change_fail;
} else {
my_zlog_debug("读取备份文件失败");
}
fclose(file);
return NULL;
}
return NULL;
}
......@@ -7,4 +7,5 @@
int device_changename_back(const char *device_date, const char *device_id);//设备号备份和写人新设备号
int file_exists(const char *path);//文件已经存在
int create_directory_if_not_exists(const char *path);//创建目录
char *read_device_back_fail();//下载失败回退版本
#endif
\ No newline at end of file
......@@ -11,12 +11,14 @@
#include "pao.h"
#include "fileopen.h"
#include "gpio_pwm_tank0202.h"
#include "device_change.h"
char TOPIC_middle[23];
char TOPIC2_middle[23];
char TOPIC3_middle[15];
bool device_name_exists=0;
// char TOPIC_BACK_middle[23];
// char TOPIC2_BACK_middle[23];
// char TOPIC3_BACK_middle[15];
......@@ -89,7 +91,7 @@ int hash_insert_init(HashTable *hashTable) {
int Device_judg(CodeEnum code,char *sub_str) {
if (code == CAR_0101) {
car_Init_0101() ;
car_Init_0101();
my_zlog_info("使用型号%s",sub_str);
}else if(code == CAR_0102) {
car_Init_0102();
......@@ -107,16 +109,16 @@ int Device_judg(CodeEnum code,char *sub_str) {
ptr_Init_0401();
my_zlog_info("使用型号%s",sub_str);
}else {
my_zlog_error("没有找到设备号");
exit(0);
my_zlog_error("没有找到设备号,尝试启用备用mqtt,topic进行改名");
device_name_exists=1;
//exit(0);
}
return 0;
}
int Device_File_Init() {//设备文件读取函数
char *readmidbuf=device_inspect(); //读取代码
if(strlen(readmidbuf) > 14 && readmidbuf[14]=='\n') readmidbuf[14]=='\0';//将\n去除
if(strlen(readmidbuf) > 14 && readmidbuf[14]=='\n') readmidbuf[14]='\0';//将\n去除
const char *readbuf = readmidbuf;
......@@ -138,10 +140,16 @@ int Device_File_Init() {//设备文件读取函数
free(sub_str);
Delay_Ms(20,0);
if(device_name_exists == 0) {
sprintf(TOPIC2_middle,"dev2app/%s",readbuf);
sprintf(TOPIC_middle,"app2dev/%s",readbuf);
sprintf(TOPIC3_middle,"%s",readbuf);
} else {
sprintf(TOPIC2_middle,"dev2app/%s","00000000000000");
sprintf(TOPIC_middle,"app2dev/%s","00000000000000");
sprintf(TOPIC3_middle,"%s","00000000000000");
}
topic_middle_value();//指针传值声明
......
......@@ -3,7 +3,6 @@
#define INITIAL_TABLE_SIZE 10 //定义大小
// 定义一个枚举类型 CodeEnum,用于表示不同的代码
// 枚举类型是一种用户自定义的数据类型,它可以让代码更具可读性和可维护性
typedef enum {
......
#include "fileopen.h"
#include "common.h"
#include "delay.h"
#include "device_change.h"
char buffer_device[30]; // 用于存储文件内容
char buffer_version[30];// 用于存储版本号内容
char *device_inspect() {//读出文件函数
FILE *file;
char *read_device_back_fail_middle=read_device_back_fail();
while (1) {
file = fopen(FILENAME, "r"); // 以只读模式打开文件
if (file == NULL) {
if(read_device_back_fail_middle!=NULL) {//回退文件
return read_device_back_fail_middle;
}
my_zlog_debug("文件 %s 打开失败,等待中...", FILENAME);
}
else {
......@@ -22,6 +26,10 @@ char *device_inspect() {//读出文件函数
my_zlog_debug("读取到文件内容: %s", buffer_device);
return buffer_device;
} else {
if(read_device_back_fail_middle!=NULL) {
fclose(file);
return read_device_back_fail();
}
my_zlog_debug("文件为空,等待中...");
}
fclose(file);
......@@ -34,7 +42,7 @@ char *program_version() {//打开版本文件
FILE *file;
file = fopen(FILE_VERSION, "r"); // 以只读模式打开文件
if (file == NULL) {
my_zlog_debug("文件无");
my_zlog_debug("版本文件无");
} else {
// 尝试读取文件内容
if (fgets(buffer_version, sizeof(buffer_version), file) != NULL) {
......
......@@ -27,25 +27,25 @@ void car0102_mode_1_flont(unsigned char gval) {
}else if (gval < 50) {
pwmWrite(PWM_PIN_SPEED, 1000);
} else if (gval <= 55) {
pwmWrite(PWM_PIN_SPEED, 1000-200);
pwmWrite(PWM_PIN_SPEED, 1000-350);
} else if (gval <= 60) {
pwmWrite(PWM_PIN_SPEED, 1000-300);
pwmWrite(PWM_PIN_SPEED, 1000-400);
} else if (gval <= 65) {
pwmWrite(PWM_PIN_SPEED, 1000-350);
pwmWrite(PWM_PIN_SPEED, 1000-450);
} else if (gval <= 70) {
pwmWrite(PWM_PIN_SPEED, 1000-400);
pwmWrite(PWM_PIN_SPEED, 1000-500);
} else if (gval <= 75) {
pwmWrite(PWM_PIN_SPEED, 1000-450);
pwmWrite(PWM_PIN_SPEED, 1000-550);
} else if (gval <= 90) {
pwmWrite(PWM_PIN_SPEED, 1000-500);
pwmWrite(PWM_PIN_SPEED, 1000-600);
} else if (gval <= 100) {
pwmWrite(PWM_PIN_SPEED, 1000-550);
} else if (gval <= 110) {
pwmWrite(PWM_PIN_SPEED, 1000-600);
} else if (gval <= 110) {
pwmWrite(PWM_PIN_SPEED, 1000-650);
} else if (gval <= 120) {
pwmWrite(PWM_PIN_SPEED, 1000-650);
} else if (gval <= 130) {
pwmWrite(PWM_PIN_SPEED, 1000-100);
pwmWrite(PWM_PIN_SPEED, 1000-700);
} else if (gval <= 140) {
pwmWrite(PWM_PIN_SPEED, 1000-750);
} else if (gval <= 150) {
......@@ -65,43 +65,44 @@ void car0102_mode_1_flont(unsigned char gval) {
void car0102_mode_2_back(unsigned char gval) {
int k = 5;
int b = 10;
pin_value(26,0);
if (gval < 50) {
pwmWrite(PWM_PIN_SPEED, 0);
} else if (gval <= 55) {
pwmWrite(PWM_PIN_SPEED, 5 * k);
pwmWrite(PWM_PIN_SPEED, b + 30 * k);
} else if (gval <= 60) {
pwmWrite(PWM_PIN_SPEED, 0+10 * k);
pwmWrite(PWM_PIN_SPEED, b + 30 * k);
} else if (gval <= 65) {
pwmWrite(PWM_PIN_SPEED, 0+15 * k);
pwmWrite(PWM_PIN_SPEED, b + 30 * k);
} else if (gval <= 70) {
pwmWrite(PWM_PIN_SPEED, 0+20 * k);
pwmWrite(PWM_PIN_SPEED, b + 30 * k);
} else if (gval <= 75) {
pwmWrite(PWM_PIN_SPEED, 0+25 * k);
pwmWrite(PWM_PIN_SPEED, b + 30 * k);
} else if (gval <= 90) {
pwmWrite(PWM_PIN_SPEED, 0+30 * k);
pwmWrite(PWM_PIN_SPEED, b + 30 * k);
} else if (gval <= 100) {
pwmWrite(PWM_PIN_SPEED, 0+35 * k);
pwmWrite(PWM_PIN_SPEED, b + 35 * k);
} else if (gval <= 110) {
pwmWrite(PWM_PIN_SPEED, 0+40 * k);
pwmWrite(PWM_PIN_SPEED, b + 40 * k);
} else if (gval <= 120) {
pwmWrite(PWM_PIN_SPEED, 0+45 * k);
pwmWrite(PWM_PIN_SPEED, b + 45 * k);
} else if (gval <= 130) {
pwmWrite(PWM_PIN_SPEED, 0+50 * k);
pwmWrite(PWM_PIN_SPEED, b + 50 * k);
} else if (gval <= 140) {
pwmWrite(PWM_PIN_SPEED, 0+55 * k);
pwmWrite(PWM_PIN_SPEED, b + 55 * k);
} else if (gval <= 150) {
pwmWrite(PWM_PIN_SPEED, 0+60 * k);
pwmWrite(PWM_PIN_SPEED, b + 60 * k);
} else if (gval <= 160) {
pwmWrite(PWM_PIN_SPEED, 0+60 * k);
pwmWrite(PWM_PIN_SPEED, b + 60 * k);
} else if (gval <= 170) {
pwmWrite(PWM_PIN_SPEED, 0+65 * k);
pwmWrite(PWM_PIN_SPEED, b + 65 * k);
} else if (gval <= 180) {
pwmWrite(PWM_PIN_SPEED, 0+70 * k);
pwmWrite(PWM_PIN_SPEED, b + 70 * k);
} else if (gval <= 190) {
pwmWrite(PWM_PIN_SPEED, 0+75 * k);
pwmWrite(PWM_PIN_SPEED, b + 75 * k);
} else if (gval <= 200) {
pwmWrite(PWM_PIN_SPEED, 0+100 * k);
pwmWrite(PWM_PIN_SPEED, b + 100 * k);
}
}
......
......@@ -12,7 +12,7 @@ void car_calculate_L_R(int angle) {//将角度转化为对应的舵机pwm值
float pulse_width=(2 / 180.0) * angle + 0.5;
// 周期(ms)
float period = 1000.0 / 50;
int val = (int)((pulse_width / period) * 1024);
int val = (int)((pulse_width / period) * 1000);
pwmWrite(PWM_PIN_CHANGE,val);
}
......
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