Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Valószínű, én vagyok nagyon sötét, de még mindig nem értem, hogy a hexa értéket hogyan hozom össze a karakterrel?
Hát, inkább hobby webfejlesztő vagyok, nem ez a szakmám, ezzel csak érintőlegesen foglalkozom.
A szerver egyelőre csak ledeket kapcsolgat. A DUE sajnos még nem érkezett meg, majd azt is elérhetővé teszem ha sikerül elindítani.
Eddig tiszta, de mondjuk van egy stringem, amiben az van, hogy D5, ebből hogyan csinálok karaktert?
char *kodolt={"%F3"};
char dekodolt; dekodolt = hex2byte(kodolt[1]); //dekódolt == 243 //dekódolt == ó Persze a hex2byte függvényt neked kell megírni...
Köszi, de pont ezt nem értem, amit nekem kéne megírni.
F3
Const F = 15 n = 16 * F + 3 A hozzászólás módosítva: Júl 6, 2015
Egy ilyenem van:
ha jól értem ez is jó, viszont a zónák neve egy tömb stringben van így: String zona_nev[6]; és ezt nem tudom write-tal írni...
Meg keresed, hol van a stringben „%”-jel az utána levő 2 Bytet alakítód át. (Alapból nem használszhatsz %-jelet, vagy ismert, hogy hol van ékezetes karakter? És azt keresed meg.)
És a 3 bytet (%FF) lecseréled a kapott 1 Bytevel. ... unsigned char val = 0; ... return val; A hozzászólás módosítva: Júl 6, 2015
Szia.
Akkor te a Timer-eket, a DMA-t, és semmit nem használsz? Gondolom ezek Arduino-ból nem éppen beállíthatóak. Találtam adatlapot, még böngészem. 5$-ért ez a lap ajándék, amit tud, ez már bármire elegendő, sőt!
Az a gond, hogy nem egy dologról beszélünk. Azt tudom, hogy a stringben hogyan tudom lecsrélni meg megkeresni, az kéne, hogy hogyan tudom átalakítani. Azzal a metódussal, amit már írtál?
Te találtál jobbat!
Ha már szétdaraboltad a stringet? Át adod a két karaktert:
Visszakapod, ami kell neked! Utána megint összefűzöd. A hozzászólás módosítva: Júl 6, 2015
Na így sikerült, ha van valami rövidebb ötlet?
A hozzászólás módosítva: Júl 6, 2015
Köszönöm szépen az összes segítséget! Ezer hála! Viszont még egy dolgot vettem észre, ha az első betű az ékezetes, akkor nem csinálja meg az átalakítást, ez miért lehet?
???
Mi ezzel a gond? ha nincs benne, akkor minek fusson? Viszont még egy dolog felmerült, ha több ékezetes betű van, akkor hogyan tudnám az összeset átalakítani?
Ezt nagyon nem így szokták csinálni. Ezt a string osztályt felejtsd el, és használj C stringet (karaktertömböt) és a hozzá való függvényeket. Ez így ahogy most van, ha működni fog, akkor is nagyon lassú lesz, ahhoz képest amilyen lehetne.
A cserét úgy szokták megoldani, hogy pl. a string (és itt C stringről beszélek) a bufferben van. Felvesznek két pointert char *src, *dst. Az src pointerrel olvassuk a dst pointerrel írjuk az adatokat egy ciklusban. Azonban mikor % jelet olvasunk fel, akkor a következő két karaktert odaadjuk a konvertáló függvénynek, de a dst pointert csak eggyel növeljük és beírjuk a függvény által visszaadott értéket. Az src pointer persze mindegy egyes olvasott bájt után növekszik. Ezzel minden kódolt karaktert visszaállít. A konvertáló függvény bár működhet, szintén nagyon nem hatékony így (tetű lassú). Mivel fixen 2 bájtból kell egyet csinálni, simán megoldható ciklus nélkül is. Egyszerüen ha a karakter '0'-'9' közötti akkor le kell vonni a '0' ASCII kódját(3. és 4. bit nullázása), ha 'A'-'F' közötti akkor le kell vonni az 'A' ASCII kódját és hozzáadni 10-et (összevonva -55). Miután ez megvan az első számot szorzod 16-al (<<4 mert a shiftelés sokkal gyorsabb) és hozzáadod a másodikat (vagyolod mert az alsó bitek nullában vannak és a vagyolás gyorsabb tehát: return (a<<4)|b ), és meg is van a konverzió. Ha azt akarod, hogy kisbetűkkel is működjön, akkor az 'A'-'F' ellenörzés előtt a 4. bitet nullázod.. A hozzászólás módosítva: Júl 7, 2015
Hú egy kicsit segítenél ebben, mert a c stringgel egyáltalán nem vagyok tisztában.
A C string egy sima karaktertömb, ahol a string végét egy nulla jelzi. Azaz a tömb ultolső bájtjába nullát kell tenni. Így könnyen kezelhető lesz, pl. ha ciklusban akarom felolvasni, akkor egyszerűen addig kell olvasni amig nullát nem kapsz. Vannak standard függvények hozzá: str() kezdettel.
Oké, de én a cserére gondoltam.
Nem írom meg helyetted a függvényt csak egy példát írok, hogy ilyen módszerrel hogyan szedem ki mondjuk a szóközöket egy C stringből. Próbáld megérteni (ha nem megy kérdezz), utána meg tudod írni magadnak amit kell.
A hozzászólás módosítva: Júl 7, 2015
Kezdem érteni, már csak annyi kéne, hogy hogyan cserélem? Eddig jutottam:
Ezeket a setup elé tegyed:
Már nem tudom javítani az előző hszt!
Helyesbítek:
Nem, még nem érted hogy működik. Egy újabb példa, amiben a + jeleket cseréli szóközre, ha ezt jól kiegészíted akár jó is lehetne. Persze ahoz érteni kell a működését. Betehetném ide a teljes függvényt is, de akkor sosem jönnél rá magadtól.
Szia!
Idézet: „if (*src != '+'){ //ha +jel jött be” Ez pont fordítva !
Látom a hex2char() megírása normális sebességűre nehézséget okoz. Ennyi lenne a konverzió ciklus nélkül, és nem kell erre óriási, csiga lassú függvényeket írni:
Ezt használom a MAC address feldolgozásakor is (persze előtte "feldarabolom")
Jogos az észrevétel, köszi! Legalább érti is valaki amit írtam
== kellett volna a feltételbe, és nem != |
Bejelentkezés
Hirdetés |