Commit 8b00337c authored by 957dd's avatar 957dd

加入了WiFi保存和删除保存wifi,优化了水坦克

parent 87dd9de4
#include "audioplay.h"
#include "device_identity.h"
#include "device_identity.h"g_current_ssid
#include "mqtt_init.h"
#include "common.h"
#include "delay.h"
#include "device_wifi_change.h"
char current_ssid[SSID_MAX_LEN] = {0};//用于存现在已连接WiFi
char g_current_ssid[SSID_MAX_LEN] = {0};//用于存现在已连接WiFi
char wifi_Last_ssid[SSID_MAX_LEN]= {0} ;
char wifi_Last_password[SSID_MAX_LEN]= {0} ;
......@@ -23,8 +22,8 @@ void get_current_wifi() {
char *active = strtok(line, ":");
char *ssid = strtok(NULL, "\n");
if (active && ssid && strcmp(active, "yes") == 0 && strlen(ssid) > 0) {
strncpy(current_ssid, ssid, SSID_MAX_LEN - 1);
current_ssid[SSID_MAX_LEN - 1] = '\0';
strncpy(g_current_ssid, ssid, SSID_MAX_LEN - 1);
g_current_ssid[SSID_MAX_LEN - 1] = '\0';
break;
}
}
......@@ -90,7 +89,7 @@ void scan_wifi_json() {
cJSON *root = cJSON_CreateObject();
cJSON *body = cJSON_CreateObject();
cJSON *head = cJSON_CreateObject();
cJSON_AddStringToObject(body, "current_connected", current_ssid[0] ? current_ssid : "");
cJSON_AddStringToObject(body, "current_connected", g_current_ssid[0] ? g_current_ssid : "");
cJSON *array = cJSON_CreateArray();
for (int i = 0; i < wifi_count; i++) {
......@@ -173,14 +172,14 @@ int connect_wifi_with_fallback(const char* ssid, const char* password, const cha
//改变WiFi连接
int change_wifi_connect(const char *wifi_ssid,const char *wifi_password) {
get_current_wifi();
int ret = connect_wifi_with_fallback(wifi_ssid, wifi_password, current_ssid);
int ret = connect_wifi_with_fallback(wifi_ssid, wifi_password, g_current_ssid);
my_zlog_notice("返回代码:%d", ret);
return ret;
}
// 连续尝试 2 次 ping,任意一次成功即认为联网成功
int can_access_internet() {
for (int i = 0; i < 4; ++i) {
for (int i = 0; i < 10; ++i) {
int ret = system("ping -c 1 -W 1 baidu.com > /dev/null 2>&1");
if (ret == 0) {
return 0; // 有一次成功就返回 true
......@@ -353,9 +352,9 @@ int compare_ssid_with_file() {
my_zlog_debug("File SSID: %s", file_ssid);
my_zlog_debug("Current SSID: %s", current_ssid);
my_zlog_debug("Current SSID: %s", g_current_ssid);
if (strcmp(file_ssid, current_ssid) == 0) {
if (strcmp(file_ssid, g_current_ssid) == 0) {
my_zlog_debug("wifi没有发生改变或其他问题");
return 0;
} else {
......@@ -374,7 +373,7 @@ void wifichange_sendmqtt(int wifi_status) { //改WiFi发送
cJSON *head = cJSON_CreateObject();
cJSON_AddNumberToObject(body, "wifi_status", wifi_status);//为0成功
cJSON_AddStringToObject(body, "wifi_ssid", current_ssid);//为0成功
cJSON_AddStringToObject(body, "wifi_ssid", g_current_ssid);//为0成功
cJSON_AddNumberToObject(head, "message_type",3004);
......@@ -406,25 +405,25 @@ int wifi_change_sendmqtt_init(){
if(wififile_fd==-1){
if(can_access_internet()!=0){
get_current_wifi();
if(strcmp(default_SSID,current_ssid)==0){
if(strcmp(default_SSID,g_current_ssid)==0){
my_zlog_debug("没有更改WiFi");
return 0;
}
check_or_create_wifi_conf();
write_wifi_conf();
change_wifi_connect(default_SSID,default_password);
delete_wifi_by_ssid(current_ssid);
delete_wifi_by_ssid(g_current_ssid);
}
if(strcmp(default_SSID,current_ssid)==0) wifichange_sendmqtt(0);
if(strcmp(default_SSID,g_current_ssid)==0) wifichange_sendmqtt(0);
}else if(wififile_fd==1){
get_current_wifi();
if(strcmp(default_SSID,current_ssid)==0){
if(strcmp(default_SSID,g_current_ssid)==0){
extract_wifi_file();
if(change_wifi_connect(wifi_Last_ssid,wifi_Last_password)==0){
delay_s(15);
if(can_access_internet()==0){
delete_wifi_by_ssid(current_ssid);
delete_wifi_by_ssid(g_current_ssid);
delete_wifi_conf();
my_zlog_debug("成功回朔到上次WiFi");
}else {
......@@ -477,21 +476,21 @@ void wifi_change_recmqtt(cJSON *body){
int ret = change_wifi_connect(ssid,password);
delay_s(15);
if(strcmp(default_SSID,ssid)==0){
delete_wifi_by_ssid(current_ssid);
my_zlog_debug("ssid:%S",current_ssid);
delete_wifi_by_ssid(g_current_ssid);
my_zlog_debug("ssid:%S",g_current_ssid);
delete_wifi_conf();
system("sudo reboot");//重启香橙派
my_zlog_debug("重启成功");
}
if(ret == 0){
if(can_access_internet()==0){
delete_wifi_by_ssid(current_ssid);
my_zlog_debug("ssid:%S",current_ssid);
delete_wifi_by_ssid(g_current_ssid);
my_zlog_debug("ssid:%S",g_current_ssid);
system("sudo reboot");//重启香橙派
my_zlog_debug("重启成功");
}else {
delete_wifi_conf();
if(change_wifi_connect(default_SSID,default_password)==0) delete_wifi_by_ssid(current_ssid);
if(change_wifi_connect(default_SSID,default_password)==0) delete_wifi_by_ssid(g_current_ssid);
my_zlog_debug("无网切回默认WiFi");
delay_s(15);
wifichange_sendmqtt(8);
......
......@@ -19,8 +19,16 @@ typedef struct {
int signal;
} wifi_info_t;
extern char g_current_ssid[SSID_MAX_LEN];
void scan_wifi_json();//显示以连接WiFi名称和周围已有的WiFi和过滤信号强度低于50的WiFi
int wifi_change_sendmqtt_init();//wifi改变初始化,放在main开头,必须要等mqtt直播就绪才行
void wifi_change_recmqtt(cJSON *body);//接收到修改WiFi指令
void get_current_wifi();//获取已经连接WiFi
//删除对应wifi
int delete_wifi_by_ssid(const char* ssid);
#endif
\ No newline at end of file
#include "device_identity.h"
#include "mqtt_init.h"
#include "delay.h"
#include "device_wifi_change.h"
#include "device_wifi_manager.h"
#define MAX_WIFI_ENTRIES 50
#define SSID_MAX_LENGTH 64
void device_wifi_public_sendmqtt(int wifi_status) { //成功发送3010
get_current_wifi();
cJSON *root = cJSON_CreateObject();
cJSON *body = cJSON_CreateObject();
cJSON *head = cJSON_CreateObject();
cJSON_AddNumberToObject(body, "wifi_status", wifi_status);//为0成功
cJSON_AddNumberToObject(head, "message_type",3010);
cJSON_AddItemToObject(root, "body", body);
cJSON_AddItemToObject(root, "head",head);
char *payload = cJSON_PrintUnformatted(root);
my_zlog_debug("%s",payload);
mosquitto_publish(mosq, NULL, mqtt_topic_pure_number(), strlen(payload), payload, 0, false);
cJSON_Delete(root); // 释放 cJSON 对象
}
void device_wifi_rec_delete(cJSON *body){
cJSON *wifi_ssid = cJSON_GetObjectItem(body, "wifi_ssid");
cJSON *wifi_password = cJSON_GetObjectItem(body, "wifi_password");
cJSON *wifi_status = cJSON_GetObjectItem(body, "wifi_status");
if(cJSON_IsString(wifi_ssid) && cJSON_IsString(wifi_password)){
char *ssid = wifi_ssid->valuestring,*password=wifi_password->valuestring;
int wifi_statustemp = wifi_status->valueint;
if(delete_wifi_by_ssid(ssid)==0){
my_zlog_info("删除成功");
device_wifi_public_sendmqtt(1);
}else {
my_zlog_info("删除失败");
}
}
}
int orange_pi_save_wifi(const char* ssid, const char* password) {
// 参数检查
if (!ssid || !password || strlen(ssid) == 0 || strlen(password) == 0) {
fprintf(stderr, "[ERROR] SSID或密码为空\n");
return -1;
}
// 安全检查(防止命令注入)
if (strpbrk(ssid, "\"`$|") || strpbrk(password, "\"`$|")) {
fprintf(stderr, "[ERROR] 检测到非法字符\n");
return -1;
}
// 写入NetworkManager标准配置文件
char cmd[256];
snprintf(cmd, sizeof(cmd),
"nmcli connection add type wifi con-name \"%s\" ifname wlan0 ssid \"%s\" -- \n"
"nmcli connection modify \"%s\" wifi-sec.key-mgmt wpa-psk wifi-sec.psk \"%s\" \n"
"chmod 600 /etc/NetworkManager/system-connections/%s.nmconnection",
ssid, ssid, ssid, password, ssid);
if (system(cmd) != 0) {
my_zlog_error("[ERROR] 保存配置失败");
return -1;
}
my_zlog_info("[SUCCESS] 已保存WiFi配置: %s", ssid);
return 0;
}
void device_wifi_rec_sava(cJSON *body){
cJSON *wifi_ssid = cJSON_GetObjectItem(body, "wifi_ssid");
cJSON *wifi_password = cJSON_GetObjectItem(body, "wifi_password");
cJSON *wifi_status = cJSON_GetObjectItem(body, "wifi_status");
if(cJSON_IsString(wifi_ssid) && cJSON_IsString(wifi_password)){
char *ssid = wifi_ssid->valuestring,*password=wifi_password->valuestring;
int wifi_statustemp = wifi_status->valueint;
my_zlog_debug("接收到保存WiFi名称和密码");
orange_pi_save_wifi(ssid,password);
device_wifi_public_sendmqtt(0);
}
}
/**
* @brief 获取系统保存的所有WiFi配置名称
* @param ssid_list 用于存储SSID的数组
* @param max_count 数组最大容量
* @return 实际获取到的SSID数量,-1表示失败
*/
int get_saved_wifi_list(char ssid_list[][SSID_MAX_LENGTH], int max_count) {
const char *nm_conn_dir = "/etc/NetworkManager/system-connections/";
DIR *dir;
struct dirent *entry;
int count = 0;
// 打开NetworkManager配置目录
if ((dir = opendir(nm_conn_dir)) == NULL) {
my_zlog_error("无法打开NetworkManager配置目录");
return -1;
}
// 遍历目录中的文件
while ((entry = readdir(dir)) != NULL && count < max_count) {
// 跳过.和..以及非普通文件
if (entry->d_type != DT_REG) continue;
// 检查文件扩展名(可选)
char *dot = strrchr(entry->d_name, '.');
if (dot && strcmp(dot, ".nmconnection") == 0) {
// 去除.nmconnection后缀
strncpy(ssid_list[count], entry->d_name, dot - entry->d_name);
ssid_list[count][dot - entry->d_name] = '\0';
} else {
// 直接使用文件名作为SSID
strncpy(ssid_list[count], entry->d_name, SSID_MAX_LENGTH - 1);
ssid_list[count][SSID_MAX_LENGTH - 1] = '\0';
}
count++;
}
closedir(dir);
return count;
}
/**
* @brief 打印所有已保存的WiFi配置
*/
void device_send_saved_wifi(){
get_current_wifi();
char list_wifi[MAX_WIFI_ENTRIES][SSID_MAX_LENGTH];
int count = get_saved_wifi_list(list_wifi, MAX_WIFI_ENTRIES);
if (count <= 0) {
my_zlog_debug("未找到保存的WiFi配置");
return;
}
cJSON *root = cJSON_CreateObject();
cJSON *body = cJSON_CreateObject();
cJSON *head = cJSON_CreateObject();
cJSON_AddStringToObject(body, "current_connected", g_current_ssid[0] ? g_current_ssid : "");
cJSON *array = cJSON_CreateArray();
for (int i = 0; i < count; i++) {
cJSON *item = cJSON_CreateObject();
my_zlog_debug("%d. %s\n", i+1, list_wifi[i]);
cJSON_AddStringToObject(item, "ssid", list_wifi[i]);
cJSON_AddItemToArray(array, item);
}
cJSON_AddItemToObject(body, "available_wifi", array);
cJSON_AddNumberToObject(head, "message_type", 3012);
cJSON_AddItemToObject(root, "body", body);
cJSON_AddItemToObject(root, "head",head);
char *json_str = cJSON_Print(root);
if (json_str) {
my_zlog_debug("%s", json_str);
mosquitto_publish(mosq, NULL, mqtt_topic_pure_number(), strlen(json_str), json_str, 0, false);
free(json_str);
}
cJSON_Delete(root);
}
\ No newline at end of file
#ifndef DEVICE_WIFI_MANAGER_H__
#define DEVICE_WIFI_MANAGER_H__
#include "common.h"
void device_send_saved_wifi();
void device_wifi_rec_delete(cJSON *body);
void device_wifi_rec_sava(cJSON *body);
#endif
\ No newline at end of file
......@@ -11,10 +11,6 @@ int main(){
return -2;
}
if(audio_init()!=0){
my_zlog_warn("audio初始化有问题");
}
if(device_id_file_init()!=0){
my_zlog_error("设备id读取失败");
return -3;
......@@ -38,6 +34,11 @@ int main(){
my_zlog_warn("此版本电压没有使用INA226");
}
if (audio_init()==0){
my_zlog_warn("音频初始化成功");
}
int thread_rc=thread_start_init( thread_exit_time,thread_mqtt_beat,
thread_open_browser,thread_mqtt_reconnect,thread_time_calculation,thread_play_mp3);
if(thread_rc != 0){
......
......@@ -66,12 +66,12 @@ void *thread_exit_time(void *arg) {
void *thread_mqtt_beat(void *arg) {
my_zlog_info("thread_mqtt_beat start");
delay_s(5);
g_webrtc_index=1;
delay_s(3);
/*在这步进行检测,等mqtt连接成功后检查*/
if(wifi_change_sendmqtt_init()!=0){
my_zlog_error("WIFI是否更改检查相关,不会到这一步,有问题会直接重启,可能会导致重启,不会因此造成程序停止");
}
// if(wifi_change_sendmqtt_init()!=0){
// my_zlog_error("WIFI是否更改检查相关,不会到这一步,有问题会直接重启,可能会导致重启,不会因此造成程序停止");
// }
while(1) {
if( g_device_type == 202) delay_ms(45);
if( g_device_type != 202)delay_ms(100);
......@@ -86,7 +86,7 @@ void *thread_mqtt_beat(void *arg) {
void *thread_open_browser(void *arg) {
system("pkill chromium");
delay_s(3);
delay_s(5);
while(1){
if(g_webrtc_index==1) {
if(is_browser_running() == true ) {
......
......@@ -414,6 +414,30 @@ app/device_change/device_wifi_change.c.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/app/device_change/device_wifi_change.c.s
.PHONY : app/device_change/device_wifi_change.c.s
app/device_change/device_wifi_manager.o: app/device_change/device_wifi_manager.c.o
.PHONY : app/device_change/device_wifi_manager.o
# target to build an object file
app/device_change/device_wifi_manager.c.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/app/device_change/device_wifi_manager.c.o
.PHONY : app/device_change/device_wifi_manager.c.o
app/device_change/device_wifi_manager.i: app/device_change/device_wifi_manager.c.i
.PHONY : app/device_change/device_wifi_manager.i
# target to preprocess a source file
app/device_change/device_wifi_manager.c.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/app/device_change/device_wifi_manager.c.i
.PHONY : app/device_change/device_wifi_manager.c.i
app/device_change/device_wifi_manager.s: app/device_change/device_wifi_manager.c.s
.PHONY : app/device_change/device_wifi_manager.s
# target to generate assembly for a file
app/device_change/device_wifi_manager.c.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/app/device_change/device_wifi_manager.c.s
.PHONY : app/device_change/device_wifi_manager.c.s
app/device_identity/device_fileopen.o: app/device_identity/device_fileopen.c.o
.PHONY : app/device_identity/device_fileopen.o
......@@ -1840,6 +1864,9 @@ help:
@echo "... app/device_change/device_wifi_change.o"
@echo "... app/device_change/device_wifi_change.i"
@echo "... app/device_change/device_wifi_change.s"
@echo "... app/device_change/device_wifi_manager.o"
@echo "... app/device_change/device_wifi_manager.i"
@echo "... app/device_change/device_wifi_manager.s"
@echo "... app/device_identity/device_fileopen.o"
@echo "... app/device_identity/device_fileopen.i"
@echo "... app/device_identity/device_fileopen.s"
......
No preview for this file type
......@@ -8,7 +8,7 @@ CMAKE_PROGRESS_7 =
CMAKE_PROGRESS_8 =
CMAKE_PROGRESS_9 = 83
CMAKE_PROGRESS_10 =
CMAKE_PROGRESS_11 =
CMAKE_PROGRESS_12 = 84
CMAKE_PROGRESS_11 = 84
CMAKE_PROGRESS_12 =
CMAKE_PROGRESS_13 =
......@@ -26,8 +26,8 @@ CMAKE_PROGRESS_25 =
CMAKE_PROGRESS_26 =
CMAKE_PROGRESS_27 = 10
CMAKE_PROGRESS_28 =
CMAKE_PROGRESS_29 = 11
CMAKE_PROGRESS_30 =
CMAKE_PROGRESS_29 =
CMAKE_PROGRESS_30 = 11
CMAKE_PROGRESS_31 =
CMAKE_PROGRESS_32 = 12
CMAKE_PROGRESS_33 =
......@@ -40,6 +40,6 @@ CMAKE_PROGRESS_39 =
CMAKE_PROGRESS_40 =
CMAKE_PROGRESS_41 = 15
CMAKE_PROGRESS_42 =
CMAKE_PROGRESS_43 = 16
CMAKE_PROGRESS_44 =
CMAKE_PROGRESS_43 =
CMAKE_PROGRESS_44 = 16
......@@ -13,8 +13,8 @@ CMAKE_PROGRESS_12 =
CMAKE_PROGRESS_13 =
CMAKE_PROGRESS_14 = 21
CMAKE_PROGRESS_15 =
CMAKE_PROGRESS_16 = 22
CMAKE_PROGRESS_17 =
CMAKE_PROGRESS_16 =
CMAKE_PROGRESS_17 = 22
CMAKE_PROGRESS_18 =
CMAKE_PROGRESS_19 = 23
CMAKE_PROGRESS_20 =
......@@ -27,8 +27,8 @@ CMAKE_PROGRESS_26 =
CMAKE_PROGRESS_27 =
CMAKE_PROGRESS_28 = 26
CMAKE_PROGRESS_29 =
CMAKE_PROGRESS_30 = 27
CMAKE_PROGRESS_31 =
CMAKE_PROGRESS_30 =
CMAKE_PROGRESS_31 = 27
CMAKE_PROGRESS_32 =
CMAKE_PROGRESS_33 = 28
CMAKE_PROGRESS_34 =
......@@ -41,5 +41,5 @@ CMAKE_PROGRESS_40 =
CMAKE_PROGRESS_41 =
CMAKE_PROGRESS_42 = 31
CMAKE_PROGRESS_43 =
CMAKE_PROGRESS_44 = 32
CMAKE_PROGRESS_44 =
......@@ -9,5 +9,5 @@ CMAKE_PROGRESS_8 =
CMAKE_PROGRESS_9 =
CMAKE_PROGRESS_10 = 88
CMAKE_PROGRESS_11 =
CMAKE_PROGRESS_12 =
CMAKE_PROGRESS_12 = 89
......@@ -4,11 +4,11 @@ CMAKE_PROGRESS_3 =
CMAKE_PROGRESS_4 =
CMAKE_PROGRESS_5 = 55
CMAKE_PROGRESS_6 =
CMAKE_PROGRESS_7 =
CMAKE_PROGRESS_8 = 56
CMAKE_PROGRESS_7 = 56
CMAKE_PROGRESS_8 =
CMAKE_PROGRESS_9 =
CMAKE_PROGRESS_10 =
CMAKE_PROGRESS_11 = 57
CMAKE_PROGRESS_10 = 57
CMAKE_PROGRESS_11 =
CMAKE_PROGRESS_12 =
CMAKE_PROGRESS_13 = 58
CMAKE_PROGRESS_14 =
......@@ -21,11 +21,11 @@ CMAKE_PROGRESS_20 =
CMAKE_PROGRESS_21 =
CMAKE_PROGRESS_22 = 61
CMAKE_PROGRESS_23 =
CMAKE_PROGRESS_24 =
CMAKE_PROGRESS_25 = 62
CMAKE_PROGRESS_24 = 62
CMAKE_PROGRESS_25 =
CMAKE_PROGRESS_26 =
CMAKE_PROGRESS_27 =
CMAKE_PROGRESS_28 = 63
CMAKE_PROGRESS_27 = 63
CMAKE_PROGRESS_28 =
CMAKE_PROGRESS_29 =
CMAKE_PROGRESS_30 = 64
CMAKE_PROGRESS_31 =
......@@ -35,11 +35,11 @@ CMAKE_PROGRESS_34 =
CMAKE_PROGRESS_35 =
CMAKE_PROGRESS_36 = 66
CMAKE_PROGRESS_37 =
CMAKE_PROGRESS_38 =
CMAKE_PROGRESS_39 = 67
CMAKE_PROGRESS_38 = 67
CMAKE_PROGRESS_39 =
CMAKE_PROGRESS_40 =
CMAKE_PROGRESS_41 =
CMAKE_PROGRESS_42 = 68
CMAKE_PROGRESS_41 = 68
CMAKE_PROGRESS_42 =
CMAKE_PROGRESS_43 =
CMAKE_PROGRESS_44 = 69
CMAKE_PROGRESS_45 =
......@@ -52,8 +52,8 @@ CMAKE_PROGRESS_51 =
CMAKE_PROGRESS_52 =
CMAKE_PROGRESS_53 = 72
CMAKE_PROGRESS_54 =
CMAKE_PROGRESS_55 =
CMAKE_PROGRESS_56 = 73
CMAKE_PROGRESS_55 = 73
CMAKE_PROGRESS_56 =
CMAKE_PROGRESS_57 =
CMAKE_PROGRESS_58 = 74
CMAKE_PROGRESS_59 =
......@@ -66,8 +66,8 @@ CMAKE_PROGRESS_65 =
CMAKE_PROGRESS_66 =
CMAKE_PROGRESS_67 = 77
CMAKE_PROGRESS_68 =
CMAKE_PROGRESS_69 =
CMAKE_PROGRESS_70 = 78
CMAKE_PROGRESS_69 = 78
CMAKE_PROGRESS_70 =
CMAKE_PROGRESS_71 =
CMAKE_PROGRESS_72 = 79
CMAKE_PROGRESS_73 =
......
......@@ -13,12 +13,12 @@ void tank0206_mode_lift_flont(unsigned char gval) {
if (gval < 50) {
pwmWrite(PWM_PIN_SPEED, 75);
}
else if (gval <= 55) {
else if (gval <= 60) {
pwmWrite(PWM_PIN_SPEED, 80);
}else if (gval <= 90) {
pwmWrite(PWM_PIN_SPEED, 80);
pwmWrite(PWM_PIN_SPEED, 79);
}else if (gval <= 100) {
pwmWrite(PWM_PIN_SPEED, 80);
pwmWrite(PWM_PIN_SPEED, 79);
}else if(gval >100){
int flont_speed = 80+(gval-70)/10+b;
if(flont_speed>95) flont_speed = 95;
......@@ -33,21 +33,25 @@ void tank0206_mode_lift_back(unsigned char gval) {
} else if (gval <= 60) {
pwmWrite(PWM_PIN_SPEED, 70);
}else if (gval <= 90) {
pwmWrite(PWM_PIN_SPEED, 70);
pwmWrite(PWM_PIN_SPEED, 71);
}else if (gval <= 100) {
pwmWrite(PWM_PIN_SPEED, 70);
pwmWrite(PWM_PIN_SPEED, 71);
} else if(gval >100){
int back_speed = 70 - (gval-70)/10-b;
int back_speed = 71 - (gval-70)/10-b;
if(back_speed<55) back_speed =55;
pwmWrite(PWM_PIN_SPEED, back_speed);
}
}
void tank0206_mode_right_flont(unsigned char gval) {
int b=0;
if (gval < 50) {
pwmWrite(PWM_PIN_CHANGE, 75);
}else if (gval <= 60) {
}
else if (gval <= 60) {
pwmWrite(PWM_PIN_CHANGE, 80);
}else if (gval <= 90) {
pwmWrite(PWM_PIN_CHANGE, 79);
}else if (gval <= 100) {
pwmWrite(PWM_PIN_CHANGE, 79);
......@@ -62,12 +66,14 @@ void tank0206_mode_right_back(unsigned char gval) {
int b=0;
if (gval < 50) {
pwmWrite(PWM_PIN_CHANGE, 75);
}else if (gval <= 60) {
} else if (gval <= 60) {
pwmWrite(PWM_PIN_CHANGE, 70);
} else if (gval <= 100) {
}else if (gval <= 90) {
pwmWrite(PWM_PIN_CHANGE, 71);
}else if (gval <= 100) {
pwmWrite(PWM_PIN_CHANGE, 71);
} else if(gval >100){
int back_speed = 70 - (gval-70)/10-b;
int back_speed = 71 - (gval-70)/10-b;
if(back_speed<55) back_speed =55;
pwmWrite(PWM_PIN_CHANGE, back_speed);
}
......@@ -77,26 +83,54 @@ void tank0206_change(unsigned char *buf) {
unsigned char mode = buf[1];
unsigned char val = buf[2];
static int modecount_tank0206=0;
static int tank0206_index =0;
if(mode == 1 ) {
//tank0203_mode_lift_flont(val);
tank0206_mode_lift_flont(val);
tank0206_mode_right_flont(val);
modecount_tank0206=0;
}else if(mode == 2 ) {
//tank0203_mode_lift_back(val);
tank0206_mode_lift_back(val);
tank0206_mode_right_back(val);
modecount_tank0206=1;
}
if((mode == 1||mode ==2)&&val == 0) modecount_tank0206=0;
if((mode == 1||mode ==2)&&val == 0) {
modecount_tank0206=0;
tank0206_index =0;
}
if((mode == 1||mode ==2)&&val != 0) {
tank0206_index =1;
}
if(mode == 3) {
if(modecount_tank0206 == 0) tank0206_mode_lift_flont(val+10);
if(modecount_tank0206 == 1) tank0206_mode_lift_back(val+10);
if(modecount_tank0206 == 0) {
//tank0206_mode_lift_back(val+10);
if(tank0206_index ==1)tank0206_mode_right_flont(0);
else {
tank0206_mode_right_back(val+30);
tank0206_mode_lift_flont(val+30);
}
}
if(modecount_tank0206 == 1) {
//tank0206_mode_lift_flont(val+10);
if(tank0206_index ==1)tank0206_mode_lift_back(0);
}
}else if(mode == 4) {
if(modecount_tank0206 == 0) tank0206_mode_lift_back(val+10);
if(modecount_tank0206 == 1) tank0206_mode_lift_flont(val+10);
if(modecount_tank0206 == 0) {
if(tank0206_index ==1)tank0206_mode_lift_flont(0);
else{
tank0206_mode_lift_back(val+30);
tank0206_mode_right_flont(val+30);
}
//tank0206_mode_right_back(val+10);
}
if(modecount_tank0206 == 1) {
tank0206_mode_right_flont(0);
//tank0206_mode_lift_flont(val+10);
}
}
}
......
......@@ -83,8 +83,6 @@ void audioplay_cycle(){
while(1){
if(audio_status==0){
audio_wheat_init();
char *urlmoddle=urlbuf;
snprintf(command, sizeof(command),
"sudo ffplay -nodisp -autoexit -loglevel quiet -af \"volume=%1f\" \"%s\"",
......@@ -135,7 +133,10 @@ int audio_speaker_init() {
}
int audio_init(){
// audio_wheat_init();
// delay_s(3);
delay_s(60);
audio_wheat_init();
delay_s(3);
audio_speaker_init();
return 0;
}
\ No newline at end of file
......@@ -13,6 +13,7 @@
#include "device_fileopen.h"
#include "devcontrol_common.h"
#include "device_wifi_change.h"
#include "device_wifi_manager.h"
#include "device_id_change.h"
#include "audioplay.h"
#include "gpio_init.h"
......@@ -277,13 +278,25 @@ int device_message_receive(cJSON *json){//接收到的控制设备的mqtt消息
my_zlog_debug("进入查询WiFi");
break;
case 2004:
wifi_change_recmqtt(body);
my_zlog_debug("保存WiFi");
//wifi_change_recmqtt(body);
my_zlog_debug("进入修改WiFi");
break;
case 2006:
message2006_verify(body);
my_zlog_debug("进入消息为2006验证");
break;
case 2007:
device_send_saved_wifi();
my_zlog_debug("查询已保存wifi和现在已连接WiFi");
break;
case 2008:
device_wifi_rec_sava(body);
my_zlog_debug("保存wifi");
break;
case 2009:
device_wifi_rec_delete(body);
my_zlog_debug("删除已保存wifi");
break;
case 2011:
system("sudo reboot");//重启香橙派
my_zlog_debug("重启成功");
......
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