Forum: PC-Programmierung Input von einer .txt Datei zum µC über hyperterminal umleiten


von Syrer .. (nazir_a)


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,

von nicht "Gast" (Gast)


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,

von nicht "Gast" (Gast)


Lesenswert?

ich sollte mich doch mal anmelden.
Die Rechtschreibfehler fallen alle unter künstlerische Freiheit und sind 
mit Absicht zu Verwirrung des geneigten Lesers eingebaut.

von Radiostar (Gast)


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.

von Syrer .. (nazir_a)


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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Im simpelsten Fall kann sowas schon ausreichen:
1
  mode com3: 9600,n,8,1
2
  copy bla.txt com3:

von Syrer .. (nazir_a)


Lesenswert?

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 ..

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das nennt man Kommandozeile oder Eingabeaufforderung. Viele nennen 
es auch fälschlich "DOS-Box", aber das ist nicht.

von Syrer .. (nazir_a)


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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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?

von Syrer .. (nazir_a)


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

von Rufus Τ. F. (rufus) Benutzerseite


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.

von nicht "Gast" (Gast)


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,

von Paul Baumann (Gast)


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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Paul Baumann schrieb:
> Geht denn nicht der schöne Befehl Copy com3: > con

Ohne Umleitungspfeil, den braucht man bei copy nicht.

von Fabian O. (xfr)


Lesenswert?

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.

von Der Rächer der Transistormorde (Gast)


Lesenswert?

Hyperterminal kann doch eine txt Datei senden. Warum reicht das nicht?

von Syrer .. (nazir_a)


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,

von Syrer .. (nazir_a)


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,

von Syrer .. (nazir_a)


Lesenswert?

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
Noch kein Account? Hier anmelden.