PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RS232: Empfangen



freq.9
21.12.2005, 16:40
Ich weiss nun nicht, ob das stimmt, was ich derzeit irgendwie im Kopf habe, aber muss die RS232 Schnittstelle nicht irgendwelchen Einstellungen entsprechen, damit sie empfangen kann!? Also ich meine nun die Pins, ob die irgendeinen bestimmten Wert haben müssen um zu empfangen?

Derzeit habe ich es so, dass DTR, TXD und RTS auf 1 stehen, aber will ich was empfangen kommt nichts an.

Nebenbei:
Ich habe im Forum gesucht, bei Google, in meinem Tabellenbuch und ich habe unseren AT-Lehrer heute gefragt aber alle konnten mir keine genauen Antworten geben.

super_castle
21.12.2005, 16:47
Man kann mit Kontrollbits arbeiten, man kann auch ohne Kontrollbits arbeiten (z.b. AVR, kontrolliert über Int. > den RXD).
TXD muss auf Senden stehen und RXD muss auf empfangen stehen.
Und bei beiden muss die Einstellung "Bit pro Sekunde" (bps) zur Gegenseite stimmen.

Castle

freq.9
21.12.2005, 16:52
Hmmm... RXD, sowas hab ich hier irgendwie nicht. Ich arbeite nämlich mit dieser Komponente (http://hsg.region-kaiserslautern.de/faecher/inf/msr/seriell/prowo04/TCPD.php) in Delphi aber da find ich kein RXD.

Also mal genau:
- DTR: 1
- TXD: 1
- RTS: 1
- CTS: 1
- DSR: 1
- DCD: 0
- RI: 0
- INPUTS: 3 (wo ich nun keine Ahnung hab, was das ist)

PicNick
21.12.2005, 18:57
Der muß aber da sein.

wenn du aber ohnehin .readbyte() oder .readstrings() machst, kann es dir nicht egal sein ?

(wie du siehst, bin ich delphi-mässig schwer behindert) :oops:

kalledom
21.12.2005, 20:11
Bei vielen seriellen Schnittstellen muß RTS und CTS, also die beiden Handshake-Signale, bedient werden. Im einfachsten Falle werden diese beiden Signale auf beiden Seiten jeweils miteinander verbunden, dann funktioniert meistens die SIO in beiden Richtungen.
RTS = Request to send
CTS = Clear to send
Könnte es sein, daß der "INPUTS: 3" der RxD (Recive = Eingang) ist ?

freq.9
21.12.2005, 23:11
Naja aus der Definition der Funktion hinter Inputs kann ich nicht wirklich erkennen, was dieses Inputs nun darstellen soll:


function TComPort.Inputs: Integer;
var
mask: DWord;
begin
GetCommModemStatus(PortHandle, mask);
result := (mask div 16) and 15;
end;

kalledom
22.12.2005, 00:12
Gibt es keine Pinbelegung ?
Kann man daraus nicht ersehen, wo was ist ?

freq.9
22.12.2005, 05:48
Der muß aber da sein.

wenn du aber ohnehin .readbyte() oder .readstrings() machst, kann es dir nicht egal sein ?

(wie du siehst, bin ich delphi-mässig schwer behindert) :oops:

Bei den Funktionen bricht meine Anwendung irgendwie ab, nur weiss ich nicht, obs an der Komponente selbst liegt, oder vllt. dass die Pins falsch eingestellt sind von den Werten her.

sast
02.01.2006, 07:51
Hi freq.9,

was für eine Komponente für die RS232 verwendest du denn.

sast

freq.9
07.01.2006, 02:10
Hi freq.9,

was für eine Komponente für die RS232 verwendest du denn.

sast

http://hsg.region-kaiserslautern.de/faecher/inf/msr/seriell/prowo04/TCPD.php

NumberFive
07.01.2006, 10:18
RXD ist kein Statuspin da kommen die daten an.
Spricht der Geht dauern 0 und 1 die byte halt hoch und runter.

Wie testes du dein Programm ?

Die Klasse hat in meine Augen ein fehler du verlierst zeichen da sie
sehr abhängig von der Programm sturctur ist. zu Sauberen empfangen
brauchst du ein Thread besonders bei Hochen übertragungsraten.

Wieviele Drähte hast du zwischen dir und dem Endgerät ? (Genaue verkabelung).

Welches Delphi benutzt du ?
Habe mir in Delhi 4 was geschrieben das sollte bis 115000 Baud gehen
aber ich habe es richtig nur bis 36400 getestet.

Gruß

RedBaron
07.01.2006, 10:34
Moin,

RS232 funktioniert bereits, wenn nur GND, TxD und RxD angeschlossen sind. Inwieweit Statusleitungen gesetzt oder berücksichtigt werden sollen (Handshake), kannst du einstellen.

Versuch es einmal mit einer Einstellung, die ohne irgendwelche Handshakes arbeitet.

Zum Testen würde ich erst einmal folgendes machen:
a) eigenes RxD mit eigenem TxD verbinden, Handshake abstellen. Man erhält dann seine eigenen gesendeten Zeichen. So kann man zumindest die Software testen.
b) Wenn du nicht weißt, wie man das Handshake abschalten kann, verbinde RTS mit CTS (Pin 7 und 8 bei 9-poligem Anschluss) und DSR mit DCD und DTR (Pins 6, 1, 4). Die Schnittstelle gibt sich dann ihr eigenes Handshake.

Wenn das funktioniert, liegt dein Problem bei der Verbindung mit dem 2. Gerät. Um da weiter zu helfen, wären genauere Informationen notwendig.

Hier wirst du vielleicht weitergehilft:
http://www.uni-ulm.de/~s_osaal/elektronik/rs232.html
http://www.weberco.ch/t_rs232_1.htm

Gruß Red Baron