1.空钩加锁完全不延时也可能顶部按键没可靠按下去,加一点延时 ms

2.Mqtt重连接加入3秒延时
3.mqtt域名改为ip防止dns失败
4.到顶停止只是在上升和未初始化时有效,下放时无效
This commit is contained in:
pxzleo 2023-07-14 17:50:20 +08:00
parent 3adea2fc5e
commit e52ca01d9e
4 changed files with 45 additions and 28 deletions

View File

@ -1,5 +1,4 @@
#include "FoodDeliveryBase.h" #include "FoodDeliveryBase.h"
/** /**
* @description: * @description:
*/ */
@ -16,6 +15,7 @@ FoodCube::FoodCube(char* userSsid, char* userPassword, char* userMqttServer, int
udpServerIP = userUdpServerIP; //云台相机ip udpServerIP = userUdpServerIP; //云台相机ip
udpServerPort = userUdpServerPort; //云台相机端口 udpServerPort = userUdpServerPort; //云台相机端口
wificonnected=false; wificonnected=false;
_tm_mqttconnect=0;
//初始化飞控通讯串口 波特率 //初始化飞控通讯串口 波特率
switch (mavlinkSerial) { //初始化指定 串口号 switch (mavlinkSerial) { //初始化指定 串口号
@ -165,7 +165,9 @@ bool FoodCube::checkWiFiStatus()
void FoodCube::connectMqtt(String topicSub[], int topicSubCount) { void FoodCube::connectMqtt(String topicSub[], int topicSubCount) {
if (mqttClient->connected()) return; if (mqttClient->connected()) return;
/*尝试连接mqtt*/ /*尝试连接mqtt*/
log("connect_mqtt"); if ((millis() - _tm_mqttconnect)>3000)
{
logln("connect_mqtt");
if (mqttClient->connect(macAdd.c_str(), mqttName, mqttPassword)) { if (mqttClient->connect(macAdd.c_str(), mqttName, mqttPassword)) {
logln("MQTT Server Connected."); logln("MQTT Server Connected.");
log("Server Address: "); log("Server Address: ");
@ -177,13 +179,17 @@ void FoodCube::connectMqtt(String topicSub[], int topicSubCount) {
for (int i = 0; i < topicSubCount; i++) { //遍历 订阅主题 for (int i = 0; i < topicSubCount; i++) { //遍历 订阅主题
subscribeTopic(topicSub[i], 1); subscribeTopic(topicSub[i], 1);
} }
delay(500);
playText("[v1]指令服务器已连接"); playText("[v1]指令服务器已连接");
} else { } else {
//失败返回状态码 //失败返回状态码
log("MQTT Server Connect Failed. Client State:"); log("MQTT Server Connect Failed. Client State:");
logln(mqttClient->state()); logln(mqttClient->state());
_tm_mqttconnect=millis();
//delay(3000); //delay(3000);
} }
}
} }
/** /**

View File

@ -89,6 +89,10 @@ private:
WiFiUDP udp; //udp信息操作对象 WiFiUDP udp; //udp信息操作对象
char* udpServerIP; //云台相机ip地址 char* udpServerIP; //云台相机ip地址
uint32_t udpServerPort; //云台相机端口 uint32_t udpServerPort; //云台相机端口
unsigned long _tm_mqttconnect; //mqtt上次连接时间
//摄像头控制 校验代码 //摄像头控制 校验代码
const uint16_t crc16_tab[256] = { 0x0, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, const uint16_t crc16_tab[256] = { 0x0, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,

View File

@ -25,8 +25,9 @@
#define SERIAL_REPORT_RX 18 #define SERIAL_REPORT_RX 18
///// /////
#define WEIGHT_SCALE 165 // 276 //这是缩放值根据砝码实测516.f #define WEIGHT_SCALE 165 // 276 //这是缩放值根据砝码实测516.f
#define TM_INSTORE_DELAY 200 //200 // 入仓动力延时关闭时间 ms #define TM_INSTORE_WEIGHT_DELAY 200 //200 // 入仓动力延时关闭时间 ms
#define TM_INSTORE_DELAY_WEIGHT 200 // 入仓动力延时关闭时间生效的重量(g),免得空钩也延时关闭导致线拉紧 ms #define TM_INSTORE_DELAY_WEIGHT 200 // 入仓动力延时关闭时间生效的重量(g),免得空钩也延时关闭导致线拉紧 ms
#define TM_INSTORE_NOWEIGHT_DELAY 50 // 空钩完全不延时也可能顶部按键按不下去,加一点延时 ms

View File

@ -95,7 +95,7 @@ const uint16_t MAV_CMD_FC_HOOK_RECOVERY=43; //飞控发的---收线
//char* password = "Ttaj@#*.com"; //wifi密码 //char* password = "Ttaj@#*.com"; //wifi密码
char* ssid = (char*)"fxmf_sc01"; //wifi帐号 char* ssid = (char*)"fxmf_sc01"; //wifi帐号
char* password = (char*)"12345678"; //wifi密码 char* password = (char*)"12345678"; //wifi密码
char* mqttServer = (char*)"szdot.top"; //mqtt地址 char* mqttServer = (char*)"114.115.137.239";//"szdot.top"; //mqtt地址
int mqttPort = 1883; //mqtt端口 int mqttPort = 1883; //mqtt端口
char* mqttName = (char*)"admin"; //mqtt帐号 char* mqttName = (char*)"admin"; //mqtt帐号
char* mqttPassword = (char*)"123456"; //mqtt密码 char* mqttPassword = (char*)"123456"; //mqtt密码
@ -378,18 +378,21 @@ void loop()
{ {
if ((initstatus==IS_OK)&&(pullweight>TM_INSTORE_DELAY_WEIGHT) ) if ((initstatus==IS_OK)&&(pullweight>TM_INSTORE_DELAY_WEIGHT) )
{ {
if ((millis() - _tm_bengstop) > TM_INSTORE_DELAY) if ((millis() - _tm_bengstop) > TM_INSTORE_WEIGHT_DELAY)
{ {
_bengstop = false; _bengstop = false;
motocontrol.setlocked(true); motocontrol.setlocked(true);
} }
} }
else else
{
if ((millis() - _tm_bengstop) > TM_INSTORE_NOWEIGHT_DELAY)
{ {
_bengstop = false; _bengstop = false;
motocontrol.setlocked(true); motocontrol.setlocked(true);
} }
} }
}
// 检测执行初始化工作 // 检测执行初始化工作
checkinited(); checkinited();
@ -460,7 +463,7 @@ void showledidel()
// 超重--红色 // 超重--红色
if (motocontrol.getcontrolstatus().is_overweight) if (motocontrol.getcontrolstatus().is_overweight)
{ {
led_show(255, 0, 0); // 红 led_show(255, 0, 255); // 紫
return; return;
} }
switch (motocontrol.gethooktatus()) switch (motocontrol.gethooktatus())
@ -553,9 +556,12 @@ void showledidel()
void ctbtn_pressstart() void ctbtn_pressstart()
{ {
Serial.println("ctbtn_pressstart"); Serial.println("ctbtn_pressstart");
//只在上升时停止
if ((motocontrol.gethooktatus()== HS_UnInit)||(motocontrol.gethooktatus()== HS_Up)||(motocontrol.gethooktatus()== HS_InStore))
{
_tm_bengstop = millis(); _tm_bengstop = millis();
_bengstop = true; _bengstop = true;
}
} }
// 顶部按钮,抬起 // 顶部按钮,抬起
void ctbtn_pressend() void ctbtn_pressend()