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   137 / 850
(#) erdeidominik1999 válasza lacika5555 hozzászólására (») Júl 16, 2015 /
 
Kovidivi már válaszolt, azt próbáltad? Meg azt kéne kipróbálni, hogy másik programmal is csinálja-e, nem e a program miatt van. Nincs másik arduinód otthon kipróbálni azzal?
(#) lacika5555 válasza erdeidominik1999 hozzászólására (») Júl 16, 2015 /
 
Utána én is írtam neki de még nem kaptam választ.
Én a tápot usb-n keresztül oldottam meg veszek majd szerelhető csatlakozót akkor megtudom a tápcsatlakozónál táplálni van egy ipari 12v tápom ami a ledeknek van az jó lehet?
Sajnos nincs itthon plusz még egy arduinom és másik programot se tudok rá tenni mivel ez egy akvárium vezérlés és ha nem működne gondot okozna a növényeknek...
Tettem az usb-re egy ferrit gyűrűt azóta nem láttam, hogy újra indulna de ez nem azt jelenti hogy megoldódott mivel random jellegű az újraindulás
Nem lehet valahogy naplózni ezt a dolgot?
(#) fkx válasza erdeidominik1999 hozzászólására (») Júl 16, 2015 /
 
Az a helyzet , hogy nem ismerem a teljes programod működését, de ha a neten található példaprogramokból indultál ki: azok általában sorvégjelig olvasnak egy blokkot majd feldolgozzák.
Az én programom viszont nem csak sorvégnél áll meg a blokk olvasásával , hanem ?-jelnél, & jelnél és szóköznél is. Így egyszerre mindíg csak 1db változó jön be, és szépen sorban fel lehet dolgozni.
A másik lehetőség, ha a stringben megkeresed strchr()-el ezeket a karaktereket, megjegyzed a címüket egy tömbben, majd nullát teszel a helyükre - és ezzel feldaraboltad a stringet. Ez utóbbi kicsit gyorsabb megoldás, de sokkal nagyobb memóriaigénye van, mert az összes változónak egyszerre el kellene férnie a bufferben, és megvalósítani is nehezebb. Így én inkább az első megoldást választottam.
(#) fkx válasza erdeidominik1999 hozzászólására (») Júl 16, 2015 /
 
Én is utánaolvastam, de akárhová állítom ezt a ClockDivider-t, nincs lényegi változás a webszerver sebességében. Erős a gyanúm, hogy a w5100 a korlát. De ha sikerül, majd átírom wifi modulra a webszervert, és meglátjuk az mennyire lesz gyors - viszont ennek leghamarabb majd csak augusztusban tudok nekiállni.
(#) erdeidominik1999 válasza lacika5555 hozzászólására (») Júl 16, 2015 /
 
Én úgy szoktam, hogy ha 12v-o a táp, akkor elé teszek egy 7809-est, mert tönkre menni nem fog, de nagyon forró lesz a beépített stabilizátor... Tudod naplózni, a setup-ban írj az eepromba, és látni fogod, ha a beírt értéket látod, akkor újraindult. De még jobb, ha:
  1. EEPROM.write(0,EEPROM.read(0)+1);

mert így azt is látni fogod, hogy hányszor indult újra...
(#) erdeidominik1999 válasza fkx hozzászólására (») Júl 16, 2015 /
 
Köszi, és az első variációt hogyan tudom megcsinálni? A wifi szerintem nem lesz gyorsabb, mert ott meg a wifi lesz a korlát, nem az arduino és shield közti kapcsolat...
(#) nagy-istvan hozzászólása Júl 17, 2015 /
 
Helló Mindenki! Vettem egy arduino nano-t az ebay-en, de nem ismeri fel a windows. az arduino honlapján találtam egy fórumot, ahol egy CDM20824... exével javítottak ilyen problémát, de nálam ez sem jött be. Van más megoldás? Hol találok drivert a nano-hoz?
(MINI USB Nano V3.0 ATmega328P CH340G 5V 16M Micro-controller board Arduino)
(#) tomi52 hozzászólása Júl 17, 2015 /
 
Mit nem tudok én, vagy mit nem tud az arduino fejlesztő környezet?
Szeretnék egy olyan dolgot létrehozni, hogy a főprogramban van vagy nincs egy #define, és egy #include-ban ettől függően #include-ol valami mást. Konkrétabban:
  1. ......
  2. #define HUFONT
  3. .....
  4. #include "TFTLCD.h"
  5. .....

A TFTLCD.cpp-ben meg a következő van:
  1. #ifdef HUFONT
  2.   #include "glcdfont.hu.c"
  3. #else
  4.   #include "glcdfont.c"
  5. #endif

Egyszerűen nem vesz tudomást arról, hogy van egy "#define HUFONT". Ha kikommentezéssel csinálom, hogy egyik vagy másik karakter tábla töltődjön be, akkor természetesen a program jól működik.
Ugyan ilyen megoldás a PIC-hez való gyári MPLABX fejlesztő környezetben remekül működik. Nem vagyok annyira otthon a C-ben, hogy ez sztenderd megoldás-e, és mindenütt illene működnie, esetleg mit kéne másképp csinálnom az Arduino környezetben?
(#) fkx válasza erdeidominik1999 hozzászólására (») Júl 17, 2015 /
 
Ahhoz, hogy válaszolni tudjak ismernem kellene a jelenlegi programban levő megoldást. Neked pedig ismerned kellene a jelenlegi programod ezen részének a működését, hogy át tudd írni. Ha te írtad meg, akkor ez nem lesz gond. Ha a netről szerezted be, akkor alaposan át kell rágnod, hogy minden részletének megértsd a működését, ezt viszont senki nem tudja megtenni helyetted. A működés megértésében gondolom többen is tudunk segíteni, de ahhoz konkrét kérdéseket kellene tudnod feltenni. Ha csak általánosságban rákérdezel a működésre, akkor a válasz is csak általánosságokból fog állni.
Tehát a kérdésedre mégegyszer: valószinűleg most a böngészőből bejövő adatokat, blokkonként olvassa a programod, és egy-egy blokk sorvégjelig tart (de persze ezt csak feltételezni tudom mivel a forrást nem láttam). Ezt át kellene írnod úgy, hogy a blokk végét ne csak a sorvégjelek határozzák meg, hanem a szóköz, & ,? is. Igy pl. válozónév=érték formában fog egy változót tartalmazni a blokk. A következő változó pedig új blokkba kerül.
(#) icserny válasza nagy-istvan hozzászólására (») Júl 17, 2015 /
 
Én ezt töltöttem le: CH341SER.exe
(#) nagy-istvan válasza icserny hozzászólására (») Júl 17, 2015 /
 
Köszi! Működik
(#) erdeidominik1999 válasza fkx hozzászólására (») Júl 17, 2015 /
 
Itt van a jelenlegi forrásom, ha megkérlek rákukkantanál?
(#) erdeidominik1999 hozzászólása Júl 17, 2015 /
 
Sziasztok! Egy kis problémába ütköztem: az ntp szerverről származó időt a setSyncProvider()-rel állítom be az arduinón, ennek az alapértelmezett intervalluma 5 perc, azt tudom, hogy ezt lehet állítani, de hogyan lehet kikapcsolni, hogy csak egyszer csinálja meg, amikor meghívom a függvényt? Előre is köszi!
(#) fkx válasza erdeidominik1999 hozzászólására (») Júl 17, 2015 /
 
Az alábbi részben van megadva, hogy meddig olvasson egy bejövő sort (blokkot).
  1. while (client.connected()) {
  2.       if (client.available()) {
  3.         char c = client.read();
  4.         if (c != '\n' && c != '\r') {

Ezt a feltételt kellene elvileg kiegészíteni, hogy a többi elválasztó karakterre is leálljon. Ezzel csak az a gond, hogy a módosítás a szerver többi részének a működését is érinteni fogja, ennélfogva sokmindent kellene újra vagy átírni benne. Egy az interneten sokfelé fellelhető példaprogramból indultál ki, és azt írtad tovább, anélkül, hogy a működését teljesen megértetted volna. Ha rendes webszervert akarsz csinálni, akkor szerintem uj alapokra kellene helyezni. Ez a sok egymásba ágyazott feltétel egy cikluson belül egy bizonyos határ felett nehezen áttekinthető és még nehezebben bővíthető.
Nekem az egész működés kicsit más logikára épül.
- Van egy függvényem ami minden híváskor egyetlen blokkot olvas be a bufferbe (sorvégjelig, vagy &,?, szóköz karakterig, vagy az adatok elfogyásáig.) a visszatérési érték jelzi, hogy van-e még adat a bufferben.
Ezt a függvényt egy ciklusból hívja a webszerver amíg el nem fogynak a bejövő adatok.
A cikluson belül a blokkos beolvasás miatt mindig csak egyetlen adatot kell feldolgozni. Itt lementem a kért fájlnevet egy változóba, és feldolgozom a bejövő változókat. A ciklus vége után lehet választ küldeni. A mentett fájlnév.kiterjesztés alapján eldöntöm milyen fejlécet kell visszaküldeni. Ha elment a feljéc utána megy a kivánt fájl. Ezeket a részfeladatokat pedig külön függvényekre bízom. Így sokkal áttekinthetőbb az egész.
A te megoldásodban minden egyetlen ciklusba van beépítve, ezért bonyolultabb feltételeket kell megfogalmazni, és nehezebben érthető a működése. Nem mondom, hogy nem lehetne átírni hogy jól kezelje az összes bejövő változót, de valószinűleg egyszerűbb lenne egy áttekinthetőbb és könnyebben érthető megoldást felépíteni. Persze ez nem kevés munka és idő, nekem is sok napom ment el erre, rengeteg tanulással és utánolvasással.
Szóval sajnos a forrásodra nem tudok adni olyan receptet, hogy: ezen a 3 helyen átírod és már jó is, ezen még sokat kel dolgozni.
(#) erdeidominik1999 válasza fkx hozzászólására (») Júl 17, 2015 /
 
Értem, köszi, ha esetleg nem szertném átírni, úgy nem lehetne megoldani, mint a tisztít()-ban, hogy megy végig a bufferen, és ha olyan változónevet talál, amit megadtam a függvény meghívásánál, akkor az = jel utáni adatokat a & jelig egy változóba pakolja?
(#) fkx válasza erdeidominik1999 hozzászólására (») Júl 17, 2015 /
 
Meg lehet csinálni úgy is. Az a kérdés, hogy a bufferben mindíg elfér az összes változód neve és értéke egyszerre? Ha igen akor lehet olyan függvényt írni, ami megkeresi az adott változót a bufferben, és az értékét egy másik változóba berakja.
(#) fkx válasza erdeidominik1999 hozzászólására (») Júl 17, 2015 /
 
Nagyjából igy:
- strstr()-el megkeresed a változónevet
- ha a visszaadott érték nem NULL akkor ezt a pointert adod az strchr()-nek amivel megkeresed a legközelebbi = jelet-
- ha az strchr() visszaadott értéke nem NULL, akkor a pointert növeled eggyel, és innentől kezdve másolod a byteokat addig amig & jelet, szóközt, vagy nullát nem kapsz.
- a másolás céljául megadott tömb-be az utolsó karakter után kell egy nullát tenni.
Ezzel a változó meg is van, lehet konvertálni ha szükséges, pl. atoi()-val vagy mással

Ha sok változód van a webfelületen, akkor a sok keresés miatt lelassulhat. A feladatot kissé másképp is meg lehet oldani. Pl. a bufferben az elválasztó karaktereket keresed meg (az = jelet is beleértve az előzőeken kívül) és a köztes részekben simán strcmp-vel nézed meg az adott változót, hogy létezik-e. utána ugyanaz, mint az előbb: = jel keresés, másolás, stb...
A hozzászólás módosítva: Júl 17, 2015
(#) fkx válasza fkx hozzászólására (») Júl 17, 2015 /
 
A reset áramkört próbáltad?
(#) erdeidominik1999 válasza fkx hozzászólására (») Júl 17, 2015 /
 
Még nem, milyen kondi legyen kerámia vagy elektrolit? És muszáj schottky dióda? sima 1a-es nem jó?
(#) erdeidominik1999 válasza erdeidominik1999 hozzászólására (») Júl 17, 2015 /
 
Máris elakadtam, eddig itt tartok, most hogyan kéne folytatni, mert nem működik, csak a pointerig.
  1. char adat[]="Ebben most adat van asg=123&asd=234 most";
  2.   Serial.println(adat);
  3.   char * pch;
  4.   char* dest;
  5.   pch = strstr (adat,"asd=");
  6.  
  7.   if (pch!=NULL)
  8.   {
  9.     pch=strchr(pch+1,'=');
  10.     int buff=pch-adat+1;
  11.     Serial.println(buff);
  12.     while(*adat){
  13.     if (*adat == '&'){
  14.     *dest='\0';
  15.     }else{
  16.     *dest=*adat;
  17.     pch++;
  18.     }
  19.     }
  20.     }
  21.     Serial.println(dest);
(#) erdeidominik1999 válasza erdeidominik1999 hozzászólására (») Júl 17, 2015 /
 
Na eddig is eljutottam, de még mindíg nem értem, hogyan tudom a buff2-től egy változóba tenni.
  1. char* keres(char* buff){
  2.  
  3.   char * pch;
  4.   char* dst=buff;
  5.   pch = strstr (buff,"asd=");
  6.  
  7.   if (pch!=NULL){
  8.     pch=strchr(pch+1,'=');
  9.     int buff2=pch-buff+1;
  10.     Serial.println(buff2);
  11.     while(*buff){
  12.     if (*buff == '&'){
  13.     Serial.println("OK2");
  14.     break;
  15.     }else{
  16.     *dst=*buff;
  17.     buff++;
  18.     dst++;
  19.     Serial.println("OK");
  20.     };
  21.     }
  22.     }
  23.     *dst='\0';
  24. }
(#) fkx válasza erdeidominik1999 hozzászólására (») Júl 17, 2015 /
 
  1. void keres(char* buff, char *dest){  //a dest tömb-ben el kell férnie az eredménynek
  2. char *pch;
  3. pch = strstr (buff,"asd=");
  4. if (pch) pch=strchr(pch+1,'=');
  5. if (pch) pch++;
  6. while ( pch && (*pch) && (*pch =! '&')  &&  (*pch =! ' ') ){
  7.    *dest = *pch;
  8.    dest++;
  9.    pch++;
  10. }//end while
  11. *dest=0;
  12. }//end fv
A hozzászólás módosítva: Júl 17, 2015
(#) fkx válasza erdeidominik1999 hozzászólására (») Júl 17, 2015 /
 
3V-os rendszerben célszerűbb egy pici schottky pl. BAT46 vagy valami SMD tipus. A kondi mindegy, az értékével lehet játszani, hogy meddig tartsa a resetet.
(#) erdeidominik1999 válasza fkx hozzászólására (») Júl 17, 2015 /
 
Köszi, ki fogom próbálni a resetet, a keresés nem akar menni, nem jön vissza semmi a dest-ből, vagy lehet, hogy én vagyok béna?
(#) erdeidominik1999 válasza fkx hozzászólására (») Júl 17, 2015 /
 
A hiba fele megvan, most hogy figyelmesen átolvbastam, a while-ban a != de most is csak tele írja a képernyőt krix krax betűkkel.
(#) fkx hozzászólása Júl 18, 2015 /
 
Tedd be a kódot amit próbálsz, anélkül ki tudja....
(#) erdeidominik1999 válasza fkx hozzászólására (») Júl 18, 2015 1 /
 
Hát amit küldtél, csak a while-nál átírtam.
(#) fkx válasza erdeidominik1999 hozzászólására (») Júl 18, 2015 / 1
 
Idézet:
„- Segítség, jöjjenek gyorsan!
- Honnan telefonál?
- Hát innen a telefonfülkéből!
- És hol van az a fülke?
- Hát az utca sarkon.
- ....”

A kód amit beraktam: módosítottad a ciklust, + eredetileg nem írt ki semmit, tehát még mást is átírtál. De tudod mit ne is tedd be a kódot - végülis többet tanulsz belőle, ha te találod ki, mi a gond.
(#) erdeidominik1999 válasza fkx hozzászólására (») Júl 18, 2015 /
 
Na szóval nem szeretnék senkivel összeveszni, a kód itt van:
  1. void keres(char* buff, char *dest){  //a dest tömb-ben el kell férnie az eredménynek
  2. char *pch;
  3. pch = strstr (buff,"asd=");
  4. if (pch) pch=strchr(pch+1,'=');
  5. if (pch) pch++;
  6. while ( pch && (*pch) && (*pch != '&')  &&  (*pch != ' ') ){
  7.    *dest = *pch;
  8.    dest++;
  9.    pch++;
  10. }//end while
  11. *dest=0;
  12. }//end fv

Ez a jelenlegi, azt vettem észre hogy a while-t annyiszor csinálja ahányszor kell de a dest nek az értéke nem stimmel. És még egyszer bocsi!
(#) fkx hozzászólása Júl 18, 2015 /
 
Nem látom hol, és hogyan van a programban a kiírás, és azt sem látom mit írtál át benne.
Következő: »»   137 / 850
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