Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Serwer WEB, ESP8266, Lua i przesyłanie znaków ASCII z klawiatury do UART

cze333 23 Feb 2018 22:19 936 12
Nazwa.pl
  • #1
    cze333
    Level 8  
    Jak w tytule, załączam fotkę ekranu serwera oraz kod który powinien realizować funkcję przesyłania znaków ASCII z klawiatury do UART ale jest błąd którego nie umiem określić.
    Nie działa mianowicie funkcja przekazywania znaków wpisywanych z klawiatury do zmiennej 'mycode'.
    Linie kodu gdzie wg mnie przypuszczalnie tkwi błąd:

    Code: lua
    Log in, to see the code

    Być może powinna być zastosowana inna metoda?
    Jak widać na fotce program generuje okienko i można do niego wpisywać znaki. Jednak po kliknięciu '<--INPUT' wpisane znaki znikają z okienka, nic sie nie dzieje i zmienna 'mycode' pozostaje pusta, ma wartość 'nil'.
    Do obsługi programowania płytki używałem programu Flasher oraz ESPlorera wg opisu:
    https://nodemcu.readthedocs.io/en/master/en/flash/#sdk-init-data

    Jest pytanie i prośba do programistów, którzy ogarniają ESP8266 i programowanie w LUA by przyjrzec sie temu.
    Całość kodu:

    Code: lua
    Log in, to see the code





    [img]Serwer WEB, ESP8266, Lua i przesyłanie znaków ASCII z klawiatury do UART
  • Nazwa.pl
  • #2
    JacekCz
    Level 39  
    Już w samej opowieści masz brak precyzji.
    "ciąg znaków z klawiatury" zakłada brak ujęcia ich w grupy wyższego rzędu, pakiety, transakcje itd... Web tak właśnie robi.
    Lada chwila w tej koncepcji staniesz nad problemem czasu, pakietowania, wątkami, współbieznością itd...
    Serwer *) www jest jednym z gorszych pomysłów, by znak po znaku posyłać z klawiatury do UART.

    *) a już z całą pewnością taki serwer jaki się rozumie na uK. Dałbym radę coś takiego w 90%, sorry może w 80% zrealizować na Apache Tomcat i Javie EE, wyrafinowana aplikacją z AJAXem itd...
  • #3
    cze333
    Level 8  
    JacekCz wrote:
    ciąg znaków z klawiatury"
    Wprowadzasz z klawiatury kilka znaków do okienka znajdujacego sie po lewej stronie od przyciski 'INPUT' (spójrz na załaczoną fotkę) i następnie klikasz w przycisk 'INPUT' i ta wpisana sekwencja znaków ma być przesłana do zmiennej 'mycode' . Ale nie jest przesyłana. To jest ten problem. Reszta funkcji programu wykonuje sie prawidłowo. Nie wiem jak można jaśniej to opisać?
  • #4
    JacekCz
    Level 39  
    cze333 wrote:
    JacekCz wrote:
    ciąg znaków z klawiatury"
    Wprowadzasz z klawiatury kilka znaków do okienka znajdujacego sie po lewej stronie od przyciski 'INPUT' (spójrz na załaczoną fotkę) i następnie klikasz w przycisk 'INPUT' i ta wpisana sekwencja znaków ma być przesłana do zmiennej 'mycode' . Ale nie jest przesyłana. To jest ten problem. Reszta funkcji programu wykonuje sie prawidłowo. Nie wiem jak można jaśniej to opisać?


    Można i moim zdaniem trzeba jaśniej. Programowanie jest domeną ścisłości.
    Np "wprowadzony do okienka ciąg" (w tym również nie klawiatury a np wklejony)

    Klawiatura nie ulega wysadzeniu w powietrze (choć był taki przypadek na Bliskim Wschodzie) i nadal generuje znaki.
  • Nazwa.pl
  • #5
    cze333
    Level 8  
    JacekCz wrote:
    Klawiatura nie ulega wysadzeniu w powietrze

    Został zaktualizowany kod. Warto zwrócic uwagę na linie z kodem wysylania znaków zawartych w zmiennej 'mycode' do UART.

    'if klik=="SENDtoUART" and mycode~=nil then uart.write(0, "zp"..mycode.."$") return end--send to UART string"

    Problem jest ten sam, mimo wykonania operacji wprowadzenia tych znakow odpowiednimi kliknieciami na przyciski w przeglądarce czyli '<--INPUT' oraz 'SENDtoUART' zawartość zmiennej 'mycode' pozostaje pusta. Jeśli masz ochotę to przejrzyj załaczony kod.
    Mogę przesłac na priw adres WEB mojej płytki ESP, bedziesz mial mozliwość otwarcia strony w przegladarce, poklikania na przyciski i sprawdzenia komunikatow w konsoli przegladarki.
  • #6
    JacekCz
    Level 39  
    W kwestii formalnej
    Code: html
    Log in, to see the code

    to jest komentarz, choć niekompletny. Czego po nim oczekujesz?

    Reszta to sieczka kilku języków (HTML/JS/Lua) , w kilku środowiskach (klienta / serwera), które wg moich oczu są przypadkowym i niekompletnym wklejeniem. Nie widzę, by to się w spójnie łączyło.

    Na ile ja rozumiem (tj rozumiem "sieczka") cofnij ten projekt do zwykłego wysyłania jednej operacji POST, bez żadnego JS, i dotestuj.
  • #7
    cze333
    Level 8  
    JacekCz wrote:
    Czego po nim oczekujesz?

    Zdaje mi się nie przeczytałeś ze zrozumieniem wpisu powyżej. Ten kod działa i wykonuje funkcje z wyjątkiem tej jednej. Są tam zamieszczone komentarze, które opisują poszczególne elementy kodu. Gdybym wiedział jak usunąć błąd w załączonym kodzie, albo umiał napisać go od nowa prawidłowo innymi metodami to nie zawracałbym tutaj nikomu przysłowiowej gitary. To chyba jest oczywista oczywistość. Jeśli zabrałem Ci cenny czas to jest mi przykro.
    PS
    Zmagam się z tym od tygodni. Próbowałem bezskutecznie znaleźć w sieci przykład działajacego (bo nie działające to znalazłem) kodu na ESP8266, który realizowałby (w serwerze postawionym ESP8266) funkcję wprowadzania ciągu znaków wpisywanych z klawiatury do zmiennej, którą to zmienną można by następnie użyć w innych funkcjach programu. O to by mi chodziło.
    Może więc spokał sie ktoś z takim przykładem?
  • #8
    JacekCz
    Level 39  
    cze333 wrote:
    Zmagam się z tym od tygodni. Próbowałem bezskutecznie znaleźć w sieci przykład kodu na ESP8266, który realizowałby (w serwerze postawionym ESP8266) funkcję wprowadzania ciągu znaków wpisywanych z klawiatury do zmiennej, którą to zmienną można by następnie użyć w innych funkcjach programu.
    Może więc spokał sie ktoś z takim przykładem?


    Czy jest przykład wprowadzenia przez serwer www nazwiska i imienia ulubionego aktora?

    Podziel problem na takie części / funkcjonalności, jakim w rzeczywistości jest. Część serwerowa jedna (tysiące przykładów), część klientowska druga, czyli zaczynając od prostej formatki HTML (miliony przykładów). Łączy to HTTP POST (milion przykładów).

    Nie umiem tego jaśniej powiedzieć. To elementarz. Uparcie tkwisz przy złym opisaniu zagadnienia (z tą klawiaturą), to i przykłady ciężko znaleźć.
  • #9
    cze333
    Level 8  
    JacekCz wrote:
    Czy jest przykład wprowadzenia przez serwer www nazwiska i imienia ulubionego aktora?
    Po co to filozofowanie i strzępienie klawiatury? Proponowalem że podam ci na priw link do mojej plytki ESP, jest caly czas zalaczona więc możesz zdalnie otworzyc ją w przegladarce , poklikać i zorientowac sie jak to działa. Poza tym masz zamieszczony powyżej kod z komentarzami. No niestety trzeba sie wysilić i poswiecic troche czasu. Chcesz czy nie?
  • #10
    krzysiek_krm
    Level 40  
    Witam,
    strzelam trochę na ślepo ponieważ generalnie nie znam tego języka.
    Może powinieneś poszukać działającego przykładu, który oferuje możliwość logowania (użytkownik, hasło). Ktoś chyba musiał już coś takiego stworzyć.

    Pozdrawiam
  • #12
    JacekCz
    Level 39  
    xury wrote:
    Może poszukaj przykładu jak zrobić serwer telnet na ESP8266. To może wiele wyjaśnić.


    Telnet to jest świeże (w pozytywnym sensie) spojrzenie na temat.

    Pytanie do @cze333 czy, z jakich powodów i na ile musi w tym być obecny webserwer - czy tylko taka idea znalazła się "bo na YT pokazywali".
  • #13
    cze333
    Level 8  
    xury wrote:
    Może poszukaj przykładu jak zrobić serwer telnet na ESP8266. To może wiele wyjaśnić.

    Proszę mnie oświecić co tu ma do rzeczy serwet telnet?
    Co ma wyjaśnić?
    JacekCz wrote:
    "bo na YT pokazywali".

    Czy tobie płacą tutaj na forum za troling?