PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeichen an die RS232 senden



UweMD
01.03.2006, 11:44
Hallo,


ich möchte Zeichen über die RS232 am RNControl ausgeben.
Ich habe am TX und RX ein Wlan Module angeschlossen.

Jetzt muss ich um in den Datenmodus zu kommen +++ senden aber jedes Zeichen mit 500 ms verzögert.
Drei mal Print "+“ mit eine Pause von 500ms geht nicht, weil die Zeichen dann nicht in einer Zeile stehen.

Wie kann ich das machen, dass ich die Zeichen in einen Buffer schreibe und dann ausgebe?

Dank vorab

uwe

PicNick
01.03.2006, 12:28
Wenn ich das richtig verstehe, mußt du den Print mit semikolon (strichpunkt) abschließen, sonst fügt er einen Zeilenvorschub ein

PRINT "+";
watims 500
PRINT "+";
watims 500
PRINT "+";
watims 500

veit
01.03.2006, 13:07
sagt mal, ich will auch über tx/rx senden, reicht da einfach print ???
muss ich da nix konfigurieren oder sowas?

das klingt mir zu einfach ;-)

ich will mit 9600 baud über einen angeschlossenen rs485 senden, müsste ja das gleiche sein wie bei rs232 ...

(hab nen 8515 mit 11,059mhz)

UweMD
01.03.2006, 13:26
Hallo Robert,


das mit dem Semikolon funzt.
Aber mein Wlan Module erkennt es nicht als Steuerzeichen.
Er versendet keine Mail wie er sollte




Hier mal mein Code


$regfile = "m32def.dat"
$crystal = 16000000 'Quarzfrequenz
$baud = 9600



Print " TEST <cr><lf>"
Wait 1
Print "+";
Waitms 500
Print "+";
Waitms 500
Print "+ ";
Waitms 500
Print "<cr>";
Waitms 500
Print " <lf>"

Wait 2


Print "a";
Waitms 500
Print "t";
Waitms 500
Print "+";
Waitms 500
Print "s";
Waitms 500
Print "h";
Waitms 500
Print "o";
Waitms 500
Print "r";
Waitms 500
Print "t";
Waitms 500
Print "m";
Waitms 500
Print "a";
Waitms 500
Print "i";
Waitms 500
Print "l";
Waitms 500
Print " ";
Waitms 500
Print " T";
Waitms 500
Print " e";
Waitms 500
Print " s";
Waitms 500
Print " t";
Waitms 500
Print " <CR>";
Waitms 500
Print "<lf>";


Wait 60



mfg
Uwe

PicNick
01.03.2006, 13:41
@Veit: Wenn du beim Bascom $BAUD=nnnn schreibst, konfigiert er die UART komplett. da brauchst du sonst nix spezielles zu machen.
($crystal==xxx und die Fuses müssen natürlich stimmen)

@Uwe: Ich kenn das Modul leider nicht. aber wenn du <CR> und <LF> schicken willst, solltest du sagen
PRINT
und sonst nix, Bascom schick da beides elektrisch.

(" <CR>" ist ein Text, mit dem wird er wohl nix anfangen)

UweMD
01.03.2006, 14:04
Hallo Robert,


Ich gebe doch die Zeichen <cr> und <lf> mit Print aus


mfg
uwe

PicNick
01.03.2006, 14:14
<cr>

das sind vier Zeichen, Kollege.

Ein "echtes" CR ist EIN byte mit dem Inhalt "&H0D"
Ein "echtes" LF ist EIN byte mit dem Inhalt "&H0A"

Schreib das so:
...
Print " t";
Waitms 500
Print

UweMD
01.03.2006, 14:34
Hallo Robert,

das verstehe ich nicht....

ich möchte das hier ausgeben:
Um in den Befehlsmodus zu kommen gebe ich das aus.
+++ <cr><lf>

dann zum mail senden
at+shortmail TEST <cr><lf>

wie muss das dann aussehen?


mfg
uwe

PicNick
01.03.2006, 15:04
Das gewurstel ist ja nur, weil zwischen den "+" offenbar 500mS verstreichen sollen.
Der Teil wäre dann so:


PRINT "+";
watims 500
PRINT "+";
watims 500
PRINT "+";
watims 500
PRINT

Da ich nicht glaube (?), daß er die 500 mS sonst auch immer braucht, würde ich dann probieren, ganz einfach


PRINT "AT+SHORTMAIL TEST"

(die kontrollzeichen fügt der Bascom selber ein)

probier's einfach mal

Das Modul an ein Terminal hängen zum gucken geht wohl nicht ?
(nach +++ sollt' er eigentlich eine Antwort geben, glaub ich mich zu erinnern)

UweMD
01.03.2006, 15:17
Hallo Robert,

Das habe ich schon so probiert.
die 500 ms bei den + zeichen sind immer notwendig.
Es kommt auch eine Antwort auf disese ich 2 Sekunden warte.
Ich habe einen Terminal angschlossen.
Wenn ich das PRINT ausführe dann lese ich nur ein "LF" KEIN "CR".

Dieses Module ist es.

http://www.avisaro.com/html/wlan_module.html

mfg
uwe

veit
01.03.2006, 15:25
ich hoffe ich störe hier nich zu sehr, hab auch noch ne frage dazu:

ich muss an meinen rs485 an ein gerät ein längeres kommando senden, hab das schon mit nem interface über seriell port gemacht, benutze da das programm "com terminal"

damit gehts einwandfrei

kommando:
200 1 102 240 10 10 250 255 152 201

jetz versuche ich das von meinem atmel senden zu lassen, hab nen max485 dran, setze über portc.0 = 1 den 485 auf senden, mache dann

print "200";
print "001";
usw, aber es funktioniert nicht ....

????

veit
01.03.2006, 15:35
oder doch so?

print "200001102240010010250255152201"

UweMD
01.03.2006, 15:49
Hallo Robert,


ich habs...
Es geht wie Du geschrieben hast...
Es war ein Fehler im Terminal.


Ich danke Dir....


mfg
Uwe

UweMD
01.03.2006, 15:58
Hallo veit


bei mir funzt es so:



$regfile = "m32def.dat"
$crystal = 16000000 'Quarzfrequenz
$baud = 9600




Print
Wait 1
Print "+";
Waitms 700
Print "+";
Waitms 700
Print "+";
Waitms 700
Print

Wait 2 ' Warten auf Antwort vom +++ Kommandomodus

Print "at+shortmail TEST TEST";
Print


Wait 60 'Zeit zum versenden der Mail



mfg
uwe