Commit ff97f015 authored by 957dd's avatar 957dd

Merge branch 'feature/add_positioning' into 'master'

Feature/add positioning See merge request !90
parents adf87758 3b8a2211
......@@ -98,6 +98,7 @@ int hash_insert_init(HashTable_t *HashTable_t) {
insert(HashTable_t, "0206", TANK_0206);
insert(HashTable_t, "0301", SHIP_0301);
insert(HashTable_t, "0401", PAO_0401);
insert(HashTable_t, "0403", PGGPS_0403);
insert(HashTable_t, "0501", ROBOT_DOG0501);
}
......@@ -132,6 +133,9 @@ int device_judg(CodeEnum_t code,char *sub_str) {
}else if(code ==PAO_0401) {
device_init(DEVICE_PAO_PTZ0401);
my_zlog_info("使用型号%s",sub_str);
}else if(code ==PGGPS_0403) {
device_init(DEVICE_PG_GPS0403);
my_zlog_info("使用定位设备%s",sub_str);
}else if(code ==ROBOT_DOG0501) {
device_init(DEVICE_ROBOT_DOG0501);
my_zlog_info("使用型号%s",sub_str);
......
......@@ -19,6 +19,7 @@ typedef enum {
TANK_0206,
SHIP_0301,
PAO_0401,
PGGPS_0403,
ROBOT_DOG0501
} CodeEnum_t;
......
......@@ -39,7 +39,10 @@ int thread_start_init(ThreadFunc thread_exit_time, ThreadFunc thread_mqtt_beat,
//出现意外自动停止
void *thread_exit_time(void *arg) {
while(1){
pg0403_serial_run();
while(1){
if(get_self_control_index()==false){
delay_ms(100);
......@@ -99,12 +102,17 @@ void *thread_mqtt_beat(void *arg) {
//打开游览器线程,让游览器一直在一个线程中打开并运行
void *thread_open_browser(void *arg) {
if(g_device_type==DEVICE_PG_GPS0403){
return NULL;
}
int result = system("pkill chromium");
if (result != 0) {
my_zlog_error("system error");
}
delay_s(5);
while(1){
if(g_webrtc_index==1) {
if(is_browser_running() == true ) {
continue;
......
......@@ -641,6 +641,30 @@ drivers/devicecontrol/devcontrol_common.c.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/drivers/devicecontrol/devcontrol_common.c.s
.PHONY : drivers/devicecontrol/devcontrol_common.c.s
drivers/devicecontrol/pg0403_serial.o: drivers/devicecontrol/pg0403_serial.c.o
.PHONY : drivers/devicecontrol/pg0403_serial.o
# target to build an object file
drivers/devicecontrol/pg0403_serial.c.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/drivers/devicecontrol/pg0403_serial.c.o
.PHONY : drivers/devicecontrol/pg0403_serial.c.o
drivers/devicecontrol/pg0403_serial.i: drivers/devicecontrol/pg0403_serial.c.i
.PHONY : drivers/devicecontrol/pg0403_serial.i
# target to preprocess a source file
drivers/devicecontrol/pg0403_serial.c.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/drivers/devicecontrol/pg0403_serial.c.i
.PHONY : drivers/devicecontrol/pg0403_serial.c.i
drivers/devicecontrol/pg0403_serial.s: drivers/devicecontrol/pg0403_serial.c.s
.PHONY : drivers/devicecontrol/pg0403_serial.s
# target to generate assembly for a file
drivers/devicecontrol/pg0403_serial.c.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/drivers/devicecontrol/pg0403_serial.c.s
.PHONY : drivers/devicecontrol/pg0403_serial.c.s
drivers/devicecontrol/ptz0401_control.o: drivers/devicecontrol/ptz0401_control.c.o
.PHONY : drivers/devicecontrol/ptz0401_control.o
......@@ -1952,6 +1976,9 @@ help:
@echo "... drivers/devicecontrol/devcontrol_common.o"
@echo "... drivers/devicecontrol/devcontrol_common.i"
@echo "... drivers/devicecontrol/devcontrol_common.s"
@echo "... drivers/devicecontrol/pg0403_serial.o"
@echo "... drivers/devicecontrol/pg0403_serial.i"
@echo "... drivers/devicecontrol/pg0403_serial.s"
@echo "... drivers/devicecontrol/ptz0401_control.o"
@echo "... drivers/devicecontrol/ptz0401_control.i"
@echo "... drivers/devicecontrol/ptz0401_control.s"
......
No preview for this file type
CMAKE_PROGRESS_1 =
CMAKE_PROGRESS_2 =
CMAKE_PROGRESS_3 = 81
CMAKE_PROGRESS_2 = 81
CMAKE_PROGRESS_3 =
CMAKE_PROGRESS_4 =
CMAKE_PROGRESS_5 = 82
CMAKE_PROGRESS_6 =
......
......@@ -34,8 +34,8 @@ CMAKE_PROGRESS_33 =
CMAKE_PROGRESS_34 =
CMAKE_PROGRESS_35 = 12
CMAKE_PROGRESS_36 =
CMAKE_PROGRESS_37 = 13
CMAKE_PROGRESS_38 =
CMAKE_PROGRESS_37 =
CMAKE_PROGRESS_38 = 13
CMAKE_PROGRESS_39 =
CMAKE_PROGRESS_40 = 14
CMAKE_PROGRESS_41 =
......
......@@ -7,8 +7,8 @@ CMAKE_PROGRESS_6 =
CMAKE_PROGRESS_7 =
CMAKE_PROGRESS_8 = 18
CMAKE_PROGRESS_9 =
CMAKE_PROGRESS_10 = 19
CMAKE_PROGRESS_11 =
CMAKE_PROGRESS_10 =
CMAKE_PROGRESS_11 = 19
CMAKE_PROGRESS_12 =
CMAKE_PROGRESS_13 = 20
CMAKE_PROGRESS_14 =
......@@ -24,11 +24,11 @@ CMAKE_PROGRESS_23 =
CMAKE_PROGRESS_24 =
CMAKE_PROGRESS_25 = 24
CMAKE_PROGRESS_26 =
CMAKE_PROGRESS_27 = 25
CMAKE_PROGRESS_28 =
CMAKE_PROGRESS_27 =
CMAKE_PROGRESS_28 = 25
CMAKE_PROGRESS_29 =
CMAKE_PROGRESS_30 = 26
CMAKE_PROGRESS_31 =
CMAKE_PROGRESS_30 =
CMAKE_PROGRESS_31 = 26
CMAKE_PROGRESS_32 =
CMAKE_PROGRESS_33 = 27
CMAKE_PROGRESS_34 =
......
......@@ -3,8 +3,8 @@ CMAKE_PROGRESS_2 =
CMAKE_PROGRESS_3 =
CMAKE_PROGRESS_4 = 86
CMAKE_PROGRESS_5 =
CMAKE_PROGRESS_6 =
CMAKE_PROGRESS_7 = 87
CMAKE_PROGRESS_6 = 87
CMAKE_PROGRESS_7 =
CMAKE_PROGRESS_8 =
CMAKE_PROGRESS_9 = 88
CMAKE_PROGRESS_10 =
......
CMAKE_PROGRESS_1 = 54
CMAKE_PROGRESS_1 =
CMAKE_PROGRESS_2 =
CMAKE_PROGRESS_3 =
CMAKE_PROGRESS_4 = 55
CMAKE_PROGRESS_3 = 55
CMAKE_PROGRESS_4 =
CMAKE_PROGRESS_5 =
CMAKE_PROGRESS_6 =
CMAKE_PROGRESS_7 = 56
CMAKE_PROGRESS_6 = 56
CMAKE_PROGRESS_7 =
CMAKE_PROGRESS_8 =
CMAKE_PROGRESS_9 = 57
CMAKE_PROGRESS_10 =
......@@ -14,14 +14,14 @@ CMAKE_PROGRESS_13 =
CMAKE_PROGRESS_14 =
CMAKE_PROGRESS_15 = 59
CMAKE_PROGRESS_16 =
CMAKE_PROGRESS_17 =
CMAKE_PROGRESS_18 = 60
CMAKE_PROGRESS_17 = 60
CMAKE_PROGRESS_18 =
CMAKE_PROGRESS_19 =
CMAKE_PROGRESS_20 =
CMAKE_PROGRESS_21 = 61
CMAKE_PROGRESS_20 = 61
CMAKE_PROGRESS_21 =
CMAKE_PROGRESS_22 =
CMAKE_PROGRESS_23 =
CMAKE_PROGRESS_24 = 62
CMAKE_PROGRESS_23 = 62
CMAKE_PROGRESS_24 =
CMAKE_PROGRESS_25 =
CMAKE_PROGRESS_26 = 63
CMAKE_PROGRESS_27 =
......@@ -34,11 +34,11 @@ CMAKE_PROGRESS_33 =
CMAKE_PROGRESS_34 =
CMAKE_PROGRESS_35 = 66
CMAKE_PROGRESS_36 =
CMAKE_PROGRESS_37 =
CMAKE_PROGRESS_38 = 67
CMAKE_PROGRESS_37 = 67
CMAKE_PROGRESS_38 =
CMAKE_PROGRESS_39 =
CMAKE_PROGRESS_40 =
CMAKE_PROGRESS_41 = 68
CMAKE_PROGRESS_40 = 68
CMAKE_PROGRESS_41 =
CMAKE_PROGRESS_42 =
CMAKE_PROGRESS_43 = 69
CMAKE_PROGRESS_44 =
......@@ -54,8 +54,8 @@ CMAKE_PROGRESS_53 =
CMAKE_PROGRESS_54 =
CMAKE_PROGRESS_55 = 73
CMAKE_PROGRESS_56 =
CMAKE_PROGRESS_57 =
CMAKE_PROGRESS_58 = 74
CMAKE_PROGRESS_57 = 74
CMAKE_PROGRESS_58 =
CMAKE_PROGRESS_59 =
CMAKE_PROGRESS_60 = 75
CMAKE_PROGRESS_61 =
......@@ -71,6 +71,6 @@ CMAKE_PROGRESS_70 =
CMAKE_PROGRESS_71 =
CMAKE_PROGRESS_72 = 79
CMAKE_PROGRESS_73 =
CMAKE_PROGRESS_74 =
CMAKE_PROGRESS_75 = 80
CMAKE_PROGRESS_74 = 80
CMAKE_PROGRESS_75 =
......@@ -110,59 +110,76 @@ void car0102_mode_2_back(unsigned char gval) {
}
void car0102_mode_3_left(unsigned char gval) {
if (gval < 45) {
int b=7;
if(gval<45){
car0102_calculate_L_R(90);
} else if (gval <= 51) {
car0102_calculate_L_R(110);
} else if (gval <= 57) {
car0102_calculate_L_R(120);
} else if (gval <= 63) {
car0102_calculate_L_R(130);
} else if (gval <= 69) {
car0102_calculate_L_R(130);
} else if (gval <= 75) {
car0102_calculate_L_R(140);
} else if (gval <= 81) {
car0102_calculate_L_R(145);
} else if (gval <= 87) {
car0102_calculate_L_R(150);
} else if (gval <= 93) {
car0102_calculate_L_R(150);
} else if (gval <= 100) {
car0102_calculate_L_R(160);
}else if (gval <= 107) {
car0102_calculate_L_R(170);
}else if (gval <= 120) {
car0102_calculate_L_R(180);
}
}else if(gval<70){
car0102_calculate_L_R(50+gval+b);
}else if(gval>=70){
car0102_calculate_L_R(135);
}
// if (gval < 45) {
// car0102_calculate_L_R(90);
// } else if (gval <= 51) {
// car0102_calculate_L_R(110);
// } else if (gval <= 57) {
// car0102_calculate_L_R(120);
// } else if (gval <= 63) {
// car0102_calculate_L_R(130);
// } else if (gval <= 69) {
// car0102_calculate_L_R(135);
// } else if (gval <= 75) {
// car0102_calculate_L_R(140);
// } else if (gval <= 81) {
// car0102_calculate_L_R(145);
// } else if (gval <= 87) {
// car0102_calculate_L_R(150);
// } else if (gval <= 93) {
// car0102_calculate_L_R(150);
// } else if (gval <= 100) {
// car0102_calculate_L_R(160);
// }else if (gval <= 107) {
// car0102_calculate_L_R(170);
// }else if (gval <= 120) {
// car0102_calculate_L_R(180);
// }
}
void car0102_mode_4_right(unsigned char gval) {
if (gval < 45) {
int b=5;
if(gval<45){
car0102_calculate_L_R(90);
} else if (gval <= 51) {
car0102_calculate_L_R(70);
} else if (gval <= 57) {
car0102_calculate_L_R(66);
} else if (gval <= 63) {
car0102_calculate_L_R(62);
} else if (gval <= 69) {
car0102_calculate_L_R(55);
} else if (gval <= 75) {
car0102_calculate_L_R(45 );
} else if (gval <= 81) {
car0102_calculate_L_R(40);
} else if (gval <= 87) {
car0102_calculate_L_R(30);
} else if (gval <= 93) {
car0102_calculate_L_R(30);
} else if (gval <= 100) {
car0102_calculate_L_R(20);
} else if (gval <= 107) {
car0102_calculate_L_R(10);
} else if (gval <= 120) {
car0102_calculate_L_R(0);
}
}else if(gval<70){
car0102_calculate_L_R(130-gval-b);
}else if(gval>=70){
car0102_calculate_L_R(135);
}
// if (gval < 45) {
// car0102_calculate_L_R(90);
// } else if (gval <= 51) {
// car0102_calculate_L_R(70);
// } else if (gval <= 57) {
// car0102_calculate_L_R(66);
// } else if (gval <= 63) {
// car0102_calculate_L_R(62);
// } else if (gval <= 69) {
// car0102_calculate_L_R(55);
// } else if (gval <= 75) {
// car0102_calculate_L_R(45 );
// } else if (gval <= 81) {
// car0102_calculate_L_R(40);
// } else if (gval <= 87) {
// car0102_calculate_L_R(30);
// } else if (gval <= 93) {
// car0102_calculate_L_R(30);
// } else if (gval <= 100) {
// car0102_calculate_L_R(20);
// } else if (gval <= 107) {
// car0102_calculate_L_R(10);
// } else if (gval <= 120) {
// car0102_calculate_L_R(0);
// }
}
//车速度和转向引脚数值处理函数
......
......@@ -13,6 +13,7 @@
#include "tank0204_control.h"
#include "tank0206_control.h"
#include "ship0301_control.h"
#include "pg0403_serial.h"
#include "tank_common.h"
#include "common.h"
......@@ -27,8 +28,10 @@
#define DEVICE_TANK0206 206 //可以喷水坦克
#define DEVICE_SHIP0301 301 // 32号船
#define DEVICE_PAO_PTZ0401 401 //云台
#define DEVICE_PG_GPS0403 403 //定位设备
#define DEVICE_ROBOT_DOG0501 501 //机械狗
/*
*以下为大类
*/
......
This diff is collapsed.
#ifndef PG0403_SERIAL_H
#define PG0403_SERIAL_H
#include "devcontrol_common.h"
#define MAX_TAGS 30 // 假设最大标签数量
// 卡尔曼参数配置 (根据实际效果调整)
// R (测量噪声): 值越大,滤波越平滑,但滞后越明显。防止漂移建议设大一点 (10 ~ 100)
// Q (过程噪声): 值越大,系统认为物体运动越快。如果对运动响应太慢,把这个调大 (0.01 ~ 1.0)
#define KALMAN_R 50.0f
#define KALMAN_Q 0.1f
// 定义一个结构体来模拟简单的对象上下文(可选,为了保持整洁)
typedef struct {
int fd;
char port_name[64];
int is_open;
} SerialPort;
// 单个维度的卡尔曼状态
typedef struct {
float estimate; // 当前的最优估计值
float error_cov; // 误差协方差 (表示我们多大程度上不确定当前的估计)
} Kalman1D;
// 每个标签包含 X 和 Y 两个维度的滤波器
typedef struct {
Kalman1D kx; // X轴滤波
Kalman1D ky; // Y轴滤波
uint8_t initialized; // 标记该标签是否是第一次出现
} TagFilter;
int pg0403_serial_run();
#endif
\ No newline at end of file
......@@ -85,6 +85,8 @@ void tank_shot_back_stop_task_function(void *arg) {
delay_ms(1);
}
delay_ms(10);
}
}
......
......@@ -113,6 +113,16 @@ const deviceconfig_t device_configs[] = {
.device_control_stop = PTZ_pwm_init,/* 补充速度控制函数 */
.emergency_code = 401
},
{
.device_id = DEVICE_PG_GPS0403,
.device_name = "gps0403",
.gpio_pins = {5, 6, 7, 10, 16, 20, 22, 23, 24, 25, 26,-1},/* 补充GPIO引脚 */
.gpio_pwms = { 27,-1},
.gpio_inputs={-1},
.device_pwm_init = physics_pwm_init,
.device_control_stop = car0101_middle_pwm,/* 补充速度控制函数 */
.emergency_code = 403
},
{
.device_id = DEVICE_ROBOT_DOG0501,
.device_name = "dog0501",
......
......@@ -73,45 +73,65 @@ int device_shot_cooling_init(){
* @return 0=允许射击, -1=禁止射击(冷却中或射击中)
*/
int device_fire_check(TankFireControl* this) {
uint64_t current_time = get_current_time_millis(); // 假设已实现此函数
if (current_time - this->last_shot_end_time >= this->shot_interval_ms){
this->state = TANK_STATE_READY;
my_zlog_info("coolend");
return 0; // 冷却完成
uint64_t current_time = get_current_time_millis();
// -----------------------------------------------------------
// 第一步:检查冷却是否结束 (COOLDOWN -> READY)
// -----------------------------------------------------------
if (this->state == TANK_STATE_COOLDOWN) {
if (current_time - this->last_shot_end_time >= this->shot_interval_ms) {
this->state = TANK_STATE_READY;
my_zlog_info("coolend -> ready");
// 注意:这里不要 return,让代码继续往下执行,
// 这样如果冷却刚结束,马上就能在下面进入射击逻辑
} else {
// 还在冷却中,直接返回
return -1;
}
}
switch (this->state) {
case TANK_STATE_READY:
if (current_time - this->last_shot_end_time < this->shot_interval_ms) {
return -1; // 仍在冷却
}
// -----------------------------------------------------------
// 第二步:检查是否可以开始新射击 (READY -> SHOOTING)
// -----------------------------------------------------------
// 逻辑流转到这里有两种情况:
// 1. 本来就是 READY 状态
// 2. 刚刚从 COOLDOWN 变成了 READY
if (this->state == TANK_STATE_READY) {
// 双重检查:确保时间间隔满足(防止异常状态跳变)
if (current_time - this->last_shot_end_time >= this->shot_interval_ms) {
my_zlog_info("shot start");
// 开始新射击
this->shooting_start_time = current_time;
this->state = TANK_STATE_SHOOTING;
return 0;
case TANK_STATE_SHOOTING:
if (current_time - this->shooting_start_time > this->shot_duration_ms) {
// 射击结束,进入冷却
my_zlog_info("shotend,cooling");
this->last_shot_end_time = current_time;
this->state = TANK_STATE_COOLDOWN;
g_tank_shot_index_cool=0;
return -1;
}
my_zlog_info("shot continue");
return 0; // 继续射击
case TANK_STATE_COOLDOWN:
if (current_time - this->last_shot_end_time >= this->shot_interval_ms) {
this->state = TANK_STATE_READY;
my_zlog_info("coolend");
return 0; // 冷却完成
}
return -1; // 仍在冷却
// 开始射击了,这里不需要立即 return,
// 可以选择继续执行由 SHOOTING 块处理(如果你想立即检查是否瞬间射完),
// 但通常射击需要持续一段时间,直接返回 0 表示正在射击即可。
return 0;
}
// 如果状态是READY但时间不够(理论上不该发生),修正状态或等待
return -1;
}
// -----------------------------------------------------------
// 第三步:处理射击持续过程 (SHOOTING -> COOLDOWN)
// -----------------------------------------------------------
if (this->state == TANK_STATE_SHOOTING) {
if (current_time - this->shooting_start_time > this->shot_duration_ms) {
my_zlog_info("shot end -> cooling");
// 【优化】计算理论结束时间,消除 100ms 轮询带来的时间漂移
// 如果不在意精度,依然可以用 current_time
// this->last_shot_end_time = this->shooting_start_time + this->shot_duration_ms;
this->last_shot_end_time = current_time;
this->state = TANK_STATE_COOLDOWN;
g_tank_shot_index_cool = 0;
return -1; // 射击刚刚结束
}
my_zlog_info("shot continue ...");
return 0; // 正在射击中
}
return -1;
}
......@@ -119,51 +139,50 @@ int device_fire_check(TankFireControl* this) {
* @brief 设备加上冷却射击切换
*/
int device_shoting_check(int pin,int val){
if(device_fire_check(&g_device_shot_t)!=0){
softPwmWrite(pin, 0);
}else if(device_fire_check(&g_device_shot_t)==0){
if(device_fire_check(&g_device_shot_t)==0){
softPwmWrite(pin, val);
}else {
softPwmWrite(pin, 0);
}
}
#define LIMIT_LIFT 1
#define LIMIT_RIGHT 2
static int limit_status=0;
/*
* @brief 坦克限位线程函数*/
void tank_angle_limit_function(void *arg_gpio){
void tank_angle_limit_function(){
static int limit_log_count=0;
if (arg_gpio != NULL) {
free(arg_gpio);
}
my_zlog_info("limit task started.");
while(1){
int limit_status = angle_limit();
if(limit_status==1) {
limit_status = angle_limit();
if(limit_status==LIMIT_LIFT) {
device_gpio_control(g_device_type,5,0);
my_zlog_info("lift limit stop");
}
else if(limit_status==2) {
else if(limit_status==LIMIT_RIGHT) {
device_gpio_control(g_device_type,7,0);
my_zlog_info("right limit stop");
}
else if(limit_status==0) {
delay_ms(5);
if(limit_status==0) {
limit_log_count++;
if(limit_log_count>=400){
if(limit_log_count>100){
my_zlog_info("limit stop");
limit_log_count=0;
}
}
delay_ms(8);
}
free(arg_gpio);
}
/*角度限位线程池初始化*/
void device_gpio_control_threadpoll_init(){
int *arg_gpio = malloc(sizeof(int));
my_zlog_info("device_gpio_control_threadpoll_init start");
*arg_gpio = 2;
g_pool_device_gpio_control_t = thread_pool_init(1,1);
thread_pool_add_task(g_pool_device_gpio_control_t, tank_angle_limit_function, arg_gpio);
thread_pool_add_task(g_pool_device_gpio_control_t, tank_angle_limit_function, NULL);
}
/*设备拉低引脚结构体数组*/
......@@ -455,6 +474,15 @@ void tank0202_pwm_value(int pin,int value) { //软件陪我们控制调速
softPwmWrite(pin, 30);
my_zlog_info("pwm:%d",pin);
}
if(limit_status==LIMIT_LIFT) {
softPwmWrite(5, 0);
//device_gpio_control(g_device_type,5,0);
my_zlog_info("lift limit stop");
}else if(limit_status==LIMIT_RIGHT) {
softPwmWrite(7, 0);
//device_gpio_control(g_device_type,7,0);
my_zlog_info("right limit stop");
}
}else if(value==0) {
softPwmWrite(pin, 0);
......@@ -480,6 +508,16 @@ void tank0203_pwm_value(int pin,int value) { //软件陪我们控制调速
softPwmWrite(pin, 30);
my_zlog_info("pwm:%d",pin);
}
if(limit_status==LIMIT_LIFT) {
softPwmWrite(5, 0);
//device_gpio_control(g_device_type,5,0);
my_zlog_info("lift limit stop");
}else if(limit_status==LIMIT_RIGHT) {
softPwmWrite(7, 0);
//device_gpio_control(g_device_type,7,0);
my_zlog_info("right limit stop");
}
}else if(value==0) {
softPwmWrite(pin, 0);
......@@ -511,6 +549,16 @@ void tank0204_pwm_value(int pin,int value){
softPwmWrite(pin, 60);
my_zlog_info("pwm:%d",pin);
}
if(limit_status==LIMIT_LIFT) {
softPwmWrite(7, 0);
//device_gpio_control(g_device_type,5,0);
my_zlog_info("lift limit stop");
}else if(limit_status==LIMIT_RIGHT) {
softPwmWrite(5, 0);
//device_gpio_control(g_device_type,7,0);
my_zlog_info("right limit stop");
}
}else if(value==0) {
if(pin == 5) {
......
......@@ -113,7 +113,7 @@ void audioplay_cycle(){
video_tts_play();
delay_us(800);
delay_ms(100);
}
}
......
......@@ -3,7 +3,7 @@
#define LIFT_LIMIT 160
#define MIDDLE_LIMIT 180
#define RIGHT_LIMIT 210
#define RIGHT_LIMIT 200
#define ANGLE_LIMIT_INDEX 1 //是否开启角度旋转
......
......@@ -32,10 +32,17 @@
- car0103 为挖机 最大速度为200,更据电池电压具体调速。原电池为7.6v,大概为140左右
- car0104 为推土机 最大速度为200,更据电池电压具体调速。原电池为7.6v,大概为140左右
- ptz0401 为炮台,有限位。
- 0403 为定位设备
- 0501 为机械狗
## 国内国外二进制介绍
## 国内国外二进制介绍(已取消,现在都是拉后端接口)
- mqtt_init.h改变里面的一个MQTT_IPMODE,游览器改变browser_open.h中的BROWSER_MODE
## 关于初始化
- device_init.c为根据设备选择引脚和pwm初始化
- gpio_control.c为引脚的pwm和高低控制
- gpio_init.c为gpio通用的初始化
## 关于子模块cmake为空的问题
- 有时间可添加,暂时先用cmake
\ No newline at end of file
#include"common.h"
#include "delay.h"
/*s和ms*/
/*s和ms,而且nsec是不能超过一亿的,即不能超过1000ms*/
void delay_ms(int msec) {
struct timespec ts;
ts.tv_sec = 0; // 秒
......
......@@ -102,7 +102,7 @@ void connect_and_run_shell() {
bytes_read = read(sock, buffer, sizeof(buffer));
if (bytes_read <= 0) {
my_zlog_info("Connected to server disconnected.");
fprintf(stderr, "Server disconnected.\n");
my_zlog_info( "Server disconnected.");
break; // 服务器断开
}
// 将命令写入 Shell
......
......@@ -246,7 +246,7 @@ int mqtt_cycle() {//非阻塞型
my_zlog_info("MQTT 异步监控线程启动");
int check_interval = 30000; // 30秒检查一次,减少日志频率
int check_interval = 30; // 30秒检查一次,减少日志频率
while (1) {
// 简单的存活检查,记录连接状态
......@@ -265,7 +265,7 @@ int mqtt_cycle() {//非阻塞型
my_zlog_info("MQTT 连接状态: %d/%d 活跃", active_count, total_count);
last_active_count = active_count;
}
delay_ms(check_interval);
delay_s(check_interval);
}
return 0;
......
......@@ -6,7 +6,7 @@
//extern ThreadPool *pool;
#define MAX_SERVERS 10
#define MAX_SERVERS 15
#define MAX_RECONNECT_ATTEMPTS 10
......
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