Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   132 / 851
(#) fkx válasza fkx hozzászólására (») Júl 7, 2015 /
 
Persze ezt még így is lehetne:

  1. char hex2char(char a, char b){
  2.    if (a & 64) a += 9; a <<= 4; //első karakter
  3.    if (b & 64) b += 9; b &= 15; //második karakter
  4. return a | b;
  5. };
(#) erdeidominik1999 válasza fkx hozzászólására (») Júl 7, 2015 /
 
Az a gond, hogy a c stringről semmit nem tudok, nincs valami jó kis leírás hozzá? Igazándiból az összes tudásomat a 60 nap alatt arduinóból tanultam, meg sok fórumolvasásból. (Ott meg erről nem volt szó) Illetve a magam 16 évével különben sem tudok sokat... Most is csak eddig jutottam:
  1. void tisztit(char *buff){
  2. char *src, *dst, *asd;
  3. src=dst=buff;
  4.  
  5. while (*src){
  6.  
  7.   if (*src == '%'){ //ha +jel jött be
  8.      *dst = ' ';    //akkor szóközt ir helyette
  9.      src++;
  10.      *asd= *src;
  11.      asd++;
  12.      src++;
  13.      *asd= *src;
  14.      Serial.println(*asd);
  15.   }else{
  16.      *dst = *src;   //egyébként cél = forrás
  17.       dst++;
  18.   }//end if
  19. src++;
  20. }//end while
  21. *dst = 0;  //a string végét lezáró nulla
  22. }//end fv.

De ez sem jó. Bocsi, hogy ilyen macerás vagyok, és az eddigi összes segítséget nagyon köszönöm!
(#) kissi válasza erdeidominik1999 hozzászólására (») Júl 7, 2015 /
 
Szia!

Olvasgasd ezeket:
Bővebben: Link1
Bővebben: Link2 .
(#) kapu48 válasza fkx hozzászólására (») Júl 7, 2015 /
 
Nekem is csak hobby!

Nekem már lassan 1 hete megvan a DUE!
Eddig nagyon csípem! Villámgyors!

Pl.: Alapbeállítás: Serial.begin(115200); és hibátlanul lehet debugolni a programozó USB porton.
A char[]-t , vagy hasonló tömböt lehet DMA-val küldeni egyben HW-esen, nem kel megvárni a végét, közben csinálhat mást a gép. Lehet DMA művelet végén megszakítást kérni….
Van 9db 32Bytes TIMER, lehetséges többszálú programok futtatása, a vait-ok teljes mellőzése


Ami hátrány: SPI csatlakozó nem szabványos az AVR-es fedlapokkal.
Vigyázni kel rá, nehogy 5V-ot kapjon valahonnan!
(#) erdeidominik1999 válasza kapu48 hozzászólására (») Júl 7, 2015 /
 
SPI nem szabványos?! Pedig az ethernet shieldet akartam rátenni
(#) tomi52 hozzászólása Júl 7, 2015 /
 
Üdv! Ezen a fórumon még nem jártam.
Ha van 3 helyen azonos nevű header file, melyiket fogja figyelembe venni? Konkrétan:
- /usr/share/arduino-1.6.1/libraries/Adafruit-GFX-Library/Adafruit_GFX.h
- /usr/share/arduino-1.6.1/libraries/Robot_Control/src/utility/Adafruit_GFX.h
- /usr/share/arduino-1.6.1/libraries/TFT/src/utility/Adafruit_GFX.h
Így hívom be: #include <Adafruit_GFX.h>
Köszi előre is!
(#) kapu48 válasza erdeidominik1999 hozzászólására (») Júl 7, 2015 /
 
Arduino Due PinOut:
Középen van csak a 2*3-as SPI csatlakozó:
(#) kapu48 válasza tomi52 hozzászólására (») Júl 7, 2015 /
 
Gondolom láttad azt a skót filmet, hogy csak 1 maradhat?
(#) erdeidominik1999 válasza kapu48 hozzászólására (») Júl 7, 2015 /
 
Dehát az ethernet shield arra megy. Csak nem jutok dűlőre ayzzal a stringgel...
A hozzászólás módosítva: Júl 7, 2015
(#) kapu48 válasza erdeidominik1999 hozzászólására (») Júl 7, 2015 /
 
És jó a SPI csatlakozó kiosztás is?
SD_CS > D4-re ?
ETH_CS > D10-re ?
(#) erdeidominik1999 válasza kapu48 hozzászólására (») Júl 7, 2015 /
 
Igen minden stimmel, úgy tudom, hogy a a shield meg 3.3v-os.
(#) kapu48 válasza erdeidominik1999 hozzászólására (») Júl 7, 2015 /
 
De miért?:
  1. if (*src == '%'){ //ha +jel jött be
  2.      *dst = 'ide jönne a csere karakte!';    //akkor szóközt ir helyette??
(#) erdeidominik1999 válasza kapu48 hozzászólására (») Júl 7, 2015 /
 
Ez tiszta, azt nem tudom, hogy hogyan tudom a % jel utáni két karaktert átteni egy másik char-be, hogy át tudjam konvertálni.
(#) kapu48 válasza erdeidominik1999 hozzászólására (») Júl 7, 2015 /
 


  1. void tisztit(char *buff){
  2. char *src, *dst, *asd;
  3. src=dst=buff;
  4.  
  5. while (*src){
  6.  
  7.   if (*src == '%'){ //ha +jel jött be
  8.      src++;
  9.      *asd = *src;
  10.      asd++;
  11.      src++;
  12.      *asd = *src;
  13.     asd--;
  14.     *dst = hex2char(*asd);
  15.      
  16.  }else{
  17.      *dst = *src;   //egyébként cél = forrás
  18.  
  19.   }//end if
  20.   dst = ++src;
  21. }//end while
  22. *dst = 0;  //a string végét lezáró nulla
  23. }//end fv.
A hozzászólás módosítva: Júl 7, 2015
(#) erdeidominik1999 válasza kapu48 hozzászólására (») Júl 7, 2015 /
 
Köszi, de hibát ír, hogy a hex2tochar nél char-ból char* lesz.
(#) kapu48 válasza erdeidominik1999 hozzászólására (») Júl 7, 2015 /
 
Ennyit már magadtól is próbálkozhatnál! *dsd = hex2char(asd);
(#) tomi52 válasza kapu48 hozzászólására (») Júl 7, 2015 /
 
A filmet nem láttam, de gondolom, mire célzol. Viszont - egyelőre - az internetről letöltött mintaprogram hibátlanul lefordul, és fut is. Csak azt nem tudom, a háromból melyiket veszi figyelembe.
(#) kissi válasza tomi52 hozzászólására (») Júl 8, 2015 /
 
Szia!

Nem használom az ARDUINO-t, de a 'C' fordító a "< >" jelek között az un. rendszerkönyvtárban keres ( amit telepítéskor megadtak, ill. ami alapértelmezett !) . Ha nem tudod, hogy melyik az, akkor írj a fájlokba egyesével valami hülyeséget ( amit utána persze ki tudsz törölni!) vagy változtasd meg a nevét és amelyiknél kiabál a fordító az lesz a hunyó !
(#) erdeidominik1999 válasza kapu48 hozzászólására (») Júl 8, 2015 /
 
Ezt már próbáltam, de egy csomó krix-krax lesz belőle, ha az asd-t kiiratom, vagy ha a *asd-t abból is.
(#) tomi52 válasza kissi hozzászólására (») Júl 8, 2015 /
 
Nem vagyok nagyon hozzáértő a "C"-hez, de a <> és a "" közti különbséget az include-nál nagyjából tudom. Csak azt hiszem, az Arduino nem egészen sztenderd módon működik. Van egy "libraries" könyvtár, amibe ha beteszek valamit (alkönyvtárakban) akkor arra a fejlesztő környezet újraindítása után már lehet hivatkozni. A három azonos nevű header file a libraries alatti különböző alkönyvtárakban van, vagyis lényegében azonosak az "esélyei" a beszerkesztésre. Ez után az include után van egy másik, az egy másik alkönyvtárban lévő (más) header filet ér el, pedig az ""-jelek közt van. Úgy tűnik, itt nincs jelentősége, hogy <> vagy "".
Én arra gondoltam, teszek mindegyikbe valami megkülönböztetést amit le lehet kérdezni, de az általad javasolt hibás sort valóban egyszerűbb.
(#) kapu48 válasza erdeidominik1999 hozzászólására (») Júl 8, 2015 /
 
Csodálkoztam volna, ha működik neked!
Mert a végin én is belezavarodtam a sok mutató érték adásba!

Szerintem ne erőltesd a mutatókat, old meg tömbindexeléssel.
(Csak a profik becsalnak a mély vízbe, had izzadjál!) Fordítás után az eredmény ugyan az lesz!

És nem kellene átrakni másik tömbbe a 2 karaktert, csak átadod a kezdő címet és 2 karaktert feldolgozol. utána tömörítesz, a 3Byteböl csak 1 marad. Az utána maradt részt előrébb hozod 2 Bytel, a végén levő 0-val együtt.
A hozzászólás módosítva: Júl 8, 2015
(#) fkx válasza kapu48 hozzászólására (») Júl 8, 2015 /
 
Jól van, legyen gyereknap
  1. void tisztit(char* buff){ // %20 és hasonlók konvertálása a fogadott adatokon
  2. char * dst = buff;
  3. while(*buff){
  4.   if (*buff == '%'){
  5.      *dst = hex2char(++buff); buff ++;      
  6.   }else if (*buff == '+'){
  7.      *dst =' ';
  8.   }else {
  9.     *dst = *buff;
  10.   };//end if else  
  11.   dst++;buff++;
  12. }//end while
  13. *dst=0;
  14. }//end tisztit


Ennyi. Nekem ez működik, a webszerverem forrásából másoltam ki.
A hozzászólás módosítva: Júl 8, 2015
(#) kapu48 válasza fkx hozzászólására (») Júl 8, 2015 /
 
Ez így tényleg tisztább, ezért érthetőbb is, mint ahogy mi futottunk neki.

El is teszem, majd jól jön alkalom adtán!
Köszi!

Még 1 kérdés hogy kerülnek a szövegbe a ’+’-ok?
(#) kapu48 válasza fkx hozzászólására (») Júl 8, 2015 /
 
Persze kíváncsiságból összeollóztam:
  1. //  STRtisztito.ino
  2.  
  3. void tisztit(char* buff);
  4. char hex2char(char * hex);
  5.  
  6. // SD chip select pin
  7. const char SDchipSelect = 4;    //SS;
  8. // ETH chip select pin
  9. const char ETHchipSelect = 10; // Ethernet
  10.  
  11.  
  12. // Amit konvertálni kell //Ütvefúró.csé
  13. char fileName[] = "%DCtvef%FAr%F3.cs%E9"; //Ütvefúró.csé
  14.  
  15. void setup() {
  16.   // Serial.begin(9600);
  17.     Serial.begin(115200);
  18.    
  19.   pinMode(ETHchipSelect, OUTPUT);
  20.   digitalWrite(ETHchipSelect, 1);
  21. //  SD chip select
  22.   pinMode(SDchipSelect, OUTPUT);
  23.   digitalWrite(SDchipSelect, 1);
  24.  
  25.   // put your setup code here, to run once:
  26.  
  27. }
  28.  
  29. void loop() {
  30.   // put your main code here, to run repeatedly:
  31.   tisztit(fileName);
  32.   Serial.println(fileName);
  33.  
  34.   while(1){}
  35. }
  36.  
  37. void tisztit(char* buff){ // %20 és hasonlók konvertálása a fogadott adatokon
  38. char * dst = buff;
  39. while(*buff){
  40.   if (*buff == '%'){
  41.      *dst = hex2char(++buff); buff ++;    
  42.   }else if (*buff == '+'){   //ha +jel jött be”
  43.      *dst =' ';
  44.   }else {
  45.     *dst = *buff;
  46.   };//end if else
  47.   dst++;buff++;
  48. }//end while
  49. *dst=0;
  50. }//end tisztit
  51.  
  52. //Paraméter: 2byte hexa számjegy pointere
  53. //Visszatérési érték: a hexa-ból dekódolt karakter:
  54.  
  55. char hex2char(char * hex){
  56.    if (*hex & 64) *hex += 9; *hex <<= 4; //első karakter
  57.    hex++;
  58.    if (*hex & 64) *hex += 9; *hex &= 15; //második karakter
  59. return *hex | *(hex-1);
  60. };

És az eredmény:
DC74766566FA72F32E6373E90D0A Ütvefúró.csé
(#) fkx válasza kapu48 hozzászólására (») Júl 8, 2015 /
 
A '+'-ok: Ebben a hozzászólásban leírtam nemrég.
(#) kapu48 válasza fkx hozzászólására (») Júl 8, 2015 /
 
De akkor jön az újabb probléma!

pl. „C++”, A = C + B; ezt, hogyan írom be?

Szerintem erdeidominik inkább elment kézzel öntözni!
Nem is tudom! Kel még nekem internetes távvezérlés?
A hozzászólás módosítva: Júl 8, 2015
(#) erdeidominik1999 válasza kapu48 hozzászólására (») Júl 8, 2015 /
 
Jól beszélsz, lehet, hogy maradok a slagnál. Köszi szépen, még egy kérdés: a beérkező c stringből hogyan olvasod a paramétereket? pl.: a=xy, ezt hogyan olvasod ki? Mert most nekem string indexOf-fal van, de az lassú.
(#) fkx válasza kapu48 hozzászólására (») Júl 8, 2015 /
 
Ezt a böngésző fogja elkódolni neked csak be kell írni pl. egy beviteli mezőbe. A szerver oldalon meg csak dekódolni kell. Most össze is vontam a két függvényt egybe, és jól megy (hangyányi gyorsulás):
  1. void tisztit(char* buff){ // %20 és hasonlók konvertálása a fogadott adatokon
  2. char * dst = buff;
  3. while(*buff){
  4.   if (*buff == '%'){
  5.      buff++; *dst  = *buff << 4; if (*buff & 64) *dst += 144;
  6.      buff++; *dst |= *buff & 15; if (*buff & 64) *dst += 9;
  7.   }else if (*buff == '+'){
  8.      *dst =' ';
  9.   }else {
  10.     *dst = *buff;
  11.   };//end if else  
  12.   dst++;buff++;
  13. }//end while
  14. *dst=0;
  15. }//end tisztit

Tehát ehhez már nem kell a hex2char() függvény.
(#) kapu48 válasza erdeidominik1999 hozzászólására (») Júl 8, 2015 /
 
Ajánlom a csv formátumot! (Nem kel újból feltalálni a gumislagon a lukat!)
Tucatnyi dokumentációt találsz a neten:
Bővebben: Link
(#) erdeidominik1999 válasza kapu48 hozzászólására (») Júl 8, 2015 /
 
Nem egyről beszélünk, én arra gondolok, hogy ami az arduinóhoz érkezik.
Következő: »»   132 / 851
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