Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TSerial - RS232 ansprechen (https://www.delphipraxis.net/115140-tserial-rs232-ansprechen.html)

LuJ 16. Sep 2008 14:10

Re: TSerial - RS232 ansprechen
 
Zitat:

Zitat von christian_u
Es gibt keine Möglichkeit herauszufinden ob etwas an der Schnittstelle hängt, die daten werden dann also einfach ins nirvana gesendet.

Also keine Fehlermeldung, kein Aufhängen oder derartiges?
Mist... dann machen wirs wohl nach wie vor falsch.

An diesem Punkt: "FHandle = INVALID_HANDLE_VALUE" hängt sich unser Programm jedes Mal auf.

Hätte jemand vielleicht ein kleines Anwendungsbeispiel für das Ausführen von arnold muellers Quelltext? Also was ganz simples, bspw. die Ausgabe eines Buchstaben über die serielle Schnittstelle- einfach ins Nirvana hinein, ohne jeden Sinn, einfach als Beispiel.

arnold mueller 16. Sep 2008 14:52

Re: TSerial - RS232 ansprechen
 
Das Beispiel sendet ein Hallo Welt über COM1 und wartet 1 Sekunde auf Antwort.

Delphi-Quellcode:

procedure TForm1.ButtonClick(Sender: TObject);
var c: Char;
    tx_buffer, rx_buffer: string;
    tick: cardinal;
begin
  tx_buffer := 'Hallo Welt!';

  with TCom.Create(nil) do
  try
    // com 1 öffnen
    if Open(1,RTS_DISABLED,DTR_DISABLED) then
    begin
      // senden
      if Send(PChar(tx_buffer),Length(tx_buffer))then
      begin
        tick := GetTickCount;

        // 1 Sekunde auf Daten warten
        repeat

           // Daten aus der Schnittstelle lesen, sofern vorhanden
           if GetChar(c) then
           begin
             rx_buffer := rx_buffer + c;
           end;

        until (GetTickCount-Tick) > 1000;
      end;
    end;
  finally
    // com 1 schließen
    Close;
    Free;
  end;
end;
-
arno

LuJ 17. Sep 2008 12:13

Re: TSerial - RS232 ansprechen
 
Danke, wunderbar!
Das Beispiel hilft uns schonmal extrem viel weiter, wir habens jetzt soweit, das unsere Kommunikation einseitig funktioniert- also setzen wir uns ans Nächste...

...d.h. ich melde mich sicher bald nochmal mit weiteren Fragen ;9
Danke schonmal für eure bisherige Geduld!

zebrafalke 7. Nov 2008 13:50

Re: TSerial - RS232 ansprechen
 
Hallo,
ich mache auch gerade was mit Microcontrollern und habe die unit oben auch mal ausprobiert. Sie funktioniert mit dem Beispielcode von arnold mueller auch sehr gut. Jetzt möchte ich aber nicht, wie im Beispiel, 1 Sekunde auf Daten warten, sondern dauerhaft auslesen um dann z.b. bei bestimmten gesendeten zeichen einzelne daten aus dem datenstrom entnehmen. Hat da jemd eine Idee, ob/wie sich das bewerkstelligen ließe?

Gruß
zebrafalke

Chemiker 7. Nov 2008 17:00

Re: TSerial - RS232 ansprechen
 
Hallo zebrafalke,

es gibt noch bei Sourceforge die Komponente Async Professional mit der man eigentlich sehr gut die Serielle Schnittstelle auslesen kann. Dort sind unter anderem auch Demos mit dabei.

Du hast jetzt nicht genau geschrieben welche Daten (in welcher Form) die Daten anfallen.
Aber ich postuliere mal, dass das mit dieser Komponente gehen müsste.

Async Professional

Bis bald Chemiker

Chriss112 11. Feb 2009 21:00

Re: TSerial - RS232 ansprechen
 
´Hallo!
hab mal ne frage und zwar is da ne funktion dabei, die mir sagt ob an irgeneinem pin ein signal anliegt?

Chemiker 11. Feb 2009 21:14

Re: TSerial - RS232 ansprechen
 
Hallo Chriss112,

in Post #15 steht der Link zum Downloaden der Komponente, dabei ist auch eine sehr ausführliche Hilfe.

Man kann bestimmte Zustände mit einem "TriggerStatus" anzeigen lassen.

Bis bald Chemiker

Chriss112 11. Feb 2009 21:58

Re: TSerial - RS232 ansprechen
 
Vielen Dank!

hadschi92 4. Jun 2009 16:03

Re: TSerial - RS232 ansprechen
 
Dann hätte ich doch auch mal eine Frage.

Ich möchte eine dauerhafte Spannung an einem Pin anliegen haben, mein Code sieht bis jetzt so aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Zeichen : char;
begin
  if Button1.Caption = 'Start' then begin
    Button1.Caption := 'Stop';
    Zeichen := 'ÿ';
    with TCom.Create(nil) do
    try
      Label2.Caption := 'läuft';
      Label2.Font.Color := clLime;
      if Open(1,RTS_DISABLED,DTR_DISABLED) then
        while Button1.Caption = 'Stop' do begin
          Send(Zeichen);
          Application.ProcessMessages;
        end;
    finally
      Label2.Caption := 'gestoppt';
      Label2.Font.Color := clRed;
      Button1.Caption := 'Start';
      Close;
      Free;
    end;
  end
  else Button1.Caption := 'Start';
end;
Das Zeichen 'ÿ' habe ich genommen, weil es als Byte dargestellt "1111 1111" ist und daher dauernd Spannung anliegen müsste. Ich weiß zwar nicht ob mein Gedankengang bis jetzt richtig ist, doch ich weiß nicht an welchem Pin das Signal ausgegeben wird. Kann man das auch einstellen oder wird es auf allen Pins ausgegeben?

Hinzufügen möchte ich, dass ich ein altes Kabel einer Maus angeschlossen habe und dieses aufgeschnitten habe.Diese Kabel hat aber nur 5 Adern, kann ich damit überhaupt arbeiten?

Edit:
Zitat:

Objekte, die als Typ char deklariert sind, können jedes Zeichen aus dem nicht erweiterten ASCII-Zeichensatz aufnehmen.
Funktioniert das überhaupt mit meinem Zeichen, denn es kommt im ASCII-Zeichensatz gar nicht vor!?

Klaus01 4. Jun 2009 16:17

Re: TSerial - RS232 ansprechen
 
.. Du hast eine serielle Verbindung
also sollten die Daten auf dem TX Pin anliegen.
Sie liegen aber nicht daherhaft an, wenn ich micht recht
entsinne kommen nach 8 Datenbits Steuersignale (siehe dazu hier)

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 Uhr.
Seite 2 von 5     12 34     Letzte »    

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