Fórum témák

» Több friss téma
Fórum » Nextion érintőképernyős HMI, UART kommunikációval
Lapozás: OK   28 / 50
(#) NeTi válasza D Wye hozzászólására (») Nov 30, 2017 /
 
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
(#) D Wye válasza NeTi hozzászólására (») Dec 1, 2017 /
 
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
(#) D Wye válasza D Wye hozzászólására (») Dec 1, 2017 /
 
Csak egy gyors helyesbítés, mert elírtam. 24Bitet képes maximálisan kezelni.
(#) NeTi válasza D Wye hozzászólására (») Dec 1, 2017 /
 
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á), ...
(#) NeTi válasza helektro hozzászólására (») Dec 1, 2017 /
 
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.
(#) helektro válasza NeTi hozzászólására (») Dec 2, 2017 /
 
É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.
(#) helektro válasza NeTi hozzászólására (») Dec 2, 2017 /
 
Ja, és szerintem a stringre nem megy a <>.
(#) tomat5 hozzászólása Dec 2, 2017 /
 
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.
(#) D Wye hozzászólása Dec 2, 2017 /
 
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;
  1. if(p[loadpageid.val].b[loadcmpid.val].type==54)
  2. {
  3.   cov p[loadpageid.val].b[loadcmpid.val].val,input.txt,0
  4.   inputlenth.val=input.txt_maxl
  5. }else
  6. {
  7.   input.txt=p[loadpageid.val].b[loadcmpid.val].txt
  8.   inputlenth.val=p[loadpageid.val].b[loadcmpid.val].txt_maxl
  9.   if(p[loadpageid.val].b[loadcmpid.val].type==116)
  10.   {
  11.     show.pw=p[loadpageid.val].b[loadcmpid.val].pw
  12.   }
  13. }

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?
(#) D Wye válasza D Wye hozzászólására (») Dec 2, 2017 /
 
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.
(#) John Howard válasza D Wye hozzászólására (») Dec 2, 2017 /
 
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.
(#) John Howard válasza helektro hozzászólására (») Dec 2, 2017 /
 
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...
(#) John Howard válasza NeTi hozzászólására (») Dec 3, 2017 /
 
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
(#) John Howard válasza John Howard hozzászólására (») 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...
(#) John Howard válasza John Howard hozzászólására (») Dec 3, 2017 /
 
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.
(#) helektro válasza John Howard hozzászólására (») Dec 3, 2017 /
 
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.
(#) NeTi válasza John Howard hozzászólására (») Dec 4, 2017 /
 
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.
(#) John Howard válasza NeTi hozzászólására (») Dec 4, 2017 /
 
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?
(#) NeTi válasza John Howard hozzászólására (») Dec 4, 2017 /
 
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
(#) NeTi válasza helektro hozzászólására (») Dec 4, 2017 /
 
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
(#) John Howard válasza NeTi hozzászólására (») Dec 4, 2017 /
 
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!
(#) kapu48 válasza NeTi hozzászólására (») Dec 5, 2017 /
 
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?
(#) _BiG_ válasza kapu48 hozzászólására (») Dec 5, 2017 /
 
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.
(#) kapu48 válasza _BiG_ hozzászólására (») Dec 5, 2017 /
 
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!

(#) dB_Thunder válasza kapu48 hozzászólására (») Dec 5, 2017 /
 
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!
(#) helektro hozzászólása Dec 9, 2017 /
 
Megjött az új, 0.53-as verzió egy csomó új dologgal.
(#) D Wye hozzászólása Dec 9, 2017 /
 
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.
(#) helektro válasza D Wye hozzászólására (») Dec 9, 2017 /
 
Nem lehet.
(#) Bakman válasza D Wye hozzászólására (») Dec 9, 2017 /
 
Egyszerű, adott oldalt állóban készíted el míg a másikat fekvőben.
Következő: »»   28 / 50
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem