Fórum témák

» Több friss téma
Fórum » PIC illesztése TCP/IP - ETHERNET - IDE felületen
Lapozás: OK   16 / 18
(#) Dhrawson hozzászólása Nov 16, 2013 /
 
Üdvözlet mindeninek!
Olvasgattam a fórumot már szinte oda vissza. A következő lenne a helyzet:
Van egy PIC32 Ethernet Starter Kit boardom és egy Android telefonom, az android programmal nincs gond azt megírtam már!
Egy TCP/IP protokollal kapcsolódik a telefon az ESK-hoz, a későbbi feladata az lesz, hogy egy áramforrást kapcsolgasson ( lámpa ki-be ).
A problémám az ESK-val kezdődik. Módosítottam a Microchip oldalán található TCP/IP stack-et. Ő a szerver szóval csak a GenericTCPServer van engedélyezve továbbá mivel routeren keresztül fér hozzá az internethez a DHCPClient, hogy oszthasson a Router IP címet az ESK-nak. (Látszik is a router DHCP Cliens eszközei között MAC cím ip cím minden rendben)
De, az amit nem értek, hogy hogyan tudom megoldani még csak azt, hogy az ESK kezelje a bejövő socket-eket,példának okául mondjuk az egyik led vezérlését.
Szóval azt szeretném, hogy ha a telefonon kiküldöm a megfelelő jelet, akkor azt az ESK feldolgozza és be illetve ki kapcsolja az egyik LED-et a boardon!
Előre is köszönöm szépen remélem érthető!
(#) icserny válasza Dhrawson hozzászólására (») Nov 16, 2013 / 1
 
A HTTP szerver mintapéldában böngészőből kattintgathatók a LED-ek. Az miért nem jó?
(#) watt válasza Dhrawson hozzászólására (») Nov 17, 2013 / 1
 
A Demo App -ban a CustomHTTPApp.c -ben van kezelve amit szeretnél. A példákból lehet kiindulni. POST, vagy GET módban lehet küldeni illetve fogadni az adatokat. Imerni kell a HTTP-t, az AJAX-ot és a C-t. AJAX nélkül is működik, csak akkor a válaszban az egész oldalt újra elküldi a kérőnek. Itt a topicban nagyon szűk a lehetőség, hogy ezt a hatalmas témát ki lehetne fejteni, nekem kb. 2 évembe került majdnem a nulláról (HTML, AXAX, JavaSript), mire valamit elértem, ma sem tökéletes(a gyári stack-et újra kéne értelmezi, és írni), igaz nem ez volt és most sem ez a prioritás...
(#) Dhrawson válasza icserny hozzászólására (») Nov 24, 2013 /
 
A HTTP-s azért nem volt jó, mert nem HTTP protocollal kommunikálnak az eszközök, hanem TCP. Ugyan hasonló de még sem ugyanaz a megoldás.

Továbbá sikerült odáig eljutnom, hogy létrejön a kapcsolat, a board egyik ledjét kapcsolat visszajelzőnek használom. Ha az világít van kapcsolat, világít is rendesen.
A problémám az, hogy akármit küldök a PICről a kliensnek azt a kliens nem jeleníti meg.
Java-t használok ( mivel az android-hoz ez kell). Wireshark-al figyeltem a küldött és fogadott csomagokat és ott tökéletesen látszik a küldött üzenet. De a java forráskód nem hajlandó azt feldolgozni.
Esetleg valakinek valami ötlet?

inBufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
mServerMessage = inBufferedReader.readLine();

a socket üzenet feldolgozó forráskód.
A hozzászólás módosítva: Nov 24, 2013
(#) TakiG válasza Dhrawson hozzászólására (») Nov 24, 2013 / 1
 
A BufferedReader readLine metódusa addig várakozik amíg nem kap sorvége karaktert, majd visszaadja az előtte küldött karaktereket String-é összefűzve, a sorvége nélkül. Küldesz a PIC-ről sorvégét?
(#) Dhrawson válasza TakiG hozzászólására (») Nov 24, 2013 /
 
Jogos. Egyébként nem. Köszönöm. Láttam mindenhol a sorvége jelzést, csak egyszerűen nem vettem figyelembe.
Köszönöm szépen már próbálom is!

Egyébként, ha valakit esetleg érdekel.
Lassan 3 hónapja szinte minden nap foglalkozom a project-el. Úgy kezdtem az egészet, hogy Android fejlesztéshez közöm nem volt, a PIC programozást meg annyira ismertem, hogy volt Mikrovezérlők órám és ott a PIC16os családdal foglalkoztam.
Ez a mostani project szakdolgozati téma és hát szorít az idő így egyre több a baki és bénázás.
Szóval elnézést, ha ne adj isten leverek egy két biztosítékot, de más hova nem igazán tudok támaszkodni.
Köszönöm!
A hozzászólás módosítva: Nov 24, 2013
(#) Dhrawson hozzászólása Nov 25, 2013 /
 
Időközben sikerült megoldani Oda vissza szépen megy az üzenet csere, megkapnak mindent.
Most már csak annyi a problémám, hogy nem tudom, PIC-ben, hogy tudom megoldani ezt:
  1. TCPGetArray(MySocket,(BYTE *)AppBuffer,7);
  2.  
  3.                        mCount = sizeof(AppBuffer);
  4.                        if(mCount == 5){
  5.                            LED2_IO=1;
  6.                        }
  7.                        
  8.                        if(mCount ==6 ){
  9.                            LED2_IO=0;
  10.                        }


AppBuffer-be bekerül szépen az üzenet. Próbáltam úgy is, hogy AppBuffer == "LED21" de mint kiderül az ilyen fajta comparison-t nem ismeri a c. Majd elláttam más méretezéssel ahhoz h bekapcsoljon 5 karaktert küld, ahhoz hogy ki 6ot de így sem jó.
(#) potyo válasza Dhrawson hozzászólására (») Nov 25, 2013 / 1
 
sizeof az mindig a puffer méretét adja vissza, nem azt, hogy mennyi adat került bele.

Neked, ha a sorvég karakter jelenti azt, hogy ott van vége a szövegnek, akkor a sorvéget kell megkeresned, esetleg valahogy így:
  1. BYTE hossz;
  2. for (hossz=0; AppBuffer[hossz]!='\r'; hossz++);


Vagy ami barátságosabb lenne, és én valószínűnek tartom, hogy a TCPGetArray függvény eleve visszaadja, hogy hány bájt lett a pufferbe írva. Akkor abból kivonod a sorvég karaktert, és megis van, milyen hosszú az üzenet.

Üzenet összehasonlítására pedig a strcmp függvény való. Már nem emlékszem pontosan, de C18 esetén, mivel külön van flash és ram terület, ezért külön függvények vannak arra, ha ram és rom területen levű tartalmakat akarsz összehasonlítani. De keress rá a header fájlokban a strcmp-re, és akkor ott már megtalálod a többit.
(#) Dhrawson válasza potyo hozzászólására (») Nov 25, 2013 /
 
Köszönöm sikerült
Az a baj, hogy az ilyen alapvető dolgokkal nem vagyok tisztában, mint, hogy ha más területen tárolja az adatokat akkor nem lehet így összehasonlítani és társai. Ha végeztem neki gyürkőzöm az elejétől az egésznek, de most muszáj volt fejest ugranom!
De végül meglett a keresett parancs.
Így sikerült megoldani

  1. TCPGetArray(MySocket,(BYTE *)AppBuffer,7);
  2.  
  3.                      if(memcmppgm2ram(AppBuffer,(ROM void*)"ledon",5)== 0){
  4.                          LED2_IO=1;
  5.                      }
  6.  
  7.                      if(memcmppgm2ram(AppBuffer,(ROM void*)"ledoff",5)== 0){
  8.                          LED2_IO=0;
  9.                      }


Szépen végzi a dolgát a led
(#) Mate78 hozzászólása Jan 13, 2014 /
 
sziasztok

nem teljesen témába vágó, de talán ehhez a topikhoz van legközelebb:

Egy családi ház fűtés/hűtés rendszerét kell vezérelnem,és a rendszert el kell tudni érni interneten keresztül is.Ez azt jelenti, hogy kb.15-20 bites változót, és szintén 15-20 vagy több analóg értéket kell rajta megjeleníteni,és változtatni.A fűtés/hűtés vezérlés nagyjából készen van, egy PIC18F4520-assal megy.
Ehhez kellene tehát egy relatíve olcsó,stabilan működő webszerver, ami a meglévő PIC-es vezérléssel adatot tud cserélni valamilyen formában,pl. a PIC SPI,I2C vagy soros kapcsolatán keresztül.További fontos követelmény, hogy a weboldalát valamilyen grafikus formában szerkeszteni, testre szabni lehessen.Korábban foglalkoztam PIC24+ENC-s webszerverrel, működött is, de annyira nem vagyok járatos a C programozás terén, hogy a feladatra alkalmassá tegyem a stack-et. A weboldal szerkesztésről nem is beszélve.Illetve annyi idő sincs a fejlesztésre, így ez nem járható út.
Valakinek valami ötlete?
(#) icserny válasza Mate78 hozzászólására (») Jan 13, 2014 /
 
Idézet:
„annyira nem vagyok járatos a C programozás terén, hogy a feladatra alkalmassá tegyem a stack-et. A weboldal szerkesztésről nem is beszélve.”
Akármilyen megoldást választasz, a weboldalt neked kell összehozni. Vagy pedig marad az Apróhirdetés rovat...
(#) Mate78 válasza icserny hozzászólására (») Jan 13, 2014 /
 
Azt tudom, hogy a weboldalt nekem kell összehozni, csak az a nem mindegy, hogy ehhez C-t kell programozni,vagy van hozzá egy fejlesztő környezet, ahol ezt pl. grafikusan is meg tudom tenni.Gondoltam arra is hogy teszek be egy Ethernetes PLC-t, ahhoz van ilyen fejlesztő környezet.A PLC-re meg egy kommunikációs modult,amivel a PIC-es vezérlőm már kommunikálhat.De ez már kicsit drágább megoldás.
(#) retek2345 hozzászólása Feb 8, 2014 /
 
Sziasztok!
A PIC-emet szeretném PC-vel kommunikáltatni, ám nem igen vagyok otthon az ethernet lelkivilágában és miértjeiben. Tehát kezdetben - mivel nagyon fontos lenne számomra a sebesség - mi is a csúcsa?
Előre is köszi!
(#) icserny válasza retek2345 hozzászólására (») Feb 8, 2014 / 1
 
Először is: milyen PIC-ről van szó, mit képes kiadni magából? (Van, amelyik már az 1 Mbites soros portot sem képes kihajtani vagy pláne, fogadni).

ENC28J60 (és Ethernet vezérlővel ellátott PIC18 mikrovezérlők) max. 10 Mbit/s
ENC424J600/ENC624J600 (valamint Ethernet vezérlővel ellátott PIC32) max. 100 Mbit/s
(#) retek2345 hozzászólása Feb 8, 2014 /
 
Köszi a gyors választ!
Egyébként kéznél perpill egy 18f4550 és egy 18f2550 van. Tehát kell egy ethernet vezérlő ami mit is csinál nekem? Nézegettem a microchip oldalán de sokat nem mondott...
A hozzászólás módosítva: Feb 8, 2014
(#) icserny válasza retek2345 hozzászólására (») Feb 8, 2014 /
 
Idézet:
„Egyébként kéznél perpill egy 18f4550 és egy 18f2550 van.”
Ezek USB-n is csatlakoztathatók a PC-hez. Már ha ott van a PC a közelben...
Idézet:
„Tehát kell egy ethernet vezérlő ami mit is csinál nekem?”
MAC + PHY

Mielőtt nagyon beleéled magad, itt nézz körül!
(#) retek2345 hozzászólása Feb 9, 2014 /
 
Értem, tehát valószínűleg kicsi a memóriája. Ha esetleg eljutok odáig hogy rendelek egy másik PIC-et amiben van beépített vezérlő abban az esetben mi kellhet még hozzá? Itt gondolok a TCP/IP stack-re vagy hasonlókra. Esetleg ha valakinek lenne egy jó leírása ezekről azt nagyon megköszönném!
Előre is köszi!
(#) icserny válasza retek2345 hozzászólására (») Feb 9, 2014 /
 
Ha külső vezérlőt használsz (pl. ENC28J60), akkor figyelembe kell venni, hogy azok általában 3,3 V-tal mennek. Egyszerűbb a csatlakozás, ha a PIC is 3,3 V-os. Egyébként a Microchip Applications Library kell hozzá.

Nem tudom, hogy kinek mennyire szempont, de beépített Ethernet vezérlővel csak soklábú, felületszerelt tokozású PIC létezik.
(#) retek2345 hozzászólása Feb 11, 2014 /
 
Még egy olyan kérdésem lenne hogy ezzel a vezérlővel milyen módon kommunikálok? Van esetleg rá valamilyen speckó eljárás vagy pl SPI-on keresztül?
(#) potyo válasza retek2345 hozzászólására (») Feb 11, 2014 /
 
Az ENC28J60 az SPI-s.
(#) retek2345 hozzászólása Feb 11, 2014 /
 
Igazad van most olvastam... bocsi a kérdésért és köszi a válaszokat!
(#) don_peter hozzászólása Aug 25, 2014 /
 
Srácok, írt már valaki közöltek olyan programot C nyelven amellyel egy PIC-et hálózaton keresztül lehet vezérelni?
Tehát lenne egy weboldal ahonnan el lehetne érni a PIC-et és a portjait lehetne állítani, esetleg egy-egy adatot pl. hőmérséklet vagy ilyesmit lehetne lekérdezni?
Ha van valaki aki készített ilyen progit vagy akár hasonló megoldást és szívesen megosztaná/segítene annak nagyon örülnék.
Egy tanuló projekt keretében szeretnék először egy weboldalról kapcsolgatható LED-es dolgot elkészíteni.
(ui: 18-as családból 442, 452 és 4550-es PIC-em van.)
Előre is köszi..

Végig olvasva az utolsó pár oldalt nem egyszerű a téma ezért kérem a segítségét annak aki tud és akar is segíteni.
A hozzászólás módosítva: Aug 25, 2014
(#) potyo válasza don_peter hozzászólására (») Aug 25, 2014 /
 
TCPIP Demo App néven volt régebben a Microchipnek erre kész példakódja. Microchip Application Libraryt szedd le, abban kell lennie. Mondjuk nem ezekre a picekre volt, hanem más típusokra, de mivel ENC28J60-as típusú MAC+PHY-re is volt, az meg SPI-n kapcsolódik a PIC-hez, ezért elég könnyen át lehetne írni szerintem mondjuk 18F4550-re.
(#) don_peter válasza potyo hozzászólására (») Aug 25, 2014 /
 
Találtam egy ilyet: Bővebben: Link
Elvileg ez az amit te is mondtál.
És rendeltem egy általad említett chippel szerelt modult is.
Remélem ki tudok belőle indulni.
De ha van valakinek kész akkor azt jobban megszívlelném...
Szívesen kihagynám most a sok szívást amelyeket az előző lapokon olvastam...
(#) don_peter hozzászólása Aug 26, 2014 /
 
Egy ilyen modult rendeltem az egyszerűség kedvéért: Bővebben: Link
Ez SPI-n csatolható szóval azzal nem lesz gond.
18F452-re gondoltam mivel annak ugyan annyi memóriája van mint a 4550-nek.
A kérdés majd az lesz mennyire kell lebutítani a gyári TCP/IP stacket ahhoz, hogy beférjen a memóriába. (32K)
Melyik verziót érdemes letöltenem hozz?
Mehet a legújabb: v2013-12-20, vagy esetleg egy régebbi? (TCPIP (with WiFi support) 5.43)
(#) icserny válasza don_peter hozzászólására (») Aug 26, 2014 /
 
Az Olimex PIC-WEB-A oldalán kezdeném a tájékozódást. Abban a Microchip TCP-IP Stack 4.02-őt emlegetik, de azt is meg kellett erőszakolni, hogy beleférjen.
(#) don_peter válasza icserny hozzászólására (») Aug 26, 2014 /
 
Aham.... Már le is húztam.. Köszi.
Gondoltam, hogy erőszak nélkül nem lehet majd rá tenni mivel elég kicsi a memóriája, de majd csak felmegy valahogy...
Gondolom jól le van csupaszítva a gyárihoz képest.
Meglátom meddig jutok vele.
(#) _zotya_ hozzászólása Márc 3, 2015 /
 
Sziasztok!

Szeretnék összehozni egy vezérlőt, ami reléket kapcsolgat, és A/D-n adatokat gyűjt.
Egy internet böngészőből bárhonnét nyomon követhető felülettel, az éppen mért és SD-re loggolt értékeket akarom megjeleníteni. Sőt akár be is tudjak avatkozni, paramétereket változtatni.
Fogalmatlan vagyok a HTML-hez, de akad hozzá segítség.
MikroC alatt szeretném fejleszteni a dolgot.

Magának a vezérlésnek nem kell nagy erőforrás, egy 16F-es PIC simán megoldja.
Viszont az ethernet miatt nem tudom, hogy milyen PIC-et célszerű választani hozzá.
Úgy képzelem, hogy egy ethernet porttal rendelkező PIC-et használok, az I/O-k viszik a reléket stb, és kap egy kis kijelzőt menüvel.
A kérdésem leginkább az, hogy mennyi idő alatt tölt be egy 18F67J60-as PIC-ről egy oldal?
Nyilván ez függ attól, hogy mennyi adatot kell áttolni, de én szeretnék egy nagyméretű (800x600) vázlatrajzot megjeleníteni (png-ben max 80kB), esetleg minimál szinten animálni pl. forog egy motor.
Nem tudom, hogy értelmes sebességgel képes lenne-e kiszolgálni mindent, vagy inkább nézegessek a 32-es PIC-ek felé?
Egyáltalán mekkora adatátviteli sebességre képesek ezek a gyakorlatban?

Sajnos nem találtam élő, PIC-en futó webszervert, aki tud ilyen legyen szíves ossza meg, mert szeretném megnézni, hogy az adott oldal milyen gyors.

Előre is köszönöm a segítséget,

Üdv,
Zoli
(#) pipi válasza _zotya_ hozzászólására (») Márc 3, 2015 /
 
Hali!
Szerintem pic32, és 624-es ethernet, a 18-as pic nekem kevésnek bizonyult, a weboldalt így is ki kellett rakni külső flash-be.
Én olimex használtam a MOD-ENC624J600 -el, web szoftver az olimex/microchiptől
(#) _zotya_ válasza pipi hozzászólására (») Márc 3, 2015 /
 
Szia!
Az mit jelent, hogy kevésnek bizonyult?
Mindenképp egy külső SD-n lennének az adatok, képek stb.
A hozzászólás módosítva: Márc 3, 2015
Következő: »»   16 / 18
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