Ключевое ?лово

vk

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Железо для умного дома

ТЕМА: Конструктор кода в конструкторе прошивки ESP8266

Конструктор кода в конструкторе прошивки ESP8266 10 Окт 2017 23:35 #19819

  • Maker39
  • Maker39 аватар
  • Не в сети
  • Завсегдатай
  • Сообщений: 223
  • Спасибо получено: 12
  • Репутация: 0
Послан отсюда homes-smart.ru/index.php/component/kunen...reter?start=72#19786
Эксперимент показал, что для получения текущих данных с инвертора достаточно отправить в UART заранее сформированный запрос (не заморачиваясь с подсчетом crc).
void ICACHE_FLASH_ATTR
startfunc(){
// выполняется один раз при старте модуля.
}

void ICACHE_FLASH_ATTR
timerfunc(uint32_t timersrc) {
// выполнение кода каждую 1 секунду
if(timersrc%10==0){
// отравка QPIGS<crc><cr>
uint8_t send_buf[] = {0x51,0x50,0x49,0x47,0x53,0xB7,0xA9,0x0D};
uart0_tx_buffer(send_buf,8);
}
}

void webfunc(char *pbuf) {
os_sprintf(HTTPBUFF,"<br>test"); // вывод данных на главной модуля
}
ответ вида (120.1 28.3 220.3 12.2 5000 2525 132 111 24.24 100 111 2222 8888
Очень похож на ответ "UPS MEGATECH PROTOCOL" уже имеющийся в конструкторе прошивки опции "UPS Монитор", но отличается количеством и расположением параметров в строке.

Разобрать строку самому не получается, пересмотрел кучу сишных примеров, но нифига не выходит.

Может дадите пример кода парсера
начало строки "(" , разделитель "пробел" ?
Последнее редактирование: 10 Окт 2017 23:39 от Maker39.
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 11 Окт 2017 08:57 #19822

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7195
  • Спасибо получено: 1114
  • Репутация: 194
вот как пример от монитора упс код, dataups - строка данных:
char *pdata0 = dataups;
pdata0++;

char *pdata1 = NULL;
pdata1 = (char *)os_strstr(pdata0, " ");

            if (pdata1 != NULL) { // нашло пробел.
              
char testdata[10];
memset(testdata,0,10);

uint8_t len=pdata1-pdata0;
if (len>9) len=9;

os_memcpy(&testdata, pdata0, len);

ups_vi=chartoatoi(testdata);    

pdata1++;
char *pdata2 = NULL;
pdata2 = (char *)os_strstr(pdata1, " ");
            if (pdata1 != NULL) { // нашло пробел.
                
memset(testdata,0,10);
os_memcpy(&testdata, pdata1, pdata2-pdata1);  
ups_vf=chartoatoi(testdata); 
                
pdata2++;
char *pdata3 = NULL;
pdata3 = (char *)os_strstr(pdata2, " ");
            if (pdata3 != NULL) { // нашло пробел.
                
memset(testdata,0,10);
os_memcpy(&testdata, pdata2, pdata3-pdata2);  
ups_vo=chartoatoi(testdata); 
                
pdata3++;
char *pdata4 = NULL;
pdata4 = (char *)os_strstr(pdata3, " ");
            if (pdata4 != NULL) { // нашло пробел.
                
memset(testdata,0,10);
os_memcpy(&testdata, pdata3, pdata4-pdata3);  
ups_st=atoi(testdata); 
                
pdata4++;
char *pdata5 = NULL;
pdata5 = (char *)os_strstr(pdata4, " ");
            if (pdata5 != NULL) { // нашло пробел.
                
memset(testdata,0,10);
os_memcpy(&testdata, pdata4, pdata5-pdata4);  
ups_hz=chartoatoi(testdata); 
                
pdata5++;
char *pdata6 = NULL;
pdata6 = (char *)os_strstr(pdata5, " ");
            if (pdata6 != NULL) { // нашло пробел.
                
memset(testdata,0,10);
os_memcpy(&testdata, pdata5, pdata6-pdata5);  
ups_bat=chartoatoi(testdata); 

pdata6++;
char *pdata7 = NULL;
pdata7 = (char *)os_strstr(pdata6, " ");
            if (pdata7 != NULL) { // нашло пробел.
                
memset(testdata,0,10);
os_memcpy(&testdata, pdata6, pdata7-pdata6);  
ups_t=chartoatoi(testdata); 
                
pdata7++;  // тут обработка битов недоделано


            }//
       
            }//
            
            }//
            
            }//
            
            }//      

            }//
}//
Основной канал проекта в Telegram t.me/wifi_iot
Последнее редактирование: 11 Окт 2017 09:20 от Adminhs.
Администратор запретил публиковать записи гостям.
Спасибо сказали: Maker39

Конструктор кода в конструкторе прошивки ESP8266 11 Окт 2017 22:47 #19829

  • Maker39
  • Maker39 аватар
  • Не в сети
  • Завсегдатай
  • Сообщений: 223
  • Спасибо получено: 12
  • Репутация: 0
Спасибо.
Попробовал разобраться, чувствую - не осилю, придется бросить эту затею...
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 12 Окт 2017 05:57 #19830

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7195
  • Спасибо получено: 1114
  • Репутация: 194
не нужно пытаться запихивать весь код в конструктор, нужно начинать с первого шага парсинга- его только воткнуть в конструктор
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 13 Окт 2017 23:40 #19847

  • Maker39
  • Maker39 аватар
  • Не в сети
  • Завсегдатай
  • Сообщений: 223
  • Спасибо получено: 12
  • Репутация: 0
Поначалу конечно как "жизнерадостный идиот оптимист" :cheer: , вставил весь код и получил облом :(
Потом начал постепенно внедрять по строке, попутно пытаясь осмыслить алгоритм и синтаксис...

Выводы пока такие:
1. До парсинга ответа мне, оказывается, как до китая . Запрос из конструктора отправляю , ответ могу увидеть при подключенной опции "UART Bridge" через скрипт _UARTBR_ . А где получить посылку ? В какую переменную "UART Bridge" попадает ответ - неизвестно, нужно разбираться с приемом из UART и писать прием в свой буфер.
2. а пока все... дальше лезть нет смысла :(

ps попутно ардуину научил симулировать ответы инвертора ...

Пора cдаваться, или "заявку на добавление" оформлять ...
Последнее редактирование: 13 Окт 2017 23:59 от Maker39.
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 16 Окт 2017 20:51 #19876

  • VictorS
  • VictorS аватар
  • Не в сети
  • Давно я тут
  • Сообщений: 104
  • Спасибо получено: 12
  • Репутация: 2
Добрый день,

Макс,
а как добраться до управления ШИМ выходами из кода?
есть идея сделать плавное включение нагрузки, подключенной в выходу PWM.
надо уметь писать уровень PWM из кода.
Администратор запретил публиковать записи гостям.
Модераторы: FlyRouter
Время создания страницы: 0.152 секунд

Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.