Textdatei über RS232 an µC frage wie erkennt man das Ende

Gast #153234
Lesenswert?

Hallöle will mit einem AT89S8252 folgendes durchführen.

das Hyperterminal soll eine Textdatei an den µC schicken. dieser soll
die Textdatei im EPROM speichern. sobald der µC erkennt das die Datei
fertig gesendet wurde soll er diese Postwenden wieder eins zu eins
zurück schicken.

So nun die frage wie erkenne ich das die Date zuende ist?

Vielen Dank im voraus Felix
Gast #153235
Lesenswert?

Eine Möglichkeit: Timeout. Wenn nach einer bestimmten Zeit keine
weiteren Zeichen ankommen, geht der µC davon aus, daß die Übertragung
beendet ist.

Andere Möglichkeit: Steuerzeichen zur Dateieendekennung. Bei
PC-Textdateien hat sich da aus CP/M-Zeiten das Ctrl-Z herübergerettet.

Dritte Möglichkeit: Dateiübertragungsprotokoll à la X-Modem oder
Z-Modem verwenden.
Gast #153238
Lesenswert?

Servus Firefly

dei zweiter tip scheint mir sehr interessant kannt du denn etwas näher
ausarbeiten weil im prinzip geht es genau darum eine Textdatei ohne
irgendwelche änderungen an den µC zu schicken
Gast #153239
Lesenswert?

Ein Beispiel:
Mach mal auf einem DOS/Windows-Rechner ein Kommandozeilenfenster auf
und tippe folgendes ein:

  copy con bla.txt

Danach schreibst Du irgendwelches Geblubber und gibst abschließend ein
Ctrl-Z ein.

Fertig.

Wie man das mit 'nem Terminalprogramm nachahmt, überlasse ich Deiner
Experimentierlust.

Einfacher und vom Verhalten her eindeutiger dürfte die Verwendung eines
Timeouts sein.


@Tobi: Ctrl-Z hat in normalen Textdateien nichts verloren, daher muss
das nicht unbedingt ausgefiltert werden.
Gast #153240
Lesenswert?

auch wieder wahr, gilt aber nur, solange man die anforderung nicht auf
alle dateien ändert.

sollte man nicht, egal bei welcher methode irgendeine überprüfung auf
vollständigkeit machen. im einfachsten fall die anzahl zeichen
mitübertragen oder eine einfache prüfsumme
Gast #153241
Lesenswert?

Felix wollte anscheinend eine protokollose Textdateiübertragung haben.

Besser ist IMHO ein richtiges Übertragungsprotokoll wie beispielweise
Z- Modem, da das auch eine Fehlerkorrektur vorsieht.
Gast #153242
Lesenswert?

ich glaube wir schiessen grad etws am ziel vorbei ich wollte eigentlich
nur wissen ob es möglich ist eine Textdatei an einen µC zu schicken und
das ende der Datei irgendwie im µC festzutellen (ähnlich dem End Of File
befehl in Visual Basic) aber so wie es scheint gibt es da nichts
Gast #153244
Lesenswert?

natürlich geht es aber ich wollte nichts an der Textdatei ändern und ich
wollte im Microsoft Hyperterminal den Befehl Textdatei senden verwenden.
einzige möglichkeit die ich hier für dieses Problem sehe ist das man den
µC 5sec warten läßt wenn in der Zeit kein eingang da war aber vor den
5sec einer da war dann denn kompletten eprom zurückschicken. Oder geht
noch eine der anderen Versionen mit den beiden Vorraussetzungen wenn ja
bitte erklärend an mich gewannt

MfG Felix
Gast #153245
Lesenswert?

Wieso überträgst du am Anfang nicht einfach die Byte-Größe der Datei?

Oder mit einem Sonderzeichen markieren, von den 256 Ascii Zeichen
benötigt eine Textdatei immer nur einen Bruchteil.
Du musst die Datei dafür ja auch nicht ändern, das Programm/der
Mikrocontroller muss das Sonderzeichen ja nur nach der Übertragung
anhängen.
Gast #153246
Lesenswert?

@Daniel wenn der µC das sonderzeichen hinten anhängen soll muß er dch
wissen wann das ende erreicht ist was somi das problem nicht lößt
sondern auf das gleiche Problem stößt oder lieg ich da Falsch

Aber trotzdem Dnke mal an alle
Gast #153247
Lesenswert?

Die Verwendung eines Timeouts ist bei Deiner Anwendung die einzige
Möglichkeit.

Was für eine Art von Textdatei überträgst Du denn da an den Controller?
Könnte das ein Intel-Hex-File für einen Programmierer sein? Dann kannst
Du das Hexfile selber als Endekriterium auffassen; im Hexdateiformat
gibt es nämlich eine "hier hört's auf"-Kennung.

Mal willkürlich eine Hexdatei angesehen:

  :100683006520504C2D323330350042696469726500
  :100693006B74696F6E616C657320447275636B650F
  :1006A300722D496E74657266616365207769652092
  :0806B300504C2D3233303500AC
  :00000001FF

Die letzte Zeile isses, das ist ein "End-of-File"-Record.

Im S19-Format sieht das nicht sehr anders aus.
Gast #153248
Lesenswert?

ja wenn das eine Hex Datei wäre wär es etwas leichter leider ist es eine
Textdatei mit völlig variablem Text und varibler länge/größe in sofern
wird mir wohl nix übrig bleiben als auf die zeitvariante überzugehen

als mal danke an alle wenn jemand noch ne klasse idee ht bitte posten
Gast #153249
Lesenswert?

Hilf' mir doch mal auf die Sprünge: Was soll der µC mit einer Textdatei
anfangen, die völlig variablen Text enthält? Welchen Sinn hat das, so
eine Datei an einen µC zu übertragen?

BTW: Wenn Du übrigens in Hyperterminal statt "Textdatei senden" den
drei Menüeinträge weiter oben befindlichen Menüpunkt "Datei senden"
verwenden würdest, dann könntest Du auf Deinem µC das für diesen Zweck
sehr gut geeignete Z-Modem-Protokoll verwenden ... und damit auch
Binärdateien übertragen.
Dies nur mal so als Hinweis.

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