> Без описания
Nikita71
Отправлено: 22 Ноября, 2021 - 17:42:00
Post Id



Частый гость


Off-line
Сообщений всего: 95
Дата рег-ции: Сент. 2020  
Откуда: Україна Київ
Репутация: 2




 Nikita71 пишет:




а вы раньше не работали с этой программой ? просто вот скрин того что шлю, и там видно что там 2 характеристики )



я тут наконец-то заметил, что шлю не те данниє, исправил, заработало.

если все будет норм, ждите большое обновление і новый дозик )
 
 Top
ЗДЕСЬ МОГЛА БЫТЬ ВАША РЕКЛАМА
а пока можете посетить ресурс: блог сисадмина-пайщика




Убедительная просьба для всех. Загружайте пожалуйста фотографии в нашу фотогалерею по адресу http://rhbz.pw У кого нет учетной записи - отпишитесь в этой теме ЗДЕСЬ либо в ЛС к BON'у
Maniak003
Отправлено: 22 Ноября, 2021 - 17:55:37
Post Id



Прописавшийся на форуме


Off-line
Сообщений всего: 339
Дата рег-ции: Янв. 2021  
Откуда: СПб, Россия
Репутация: 20




 Nikita71 пишет:
а вы раньше не работали с этой программой ?


С этой нет, не работал. Использую Serial bluetooth terminal, он показывает все доступные сервисы и характеристики и позволяет обмениваться с устройством, выбрав то, что нужно.

Я правда так и не понял: Вам удалось передать данные из приложения на esp32 ?

(Отредактировано автором: 22 Ноября, 2021 - 18:10:13)

 
 Top
Nikita71
Отправлено: 24 Ноября, 2021 - 00:07:00
Post Id



Частый гость


Off-line
Сообщений всего: 95
Дата рег-ции: Сент. 2020  
Откуда: Україна Київ
Репутация: 2




CODE ( Отобразить)


Версия 2.0 добавлен 2х сторонний обмен данными.

Пока сделал только передачу 1-го порога мощности и самой дозы. По хорошему надо еще сделать передачу данных о состоянии ползунка звука и вибро, ну и кнопку сброс дозы не плохо было бы сделать ... но я так и не раздуплился как это сделать )
 
 Top
Maniak003
Отправлено: 24 Ноября, 2021 - 10:10:49
Post Id



Прописавшийся на форуме


Off-line
Сообщений всего: 339
Дата рег-ции: Янв. 2021  
Откуда: СПб, Россия
Репутация: 20




[перфекционизм]

CODE:
union {
float val[2];
uint8_t b[8];
} float_bytes_u;


Тогда в float_bytes_u.val[0], будет DoseThreshold / 100, а в float_bytes_u.val[1] -- RadThreshold / 100.
Т.е. отдельную функцию создавать не нужно, а просто использовать публичные переменные float_bytes_u.val[{0,1}], вместо DoseThreshold и RadThreshold.
Идея в том, что работа со стеком - это самые дорогие операции и нужно стараться избегать использовать подпрограмм если есть возможность. Ну, это так, мысли в слух...

[/перфекционизм]
 
 Top
Nikita71
Отправлено: 24 Ноября, 2021 - 10:43:24
Post Id



Частый гость


Off-line
Сообщений всего: 95
Дата рег-ции: Сент. 2020  
Откуда: Україна Київ
Репутация: 2




 Maniak003 пишет:
избегать использовать подпрограмм если есть возможность

а какая причина ? просто достаточно удобно использовать тот костыль))
 
 Top
Maniak003
Отправлено: 24 Ноября, 2021 - 11:02:46
Post Id



Прописавшийся на форуме


Off-line
Сообщений всего: 339
Дата рег-ции: Янв. 2021  
Откуда: СПб, Россия
Репутация: 20




 Nikita71 пишет:
а какая причина ?


union -- обозначает использование одной области памяти для нескольких типов переменных, фактически -- это объявление переменной. По этому нет необходимости дублировать эту переменную. Вы можете в этой области хранить конечные значения и не перегружать их в другие переменные. Цикл с передачей значений так же не нужен, поскольку в union могут хранится массивы и в этом случае мы сразу получим ieee754 преобразование для всех float значений массива, перегрузив лиш один указатель на uint32_t.

Я хочу сказать, что нет предела совершенству, то как Вы сделали, отлично будет работать. Просто решил поделиться, как можно немного упростить код выполняемый на контроллере.

(добавил)

Ой, ошбся, в случае с массивом из двух float, речь конечно же идет о uint64_t

CODE:
union {
uint64_t word;
uint8_t bytes[8];
float flt[2];
} var;

(Отредактировано автором: 24 Ноября, 2021 - 11:06:02)

 
 Top
Maniak003
Отправлено: 24 Ноября, 2021 - 11:20:52
Post Id



Прописавшийся на форуме


Off-line
Сообщений всего: 339
Дата рег-ции: Янв. 2021  
Откуда: СПб, Россия
Репутация: 20




Например так:

CODE:

union {
float val[2];
uint8_t b[8];
} float_bytes_u;


class MyCallbacks: public BLECharacteristicCallbacks {
void onWrite(BLECharacteristic *SettingsCharacteristics) {
std::string rxValue = SettingsCharacteristics->getValue();
uint8_t pData [10];
for (int i = 0; i < 8; i++) {
float_bytes_u.b[i] = rxValue[i];
}
ReturnData = 1;
/* Окончательные значения */
float_bytes_u.val[0] = float_bytes_u.val[0] * 100;
float_bytes_u.val[1] = float_bytes_u.val[1] * 100;
}
};


С uint64_t, думаю уже догадались как сделать.
 
 Top
SuperCellSky
Отправлено: 26 Ноября, 2021 - 16:06:17
Post Id



Super Member


Off-line
Сообщений всего: 592
Дата рег-ции: Март 2020  
Откуда: Улан-Удэ, Россия
Репутация: 8




Никогда не понимал зачем вообще нужен union: какого типа данные в него записали - не определить, а функционал выше спокойно реализуется преобразованием типа указателя.
 
 Top
Maniak003
Отправлено: 26 Ноября, 2021 - 16:47:27
Post Id



Прописавшийся на форуме


Off-line
Сообщений всего: 339
Дата рег-ции: Янв. 2021  
Откуда: СПб, Россия
Репутация: 20




 SuperCellSky пишет:
спокойно реализуется преобразованием типа указателя.


А в чем выигрываем ?

CODE:
int main() {
union {
float flt;
uint8_t bytes[4];
} var;

var.bytes[0] = 218;
var.bytes[1] = 15;
var.bytes[2] = 73;
var.bytes[3] = 64;

printf("Flt0: %f\n", var.flt);
printf("\nvar.word to float: %f\n", (float *) &var.bytes);
}


movss -4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
leaq .LC0(%rip), %rdi
movl $1, %eax
call printf@PLT



leaq -4(%rbp), %rax
movq %rax, %rsi
leaq .LC1(%rip), %rdi
movl $0, %eax
call printf@PLT
 
 Top
SuperCellSky
Отправлено: 26 Ноября, 2021 - 17:01:05
Post Id



Super Member


Off-line
Сообщений всего: 592
Дата рег-ции: Март 2020  
Откуда: Улан-Удэ, Россия
Репутация: 8




Похоже на эльфийский асемблер, не могу прочесть Радость
 
 Top
Maniak003
Отправлено: 26 Ноября, 2021 - 17:06:17
Post Id



Прописавшийся на форуме


Off-line
Сообщений всего: 339
Дата рег-ции: Янв. 2021  
Откуда: СПб, Россия
Репутация: 20




Да, и не важно... Хотел показать, что по количеству команд примерно одинаково. Только преобразование во втором случае спряталось в printf.
 
 Top
Nikita71
Отправлено: 27 Ноября, 2021 - 22:28:00
Post Id



Частый гость


Off-line
Сообщений всего: 95
Дата рег-ции: Сент. 2020  
Откуда: Україна Київ
Репутация: 2




Кому интересно потребление блютуз около 20 мА.
на частоте в 40 mHz esp32 потребляет 40 ма (вместе с блютуз)
мда не густо...

(Отредактировано автором: 27 Ноября, 2021 - 22:30:26)

 
 Top
Nikita71
Отправлено: 24 Января, 2022 - 16:04:51
Post Id



Частый гость


Off-line
Сообщений всего: 95
Дата рег-ции: Сент. 2020  
Откуда: Україна Київ
Репутация: 2




КОД ( Отобразить)


Добавлена обработка нажатий кнопки сброса дозы. Если будет время и вдохновение постараюсь наконец-то зделать обрабатку нажатий всех кнопок, благо проблема устаревшей документации решена ...

За помощь огромное спасибо Maniak003 и Madmax.
 
 Top
Maniak003
Отправлено: 24 Января, 2022 - 16:29:56
Post Id



Прописавшийся на форуме


Off-line
Сообщений всего: 339
Дата рег-ции: Янв. 2021  
Откуда: СПб, Россия
Репутация: 20




 Nikita71 пишет:
void loop() {
<skip>
delay(1000);
}


Старайтесь, по возможности, не использовать задержки.
 
 Top
Nikita71
Отправлено: 24 Января, 2022 - 17:07:14
Post Id



Частый гость


Off-line
Сообщений всего: 95
Дата рег-ции: Сент. 2020  
Откуда: Україна Київ
Репутация: 2




 Maniak003 пишет:
Старайтесь, по возможности, не использовать задержки.


Таа... это больше для чистоты восприятия.. В финале чувствую будет еще тот взрыв на макаронной фабрике ...
 
 Top
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Самодельные дозиметрические приборы »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 

> Похожие темы: ProtonBridge2(ESP32) или используем приложение AtomSwift в самодельном дозиметре на esp32
Темы Форум Информация о теме Обновление
Дозиметр МКС-85 «Школьник»
Информация о дозиметре МКС-85 «Школьник»
Российские современные дозиметрические приборы Ответов: 6
Автор темы: gad969
11 Октября, 2016 - 12:42:25
Автор: gad969
radcomm RC2
Что известно о дозиметре
Американские дозиметрические приборы Ответов: 7
Автор темы: Ilya
09 Февраля, 2018 - 07:15:00
Автор: Ilya
Электроприводы
фото часто используемых электроприводов пост тока
Всякая разная электронная аппаратура и оборудование Ответов: 19
Автор темы: _Dovnar
23 Февраля, 2023 - 11:04:17
Автор: BON
DIY-дозиметр-приставка на основе CCFL-инвертора + приложение для Android-смартфона
Самодельные дозиметрические приборы Ответов: 98
Автор темы: Dreamy
23 Февраля, 2017 - 08:52:13
Автор: shodan
ProtonBridge или используем приложение AtomSwift в самодельном дозиметре
Разработка дешевого UART-BT4.0-AtomSwift моста
Самодельные дозиметрические приборы Ответов: 36
Автор темы: Syph3r
12 Февраля, 2024 - 07:41:46
Автор: Syph3r
SFIORA classic vibro что можете сказать об этом дозиметре
Стои ли его покупать
Российские современные дозиметрические приборы Ответов: 14
Автор темы: mirag
31 Октября, 2017 - 16:04:47
Автор: AndreySkv
 

Яндекс.Метрика

Вся информация является собственностью www.rhbz.org и охраняется законом об авторском праве.
Копирование материалов условно разрешено
Copyright © 2010 - 2024 rhbz.org

Powered by ExBB

[Script Execution time: 0.2104]     [ Gzipped ]