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!
>"Java = Bäh", aber dann VB empfehlen... >>Meine persönliche Meinung: Bäh! JAVA!
Hallo Mit Java kriegst du sowas einfach, sauber, sicher, plattformunabhängig und effizient hin. Gruss Michael
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/webserver http://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 ....
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.