Forum: Mikrocontroller und Digitale Elektronik Zahlen über rs232 an Hyperterminal


von simon seidl (Gast)


Lesenswert?

Hallo,
ich möcht mit dem PIC16F876 einen Messwert über die serielle
Schnittstelle zum Computer übertragen.
In Hyperterminal kommen auch Signale an aber keine Zahlen sonder
irgentwelche komischen Zeichen die sich von Zahl zu Zahl
unterscheiden.
so zeigt er z.B für die Zahl 50 ein Ausrufezeichen
oder für die Zahl 16 zwei senkrecht Linien an.

Wie bekomm ich jetzt statt irgentwelche Zeichen die Zahlen auf den
Bildschirm ich gesendet habe??
Liegt es vielleicht an Hyperterminal??

mfG
s. seidl

von Anton W. (antonwert)


Lesenswert?

Wie schickst du deine Daten? Schon im ASCII Format?

von simon seidl (Gast)


Lesenswert?

Das weis ich nicht.
Wie oder wo kann ich das herausfinden?

von Anton W. (antonwert)


Lesenswert?

Naja in deinem PIC Programm hast du doch das versenden Codiert. Kannst
ja mal den Abschnitt der das Versenden vornimmt hier posten, dann
wird's einfacher...

von simon seidl (Gast)


Angehängte Dateien:

Lesenswert?

Da ich nicht wirklich eine Programmiersprache behersche.
Schreibe ich meine Programme in Parsic. Das ist ein grafisches
Programmiertool das mit bereits vorgefertigten "Bausteinen" arbeitet
Das Programm erstellt dann daraus eine ASM-Datei (Quelltext) den hab
ich mit angehängt.
Vielecht hilft er dir weiter ich komm mit ihm nicht so ganz klar.

von thkais (Gast)


Lesenswert?

Dann sollte doch im Handbuch drinstehen, was die vorgefertigten Module
machen?
Kleiner Tipp am Rande: Bei einem µC lohnt es sich schon, eine
Programmiersprache zu beherrschen und sich vor allem mit der Hardware
vertraut zu machen. Erleichtert die Sache ungemein.

von Christoph Müller (Gast)


Lesenswert?

Hallo,
kannst du vielleicht das Programm, welches du geschrieben hast ins
Forum schreiben?
Wäre echt nett!
Danke mfg Christoph

von simon (Gast)


Lesenswert?

Hallo,
den ASM-Quelltext hab ich schon als Anhang in meiner letzten e-mail.
Oder meinst du direkt das PARSIC Programm?

simon

von Christian (Gast)


Lesenswert?

BSF STATUS,RP0  ; Bank 1
  MOVLW 207
  MOVWF SPBRG  ; BAUDRATE GENERATOR
  MOVLW B'00000100'  ; 8-BIt,TRANSMIT DISABLED,ASYNCHRON,BRGH=1=HIGH
SPEED
  MOVWF TXSTA
  BSF PIE1,TXIE  ; enable INTERRUPT for transmit
  BSF INTCON,PEIE  ; PERIPHERIE INT ENABLE


--> die Einstellungen sind für 16Mhz und 1,202kbaud oder 4Mhz mit 0,3
kbaud

  MOVFW INDF  ; data
  MOVWF TXREG  ; Transmit Register

an der stelle wird gesendet... jetzt ist noch die Frage was da in INDF
drin sand... sind halt 8 Bit die du nachsehen musst... damit kannst du
in deine ASCI Tabelle gehen und weisst was für ein Zeichen kommen
müsste...

wenn statt zahlen nur schwachsinn kommt liegt das an der
Syncronisation... also RS232 falsch eingestellt!

von Simon K. (simon) Benutzerseite


Lesenswert?

das problem ist ja eigntlich klar: du darfst nicht den reinen zahlenwert
rüberschicken, sondern den ASCII Wert dessen.

von Hannes Albert (Gast)


Lesenswert?

ich habe auch eine Frage zum Hyperterminal,
ich habe ein Programm geschrieben, bei dem ich Daten vom µC über die 
serielle Schnittstelle an das Hyperterminal des Computers schicken kann. 
Nun möchte ich aber auch vom HyperTerminal (HT) des Comp an den µC Daten 
sende.
Meine Frage ist jetzt, ob es beim HT Einstellungen gibt, die das Senden 
von Daten über die serielle Schnittstelle an den µC erlauben.
Wenn man mit dem HT eine Verbindung über TCP/IP aufmacht geht das meines 
Wissens nach, dass man Daten im HT eingibt und versendet aber geht das 
auch wenn man eine Verbindung über die COM1 zum µC hat.
MEin Problem ist, ich hab nur eine serielle Schnittstelle am µC!.
Vielen Dank für eure Antworten.

lg
Hannes

von Karl heinz B. (kbucheg)


Lesenswert?

> MEin Problem ist, ich hab nur eine serielle Schnittstelle am µC!.

Das macht nichts.
Eine RS232 geht in beide Richtungen.
Alles was du im HT auf dem Keybord klimperst, schickt HT über
die serielle Schnittstelle raus. Es liegt dann am µC diese
Daten zu empfangen und weiter zu verarbeiten.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Serielle Schnittstellen sind bidirektional. Wenn Du im Terminalprogramm 
eine Taste drückst, wird vom Terminalprogramm deren ASCII-Code über die 
serielle Schnittstelle übertragen.

Wohin?

An Deinen µC. Einfach so.

Den musst Du natürlich noch so programmieren, daß er Zeichen auf der 
seriellen Schnittstelle empfangen kann, und bei empfangenen Zeichen auch 
irgendwas anstellt, aber das hat nichts mit dem Terminalprogramm zu tun.

Daß das Terminalprogramm auf der Tastatur eingegebenen Text über die 
serielle Schnittstelle versendet, ist das Standardverhalten. Dazu muss 
man gar nichts spezielles einstellen.

Es kann allerdings sinnvoll sein, wenn Dein µC bzw. die serielle 
Verbindung zu ihm kein Hardwarehandshake unterstützt (also mehr als die 
Leitungen RxD, TxD und GND benutzt), das Hardwarehandshake im 
Terminalprogramm zu deaktivieren oder aber im seriellen Kabel auf der 
PC-Seite entsprechende Kurzschlussbrücken zwischen RTS/CTS und DTR/DSR 
anzubringen.

von Rahul D. (rahul)


Lesenswert?

Alles, was man beim Hyperterminal über die Tastatur eingibt, wird über 
die serielle Schnittstelle verschickt.
Dass man HT auch für die Kommunikation über TCP/IP benutzen kann, ist 
mir neu.
In der Codesammlung oder unter "PC-Programmierung" findet man sonst 
einen Link zu einem besseren Terminal-Programm.

>MEin Problem ist, ich hab nur eine serielle Schnittstelle am µC!.

Wieso ist das ein Problem?
Man kann auch (irgendwo im Menu zufinden) ganze Dateien verschicken...

von Hannes Albert (Gast)


Lesenswert?

Ich hab noch eine Frage und zwar warum kann ich keinen Text in das 
Hyperterminal eingeben, der auch im HT zu sehen ist. Wenn ich eine neue 
Verbindung aufmache, und über die Tastatur etwas eingeben, dann kommt 
auf dem HT nichts an.
Kann man das einstellen oder ist das Standardmäßig so.
Vielen Dank.
lg
Hannes

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Da wird man irgendwo ein lokales Echo einstellen können...

von Karl heinz B. (kbucheg)


Lesenswert?

Weil HT alle Tastatureingaben einfach nur an das Gerät schickt,
dass an die Leitung angeschlossen ist.
Normalerweise sendet das Gerät dann diese Zeichen gleich wieder
zurück. Damit kann man wunderbar einfach überprüfen, ob es ein
Problem in der Kommunikation gibt: Kommt das getippte wieder
zurück, wird es vom Terminal angezeigt und man weiss dass die
Kommunikation klappt. Kommt nichts oder nur verstümmelt, dann
gibt es ein Problem in der Kommunikation.

Bei allen Terminals, und somit auch bei HT kann man aber ein
sog. lokales Echo aktivieren, bei dem das Terminal eingetippte
Zeichen selbst anzeigt.

von Hannes Weninger (Gast)


Lesenswert?

Hallo,

ich hätte eine Frage bzg. Zahlen an das Hyperterminal schicken.
Ich hab in meinem Programm ein Array von 500 Zahlen in integer (int 
arr[500];)
Die Werte repräsentatieren einen Zahlenverlauf eines Messwertes. Diese 
Zahlen bräuchte ich in einer *.csv- Datei.
Hat jemand eine Idee, wie ich diese Zaheln im Array zum Hyperterminal 
bekomme bzw. ich brauche diese Zahlen gar nicht dargestellt am HT, 
sondern möchte nur eine *.csv- Datei.
Am Hyperterminal kann man ja auf "Übertragen -> Datei empfangen" gehen.
Weiß vielleicht jemand, ob das bei meinem Problem hilft, sprich, ob ich 
vielleicht irgendein Zeichen an das HT schicken muss, damit dieses weiß, 
dass jetzt die Daten kommen, und diese werden dann vom HT in eine 
Textdatei gespeichert.

Bin für jede Anregung sehr dankbar und bedanke mich jetzt schon sehr 
herzlich für Eure Antworten.

lg
Hannes

von unsichtbarer WM-Rahul (Gast)


Lesenswert?

Du wirst diese Zahlen in ASCII-Zeichen umwandeln müssen, um daraus eine 
Textdatei machen zu können.

von Hannes Weninger (Gast)


Lesenswert?

Das wäre ja kein Problem, aber ich muss diese Zahlen über TCPIP an das 
HT schicken, dort aber nicht anzeigen, sondern das HT soll eine 
Textdatei machen.
Ich weiß, dass man in C mit fopen() eine Datei aufmachen kann und da was 
reinspeichern kann aber ich hab eben nur einen Zugriff auf das HT vom µC 
aus.
Vielen Dank.

lg
Hannes

von unsichtbarer WM-Rahul (Gast)


Lesenswert?

Hast du denn schon eine entsprechende Schnittstelle an deinem 
Mikrocontroller?

von Hannes Weninger (Gast)


Lesenswert?

JA hab ich, das funktioniert alles, Es geht nur darum, mit den integer- 
Zahlen am Remote- Computer in eine Textdatei zu packen, möglichst mit 
dem Hyperterminal (mit "Übertragung -> Datei empfangen zum Beispiel);

lg
Hannes

von Karl heinz B. (kbucheg)


Lesenswert?

Du schickst was auch immer du willst in Textform an Hyperterminal.
Hyperterminal speichert dann für dich diesen Text in eine Datei.

Wenn du also willst, dass in deiner Datei
200;100
steht, dann schickst du genau diesen String zu Hyperterminal.

Für Zahlen musst du daher zunächst auf dem µC alles in eine
Textform bringen (itoa() oder sprintf()). Dann baust du
entweder eine komplette Textzeile am µC zusammen und schickst
die in einem Rutsch an HT oder du schickst die einzelnen
Texte einzeln. Macht keinen Unterschied. HT speichert alles
so wie es über die serielle Schnittstelle kommt in einer
Datei.

von Hannes Weninger (Gast)


Lesenswert?

Vielen Dank Karl heinz,
ich werds probieren.
Mir ist zwar jetzt noch nicht klar, wie ich da vorgehe, speichert das HT 
automatisch oder muss ich da zuers "Übertragung -> Datei empfangen" 
aufmachen und wo speichert das HT die Datei hin.
Vielleicht kannst du mir noch Tipps geben.
Vielen Dank auf jeden Fall.

lg
Hannes

von Karl heinz B. (kbucheg)


Lesenswert?

Du willst gar nicht 'Datei empfangen'.
Was du willst ist 'Text aufzeichnen'.
Und wenn du den Menüpunkt auswählst, fragt dich HT
in welcher Datei es den Text speichern soll.

Alles was nach Anwahl dieses Menüpunkts über die
Schnittstelle reinkommt, wird in der angegebenen Datei
genau so mitgeschrieben, wie es empfangen wurde. Kannst
du ganz leicht mit zb. Notepad kontrollieren. Nach erfolgter
Übertragung machst du einfach mal die Datei auf und siehst
was der µC über die Schnittstelle gesendet hat.


von Karl heinz B. (kbucheg)


Lesenswert?

Und bevor du frägst :-)

Ja, du kannst das Text mitschreiben auch wieder ausschalten.
Sobald 'Text aufzeichnen' aktiv ist, gibt es beim selben
Menüpunkt ein paar Untermenüpunkte. Einer davon ist 'Beenden'.

von Hannes Weninger (Gast)


Lesenswert?

Vielen Dank,
ich bin gerade dabei, es zu machen.
Ich werde euch berichten.

lg
Hannes

von Hannes Weninger (Gast)


Lesenswert?

Hallo nochmal,

eine Frage hätte ich noch: Wenn ich beim Hyperterminal auf "Datei 
empfangen" gehe, wird dann was vom HT an die COM (1,2, je nach 
Einstellung) gesendet, so quasi das das HT jetzt bereit ist, eine Datei 
zu empfangen bzw. wo liegt der Unterschied zwischen "Datei empfangen" 
und "Text aufzeichnen".
Vielen Dank für Eure Antworten.

lg
Hannes

von Hannes Weninger (Gast)


Lesenswert?

Hallo Karl heinz,

wenn ich beim HT auf Datei empfangen gehe, wird dann an den Remote-µC 
etwas geschickt, damit dieser weiß, dass er jetzt starten muss, oder 
wartet das HT bei dieser Einstellung auch nur, bis etwas kommt?

Vielen Dank.

lg
Hannes

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hyperterminal verwendet wie jedes andere Terminalprogramm auch für die 
Übertragung von Dateien eines der Protokolle X-Modem, Y-Modem, Z-Modem 
oder Kermit.
Der Empfang von Dateien mit den letzten beiden Protokollen wird 
automatisch gestartet, bei den anderen Protokollen muss der Empfang 
manuell gestartet werden.

Dafür ist die Funktion "Datei empfangen" gedacht.

Da hier aber keines der genannten Protokolle implementiert wurde, ist 
diese Funktion hier völlig ungeeignet.

Also: Text aufzeichnen.

Was ich an der Diskussion beeindruckend finde, ist, daß Leute hier nach 
Dingen fragen, die sie mit etwa zwei Minuten Zeitaufwand auch selbst 
herausfinden könnten ...

von Karl heinz B. (kbucheg)


Lesenswert?

Wenn du auf 'Datei empfangen' gehst dann wird da ein
Protokoll dazwischen geschaltet. 'Kermit' ist zb so ein
Protokoll. Ein Protokoll ist ein Satz von Regeln nach
denen die Überttragung abläuft. Das kann zb beinhalten
dass der Empfänger bescheid gibt, dass er bereit zum Empfang
ist. Das beinhaltet normalerweise auch Dinge wie Prüfsummen
und Regeln wie diese Prüfsummen ausgewertet werden und
was im Fehlerfall zu passieren hat. Das kann auch Regeln für
die Datenkompression enthalten, etc.

Diese Übertragunsprotokolle stammen noch aus Zeiten, als die
meisten Übertragung, zumindest für Normalsterbliche,
analog über Telephon abgewickelt wurden und daher fehleranfällig
waren.

von Hannes Weninger (Gast)


Lesenswert?

Hallo,

vielen Dank für Eure Antworten.
Eine Frage hätte ich noch: Welches Protokoll soll ich wählen, damit 
etwas zu meinem µC geschickt wird und dieser dann startet etwas zu 
senden und was schickt das HT bzw. das Protokoll (was muss ich im 
Programm des µC abfragen?
if (empfangen)
   start_senden = 1;

Vielen herzlichen Dank besonders an Karl heinz und Rufus

lg
Hannes

von Karl heinz B. (kbucheg)


Lesenswert?

Im einfachsten Fall:
Denk dir was aus.

Du stellst HT auf Text ampfangen scharf und drückst auf der
Tastatur zb ein 'S'. Das 'S' geht zum µC wird ausgewertet und
als Antwort schickt dir der µC die Daten in Textform, die von
HT getreulich in die Datei geschrieben werden.

Ganz ehrlich: Ich glaube nicht, dass du ein Kermit Protokoll
oder ein ZModem Protokoll hinkriegst. Also verschwende nicht
deine Zeit damit.

von Hannes Weninger (Gast)


Lesenswert?

Hallo,

einmal möchte ich noch stören.
Mein Problem ist jetzt, dass ich am Hyperterminal ein Menü stehen habe 
und wenn ich dann in einen Unterpunkt gehe, um mir die Daten vom µC in 
eine Textdatei schicken zu lassen, dann geht das, aber es wird auch auf 
das HT geschrieben und haut mir mein ganzes Menü zusammen bzw. es wird 
darüber geschrieben.
Meine Frrage wäre jetzt, ob es möglich ist, die Daten, die vom µC kommen 
nur in die Textdatei zu lesen und nicht auch auf den Monitor.

Vielen Dank!!!!!

lg
Hannes

von unsichtbarer WM-Rahul (Gast)


Lesenswert?

>Ganz ehrlich: Ich glaube nicht, dass du ein Kermit Protokoll
>oder ein ZModem Protokoll hinkriegst. Also verschwende nicht
>deine Zeit damit.

Zu Kermit oder einem der anderen Modem-Protokolle hat Atmel sogar eine 
Application Note herausgebracht....

.
.
.

such...

.
.
.

http://www.atmel.com/dyn/resources/prod_documents/doc1472.pdf

Zumindest scheint es dabei um den Empfang zu gehen...

von Karl heinz B. (kbucheg)


Lesenswert?

> Meine Frrage wäre jetzt, ob es möglich ist, die Daten, die vom µC kommen
> nur in die Textdatei zu lesen und nicht auch auf den Monitor.

Ursprünglich ist dieses Feature ja gar nicht dafür gedacht, Daten-
übertragung im Sinne von Dateiübertragung zu machen.
Es ging vielmehr immer darum die Arbeitssitzung zu protokollieren.

Wenn du HT dazu benutzt um eine Steuerung deines µC zu machen,
mit Menüs und so, dann stellt sich die Frage, ob dies überhaupt
ein vernünftiges Werkzeug dazu ist. Im Normalfall würde man
für sowas ein eigenes Programm auf PC-Seite schreiben. Das
hätte auch den Vorteil, dass man die komplette Menüsteuerung
und Benutzerinterkation vom µC wegkriegt und komplett auf den
PC verlagert, wo man dann das GUI mitbenutzen kann.
Vom PC gehen dann nur noch Kommandos zum µC, was zu tun ist.

von Hannes Weninger (Gast)


Lesenswert?

ja das ist mir klar, aber es ist so vorgegeben und es kann dann jeder 
benutzen, ohne ein Programm am Computer lokal zu installieren.
Diese Vorteile überwiegen gegenüber den anderen!!

Vielen Dank für die Anregungen und die Hilfe

lg
Hannes

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.