Quantcast

c# - TCP/IP komunikacija ?

Paganko

Elita
Poruka
16.645
Treba mi neko okvirno uputstvo na šta sve da obratim pažnju. Treba da načinim program u Visual C#-u koji će da omogući komunikaciju sa mikrokontrolerom preko TCP/IP interfejsa. Nije sad momentalno bitna strana sa mikrokontrolera već sa strane PC-a. Koliko sam skapirao, treba da se načini program koji će omogući da prihvati konekciju preko mrežne kartice a potom šalje komande.

Moje pitanje je šta sve ovde treba načiniti? Šta mi je sve o parametara potrebno, ko je kome tu tetka? Ne treba mi sam kod, sa tim ću se već izboriti, već okvirna uputstva, šta se tu tačno događa i na koji način se neka dva uređaja povezuju ovako?
 

Paganko

Elita
Poruka
16.645
Pa to imam. Rekoh ja da mi nije problem sam kod već ono što se događa ispod haube.

Takođe, to je za PIC ako dobro vidim i to RS232 komunikacija, a ona mi nije problem. kod mene je u pitanju Philips ARM7 koji je prikačen na ethernet adapter.
 

Paganko

Elita
Poruka
16.645
huh ne znam ti si to nesto umrsio

TCP je transportni lejer, a IP mrezni a sve to nema nikakve veze sa tim sto pokusavas

koliko razumem ti zelis ...huh ma nebitno...

srecno tesla :worth:
Ovaj, sd 'u da ti u kratkim crtama objasnim. Na jednoj ploči mi se nalaze mikrokontroler ARM7 LPC2148 koji je povezan sa Ehernet adapterom ENC28J60. Mikrokontroler i adapter komuniciraju preko SPI protokola. Koliko sam ukapirao, obezbeđena je funkcionalnost ove interne komunikacije pa mi SPI nije od značaja. Dalje sa druge strane imam PC sa svojom Ethernet karticom. Logično, veza je uspostavljena preko mrežnog kabla.

Trebalo bi da napišem kod za mikrokontroler koji će se ponašati kao server, i kod za PC koji će se ponašati kao klijent. PC komunicira sa mikrokontrolerom i šalje mu komande, a ovaj sa svoje strane postavlja neke svoje ulaze i izlaze na određene vrednosti što uopšte nije bitno za priču.

Glavno i jednino pitanje je - kako se ovo odvija?

- da li onda mogu da definišem IP adresu u kontorleru i onda tražim od PC da se poveže na istu. (odnosno od programa napisanog u C#.NET)
-šta ako hoću da bocnem svoju ploču sa mikrokontrolerom na lokalnu mrežu? Šta ako hoću na internet?

Da je RS232 u pitnaju - ni po jada, sredio bih to za dan dva. Problem je što se prvi put srećem sa ovim - ne zma ni terminologiju, ni principe...A moram to da uradim.
 

dujkenujkeme

Ističe se
Poruka
2.358
ne znam da li mogu adekvatno d aodgovorim jer ne programiram puno :rumenko:

imaš dve adrese jedna je na tom nekom uređaju (recimo da je ruter ili drugi pc)

moraju da budu u istom subnetu , ako je subnet 255.255.255.0
samo poslednja brojka sme da se menja inače neće da se vide :D

na primer uobičajeno je da se za lokalno koriste
192.168.x.x i subnet 255.255.0.0
ili 10.0.0.x i subnet 255.255.255.0
ili za windows 169.254.x.x i subnet 255.255.0.0
(subnet to je nešto kao binarna - hex maska gde 0 propušta ;)


i tada na računaru bi stavio statički
(da li sada ideš na net preko rutera ? onda ne možeš tu istu karticu da koristiš i za ove eksperimente ? )
192.168.10.4
a na kontroleru 192.168.10.7
gde je jednom .4 a drugom .7 krajnja brojka

ili ako već dobiješ od rutera adresu na opsegu 192.168.1.x

onda samo kontroleru stavi 192.168.1.34 i utakni ga u sam ruter
i mislim da će da se vide ;)

ako je uprogramiran ICMP ping u taj firmver od mikrokontrolera
on bi trebao da odgovori na pingovanje :eek:
Kod:
ping 192.168.1.34
bitno! moraju da se paze oni kablovi , da li treba crossover ili direktan ?

samno još nešto to što kažeš da mikrokontroler ima funkciju servera
to ne znači da je u njemu dhcp-server , u firmveru ? ;) jer taj server automatski
dodeljuje adrese uređajima u subnetu
 
Poslednja izmena:

Paganko

Elita
Poruka
16.645
ne znam da li mogu adekvatno d aodgovorim jer ne programiram puno :rumenko:

imaš dve adrese jedna je na tom nekom uređaju (recimo da je ruter ili drugi pc)

moraju da budu u istom subnetu , ako je subnet 255.255.255.0
samo poslednja brojka sme da se menja inače neće da se vide :D

na primer uobičajeno je da se za lokalno koriste
192.168.x.x i subnet 255.255.0.0
ili 10.0.0.x i subnet 255.255.255.0
ili za windows 169.254.x.x i subnet 255.255.0.0
(subnet to je nešto kao binarna - hex maska gde 0 propušta ;)


i tada na računaru bi stavio statički
(da li sada ideš na net preko rutera ? onda ne možeš tu istu karticu da koristiš i za ove eksperimente ? )
192.168.10.4
a na kontroleru 192.168.10.7
gde je jednom .4 a drugom .7 krajnja brojka

ili ako već dobiješ od rutera adresu na opsegu 192.168.1.x

onda samo kontroleru stavi 192.168.1.34 i utakni ga u sam ruter
i mislim da će da se vide ;)

ako je uprogramiran ICMP ping u taj firmver od mikrokontrolera
on bi trebao da odgovori na pingovanje :eek:
Kod:
ping 192.168.1.34
bitno! moraju da se paze oni kablovi , da li treba crossover ili direktan ?

samno još nešto to što kažeš da mikrokontroler ima funkciju servera
to ne znači da je u njemu dhcp-server , u firmveru ? ;) jer taj server automatski
dodeljuje adrese uređajima u subnetu
Ima u smislu da PC konektujm na kontorler, a ne obrnuto. Odnosnto MCU (mikrokontroler) treba da sluša na nekoj adresi i portu koje mu zadam u firmware-u, a potom od PC-a zahtevam da se konektuje na istu.

Sad trenutno sam na LAN mreži koja ima dodeljene IP adrese za svaki izlaz posebno, ali verovatno ću dirkektno vezivati kontroler na PC, bez ostaka mreže. (možda kasnije probam) Kabel imam, mislim da je crossover u pitanju.

Ping komanda će da postoji ako je isprogramiram. Za sad postoji samo podrška za upravljanje ethernet adapterom (nešto kao drajver), i prenos paketić preko udp i tcp protokola.

Danas ću se malo patiti sa tim pa ću se javiti sa novim mukama :D

Hvala.
 

dujkenujkeme

Ističe se
Poruka
2.358
mislio sam u stvari odgovor na ping komandu , a ovo
se zadaje iz CMD na windowsu , radi provere ;)

u stvari mu nije neophodan dhcp server ako se adrese podese statički
(jer to zauzima verovatno programski kod )
na primer kod onih dreambox-mulimedia je statička?

takođe za kabl mislim da je svejedno ako je na PC-ju gigabitna kartica
koja automatski shaltuje između crossover i direct (mdi-x) kod većine kartica
 

Paganko

Elita
Poruka
16.645
Da, ali moj MCU ne zna šta je ping komanda, bar dok mu ne objasnim ;) On samo zna da pravilo rastumači paketić poslat preko TCP protokola. Znači ako pošaljem bajt, MCU će ga pročitati (uz malo sreće). Šta je značenje bajta (komanda, znak koji treba da se ispiše na displeju ili tako nešto, to je već pitanje za razmišljnje)
 

Slične teme


Top
  Blokirali ste reklame
Dragi prijatelju, nemojte da blokirate reklame - isključite Ad Blocker na Forumu, jer će tako mesto vaših susreta na Krstarici ostati besplatno za korišćenje.