AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TSerial - RS232 ansprechen

Ein Thema von Netblaster · begonnen am 6. Jun 2008 · letzter Beitrag vom 15. Aug 2012
Antwort Antwort
Seite 3 von 5     123 45      
hadschi92

Registriert seit: 25. Okt 2006
83 Beiträge
 
Delphi XE3 Professional
 
#21

Re: TSerial - RS232 ansprechen

  Alt 4. Jun 2009, 18:12
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.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#22

Re: TSerial - RS232 ansprechen

  Alt 4. Jun 2009, 18:46
Zitat von hadschi92:
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.
.. das mag daran liegen, dass die Logische Eins auf -12V liegt und die
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
Klaus
  Mit Zitat antworten Zitat
hadschi92

Registriert seit: 25. Okt 2006
83 Beiträge
 
Delphi XE3 Professional
 
#23

Re: TSerial - RS232 ansprechen

  Alt 4. Jun 2009, 19:10
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.
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#24

Re: TSerial - RS232 ansprechen

  Alt 4. Jun 2009, 20:09
Zitat von hadschi92:
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.
Die Sache ist ja hier, dass du nur einen Pin "schalten" kannst, weil du mit der seriellen Schnittstelle arbeitest und der Rest nunmal Steuersignale sind, die durch das Protokoll vorgegeben sind. Wenn du die Steuerpins manuell schalten würdest, oder die parallele Schnittstelle (IEEE 1284) nutzen, könntest du mehr Pins als IO-Pins missbrauchen, allerdings geht das unter Windows NT nur noch im Kernelmode und bedarf entweder eines Treibers, der Anfragen durchreicht oder die entsprechenden DMA-Bereiche im für Usermode-Programme freigibt.
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.
Man kann einen Barbier definieren als einen, der alle diejenigen rasiert, und nur diejenigen, die sich nicht selbst rasieren.
Rasiert sich der Barbier?
  Mit Zitat antworten Zitat
Benutzerbild von Lee500
Lee500

Registriert seit: 18. Sep 2006
39 Beiträge
 
Delphi 2010 Architect
 
#25

Re: TSerial - RS232 ansprechen

  Alt 20. Okt 2009, 16:28
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:
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;
Die Variable COM wird in den Einstellungen gesetzt.

Beim HT hab ich folgendes eingestellt: 9600Baud; keine Parität; 1Stopbit; Datenbits: 8; Keine Flussteuerung

Ich hoffe ihr findet meinen Denkfehler.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#26

Re: TSerial - RS232 ansprechen

  Alt 20. Okt 2009, 16:32
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
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Lee500
Lee500

Registriert seit: 18. Sep 2006
39 Beiträge
 
Delphi 2010 Architect
 
#27

Re: TSerial - RS232 ansprechen

  Alt 20. Okt 2009, 16:34
Es erzeugt ja keinen Fehler, deshalb bin ich ja auch total überfragt was grade los ist.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#28

Re: TSerial - RS232 ansprechen

  Alt 20. Okt 2009, 16:38
Zitat von Lee500:
Es erzeugt ja keinen Fehler, deshalb bin ich ja auch total überfragt was grade los ist.
Was soll den passieren, bzw. was passiert denn nicht?

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
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Lee500
Lee500

Registriert seit: 18. Sep 2006
39 Beiträge
 
Delphi 2010 Architect
 
#29

Re: TSerial - RS232 ansprechen

  Alt 20. Okt 2009, 16:42
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
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#30

Re: TSerial - RS232 ansprechen

  Alt 20. Okt 2009, 16:49
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.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz