Forum: PC-Programmierung per Ethernet: µC <-> PC


von Armin O. (Gast)


Lesenswert?

Hallo

ich benutze einen µC mit Ethernet Schnittstelle. Via Windows will ich 
einen bidirektionalen Verkehr ermöglichen. Welche ist die einfachste 
Möglichkeit eine Schnittstelle zu programmieren? Welche 
Programmiertechnik? Java, VC++ ?
Mit diesen beiden habe ich noch nicht viel zu tun gehabt. Wo ist der 
Einstieg leichter?

von unsichtbarer WM-Rahul (Gast)


Lesenswert?

>Welche ist die einfachste
>Möglichkeit eine Schnittstelle zu programmieren?

Irgendeine, die WinSOCK unterstützt.

>Welche Programmiertechnik? Java, VC++ ?

Meine persönliche Meinung: Bäh! JAVA!

>Mit diesen beiden habe ich noch nicht viel zu tun gehabt. Wo ist der
>Einstieg leichter?
(Visual)Basic...

von Armin O. (Gast)


Lesenswert?

Ja VB dachte ich auch schon, ist das denn auch "mächtig" genug? :-D

Was meinst du mit "Bäh! Java!" ??

Java= Bäh?

oder

VC++ = Bähh --> nimm Java!

?

Danke für Hilfe!

von unsichtbarer WM-Rahul (Gast)


Lesenswert?

Java= Bäh

von SiO2 (Gast)


Lesenswert?

Bäh=doppelbäh

von Ein Bekannter (Gast)


Lesenswert?

"Java = Bäh", aber dann VB empfehlen...

von unsichtbarer WM-Rahul (Gast)


Lesenswert?

>"Java = Bäh", aber dann VB empfehlen...
>>Meine persönliche Meinung: Bäh! JAVA!

von mr.chip (Gast)


Lesenswert?

Hallo

Mit Java kriegst du sowas einfach, sauber, sicher, plattformunabhängig 
und effizient hin.

Gruss

Michael

von Armin O. (Gast)


Lesenswert?

OK, dann mal doch Java...dacht ich mir schon..

Was würdet Ihr für eine Entwicklungssoftware vorschlagen?
Opensource sind Eclipse und NetBeans

JBuilder ist es nicht...aber auch besser?

von Knuddel P. (knopf)


Lesenswert?

Ich habe gerade das gleiche Problem.
Ich bin soweit gekommen, dass es mit sockets zu lösen ist . also 
irgendwie mit socket server und socket client.

c dürfte wohl gängig sein.

was mir an Infos noch fehlt ist wie ich es compiliere bzw. wie es mit 
bibliotheken für windwos aussieht. In Linux gibts ja ne Menge.

gcc für windows eventuell. Ich habe auch gehört, dass visual c 
inzwischen frei sein soll.

weis jemand da mehr?

vielleicht könnte man auch gemansam die sache angehen.


gruß

ralf

von gast (Gast)


Lesenswert?

Welchen µC benutzt Du eigentlich?

Tom

von Knuddel P. (knopf)


Lesenswert?

verschiedene. je nachdem was ich mache. Meist jedoch fujitsu oder 
freescale. Mit arm habe ich noch nicht so viel erfahrung will ich aber 
nachholen.

gruß

ralf

PS: WAS WÜRDEST DU EMPFEHLEN?

von Johnny (Gast)


Lesenswert?

Aus eigener Erfahrung kann ich sagen, dass der Umgang mit Sockets sowohl 
mit Borland Delphi und Visual Studio .NET von Microsoft sehr, sehr 
einfach ist. Es gibt fixfertige Komponenten dafür. Im Programm brauchts 
dann nur noch wenige Zeilen Code um per Sockets Daten über das Ethernet 
zu senden oder zu empfangen.

Mit GCC gehts zwar auch einwandfrei, aber braucht wesentlich mehr know 
how.

von Christoph Peters (Gast)


Lesenswert?

Wenn es eine TCP-IP Kommunikation sein soll und Verbindung zu einem 
Server aufgenommen werden soll, gibt es noch die Möglichkeit ganz ohne 
Programmierung auszukommen. In dem man den HyperTerminal von Windows 
nimmt, ein Terminalprogramm mit dem man nicht nur Verbindungen mir einer 
seriellen Schnittstelle aufbauen kann, sondern zu jedem Server mit 
TCP/IP Protokoll. Also IP-Adresse und Port eingeben und fertig. Um sich 
damit vertraut zu machen, vielleicht einfach mal zu nem Mail-Server 
verbinden und seine Emails mal per konsole anfragen. Die nötigen 
Serverbefehle gibt bei Wikipedia (SMTP/POP3).


Variante mit Programmierung...

Zu empfehlen ist hierzu C# .NET von Microsoft. WEIL: fertige 
Komponenten, einfache Benutzung und Programmierung. Da Objektorientiert, 
muss man sich um sehr vieles nicht kümmern z.B. Dynamische 
Speicherreservierung/Speicher wieder Freigeben etc. wie es in C der Fall 
wäre.

Ansonsten nehme man Java. WEIL: siehe C# und Java ist kostenlos! Es gibt 
auch hier wie in C# sehr viel Hilfe und Beispielquelltexte im Netz.

von C sollte man, besonders wenn man keine große Programmiererfahrung 
hat, die Finger von lassen, ist sehr Fehleranfällig und mühsam!
Für Visual Basic gilt das gleiche, denn C# ist wesentlich 
übersichtlicher und sauberer zu Programmieren.

Nochwas ... C# und Java tun sich nicht viel, wer das eine kann, kann das 
andere eigendlich auch. Selbst die Biblioteken/Klassen/Methoden heißen 
an einigen Stellen sogar gleich. Also Java oder C# nehmen!

Viel Spaß

Christoph

von pfu (Gast)


Lesenswert?

Hallo zusammen!

Habe ein ähnliches Problem. Möchte über Gigabit Ethernet Daten von einem 
FPGA - Board an den PC schicken. Der UDP Header wird am FPGA - Board 
generiert und an die Ethernetschnittstelle gesendet.  Die Daten sollen 
auf dem PC gespeichert, und in einer Datenbank abgespeichert werden. 
Eine GUI für den Benutzer soll ausprogrammiert werden.

Meine Frage: Wie realiere ich am besten die Datenerfassung auf einem 
Notebook?


PS: Es handelt sich um ca 20MB Daten pro Sekunde.

von Knuddel P. (knopf)


Lesenswert?

genauso wie auf einem PC ?? aber das war nicht deine Frage oder ?

Sticwort heist socket-Programmierung und von dort aus irgend eine 
datenbank ansprechen. Mein Problem ist eher wie es im uC abgeht. vor 
allem ohne betriebssystem. Mit betreibssystemweis ich ja wie es geht.

gruß

ralf

von Johnny (Gast)


Lesenswert?

pfu, 20MBps sind kein Pappenstil. Ich schätze mal, dass Du die 
ankommende Datenflut dringend ins RAM bufferst, bevor sie in die 
Datenbank geschrieben wird.

von Knuddel P. (knopf)


Lesenswert?

eher ein FIFO Wäre angebracht. Aber man kann auch den datenfluß stoppen 
wenn es zu viel ist. oder man kann packete schaufeln.
das dürfte man hinkriegen.

von Johnny (Gast)


Lesenswert?

Ein FIFO ist ja auch nur ein Buffer ;-)

von Christoph Peters (Gast)


Lesenswert?

20Mb pro Sekunde wurde gesagt!
bei 1GB RAM:
  1024 / 20 => nach 51,2 s ist 1GB puffer Voll
Also Entweder Daten langsamer senden, oder schneller wegschaufeln.

ich wurde auch puffern, aber von welcher Datenmenge sprechen wir?
51 s lang Messdaten zu Produzieren ist nicht besonders lange, oder hast 
du Instgesammt nur
20 MB zu speichern? Dann Buffern und in Ruhe wegspeichern.

@Ralf
> Mein Problem ist eher wie es im uC abgeht. vor
> allem ohne betriebssystem.

Du brauchst nen Ethernet-Controller und musst dir einen Treiber dafür 
schreiben, falls es noch keinen gibt. Diesen dann in deinem uC-Programm 
verwenden.
Wenn ich dein Problem richtig verstanden habe, dann solltest du hier mal 
weiter schaun:
Beitrag "Re: Signal am Zündkabel abgreifen ?!"
http://www.ulrichradig.de/home/index.php/avr/webserver
http://www.ulrichradig.de/home/index.php/arm/lpc213x_enc28j60
google.de  -> z.B. avr ethernet ...

Christoph

von pfu (Gast)


Lesenswert?

@ christoph Peters
Also die Messung soll 1 Minute lang durchgeführt werden.

@  Ralf H.
Was versteht man unter packete schaufeln?

Wäre es eine möglichkeit mit veränderung des Datenpacketes den overhead 
zu verringern.  meine Idee wäre die MTU unter LINUX raufzudrehen und 
somit die max paketgröße zu erhöhen. Zusätzlich könnte ja bei UPD - 
Paket die destination und die sourceadress weggelassen werden, das würde 
dein overhead noch mehr verkleinern. ist es sinnvoll sowas zu 
realisieren?

von irgendein Rahul (Gast)


Lesenswert?

>Also die Messung soll 1 Minute lang durchgeführt werden.

Sollen die Daten sofort am PC benutzbar sein?
Wieviel Zeit hast du zwischen zwei Messungen?

Du solltest deiner FPGA-Schaltung etwas mehr Speicher verpassen, die 
Daten dort erst mal zwischenlagern und nach einer Messung an den PC 
senden. Wenn es wichtige Daten sind, sollte nicht unbedingt UDP sein 
(oder die Kommunikation erweitert werden), da UDP nicht garantiert, ob 
die Daten überhaupt ankommen.

von PeakRunner (Gast)


Lesenswert?

Hallo,

habe gerade ein ähnliches Problem.
Habe ein FPGA-Board, welches mir UDP-Pakete erzeugt.
Diese werden im Moment mit 80 MBit/s an den PC übertragen.
Nun möchte ich möglichst viele dieser Pakete in einer Datei abspeichern.
Wie ist das mit dem in das Ram Buffern gemeint?

Mit dieser Zeile empfange ich ja immer das aktuelle Paket in die 
Variable buf:

rc=recvfrom(s,buf,2048,0,(SOCKADDR*)&remoteAddr,&remoteAddrLen);


Wenn ich direkt dieses Paket wegschreibe, funktioniert es gerade noch so 
mit 2 - 3 MBit/s, wie kann ich diese Datenrate erhöhen?
Wie macht das z.B. Etherreal, das viel mehr Pakete aufnehmen kann?

Danke für alle Tipps.

PR

von PR (Gast)


Lesenswert?

Irgendjemand ne Idee?

von Stefan (Gast)


Lesenswert?

Hast du ein sequentiell arbeitendes Programm? Stelle um! Arbeite mit 
mind. 2 parallelen Threads und einem ausreichenden Puffer. Ein Thread 
empfängt und füllt den Puffer mit 80 MBit/s. Der andere Thread leert den 
Puffer und schreibt auf die Platte mit x MBit/s.

BTW. 2 - 3 MBit/s ist arg mickrig. Was treibt dein Programm sonst so?

von holger (Gast)


Lesenswert?

Tip: Lese mal ein Buch über OCAM.
Ich glaube das war so 1980.
Oder wie arbeitet die Onboard-Unit eines Jet-Figters.
Oder die Ringkernspeicher mit 4--<Master Slafe Prozessoren.
Stelle deine Ergebnisse hier rein.
Oder UNIX inm Lavamat.
The 5th Way wen du das kennst.
Fussy Logic ect.
Da sind deiner Phantasie keine Grenzen mehr gesetzt.
Las dir auch Hints von anderen darauf geben.
Stell es hier wieder rein.
Wir freuen uns auf so viel Kreativität.
Gruss holger.

von holger (Gast)


Lesenswert?

Du brauchst ein PC Soket Server.
TuxGaphix heiss der Typ.
Da habe ich das PC-ETERNET Prog her.
Las die von den anderen zeigen wo TuxGraphics seine Linux Homepage hat.

Da sind die Sourcen für das Pc-Prog drin.
Las dir von den andern dabei Helfen.
Ich hab meine auch da her.
Dan noch nach Holger Klabunde, Holger Buss.
Da sind die uC Teile.
Ich habe auch so angefangen.
NE2000 ist auch gut

Das ist nich einfach, aber wen du alle Teile hast. Ist es ein Klacks.
Viel Erfolg.
Gruss Holger.

von holger (Gast)


Lesenswert?

Da ist mir noch was eingefallen
Mache dich kundig über das PING Prg.
Ist eine Source in C auch vorhanden.
Auf deinem PC ist auch eine PING.EXE drin.

PING.EXE hat auch parameter. die du dazu nutzen kanst.
Dein uC Server antwortet darauf.
Falls du da alles richtig gemacht hast.

Das ist der erste Ansatz.
Achte auch das du die IP Adressen nicht so weit auseinander hast.
Sonst geht das nicht über den Hup usw.
Mache dich kundig uber das ROUTE was das macht.
Route ADD 192.168.168.123.002
Sonst bleibt das Ding stumm.

Das dumme ist nur das die nie un ihren Sourcen das PC Programm, und
das uP Programm zusammen haben.
Das muss man leider immer so von da und da zusammenklauben.
Hoffentlich macht das mal einer.
Dan ist das fast so einfach wie Telefonieren.
Gruss Holger.






Lasse die

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ich will ja nicht nörgeln, aber könnte es sein, daß das, was "holger" 
vor dem Absetzen seiner drei Beiträge hier zu sich genommen hat, unter 
das BtMG fällt?

Von den sachlichen Fehlern mal ganz abgesehen ...

(So sind beispielsweise einem Hub die verwendeten IP-Adressen vollkommen 
egal)

von Peakrunner (Gast)


Lesenswert?

Tipps für gute Seiten zur Thread-Programmierung unter Windows?
Benutze Dev-C++.

Bis jetzt hab ich die buffer-Werte genommen nach ASCII-Hex-Values 
umgeformt und dann in eine Datei weggeschrieben.
Theoretisch kann auch die Umformung der Rohdaten auch erst später bei 
der Auswertung der Datei erfolgen.
Aber um jetzt zu sehen, was ankommt usw. ist es für mich einfacher mit 
ASCII-Text umzugehen.

von holger (Gast)


Lesenswert?

Holger Buss schreibt da, viele scheitern leider schon daran wen sie
versuchen das Board zu basteln, Soft,HW Fehler ect.
Ich habe das hier immer vefolgt wie denen dan die Teile in die Binsen
gingen.
Mit dem PIC SPI-ETHER DING hatten die Bastler echt was zu tun.
Da hat der CHIP Rev. XXX was anderes gemach als der CHIP Rev. ZZZ

2ter Tip.
Wen das nicht klappt, kaufe die halt ein feriges Modul.
ETHERNUT ,WHACKER, ect

Das schon die Firmware drin hat.
Also TCP/IP PING,UDP,ARP, und

Dan fängst du mit dem PING auf dem PC an.
Ich habe das mit C gemacht.
Und tage mit ROUTE FEHLER vertan.
Das Ding wolte einfach nicht antworten.

Mus man halt systematisch aufrollen das Ding.
Die Source auf den uP sind so wie ein Urwald.
Wen du da mal reinschaust.
Muss man alles wegschneiden.
Bis man dan so den PING erst isoliert hat.
Und dan so verstehen kan wie das andere aufgebaut ist.
Viel Erfolg.
Berichte uns mal drüber.

Gruss Holger.


von PR (Gast)


Lesenswert?

Hallo Holger,

spar dir dein Schwallhaller,
mein Board funktioniert schon und sendet fleißig Daten,
ich rede nur noch von PC-Seite und wenn hier nix beizutragen hast,
einfach wo anders weitertrollen ....

von holger (Gast)


Lesenswert?

Hier noch was für BASIC
Stichwort: BEN'S Hobby Corner sehr gute Doku.
           BZIJLSTRA Webserver
           kreativers-chaos.com  für ATMEL

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.