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:
Megírtam. Nem valami elegáns, izzadságszagú, de gyakorolni jó volt.
Kell hozzá binar,keresi,digidx,hxl numerikus hexain,onech,kivdig string típusú változó. hexin.txt-ben jön a hexa string binar.val ban keletkezik az szám Első és utolsó sor csak tesztelni van, hogy lássam. t0.txt=hexain.txt binar.val=0 digidx.val=0 strlen hexain.txt,hxl.val while(digidx.val>=0) { substr hexain.txt,kivdig.txt,digidx.val,1 keresi.val=0 while(keresi.val>=0) { substr "0123456789ABCDEF",onech.txt,keresi.val,1 if(kivdig.txt==onech.txt) { binar.val=binar.val<<4 binar.val+=keresi.val keresi.val=-2 } keresi.val++ if(keresi.val>15) { keresi.val=-2 } }//while keresi digidx.val++ if(digidx.val>=hxl.val) { digidx.val=-2 } if(keresi.val==-2)//nem hex digit volt { digidx.val=-2 } }//while digidx n0.val=binar.val
Lepróbáltam a programodat, mert érdekel, mit alkottál.
Azt azonban nem említetted, hogy ezt hány Bites számhoz készítetted. Ugyanis ha 32Bites értéket beviszek, lefut a program, de két hibával rendelkezik; - A kapott érték minusz. - A kapott érték közel sem azonos azzal, mint aminek lennie kellene. Tovább nézegetve megtudtam, hogy 16Bit az, amit még képes kezelni, tovább nem megy, illetve a fenti hibákkal fog rendelkezni. Mind ezek ellenére az összeállításod is hasznos volt számomra, köszönöm szépen! A hozzászólás módosítva: Dec 1, 2017
Csak egy gyors helyesbítés, mert elírtam. 24Bitet képes maximálisan kezelni.
Minden lehetséges, de a negatív eredmény nem feltétlenül hiba. Ha binar.val előjeles egész szám és MSB egybe kerül akkor azt negatívként értelmezi. Ezzel nem foglalkoztam, hiszen éppen az volt a cél, hogy kiismerjem. Azért ha tudsz olyan hex karakter sorozatot amit félreért írd meg lécci. Amúgy addig dolgozza fel amíg el nem fogy vagy nem hex karakter érkezik. Kisbetűket nem ismeri fel tehát 1A2B3c4d ből csak 1A2B3 lesz. Hosszra nincs benne limit, de nyilván ha 8 karakternél többel próbálod, a shiftelésnél kifolyik. Már elkezdtem az újat, ami felezéses algoritmussal keresi meg. Ez még butaságokat művel és éppen próbálom kidebugolni.
Jut eszembe, csak az én tudatlanságom, vagy ez a debugger tényleg nem tud töréspontot? Már nem az eszközön, csak a Pc-s szimulátorral. Amúgy még mindig keresem azt a linket, ahol elolvashattam volna, ahelyett hogy végigpróbálgatom, hogy tud számok között bitenkénti and, or, not műveletet de nem tud xor-t (vagy nem jöttem rá), hogy tud string összehasonlítást nem csak if(a.txt==b.txt) hanem if(a.txt<=b.txt) értelemben is, hogy tud számokat shiftelni, de nem tud rotálni, (vagy nem jöttem rá), hogy nem tudja karakter kódját visszaadni számként (vagy nem jöttem rá), ...
Szuper. Ezt kerestem. Köszönöm.
Nagyon jó, DE Néha az az érzésem ezt valami másról írták. Persze tele van hasznos tudnivalókkal, csak megbízhatatlan. Tapasztalataimat összefoglalom alább, ezek nem valódi eszközön , csak editor/debugger környezetben keletkeztek, és persze ezek is megbízhatatlanok ![]() 1-General Rules 8 aki érti kérem magyarázza el 12 jó hogy látom leírva, szívtam vele 16 nincs ilyen 18 jó lenne de 1A hibakódot ad 19 nincs ilyen 20 nincs ilyen 2-Assignment Statements 6 7 közé írhatták volna, hogy <, > is működik 13 tuti hogy 32 bites 25 próbáltam, le sem fordítja 26 Ilyen nincs 3-Operational Commands 8a nem működik, pedig 00 hiabkódot ad vissza 24a működik de nem látom mire jó, hacsaknem több byteos karakterkódolás esetére 25 ismétlem magamat, stringre is megy <, > Hirtelen ennyi, de valóban nagyon hasznos.
Én szoktam használni ezt a helpet, de a 1.18, 1.19, 1.20, 3.8a, 3.33, 6.22-6.26 nekem is új. Nem lennék meglepve, ha napokban kijönne egy új verzió és ezek lennének benne az újdonságok.
A jelenlegi verzióban valóban nem működnek. Viszont az 1.16, 2.25, 2.26 biztos, hogy működik.
Ja, és szerintem a stringre nem megy a <>.
Sziasztok!
A legutóbbi frissítésben láttam, hogy javítottak valamit a font generátoron, de nálam ez a hiba továbbra is fennáll: Bővebben: Link Nálam van valami gond, vagy ez ilyen? Jelenleg a régebbi verziókkal generált fontkészletet használom, mert az jó. Új verzióból nem tudok normális fontokat kicsiholni, pedig kellene nagyobb méret. Köszi.
Sziasztok!
Egy problémára nem lelek megoldást a neten. Elkészítettem egy saját billentyűzetet. Csalásként beimportáltam egyet a rendszerből, azt szabtam át, módosítottam, stb. De mivel szeretném azt máshol is használni, így Exportáltam a lapot. Megnéztem, miként vannak elmentve a rendszer billentyűzetei, így a 240320 nevű mappából merítve "1.page" néven történt a mentés. Le is zártam, mert a rendszeré is ilyen (igaz, ott nem kér kódot). Másik projekt kereteiben importáltam és meglepve látom, hogy sima oldalként hozza be. Illetve nem lehet beállítani változót arra, hogy hívja meg, csak "page keybdA0" paranccsal, ami nem ugyan az. Már itt is megfigyelhető a hiba, mert a rendszer billenytűzeteiben nem szerepel a "0" és az oldal nem átnevezhető "keybdA"-ra. A nem ugyan az rész azt jelenti, hogy ezen programrész;
nem csinálja azt, mint kellene, vagyis nem írja át a meghívó értékét a bevitt adatra nyugtázás után. Így a kérdésem az volna, hogy hogyan lehet elmenteni úgy, hogy billentyűzetként fogja fel?
Pontosítás;
A beküldött programrész nem a nyugtázásért felel. Ez csak nem olvassa be, mi hívta meg őt.
Tökéletesen kezeli a 32 bites értékeket. Igen, ha a legmagasabb bit 1, akkor negatív a szám, ráadásul kettes komplemens ábrázolásban. Tehát a 0xFFFFFFFF értéke a "mínusz 1", mint a processzoroknál is; így mindig az utolsó (legalacsonyabb) bit a "párosság-bit", negatív számnál is. Jól működik.
Igen, szinte biztos, hogy hamarosan új verzió jön, abban lesznek ezek már benne. Jónéhánynál oda is írták, hogy "Advanced". Bár az 1.18, 3.8a és 3.17a-nál nincs ott, de azok sem mennek még, a jelenlegi 0.52-es editor (és örül is neki minden indításkor, hogy a legfrissebbem van) még(?) nem ismeri ezeket. Pedig én pont a 3.17a-t, meg a 3.8a-t (is) kerestem eddig...
![]()
Ez jó. Nagyon jó.
Esetemben ez azt jelenti, hogy a PIC-oldalról hexában el tudom küldeni egyszerre négy változóm értékét egyetlen (string-típusú) HMI-változóba. A PIC-oldali átalakító modulom megvan, tehát stringként ki tudom küldeni a hexa értékeket egymás után; itt ugyebár nincs "átvitel", mint a decimális számoknál, tehát egy FF utáni (pl.) E8 így is van leírva. A te rutinod ezt át tudja tenni 32 bites számértékké, egyetlen (numerikus) HMI-változóba. Onnan már csak ki kell bontani 4 különböző (8 bites numerikus) változóba, és visszakapom az eredeti értékeket, amit a PIC-ből kiküldtem. Az előjel változást is figyelembe véve ezzel a programmal bontom vissza (egy új ideiglenes number változót tettem be (tmp.val), az eredeti bájtok a bin1.val...bin4.val helyen jelennek meg): tmp.val=binar.val bin1.val=tmp.val%256 if(bin1.val<0) { bin1.val+=256 } tmp.val>>=8 bin2.val=tmp.val%256 if(bin2.val<0) { bin2.val+=256 } tmp.val>>=8 bin3.val=tmp.val%256 if(bin3.val<0) { bin3.val+=256 } tmp.val>>=8 bin4.val=tmp.val%256 if(bin4.val<0) { bin4.val+=256 } Ezzel gyakorlatilag a problémám megoldódott, nyolc bájtot két string változóban (=két utasítással) át tudok küldeni a PIC-ből a HMI-be. Ezer köszönet az ötletért! ![]() A hozzászólás módosítva: Dec 3, 2017
Jjjja...
Van benne néhány olyan utasítás is, amit a hivatalos "instruction set" nem tartalmaz. Próbálkoztam, bejött... ![]()
Egyébként "hivatalosan" nem létezik az n0.val++ (increment) és n0.val-- (decrement) típusú utasítás sem, mégis működik.
A fejlesztőkörnyzet leírásban is vannak érdekes dolgok. A 6. fejezetben látszik valami QR kód generátor, a 9. fejezetben pedig a number esetében van egy format:hex sor is:
https://nextion.itead.cc/editor_guide/ Remélem ezeket az újdonságokat beteszik a köv. verzióba.
Szerintem ötlet az nincs benne csak favágás, de egészségedre. Azzal viszont nem értek egyet, hogy ha neked bytonként van szükséged az adatra, akkor egy 32 bitesbbő szbdald ki. Az általam írt átalakítót módosíthatod úgy, hogy a külső while ciklus helyett egy for ciklust írsz 2 lefutással. Ekkor két hexa digitenként alakít ás és mindjárt kapod a bytokat. Persze többször kell behívni, ahány byteot küldesz, de így az lehet akár 10 is. A többszöri behívásra, szubrutinra, eddig mint kezdő, igazából nem láttam megoldást, úgy csinálnám, hogy egy nem látható gomb eseménykezelőjébe tenném aztán click.
Igen, valóban, egy text változóban gyakorlatilag akármennyi HEX-adatot át lehet küldeni, és két karakterenként, bájtonként kibontani. Jogos.
A "szubrutin-hívás" nálam is pontosan így működik - talán pont erre találták ki a "click" utasítást?
Csak még egy apró észrevétel,én nem MOD-dal (%) hanem AND-del (&) csinálnám. Az osztás bonyolult művelet a procinak, a bitenkénti-és mondhatni a vérében van. Utóbbi egyértelmű, a maradékról nem tudom előjeles-e, nyilván ki lehet próbálni, és a további programsoraid ezt kezelik le. Tehát:
bin1.val=tmp.val%256 if(bin1.val<0) { bin1.val+=256 } tmp.val>>=8 Helyett: bin1.val=tmp.val&255 tmp.val>>=8
Sajnos be kell látnom igazad van, de azért bosszantó. Az editor elfogad string összehasonlítást,
if("A"<"B") vagy if(t0.txt<=t1.txt) de mindig hamis az összehasonlítás eredménye
Nagyon jó meglátás, ugye, hogy jönnek itt az ötletek?
![]() Igen, a maradékosztás is előjeles, hiszen ha az egész számérték negatív, az osztás után negatívnak kell lenni az eredménynek is. (Ide csak lepróbált rutint írok be.) Azért is kerültek be a vizsgálatok, de ez így tényleg kompaktabb, rövidebb áttekinthetőbb is. Valószínűleg lényegesen kevesebb órajel alatt végez is vele a proc, valóban. Kipróbáltam az ötletedet, ugyanazt adja eredményül minden (általam) elképzelhető értékre. Megvéve! ![]()
Angol szavak kiegészítése magyar ragozással?
„bytonként, bitesbbő, bytokat, byteot … „ Szerintem ez roppantul zavaró, ráadásul értelmetlen is. Nem tudom, mi lenne a helyesebb? Ragozni is angolul vagy kötőjelesen hozzáfűzni a magyar ragozást?
Az angol ragozást (azt a keveset) hogyan használnád magyarul? A helyesírásunk és a józan ész is azt mondja, hogy a magyar ragot akkor kell kötőjellel tagolni az idegen szóhoz, ha annak a szóvégi írása eltér a kiejtéstől. Tehát byte-onként (az e-t nem ejtjük, tehát nem ahhoz kapcsolunk), de ha nincs ilyen, akkor pl. bitenként. A rag hangrendjét a kiejtéshez illesztjük, nem az íráshoz.
Sajnos itt a gond!
Kis hazánk évtizedekig elvolt zárva a nyugati civilizációtól. Én például még nem is találkoztam eredeti angollal. Csak filmeken, amit jó emberek szinkronizálnak nekünk. A lényeg hogy a többségnek fogalma sincs a helyes kiejtésről. Mivel nem tanulta, és csak szöveges formában használja a nyelvet. És különben is itt sántít a hasonlat. Most nem kiejtésről beszélünk! Hanem leírt szöveg értelmezésről!
Az a baj hogy nincs is igazán eredeti angol! Angliában az angolok közt is olyan tájszólás van hogy nem érted mit mond, és akkor még ott vannak a bevándorlók. Meg amit említettél, nem kerül az ember olyan körökbe ahol az Oxfordi angolt beszélik!
Sziasztok!
Az előző beírt kérdésemre nem kaptam választ (várom még, mert nem találtam rá azóta sem megoldást), most bővíteném egy kérdéssel; Lehetséges valahogy az, hogy ha nekem több képernyőm van egy programban, az egyik vertikális, míg a többi horizontális legyen? Vagyis álló/fekvő. Elkészítettem egy 90°-os megjelenítéssel rendelkező programot, elmentettem oldalként, behítvam egy álló képernyős programba és egy rakat hiba van, mert nem képes megjeleníteni mind azt, ami kilóg a képből. Ezért szeretném csak ezt az oldalt eldönteni. |
Bejelentkezés
Hirdetés |