Hallo zusammen, Original Beitrag findet man unter: Beitrag "Re: FATfs Atmega32u4 + PC" Zusammengefasst: µController A hat die aufgabe temperatur zu messen und einen Lüfter zu steuern, µController B kann den sensor und den Motor für A spielen und empfangen was A so macht, also temperatur und Tachosignal simulieren und duty cycle empfangen. Das alles geht über USB vom PC aus (Die kommunikation zwischen PC und B meine ich), und nun soll B Daten aus einer datei einlesen und weiter machen als ob ein user das händisch machen würde. Ich dachte zuerst, dass das problem auf dem µC gelöst werden muss, aber nach ein paar antworten im original Beitrag, weiss ich jetzt, dass der PC die Datei lesen muss und dann so tun, als würde das jemand eintippen. Die Frage ist nun .. Wie realisiert man das, wenn das Program, das auf dem µC läuft weder Pipes noch Files kennt (mit avr gcc compiler)? Und das ganze läuft leider auf Windows.. LG,
Moin, ganz schön verwirrend die Texte. Ich hab jetzt mal alles durchgelesen und bin immer noch nicht schlauer :) Also, nur mal für mich. Du willst deinen Controller B mit dem PC steuern. Dazu willst du irgend was, dass diesen Steuert. Die Idee, dass der Controller auf den PC zugreift hast du ja hoffentlich schon verworfen. Wie funktioniert denn die USB Verbindung zum PC? Ist das ein virtueller COM-Port? Ich gehe mal davon aus, da du was von einem Terminal geschrieben hast. Was du brauchst ist ein einfaches PC-Programm. Dazu kannst du eine Programmiersprache/Scriptsprache deiner Wahl nehmen. Was kannst du denn schon? (bsp. C#, BV.net, Python, Matlab) Dü öffnest einfach mit deinem Programm den Port und schreibst deine Kommandos rein. Dann liest du vom Port die Antworten deines Controllers und wertest Sie aus. So einfach ist das. Grüße,
ich sollte mich doch mal anmelden. Die Rechtschreibfehler fallen alle unter künstlerische Freiheit und sind mit Absicht zu Verwirrung des geneigten Lesers eingebaut.
Möchtest Du, daß der mC die Daten vom PC anfordert? Dann brauchst Du auf dem PC ein Programm, das über die serielle Schnittstelle mit dem mC kommuniziert. Das muß dazu Kommandos vom mC , die im seriellen Textstream eingebettet sind, verstehen und umsetzen können. Eigentlich eine einfache Sache. Oder willst Du nur eine Datei manuell vom PC auf den mC laden? Dann verwendest Du ein Terminalprogramm Deiner Wahl (Hyperterm ist das schlechteste existierende Programm dieser Art, nimm also was anderes, z.b. teraterm2), das hat einen Menüpunkt "datei übertragen" oder so ähnlich. Evtl muß dann der mC Kommandos, die im Textstream eingebettet sind, verstehen. Dazu braucht es keine Files oder Pipes. Der mC liest den Text, der über die serielle Schnittstelle hereinkommt und interpretiert ihn.
nicht "Gast" schrieb: > Moin, hi, > ganz schön verwirrend die Texte. Ich hab jetzt mal alles durchgelesen > und bin immer noch nicht schlauer :) > > Also, nur mal für mich. Du willst deinen Controller B mit dem PC > steuern. Dazu willst du irgend was, dass diesen Steuert. µC B kann ich schon ansteuern. Ich habe eine nette User-Schnittstelle implementiert, mit der man problemlos µC B ansteuert und somit auch -indirekt natürlich- µC A. > Die Idee, dass der Controller auf den PC zugreift hast du ja hoffentlich > schon verworfen. Ja, aber um ehrlich zu sein habe ich schon darin Zeit investiert :/ > Wie funktioniert denn die USB Verbindung zum PC? Ist das ein virtueller > COM-Port? Ich gehe mal davon aus, da du was von einem Terminal > geschrieben hast. Genau, ein virtueller COM-Port, und die Interaktion User-µC geschieht zurzeit mit hyperterminal, aber es sollte natürlich mit jedem serial-port-emulator funktionieren. > Dü öffnest einfach mit deinem Programm den Port und schreibst deine > Kommandos rein. Dann liest du vom Port die Antworten deines Controllers > und wertest Sie aus. So einfach ist das. Das macht die User-schnittstelle gerade, also ich -der user- kann inputs eingeben und outputs dann auswerten. Was ich momentan brauche, ist ein Programm/script, das genau das für mich tut. Um es zu verdeutlichen, in der User-schnittstelle habe ich jetzt optionen, mit denen ich inputs schicke und outputs abfrage. Eine neue Option soll dazu kommen, die ermöglicht, eine txt datei aufzumachen und auszuwerten. Wobei die txt datei die normalen Befehle, die ein User per hand eingeben könnte, beinhaltet. Radiostar schrieb: Ich hoffe die Erklärung oben verdeutlicht meine Idee besser. LG
Im simpelsten Fall kann sowas schon ausreichen:
1 | mode com3: 9600,n,8,1 |
2 | copy bla.txt com3: |
Hi, Rufus Τ. Firefly schrieb: > Im simpelsten Fall kann sowas schon ausreichen: Wie oder in welchem Kontext kann ich sowas eingeben? Für den Anfang wäre das fein ..
Das nennt man Kommandozeile oder Eingabeaufforderung. Viele nennen es auch fälschlich "DOS-Box", aber das ist nicht.
Rufus Τ. Firefly schrieb: > Das nennt man Kommandozeile oder Eingabeaufforderung. Viele nennen > es auch fälschlich "DOS-Box", aber das ist nicht. Ja das dachte ich mir, aber das geht nicht von der Schnittstelle aus, und es geht nicht darum "nur" eine Datei zu schicken, sondern sie zu parsen und zu verarbeiten, und das geschieht nur wenn das program, das die schnittstelle implementiert, gerade läuft.
Ich gewinne nicht den Eindruck, daß Du Dein Problem jetzt verständlich beschrieben hast. Fang noch mal ganz vorne an. Was willst Du wem schicken, und wer soll was warum verarbeiten?
Rufus Τ. Firefly schrieb: > Was willst Du wem schicken, und wer soll was warum verarbeiten? 1) Eine txt datei will ich an µC B schicken, die diegleichen befehle beinhlatet, die ich per hand schicken könnte. 2) µC B liest die datei ein, 3) parst die einzelnen befehle, 4) schickt die entsprechenden inputs an µC A, 5) liest seine Outputs 6) und meldet das dem User wieder über die Schnittstelle
Punkt 1 habe ich Dir beschrieben. Ab da ist es übrigens keine Datei mehr, sondern einfach nur ein Bytestrom. Punkt 6 ist das erste, was nicht mit dem Kopieren auf eine Schnittstelle umsetzbar ist. Wozu soll das ganze gut sein? Du könntest die Verbindung zwischen dem PC und µC B mit einer Ethernetverbindung herstellen, und auf µC B z.B. einen Webserver laufen lassen, den Du auf dem PC mit einem Browser ansteuerst. Deine Datei wird per Webformular-Upload auf den Webserver übertragen, und der gibt seine Resultate wiederum als Webseite aus, so daß diese im Browser angezeigt werden kann. Mit der seriellen Schnittstelle ist das ohne ein eigens dafür zu schreibendes Programm (für den PC) nicht sinnvoll erreichbar; Du könntest allenfalls die Ethernet-Verbindung durch eine PPP-Verbindung ersetzen, die über die serielle Schnittstelle abgewickelt wird -- aber das willst Du nicht, auch wenn Du es im Moment noch nicht wissen solltest.
@Rufus, das ist ja der totale Overkill :) Der arme TE such doch nur nach einem Programm, mit dem er automatisiert über die serielle Schnitstelle ein paar Daten senden/empfangen kann. Auf der µC Seite ist alles schon ausprogrammiert. (soweit ich das verstanden hab) @TE. Ich fürchte, du kommst um ein eigenes Programm nicht drumherum. Wie sehen denn deine Programmierkentnisse auf dem PC/Windows aus? Grüße,
Rufus schrieb: >Punkt 6 ist das erste, was nicht mit dem Kopieren auf eine Schnittstelle >umsetzbar ist. Geht denn nicht der schöne Befehl Copy com3: > con Der müßte die Sachen, die an Com3: reinkommen, direkt auf die Konsole (Bildschirm)ausgeben. Wenn man dann den ganzen Kram mit Ein-und Ausgabe in einer Batch-Datei laufen läßt, dann müßte der Zweck des TO erfüllt sein. MfG Paul
Paul Baumann schrieb: > Geht denn nicht der schöne Befehl Copy com3: > con Ohne Umleitungspfeil, den braucht man bei copy nicht.
Wie wäre es mit HTerm? Damit lassen sich Dateien per serieller Schnittstelle über ein GUI senden und empfangen. Ist dann aber eher für Testzwecke etc. geeignet, für Dauerbetrieb wäre ein Script sinnvoller.
Hyperterminal kann doch eine txt Datei senden. Warum reicht das nicht?
nicht "Gast" schrieb: > @Rufus, das ist ja der totale Overkill :) Oh ja :/ > Auf der µC Seite ist alles schon ausprogrammiert. (soweit ich das > verstanden hab) Exactly :) > @TE. Ich fürchte, du kommst um ein eigenes Programm nicht drumherum. Wie > sehen denn deine Programmierkentnisse auf dem PC/Windows aus? Eher mager, trotzdem bin ich lernfähig, wie schauen dann die ersten Schritte aus? (programmiersprache oder ein paar stichwörter zum googeln :)) Der Rächer der Transistormorde schrieb: > Hyperterminal kann doch eine txt Datei senden. Warum reicht das > nicht? Fabian O. schrieb: > Damit lassen sich Dateien per serieller Schnittstelle über ein GUI senden > und empfangen. Na weil ich auf der µC Seite keine Dateien habe, "nur" einen Datenstrom. LG,
Update: Der Rächer der Transistormorde schrieb: > Hyperterminal kann doch eine txt Datei senden. Warum reicht das nicht? Ja das stimmt, man kann eine txt Datei schicken und der µC reagiert richtig darauf, nur die Befehle können nicht geparst werden. Man muss jeden Befehl und jeden Wert in einer eigenen Zeile schreiben. Die Ausgabe lässt sich auch aufzeichnen. Diese Vorgehensweise reicht schon für Testzwecke, aber man kann sie nicht ausgehend von der Benutzerschnittstelle machen, d.h. einen Befehl eingeben und der µC macht selbstständig eine Datei auf, verarbeitet sie und speichert das output in einer anderen Datei. LG,
Naja, das Problem ist noch offen :D, also bin noch da falls wer Ideen hat :) LG,
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.