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?
>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...
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!
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?
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
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?
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.
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
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.
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
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.
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.
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/webserverhttp://www.ulrichradig.de/home/index.php/arm/lpc213x_enc28j60
google.de -> z.B. avr ethernet ...
Christoph
@ 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?
>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.
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
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?
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.
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.
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
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)
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.
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.
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 ....