PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeichenverzögerung RS232



Tretsch
13.11.2006, 20:13
Hi Leute,
bin noch ein totaler Bascom anfänger und habe eine frage an euch. Wie kann ich, wenn ich einen String mit dem Print befehl sende, eine Zeichenverzögerung von 1ms einstellen? Habe mir vor kurzem bei ELV das On-Screen-Modul gekauft. Dieses funktioniert, wenn ich es am Pc anschließe und im Hyperterminal die Zeichenverzögerung auf 1ms einstelle, so wie es in der anleitung steht, auch perfekt. Allerdings möchte ich das Modul in meinem Auto nutzen und per µc steuern. Dieses klappt leider nicht. Ich denke das es an der Zeichenverzögerung liegt, da sporadisch mal irgendwelche Zeichen angezeigt werden. Oder hängt das vielleicht mit der Flusssteuerung zusammen, die man im Hyperterminal auch ausstellen muss?
Hier mal mein Code, mit dem es am Rechner perfekt läuft.



'AVR ATMega32
$regfile = "m32def.dat"

'Quarz-frequenz 16.00000 MHz
$crystal = 16000000

'Baud-Rate Serieller Port
$baud = 9600

Config Porta = Output
Config Portd = Output

Set Porta.1


Print "Hallo du da! wie geht es dir? Mir geht es gut. Hoffe dir auch. Bis dann."

End


Set Porta.1 ist nur dafür da, um eine led zu steuern.

Hoffe ihr könnt mir helfen. Bekomme das problem nicht in den griff und versuche es schon seit 2 Wochen.


MfG Tretsch

PicNick
13.11.2006, 20:28
Blöde Sache. Schau mal in Help
$SERIALOUTPUT
Da müßtest du eine Wait-Schleife dazubauen .

Gento
13.11.2006, 21:07
Eins von beiden muß gehen.A oder B


Dim Buchstabe As Byte
Dim B As String * 1
Dim Position As Byte
Dim S As String * 50

S = " Hello World "

For Position = 1 To Len(s) 'A
B = Mid(s , Position , 1)
Buchstabe = Asc(b)
Print Chr(buchstabe)
Waitms 1
Next Position


For Position = 1 To Len(s) 'B
B = Mid(s , Position , 1)
Print B
Waitms 1
Next Position

Zwar nicht getestet .... aber ...

Gento

Tretsch
14.11.2006, 19:02
Hab jetzt mal beide Versionen von Gento ausprobiert. Aber alles was angezeigt wird ist sind irgendwelche symbole. Habs gerade nochmal am Rechner gehängt und wenn ich die zeichenverzögerung auf 1ms setze und die flusssteuerung auf "kein" dann funktioniert es prima.
Wofür ist eigentlich die Flusssteuerung. Kann es was damit zu tun haben?

Tretsch

Gento
14.11.2006, 20:01
See:https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=23559

Gento

Guy
15.11.2006, 11:47
Die Flusssteuerung ist dazu da wie der Name schon sagt um den Datenfluß zusteuern. Es gibt zwei Möglichkeiten, oder besser drei. Hardware, Software oder keine.

Das heißt mit der Flusssteuerung sagt das eine Gerät dem andren ob es bereit ist Daten zu empfangen oder nicht. Aber darüber findest du genug im Internet unter RS232.

Ich glaube aber dass dein Display die Flusssteuerung nicht unterstützt, darum die 1ms Wartezeit zwischen jedem Zeichen.

Als erstes würde ich mal die Geschwindigkeit runter setzen also baud = 300. Natürlich im Display und im Controller.

Dann erst mal zum Beispiel bei einem Tastendruck ein Zeichen senden, oder in einer Schleife mit Verzögerung immer ein Zeichen senden.

Beispiel:
For i = 1 to 100
Print "a"
Wait 1
Next i

Man muß das Problem eingrenzen. Wenn du so jede Sekunde ein "a" auf dem Display siechst, dann weis du das die Hardware und alles in Ordnung ist. Dann erst versuchst du ein Satz zusenden.


mfg
Guy

PicNick
15.11.2006, 12:00
*grmpf*
Männer, wenn ihr zeichenweise senden wollt, müßt ihr auch zeichenweise senden.
Das sind z.B DREI Zeichen


Print "a"

nämlich "a" + <CR> + <LF>

Guy
15.11.2006, 13:15
Spiel bei ihm ja keine Rolle, weil die restlichen Zeichen ja einfach verloren gehen.

oder eben so
Print "a";

Tretsch
18.11.2006, 12:06
danke Leute. Mit
Print "A";
hat es funktioniert.
Dieses klappt zwar nicht mit texten, habe mir dafür aber 'ne function gebaut die das zerlegen für mich übernimmt.

Tretsch