Fórum témák
» Több friss téma |
Fórum » Nextion érintőképernyős HMI, UART kommunikációval
Témaindító: Lamprologus, idő: Máj 5, 2016
Témakörök:
Erre szokták mondani, hogy kinőtted a nyelv lehetőségeit. Hitvita nélkül, én le akartam beszélni cimborát a Parsic-ról, de gyors sikerélmény miatt ebben ácsolta a dolgait. Kb 1 hónap alatt a 0-ról már ki is nőtte. Ha a nyelv nem támogat a változó hosszúságú blokkok vételében, akkor vagy megírod magad hozzá a bővítményt vagy vársz mondjuk time-out-ra (addigra biztos bent a pufferben az adat, amit jól túlméretezel). De az is lehet, hogy a SWfejlesztők már megírták hozzá a plug-in-t vagy írni kell nekik, hogy ilyen kijelzőkhöz kellene legalább annyi támogatás, hogy a blokkokat szépen el lehessen kapni. Jelzem, én nem használom az említett fordítót, csak egy kicsit beleláttam. A Parsic-topicban nem tudnak ebben segíteni a tapasztaltabbak?
A legutolsó frissítés még nem tartalmazta, csupán a Modbus kezelést. Jelzem a fejlesztónek általában, ha ésszerű dolgot jelzek akkor az benne lesz... Nem igazán akarok váltani, mert kevés az időm egy-egy projekt megírására, ez általában 1-2nap vagy néhány óra. Ezt más programnyelven (ill fejlesztóvel) nehéz megoldani, főleg terepen egy berendezés mellett, esetleg szabadtéren...egyedi igények szerint rögtönözni... Egyébként amit a Nextion HMI-s csapat fejleszt az nekem már régóta álmom, hogy a kijelzőt gyakorlatilag mélyebb programozói jártasság nélkül is lehessen kezelni, ne kelljen több tizezer sort gépelgetni. Itteni kérdésem,: kezelt-e valaki már sikeresen egy nagyobb IO felületet ennek a HMI-nek a segítségével. Előbb utóbb úgyis veszek 1-2db-t és kipróbálom, talán nem zsákutca az én elgondolásaimnak.
Ha Te írod magát a vezérlő-SW-t is, akkor a protokol teljesen a kezedben van, feldolgozhatod a soros adatokat akár karakterenként is a TFT-vel; mivel aránylag lassú kommunikáció is beállítható és nincs nagy szükség gyors válaszidőre. Amikor nekem nagyon sok I/O adattal volt dolgom (futás közbeni paraméterezés is persze) akkor mondhatni eseménykezelőt kellett vésni, egyik task csinálta a sok I/O vezérlést a másik meg szabad idejében a kijelzést, változtatásokat. Egy pufferen keresztül beszélgettek, nem is tudtak egymásról. Most, hogy a Parsic-al ezt hogyan lehet megoldani, azt nem tudom, már hogy két rutin mondjuk duplapufferen keresztül adhasson-vehessen át adatokat. Ezt elsőre hálátlan megírni, de utána nagyon kényelmes, hogy a főprogram csak egy üres ciklus (vagy oda be lehet tenni látványdolgokat csicsákat). Szóval Neked is kellene egy task, ami teszi a vezérlési dolgokat, egy nagy puffer, amit szinkronizálnak a TFTkezelő task-al. (igazából, ha "on-the-fly" szerkesztés is van, akkor 3-as puffer kell, mert kell egy "Mégsem" lehetőség) Ha megírod a menürendszered és byte-onként kommunikálsz a TFT-vel (tehát egy pufferbe/-ből kommunikálsz), azonnal kiderül mennyi szabadidő marad a vezérlésre. Szerintem a PIC 2x körbekerüli a teljes vezérlési ciklust mire a TFT válaszol egy byte-ot.
Én munkálkodom egy projekten, egy ablakban tudok állítani 10-12 numerikus változót, meg 10-12 check boxot ... amikor kész akkor mentés gombra szépen elküldi a soros vonalon a PIC-nek ...
print, printh parancsokat használok az adatküldéshez ... ezzel jobban kézben tudom tartani a PIC oldalon az adatok fogadását. Valami ilyesmi formában:
a 23 jelenti a PIC-nek hogy az én adatom ( nem valami rendszer üzenet) 1D, 1E ... hogy konkrétan melyik változó jön. Utána meg a változó (pl. n1.val) értéke. Így mindig azonos számú karaktert kell feldolgoznom. Eleinte még benn volt a késleltetés, de a PIC programja mos már megoldja az adatok szétválogatását, így nincs rá szükségem.
Használd a kijelzőt úgy, mint egy átlagos kijelzőt, tehát csak küldj adatot a HMI-nek. Gombokhoz rendelj hozzá küldendő adatot, pl. A0. Ha ezt fogadja a kontroller megnövelsz egy változót és ezt az értéket küldöd vissza a kijelzőnek. Kb. így a legegyszerűbb célba érni.
Hááát ... szerintem néha érdemes mérlegelni, hogy mit bízunk a kijelzőre és mit a PIC-re!
pl. számmező értékének növelését/csökkentését simán rá merem bízni a HMI-re. Felteszek egy + és egy - gombot, egyik növeli a másik csökkenti az értéket ( if feltételekkel határértékek is megadhatók ... ) Ha több mezőt kell változtatni akkor felteszek egy numerikus változót, abba tárolom, hogy épp melyik az aktív mező ( emelyikre elötte ráböktem, annak a háttérszínét meg is változtatom hogy egyértelmű legyen) és annak az értékét változtatják a gombok. pl a + gomb:
A gombok átszinezéséhez én egy időzítőt hazsnáltam fel 50ms-re állitva
A számmezőre kattintásnál:
De pl a lapváltást már én sem mertem a HMI-re bízni ... néha elkóborolt, és akkor a PIC küldte az adatokat csak épp nem tudta hová! ![]()
Ha van egy növelő és egy csökkentő gombod, akkor én így csinálnám:
Növelő gomb küldi: A0 Csökkentő gomb küldi: A1 Kontroller veszi az adást, növeli vagy csökkenti a változót, visszaküldi a változó értékét: t0.txt="34" Így kikerülhető az az eset, hogy a kijelző változó hosszúságú adatcsomagot küldjön. Ebben az esetben a kijelző kódja is csak egy soros, gombonként. A lényeg: A vételi oldalon nem kell mindenféle trükkökre figyelni, csak két karaktert. A hozzászólás módosítva: Okt 17, 2016
Próbálj meg egy lapon 20 mezőnek az adatát változtatni 2 gombbal!
![]() Számmező mindig azonos hosszúságú adatcsomagot küld!
Vedd elő a fantáziád! Gombok küldik: A0, A1, A2, A3.....X0, X1, X2, X3......Z0, Z1, Z2, Z3...
A kontrollerben jóval egyszerűbb ezt kezelni, mint figyelni három - négy típusú adatot. Szerintem. Egyébként pedig mindenki úgy maszatol, ahogy akar. ![]()
Idézet: „20 mezőnek az adatát változtatni 2 gombbal!” És minek küldözgessem az adatot a PIC-nek, vagy a PIC a HMI-nek, ha még lehet, hogy változni fog...
Azt hiszem rendelek egy kicsit és egy közepeset RTC-vel... 7-8 éve ezt akartam megoldani, kisebb nagyobb nekilódulásokkal, csak sokan lenéztek miatta, mivel nem 30-40e sor bepötyögésével akarok egy feladatot megoldani. A kinaiak olcsón elénk tárják a HW és SW részét is... Ezt a technikát legalább 10-15éve használják az ipari elektronika területén OPLC "fantázia néven" lásd, pl: Unitronics gyártmányok...
A történeti hűség kedvéért említem meg, hogy a Videoton harminc évvel ezelőtt árult ilyen terminálokat VDT521xx alapokon.
A 20 mező, két gombos megoldásodat megnézném "élőben" is. Egy lapra 20 mezőt rakni, kicsit soknak tűnik.
Frissült az editor!
V039 update list 1, add passowrd input type for text component 2, add display style for text, button and digital components 3, add system variable "wup" 4, add support for executing "get,print,printh" under sleep mode 5, 20% faster in code parsing than usual 6, code highlighting (adopt ICSharpCode.TextEditorL) 7, automatically refresh components automatically afer change, no manual refresh required 8, fix a few known bugs
Ez nagyszerű már csak jó volna ezt magyarúl is és akkor boldogabb lennék ja és itt nem a fordítóra gondolok.
![]()
Nem pont 20 ... de azért elég sok ...
![]()
Csak úgy belekukkantottam:
1. Jelszó szerű szövegbevitel, a szövegboxnál megjelent egy PW tulajdonság, választható hogy jelszó vagy szöveg (gondolom nem írja ki a karaktereket) 2. Különféle stílusok a szövegdoboznál, gomboknál: van automatikus 3D, 3D benyomva, 3D kifelé, lapos, keret stílus, szövegdoboznál a keret 3D-szerű lehet pl. 3. Felébredéskor mit frissítsen automatikusan (255=mindent) 4. get/print... megy alvó módban is 5. 20% gyorsabb értelmező 6. a beírt kód szép színes lesz, kiemelések, tényleg jobban olvasható 7. automatikusan frissül a komponens, ha változik az értéke (asszem ez gyógyír lesz annak a villódzásnak, amit megírtam nekik) 8. van még elszúrás, de igyekszünk javítani ![]()
3-as pontot ha jól értelmezem akkor azt lehet megadni, hogy felébredéskor melyik lapot töltse be.
( 255 azt ami volt az alvó mód előtt.)
Minden igényt kimerítő ésvelős válasz, nagyonszépen köszönöm az angol nyelvhiányosok nevében is.
![]()
Ja, igen, bocs, csak már kétfelé járt az agyam
![]()
Nahát. Azértdolgoznak a srácok!
Van itt nagyon ráérő, Arduino-hoz értő és TJC TFT-vel rendelkező ember? A soros adatokat átverő kis programot kellene módosítani.
Nálam az 1. nem működik.
Ahol ki lehet választani a tulajdonságot (pw), ott a legördülő lista üres. Másnál ez működik?
Nálam először működött, akkor az alatta lévő paraméter volt üres, most meg a PW lett üres. Kipróbálom más oprendszer alatt, hát ha... Ha vacak, akkor megírom nekik, szerintem már a hócipőjük tele van velem.
![]()
Hova szoktál írni hiba miatt?
Ill. új cuccokat lehet tőlük kérni? Lehet én is írnék, mert lenne néhány. ![]() Bár ahogy látom szép lassan fejlesztgetik
Van FORUMuk a főoldalról csak regisztrálni kell. Nyithatsz új témát, ha nem találtál hasonlót, előbb érdemes rákeresni. Az új kéréseknek külön témacsoportja is van. A support-team-től nekem Jack Liu szokott válaszolni. Közben kipróbáltam friss felrakással a 0.39-es editort W7/64-biten, ugyan az a jelenség (bár van még 1-2 furcsaság pluszban, néhány paramétermező szürke alapú lett). Belenéztem pár file-ba, ott van a password és csillagokra van állítva, csak hát ugye kiválasztani nem lehet. Most megint nincs kijelzőm, hogy élesben próbálkozzak (hogy más sirámaimat kijavították-e), de tesztelgetem, ahogy időm engedi.
Megírtam Jacknek a password attributum problémát.
Megoldhatnák azt is, hogy a kijelzőt lehessen nagyítani a szerkesztő ablakban, a jobb pozicionálhatóság érdekében!
Már benne van a kívánságlistában, elég régen.
Akkor megvárjuk!
|
Bejelentkezés
Hirdetés |