Input von einer .txt Datei zum µC über hyperterminal umleiten

OP #3301107
Lesenswert?

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,
Gast #3301131
Lesenswert?

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,
Gast #3301154
Lesenswert?

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.
OP #3301397
Lesenswert?

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
OP #3301716
Lesenswert?

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.
OP #3301823
Lesenswert?

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
Persönliche Seite #3301854
Lesenswert?

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.
Gast #3302000
Lesenswert?

@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,
Gast #3302003
Lesenswert?

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
OP #3304225
Lesenswert?

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,
OP #3304436
Lesenswert?

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,

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren