XBConvertTool V1.0 by XBary

XBConvertTool V1.0 by XBary
Razem głosów: 46 co stanowi: 93.04% całości.

xmoose

 

Witam serdecznie, chciałbym zaprezentować pewne narzędzie programowe które ostatnio byłem zmuszony napisać. Już tłumaczę od początku o co chodzi …

W czasach kiedy praktycznie technologie zmieniają się z miesiąca na miesiąc, standardem prawie w każdym urządzeniu które powstaje (dziś) jest WIFI, bo o wiele łatwiej jest zrobić sterownik powiedzmy z kilkoma parametrami pracy, które to zmieniać można przez przeglądarkę WWW – niż tworzenie wyświetlaczy, przycisków co wiąże się z większymi kosztami oraz większą awaryjnością urządzenia. Po prostu tworzymy panel kontrolny urządzenia/sterownika w HTML, do którego dostęp mamy przez punkt dostępu WIFI danego urządzenia. O ile taki panel kontrolny HTML ma wyświetlić na ekranie jakąś wartość to jeszcze niema większego problemu, problem powstaje kiedy danych w takim panelu musimy mieć więcej i dokument HTML generowany jest dynamicznie, zależnie od kilku warunków zaistniałych w urządzeniu. Do tego dochodzi tzw autoryzacja, utrzymanie sesji, panel serwisowy, panel użytkownika. Przy tych wspomnianych funkcjonalnościach małe mikrokontrolery mogą się po prostu zapchać ze względu na małą ilość pamięci RAM, operowanie na łańcuchach znaków relokowanie pamięci może szybko doprowadzić do zawieszenia się urządzenia. I tak właśnie urodził się pomysł na dynamiczne HTML przy praktycznie minimalnym obciążeniu pamięci RAM oraz czynności jakie SERVER http musi wykonać podczas serwowania dokumentu, aby to wszystko ułatwić powstał właśnie XBConverTool.

Działanie programu polega na tym że w IDE edytujemy sobie dokument HTML w nim zaznaczamy w odpowiedni sposób miejsca gdzie będą wstawiane łańcuchy danych dynamicznych, następnie zapisujemy a XBConvertTool pracując w tle automatycznie na podstawie szablonu wygeneruje inklude z treścią dokumentu HTML w postaci tablicy strawnej przez kompilator C.

Zaczynamy:

  • Ściągamy program (link na końcu wpisu) i rozpakowujemy gdzieś gdzie mamy swoje narzędzia.
  • Aby XBConvertTool mieć zawsze pod ręką można sobie go dodać w menu w VisualStudio w taki sposób:
menu: Tools->External Tools…
xbconverttool_01Taka konfiguracja zapewnia uruchomienie monitorowania folderu projektu.
  • Pierwsze uruchomienie.

xbconverttool_02

  1. Możliwość włączenia/wyłączenia monitorowania.
  2. Dodawanie rozszerzenia pliku na które będzie XBConvertTool reagować.
  3. Tutaj można ręcznie wskazać folder który będzie monitorowany, przeważnie powinno się korzystać z XBConvertTool uruchamiając go z IDE (w naszym przypadku VisualStudio) wtedy to pole zostanie ustawione automatycznie na folder projektu.
  4. Tutaj będzie można zobaczyć ostatnią konwersje, będą to dane przed konwersją do pliku wynikowego.
  5. Natomiast tutaj będzie widać ostatnio generowany plik.
  6. Prosty log czynności.
  • No to klikamy w „Dodaj rozszerzenie do reakcji…”
xbconverttool_03Powinna się ukazać zakładka z domyślną konfiguracją rozszerzenia, nazwa zakładki będzie pochodzić właśnie od rozszerzenia. Na pierwszy rzut oka jest to dość zagmatwane bo zastosowałem tu własny autorski pomysł konwersji używającej szablonu, który składa się między innymi ze zmiennych i funkci sterujących konwersją. Jak posługiwać się tymi %zmiennymi% opiszę w kolejnych wpisach.
Co jest co:
  1. Pole w którym wpisujemy rozszerzenia plików na które ma zareagować XBConvertTool, wpisujemy je oddzielając średnikiem np. htm;html co spowoduje ze ten szablon zostanie zastosowany do dwóch rozszerzeń plików.
  2. Zahaczenie tej opcji spowoduje że zawartość zmiennej %datafile% zostanie poddana filtracji przez konwerter. Na razie zostawmy tą opcje żeby nie zaciemniać.
  3. Tutaj edytujemy nazwę pliku wynikowego, jak widać zastosowane zostały zmienne które przybierają wartość w zależności od konwertowanego pliku. Domyślnie generujemy inkludę C, np. „c:\plik.htm” będzie zapisany tak „c:\plik_htm.h”. To dość istotne bo w przyszłości nie tylko do HTMLa będzie można stosować konwerter.
  4. Szablon danych, domyślnie mamy tutaj gotową odpowiedź serwera HTTP, bardzo ważne to pole Content-Length: %datafilelength% . Tutaj automatycznie się wstawi wielkość pliku konwertowanego, wartość która nie będzie się zmieniać pomimo że dane przez serwer będą dynamicznie tworzone. Jak później zobaczymy server będzie zwolniony z budowania nagłówka odpowiedzi, wystarczy  tylko podać wskaźnik i wysłać do klienta(przeglądarki).
  5. To już szablon inkludy, ja sobie to wymyśliłem tak że w inkludzie wszelkie dane będą w makrach (#define) przez co po podłączeniu inkludy do projektu będzie można tablicę z danymi wstawić w dowolnym miejscu projektu. Oczywiście można to tak zmodyfikować że będzie generowany np. plik .c a w nim bez makr już wstawione dane ale to już zależy jak to kto sobie wymyśli.
  6. Usuwanie całej zakładki jeśli np. okaże się już nie potrzebna.

Czyli mamy już reakcje na rozszerzenie .htm, teraz najlepiej zamknąć program przez co konfiguracja zostanie zapamiętana, pojawi się plik XBConvertTool.ini obok programu.

  • Pora zaprezentować prosty przykład. Użyjemy do tego VisualStudio z pluginem VisualMicro, Arduino dla ESP8266 jako mikrokontroler aplikacji z WIFI.
 xbconverttool_041. Tworzymy projekt arduino dla ESP8266.
2. W głównym pliku projektu zamieszczamy taki oto przykładowy server działający w trybie AP.

 

3. Dodajemy plik index.htm do projektu.

 

4. No i do prawidłowego działania należy podczepić do projektu moduł xbutil.cpp oraz jego inkludę.

xbutil.cpp

 

xbutil.h

I tak powinno wyglądać drzewo projektu:xbconverttool_05Jeszcze zanim tak to będzie wyglądało należy wygenerować inklude index_htm.h z dokumentem HTML. Uruchamiamy XBConvertTool, przechodzimy do dokumentu index.htm i zapisujemy ( jeśli już był zapisywany to należy wstawić spacje po to żeby odbył się zapis). Następnie tą inkludę wygenerowaną dodajemy do projektu.

Całość powinna się dać skompilować, i po załadowaniu do ESP8266 będziemy mieli dostępną sieć „SunDuinoEXAM” zabezpieczoną hasłem: „12345678” (bez cudzysłowów) pod adresem 192.168.4.1 będziemy widzieć wynik naszej ciężkiej pracy :)

Teraz chcąc coś zmienić, dopisać w index.htm wystarczy po zmianach zapisać i w tle uruchomiony XBConvertTool automatycznie przekonwertuje do inkludy i można kompilować oraz załadować do ESPa nasz kod.

Program XBConvertTool będzie na pewno modyfikowany oraz będą poprawiane błędy, i na pewno będzie się tu pojawiać nowe wersje.

To by było na tyle tego skrótowego opisu, mam nadzieje jak zdrowie pozwoli rozpiszę się na temat jak zbudować własny szablon.

xbconverttool_06

 

 

 

 

2 thoughts on “XBConvertTool V1.0 by XBary

  1. Kolego Xbary, naprawdę świetny i przydatny program i na łamach fajnej strony , szacun. Pisałeś go w C# ?? Strasznie zazdroszczę Tobie i Sunowi wiedzy, co sobie chcecie to piszecie, dużo się muszę nauczyć oj dużo

    • No takie zautomatyzowanie czynności które bardzo często się robi podczas pisania aplikacji tego typu…
      Program napisałem w Delphi, takie stare nawyki które u starych ludzi trudno zmienić (tak się mówi podobno).
      Niema co zazdrościć, każdy robi to co potrafi najlepiej :) i tyle . . . ja z elektroniki jestem np. cienki znam kilka elementów i kilka zasad i to wszystko.

Możliwość komentowania jest wyłączona.