создание блока BLE ESP32
создание блока BLE ESP32
Всем привет!!! помогите засунуть скетч в пользовательский блок. Простые сам собираю, этот с классами, не пойму как собрать. Спецу тут дел на перекур один.
нужны: вход - работы EN, CompanyId. выходы - addr, rssi, uuid, power. каждый выход отдельно.
по факту в скетче вывод в порт в таком виде: addr:24:0a:c4:ed:fc:ce rssi:-60 uuid:4D6FC88B-BE75-6698-DA48-6866A36EC78E power:0
.
буду очень признателен за помощь.
нужны: вход - работы EN, CompanyId. выходы - addr, rssi, uuid, power. каждый выход отдельно.
по факту в скетче вывод в порт в таком виде: addr:24:0a:c4:ed:fc:ce rssi:-60 uuid:4D6FC88B-BE75-6698-DA48-6866A36EC78E power:0
.
буду очень признателен за помощь.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось andrewkik 10 авг 2021, 09:33, всего редактировалось 1 раз.
помогите создать блок BLE ESP32
тоже бесят классы
Отправлено спустя 20 секунд:
не пойму нафига они вообщее нужны в ардуино
Отправлено спустя 1 минуту 54 секунды:
"return" в классе - это ЧТЕНИЕ.
Ч Т Е Н И Е ....просто чтение...
помогите создать блок BLE ESP32
какой ужас:
class Color { // класс Color
public:
Color(byte color = 5, byte bright = 30) { // конструктор
_color = color; // запоминаем
_bright = bright;
}
void setColor(byte color) {_color = color;}
void setBright(byte bright) {_bright = bright;}
byte getColor() {return _color;}
byte getBright() {return _bright;}
private:
byte _color; // переменная цвета
byte _bright; // переменная яркости
};
Color myColor(10); // создаём объект myColor, указав _color (получим 10, 30)
Color myColor2(10, 20); // указываем цвет и яркость! (получим 10, 20)
Color myColor3; // без инициализации (получим 5, 30)
Теперь при вызове например myColor2.getColor() мы получим значение 10, как и установили при инициализации. Если вызовем myColor2.setColor(50), то присвоим закрытой переменной _color объекта myColor2 значение 50. При дальнейшем вызове myColor2.getColor()мы получим уже 50
вот ради чего вот это все в ардуине???
НАХРЕНА???
и ведь НУЖНО это понять....ибо дальше никуда)))
class Color { // класс Color
public:
Color(byte color = 5, byte bright = 30) { // конструктор
_color = color; // запоминаем
_bright = bright;
}
void setColor(byte color) {_color = color;}
void setBright(byte bright) {_bright = bright;}
byte getColor() {return _color;}
byte getBright() {return _bright;}
private:
byte _color; // переменная цвета
byte _bright; // переменная яркости
};
Color myColor(10); // создаём объект myColor, указав _color (получим 10, 30)
Color myColor2(10, 20); // указываем цвет и яркость! (получим 10, 20)
Color myColor3; // без инициализации (получим 5, 30)
Теперь при вызове например myColor2.getColor() мы получим значение 10, как и установили при инициализации. Если вызовем myColor2.setColor(50), то присвоим закрытой переменной _color объекта myColor2 значение 50. При дальнейшем вызове myColor2.getColor()мы получим уже 50
вот ради чего вот это все в ардуине???
НАХРЕНА???
и ведь НУЖНО это понять....ибо дальше никуда)))
Последний раз редактировалось sergserg 24 июл 2021, 22:01, всего редактировалось 1 раз.
помогите создать блок BLE ESP32
"Ведь мы можем создать несколько объектов класса, и управлять каждым (объектом?) в отдельности при помощи одинаковых методов (класса?), но каждый объект будет обладать индивидуальным набором настроек, которые хранятся где-то внутри него."
и при этом же:
" не всегда удобно писать реализацию метода внутри класса, получается очень громоздко и класс перестаёт быть документацией к самому себе..." т.е. "...методы (класса?) объявлены, но расписаны где-то в другом месте...." - вот и ищи их...
НАХРЕНА ТОГДА ПИСАТЬ КЛАСС???
и при этом же:
" не всегда удобно писать реализацию метода внутри класса, получается очень громоздко и класс перестаёт быть документацией к самому себе..." т.е. "...методы (класса?) объявлены, но расписаны где-то в другом месте...." - вот и ищи их...
НАХРЕНА ТОГДА ПИСАТЬ КЛАСС???
помогите создать блок BLE ESP32
"...Двойное двоеточие :: является оператором, который уточняет область видимости имени, к которому применяется...."
это ппц.... не ну я понимаю еще в андроид студио такое применять...но для ардуино???
это ппц.... не ну я понимаю еще в андроид студио такое применять...но для ардуино???
помогите создать блок BLE ESP32
сорян просто накипело)))) и з**бало скакать по библиотекам и *cpp ради срани какой нибудь....
блин это все настолько непрозрачно и неудобно....имхо
блин это все настолько непрозрачно и неудобно....имхо
помогите создать блок BLE ESP32
Помощники найдутся? Готов разорится на пиво хорошее))). Давайте, други, помогайте. Сам в шоке, крутил, вертел, не получается, а надо очень!!!
-
- Полковник
- Сообщения: 4006
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
помогите создать блок BLE ESP32
Пиво кому полезно, а кому-то просто не нравится.andrewkik писал(а): 26 июл 2021, 13:29 Зарегистрирован: 28.11.2018{, 16:53}
Репутация: 0
Имя: Андрей
Контактная информация: Контактная информация пользователя andrewkik
0BUTTON_REPORTЦитата#9Непрочитанное сообщение andrewkik » Сегодня{, 10:29}
Помощники найдутся? Готов разорится на пиво хорошее))). Давайте, други, помогайте. Сам в шоке, крутил, вертел, не получается, а надо очень!!!
Да и за пивом сложные задачи не решаются...
Если Вам действительно надо, то есть быстрый и надежный способ - это внешний (например через UART2) модуль BlueTooth.
Мы в свое время экспериментировали, работало, но отложили до лучших времен. Одна из причин - очень много памяти требует. Возможно и процессорного времени.
Готовых приличных решений на BlueTooth ESP32 не встречали.
Возможно это больше декларация ESP, чем рабочи инструмент.,
Возможно просто процессорные возможности ESP32 не достаточные для программной реализации такой непростой задачи.
помогите создать блок BLE ESP32
пишите в личку, кто готов помочь, договоримся. хотелось бы реализовать основную часть на одном процессоре. туда же блок фильтрации засунуть и еще, по мелочи.
Отправлено спустя 1 минуту 26 секунд:
заказал такие, придут опробую. https://aliexpress.ru/item/400057132959 ... 1597231019
Отправлено спустя 1 минуту 26 секунд:
заказал такие, придут опробую. https://aliexpress.ru/item/400057132959 ... 1597231019
помогите создать блок BLE ESP32
Здорово, спасибо!!
Для примера один выход покажите как прикрутить?
заранее спасибо!
Отправлено спустя 6 минут 7 секунд:
в секции loop так не проходит.
void loop()
{
//Плата:1
BLEScan* scan = BLEDevice::getScan();
rssi_out = device.getRSSI();
scan->setAdvertisedDeviceCallbacks(new IBeaconAdvertised(), true);
scan->setActiveScan(true);
scan->start(60);
Отправлено спустя 1 час 7 минут 25 секунд:
так тоже не работает
String rssi_out;
bool getRSSI;
#define ENDIAN_CHANGE_U16(x) ((((x)&0xFF00) >> 8) + (((x)&0xFF) << 8))
void setup()
{
Serial.begin(115200);
BLEDevice::init("");
}
void loop()
{
//Плата:1
BLEScan* scan = BLEDevice::getScan();
rssi_out = getRSSI();
'getRSSI' cannot be used as a function
Для примера один выход покажите как прикрутить?
заранее спасибо!
Отправлено спустя 6 минут 7 секунд:
в секции loop так не проходит.
void loop()
{
//Плата:1
BLEScan* scan = BLEDevice::getScan();
rssi_out = device.getRSSI();
scan->setAdvertisedDeviceCallbacks(new IBeaconAdvertised(), true);
scan->setActiveScan(true);
scan->start(60);
Отправлено спустя 1 час 7 минут 25 секунд:
так тоже не работает
String rssi_out;
bool getRSSI;
#define ENDIAN_CHANGE_U16(x) ((((x)&0xFF00) >> 8) + (((x)&0xFF) << 8))
void setup()
{
Serial.begin(115200);
BLEDevice::init("");
}
void loop()
{
//Плата:1
BLEScan* scan = BLEDevice::getScan();
rssi_out = getRSSI();
'getRSSI' cannot be used as a function
помогите создать блок BLE ESP32
получилось, только порт занимает. в BLEAdvertisedDeviceCallbacks.h
// Последовательный вывод информации iBeacon
void printIBeacon(BLEAdvertisedDevice device) {
Serial.printf(device.getAddress().toString().c_str(),
device.getRSSI(),
getUuid(device).c_str(),
*(signed char*)&device.getManufacturerData().c_str()[24]);
}
я так понял из за этого.
как убрать, но данные на выходах сохранить?
// Последовательный вывод информации iBeacon
void printIBeacon(BLEAdvertisedDevice device) {
Serial.printf(device.getAddress().toString().c_str(),
device.getRSSI(),
getUuid(device).c_str(),
*(signed char*)&device.getManufacturerData().c_str()[24]);
}
я так понял из за этого.
как убрать, но данные на выходах сохранить?
помогите создать блок BLE ESP32
пробовал уже. вот это пишит
In file included from C:\Users\dom\AppData\Local\Temp\flprog\pr14\pr14.ino:6:0:
F:\Flprog\PortableFLProg_7-3-4_Win64\ideV6\portable\packages\esp32\hardware\esp32\1.0.6\libraries\BLE\src/BLEAdvertisedDeviceCallbacks.h: In member function 'virtual void IBeaconAdvertised::onResult(BLEAdvertisedDevice)':
F:\Flprog\PortableFLProg_7-3-4_Win64\ideV6\portable\packages\esp32\hardware\esp32\1.0.6\libraries\BLE\src/BLEAdvertisedDeviceCallbacks.h:9:26: error: 'printIBeacon' was not declared in this scope
printIBeacon(device);
In file included from C:\Users\dom\AppData\Local\Temp\flprog\pr14\pr14.ino:6:0:
F:\Flprog\PortableFLProg_7-3-4_Win64\ideV6\portable\packages\esp32\hardware\esp32\1.0.6\libraries\BLE\src/BLEAdvertisedDeviceCallbacks.h: In member function 'virtual void IBeaconAdvertised::onResult(BLEAdvertisedDevice)':
F:\Flprog\PortableFLProg_7-3-4_Win64\ideV6\portable\packages\esp32\hardware\esp32\1.0.6\libraries\BLE\src/BLEAdvertisedDeviceCallbacks.h:9:26: error: 'printIBeacon' was not declared in this scope
printIBeacon(device);
помогите создать блок BLE ESP32
сделал,
class IBeaconAdvertised: public BLEAdvertisedDeviceCallbacks {
public:
// Обратный вызов при обнаружении BLE
void onResult(BLEAdvertisedDevice device) {
if (!isIBeacon(device)) {
return;
}
//printIBeacon(device);
}
на выходе нет данных, вернее есть, но раз в минуту где-то. и данные -9999.
MAC адрес подставил там 00:00:00:00:00:00
void loop()
{
//Плата:1
BLEScan* scan = BLEDevice::getScan();
scan->setAdvertisedDeviceCallbacks(new IBeaconAdvertised(), true);
scan->setActiveScan(true);
scan->start(60);
BLEAdvertisedDevice device; //вот эту строку добавить в начале
rssi_out = device.getAddress().toString().c_str();
в компорт блок настроен отправка каждые 10 сек
class IBeaconAdvertised: public BLEAdvertisedDeviceCallbacks {
public:
// Обратный вызов при обнаружении BLE
void onResult(BLEAdvertisedDevice device) {
if (!isIBeacon(device)) {
return;
}
//printIBeacon(device);
}
на выходе нет данных, вернее есть, но раз в минуту где-то. и данные -9999.
MAC адрес подставил там 00:00:00:00:00:00
void loop()
{
//Плата:1
BLEScan* scan = BLEDevice::getScan();
scan->setAdvertisedDeviceCallbacks(new IBeaconAdvertised(), true);
scan->setActiveScan(true);
scan->start(60);
BLEAdvertisedDevice device; //вот эту строку добавить в начале
rssi_out = device.getAddress().toString().c_str();
в компорт блок настроен отправка каждые 10 сек
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость