【类 型】:fix
【原 因】:防止播放声音函数 频繁执行 【过 程】:记录时间戳 两次执行之间需要超过3秒 【影 响】: # 类型 包含: # feat:新功能(feature) # fix:修补bug # docs:文档(documentation) # style: 格式(不影响代码运行的变动) # refactor:重构(即不是新增功能,也不是修改bug的代码变动) # test:增加测试 # chore:构建过程或辅助工具的变动
This commit is contained in:
parent
5fd6ca6eb9
commit
52c445f981
@ -1,6 +1,6 @@
|
||||
#include "FoodDeliveryBase.h"
|
||||
///MQTT和Mavlink业务逻辑控制
|
||||
/// @file FoodDeliveryBase.cpp
|
||||
/// MQTT和Mavlink业务逻辑控制
|
||||
/// @file FoodDeliveryBase.cpp
|
||||
/**
|
||||
* @description: 初始化
|
||||
*/
|
||||
@ -37,7 +37,7 @@ FoodCube::FoodCube(char *userSsid, char *userPassword, char *userMqttServer, int
|
||||
case 2:
|
||||
Serial2.begin(57600, SERIAL_8N1);
|
||||
// 设置接收缓冲区大小为1024字节
|
||||
Serial2.setRxBufferSize(2048); //飞控用
|
||||
Serial2.setRxBufferSize(2048); // 飞控用
|
||||
break;
|
||||
}
|
||||
// 初始化声音模块串口 波特率
|
||||
@ -273,6 +273,16 @@ void FoodCube::SetplayvolMax()
|
||||
*/
|
||||
void FoodCube::playText(String str, VoiceVolume vol)
|
||||
{
|
||||
unsigned long currentTime = millis();
|
||||
// 判断是否到了可以执行函数的时间
|
||||
if (currentTime - lastRunTime > 3000)
|
||||
{
|
||||
lastRunTime = currentTime; // 更新上次执行时间
|
||||
}
|
||||
else
|
||||
{
|
||||
return; // 频繁为 达到3秒 不播放声音退出
|
||||
}
|
||||
// 拼接音量控制前缀,例如 "[v5]起飞"
|
||||
String vstr = "[v" + String((int)vol) + "]" + str;
|
||||
|
||||
@ -307,7 +317,7 @@ void FoodCube::playText(String str, VoiceVolume vol)
|
||||
SWrite(command, sizeof(command), voiceSerial);
|
||||
|
||||
// 延时等待模块处理,防止连续播放死机
|
||||
//delay(300); // 可根据模块处理时间调节
|
||||
// delay(300); // 可根据模块处理时间调节
|
||||
}
|
||||
|
||||
/**
|
||||
@ -500,18 +510,16 @@ void FoodCube::mav_request_data()
|
||||
* MAV_DATA_STREAM_ENUM_END=13,
|
||||
*/
|
||||
// 根据从Pixhawk请求的所需信息进行设置
|
||||
//const int maxStreams = 1; // 遍历次数 (下面组合的长度)
|
||||
//const uint8_t MAVStreams[maxStreams] = {MAV_DATA_STREAM_ALL}; // 请求的数据流组合 放到一个对象 后面进行遍历
|
||||
//const uint16_t MAVRates[maxStreams] = {0x01}; // 设定发送频率 分别对应上面数据流 ps:0X01 1赫兹 既每秒发送一次
|
||||
// const int maxStreams = 1; // 遍历次数 (下面组合的长度)
|
||||
// const uint8_t MAVStreams[maxStreams] = {MAV_DATA_STREAM_ALL}; // 请求的数据流组合 放到一个对象 后面进行遍历
|
||||
// const uint16_t MAVRates[maxStreams] = {0x01}; // 设定发送频率 分别对应上面数据流 ps:0X01 1赫兹 既每秒发送一次
|
||||
const int maxStreams = 3;
|
||||
const uint8_t MAVStreams[maxStreams] = {
|
||||
MAV_DATA_STREAM_EXTENDED_STATUS,
|
||||
MAV_DATA_STREAM_POSITION,
|
||||
MAV_DATA_STREAM_EXTRA1
|
||||
};
|
||||
const uint16_t MAVRates[maxStreams] = {1,1,1};
|
||||
|
||||
|
||||
const uint8_t MAVStreams[maxStreams] = {
|
||||
MAV_DATA_STREAM_EXTENDED_STATUS,
|
||||
MAV_DATA_STREAM_POSITION,
|
||||
MAV_DATA_STREAM_EXTRA1};
|
||||
const uint16_t MAVRates[maxStreams] = {1, 1, 1};
|
||||
|
||||
for (int i = 0; i < maxStreams; i++)
|
||||
{
|
||||
// 向飞控发送请求
|
||||
|
@ -71,6 +71,7 @@ public:
|
||||
V8 = 8,
|
||||
V9 = 9
|
||||
};
|
||||
unsigned long lastRunTime = 0; // playText()上次运行时间戳
|
||||
void playText(String str, VoiceVolume vol = V1);
|
||||
void SetplayvolMax();
|
||||
uint8_t chekVoiceMcu();
|
||||
|
Loading…
Reference in New Issue
Block a user