尝试在连接蓝牙时收到警报

Trying to get an alert when bluetooth is connected

提问人:dinghy 提问时间:3/18/2023 更新时间:3/18/2023 访问量:142

问:

初学者寻求帮助。 当 esp32 蓝牙连接到扬声器时,我试图收到警报。 我在循环中尝试了代码,但得到了“is_connected()”未声明错误。 我已链接到 BluetoothA2DPSource.h 和 cpp 文件。 在它们中,我找到了以下参考资料,尽管我不确定如何/是否使用它们。

虚拟布尔值 is_connected();在 BluetoothA2DPSource.h 文件中找到了这个

bool BluetoothA2DPSource::is_connected(){ // 在 BluetoothA2DPSource.cpp 文件中找到这个 返回 s_a2d_state == APP_AV_STATE_CONNECTED;}

我还在 AudioA2DP.h 文件中找到了一些参考资料。链接如下。

https://github.com/pschatzmann/arduino-audio-tools/blob/main/src/AudioLibs/AudioA2DP.h

https://github.com/pschatzmann/ESP32-A2DP/blob/main/src/BluetoothA2DPSource.h

https://github.com/pschatzmann/ESP32-A2DP/blob/main/src/BluetoothA2DPSource.cpp

/**
   @file base-player-a2dp.ino
   @author Phil Schatzmann
   @brief Sketch which uses the A2DP callback to provide data from the AudioPlayer via a Queue

   @version 0.1
   @date 2022-12-04

   @copyright Copyright (c) 2022

*/

#include "AudioTools.h"
#include "AudioLibs/AudioA2DP.h"
#include "AudioLibs/AudioSourceSDFAT.h"
#include "AudioCodecs/CodecMP3Helix.h"
#include "AudioLibs/AudioKit.h"



const int led = 5;


int buffer_count = 30;
int buffer_size = 512;
const char *startFilePath = "/";
const char* ext = "mp3";
AudioSourceSDFAT source(startFilePath, ext, PIN_AUDIO_KIT_SD_CARD_CS);
MP3DecoderHelix decoder;
//Setup of synchronized buffer
SynchronizedNBuffer<uint8_t> buffer(buffer_size, buffer_count, portMAX_DELAY, 10);
QueueStream<uint8_t> out(buffer); // convert Buffer to Stream
AudioPlayer player(source, out, decoder);
BluetoothA2DPSource a2dp;

  // Provide data to A2DP
  int32_t get_data(uint8_t *data, int32_t bytes) {
  size_t result_bytes = buffer.readArray(data, bytes);
  //LOGI("get_data_channels %d -> %d of (%d)", bytes, result_bytes , buffer.available());
  return result_bytes;
}


void setup() {
  Serial.begin(115200);
  AudioLogger::instance().begin(Serial, AudioLogger::Warning);

  pinMode(led, OUTPUT);

  // sd_active is setting up SPI with the right SD pins by calling
  SPI.begin(PIN_AUDIO_KIT_SD_CARD_CLK, PIN_AUDIO_KIT_SD_CARD_MISO, PIN_AUDIO_KIT_SD_CARD_MOSI, PIN_AUDIO_KIT_SD_CARD_CS);
  
  // start QueueStream
  out.begin();

  // setup player
  player.setDelayIfOutputFull(0);
  player.setVolume(0.6);
  player.begin();

  // fill buffer with some data
  player.getStreamCopy().copyN(5);

  // start a2dp source
  Serial.println("starting A2DP...");
  a2dp.start_raw("HW2-915",  get_data);
  Serial.println("Started!");

}

void loop() {

  if (is_connected()) {
    digitalWrite(led, HIGH);
  }

  player.copy();


}
C 回调 蓝牙 ESP32

评论

0赞 Roman 3/18/2023
您正在调用未在代码中定义的函数,而是在库中定义的函数。尝试。你也可以做,使它更简单。is_connected()a2dp.is_connected()digitalWrite(led, a2dp.is_connected())
0赞 dinghy 3/18/2023
工作罗马,我很感激你的时间。

答: 暂无答案