![]() |
Re: TSerial - RS232 ansprechen
Ok, es funktioniert jetzt einigermaßen. Schließe ich eine LED zwischen Pin 3 (Sendedaten) und Pin 5 (Ground) so leuchtet die LED wenn ich meine Funktion anschalte und wenn ich sie wieder deaktiviere, dann leuchtet die LED nicht mehr. Schließe ich die LED jedoch verkehrt herum an, dann leuchtet sie immer, auch wenn kein Signal gegeben werden sollte.
Ich werde noch irgendwann ausprobieren, ob man verschiedene Signale geben kann, denn bei einem 0-Bit wird anscheinend eine positive Spannung abgegeben und bei einem 1-Bit eine negative Spannung. Vielleicht wird das aber auch von Stopbits und anderen Bits die mitgesendet werden überdeckt. |
Re: TSerial - RS232 ansprechen
Zitat:
logische Null auf +12V. Du solltest aber vorsichtig damit sein, Verbraucher direkt an die Schnittstelle anszuschließen. Du solltest zumindest eine galvanische Trennung haben - das ist in manchen Fälllen für den PC überlebenswichtig. Grüße Klaus |
Re: TSerial - RS232 ansprechen
Wann kann dies gefährlich werden, wenn Kurzschlüsse entstehen, oder wenn zu viel Spannung auf den PC kommt? Würde ein MOSFET oder ein Transistor dazu ausreichen? Diese schalten ja nur wenn negative Spannung richtig anliegt, so sollte man dann auch richtig Ströme schalten können.
Was ich jedoch schade finde, ist dass man nur eine Leitung schalten kann. Ich werde mich mal auf Conrad umsehen, ob ich nicht irgendeine Platine mit USB Interface finde, die mehr kann. Vielleicht kennt jemand von euch auch eine gute. |
Re: TSerial - RS232 ansprechen
Zitat:
Probleme könnten hier eher entstehen, wenn zu große Ströme direkt an den Schnittstellen hängen. Eine galvanische Trennung wäre als spontane Idee wohl mit Optokopplern zu erreichen, aber bis jetzt hab ich eigentlich (am LPT) auch MOSFET benutzt. |
Re: TSerial - RS232 ansprechen
Hallihallo,
Ich habe auch vor mit einem Mikrocontroller zu komunizieren. Im HyperTerminal funktioniert das bereits. Das läuft in etwa so: Ich sende ein beliebiges Zeichen und der Controller antwortet mit 8 Bytes. Wie gesagt im HT läuft es wunderbar, aber mein Programm will noch nicht so richtig. Folgenden Code nutze ich: (abgeändert vom Beispielcode weiter vorn)
Delphi-Quellcode:
Die Variable COM wird in den Einstellungen gesetzt.
procedure TForm1.readcomClick(Sender: TObject);
var c: Char; digits: array [0..7] of string; tick: cardinal; count: Integer; begin c := 'x'; // zu sendendes Zeichen with TCom.Create(nil) do try // com öffnen if Open(COM,RTS_DISABLED,DTR_DISABLED) then begin // senden if Send(c) then //Zeichen senden begin tick := GetTickCount; count := 0; // 1 Sekunde bzw. auf 8 Bytes Daten warten repeat // Daten aus der Schnittstelle lesen, sofern vorhanden if GetChar(c) then begin digits[count] := c; count := count+1; end; until ((GetTickCount-Tick) > 1000) or (count >= 7); if count >= 7 then //Die erhaltenen Zeichen verarbeiten begin time1.Text := digits[0] + digits[1] + ',' + digits[2] + digits[3]; time2.Text := digits[4] + digits[5] + ',' + digits[6] + digits[7]; end; end; end; finally // com schließen Close; Free; end; end; Beim HT hab ich folgendes eingestellt: 9600Baud; keine Parität; 1Stopbit; Datenbits: 8; Keine Flussteuerung Ich hoffe ihr findet meinen Denkfehler. |
Re: TSerial - RS232 ansprechen
Hallo,
was funktioniert denn nicht? Bist Du schon einmal in der Routine einen Haltepunkt gesetzt und bist mit F8 den Code schrittweise durchgegangen? Grüße Klaus |
Re: TSerial - RS232 ansprechen
Es erzeugt ja keinen Fehler, deshalb bin ich ja auch total überfragt was grade los ist.
|
Re: TSerial - RS232 ansprechen
Zitat:
Dann setze mal einen Haltepunkt und arbeite mit F8 den Code ab. Dann wirst Du sehen, ob alles so läuft wie Du es Dir vorgestellt hast. Grüße Klaus |
Re: TSerial - RS232 ansprechen
Wie gesagt, es sollte ein Zeichen gesendet werden. Dann soll die Antwort von 8 Zeichen empfangen werden. Ob das senden funktioniert kann ich nicht sagen weil ich nicht weiß wie ichs testen soll. Empfangen tut er jedenfalls nix.
Gruß Lee |
Re: TSerial - RS232 ansprechen
Zuerstmal musst Du eingrenzen wo das Problem überhaupt liegt. Welcher Microcontroller? Je nach Plattform gibts mehr oder weniger erschwingliche Hardwaredebugger dafür. Zweitens solltest Du beim Microcontroller erstmal ein paar simple Signalisierungsmöglichkeiten schaffen. Immer wieder gern genommen ist z.B. eine LED die angeht, wenn der Controller ein Zeichen empfangen hat. So kann man Schritt für Schritt einkreisen, was denn überhaupt das Problem ist. Hast Du z.B. daran gedacht RX und TX zu kreuzen? Senden auf der einen ist ja Empfangen auf der anderen Seite.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz