AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TSerial - RS232 ansprechen

Ein Thema von Netblaster · begonnen am 6. Jun 2008 · letzter Beitrag vom 15. Aug 2012
Antwort Antwort
Seite 2 von 5     12 34     Letzte » 
delphihasen

Registriert seit: 2. Apr 2012
4 Beiträge
 
#1

AW: TSerial - RS232 ansprechen

  Alt 2. Apr 2012, 11:45
Hallo erstmal,

vielen Dank für die Com Unit! Hab allerdings ein Problem:
Ich mochte den Port RTS auf High schalten.

So hab ich mir das vorgestellt


Delphi-Quellcode:
//////////////////////////////////////////////////////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
begin

  with TCom.Create(nil) do
  try
    // com öffnen
    if Open(COM,RTS_DISABLED,DTR_DISABLED) then
    begin
        Memo1.Lines.Add ('Com'+IntToStr(Com)+' ausgewählt!');
        SetRTS(akt);
    end;
  finally
    // com schließen
    Close;
    Free;
end;
///////////////////////////////////////////////////////////////////

Bei der Prozedur SetRTS gibt Delphi mir allerdings die Fehlermeldung "Missing Operator" aus. Die Variable akt(boolean) habe ich zuvor jedoch schon true zugewiesen...

Kann mir jemand helfen???


Vielen Dank für eure Mühen

Geändert von mkinzler ( 2. Apr 2012 um 11:48 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#2

AW: TSerial - RS232 ansprechen

  Alt 2. Apr 2012, 12:58
Schmeiß erst einmal das "with" raus. Und dann scheint da noch das "end" zum "finally" zu fehlen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
delphihasen

Registriert seit: 2. Apr 2012
4 Beiträge
 
#3

AW: TSerial - RS232 ansprechen

  Alt 2. Apr 2012, 13:03
Ohne with gehts gar nicht. Sorry end war noch drin-->habs lediglich nicht mitkopiert...

Denke das Problem liegt an der Prozedur:

Delphi-Quellcode:
procedure TCOM.SetRTS(const Value: boolean);
begin
  if (Value = True) then
    EscapeCommFunction(FHandle, WinTypes.SETRTS)
  else
    EscapeCommFunction(FHandle, WinTypes.CLRRTS);
end;
Um diese auszuführen bzw. RTS zu schalten sollte ich sie doch lediglich so:
SetRTS(true); ausführen können oder nicht?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#4

AW: TSerial - RS232 ansprechen

  Alt 2. Apr 2012, 13:08
Wie ist es so (ohne with)?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  ACom: TCom;
begin
  ACom := TCom.Create(nil);
  try
    // com öffnen
    if ACom.Open(COM,RTS_DISABLED,DTR_DISABLED) then
      try
        Memo1.Lines.Add ('Com'+IntToStr(Com)+' ausgewählt!');
        ACom.SetRTS(akt);
      finally
        // com schließen
        ACom.Close;
      end;
  finally
    ACom.Free;
  end;
end;
[edit] Steht da wirklich ein Vergleich mit true im Komponentencode? Wirf den lieber raus, da fehleranfällig. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von guinnes
guinnes

Registriert seit: 28. Feb 2007
Ort: Bottrop
265 Beiträge
 
Delphi 5 Enterprise
 
#5

AW: TSerial - RS232 ansprechen

  Alt 2. Apr 2012, 13:10
Delphi-Quellcode:
procedure TCOM.SetRTS(const Value: boolean);
begin
  if (Value = True) then
    EscapeCommFunction(FHandle, WinTypes.SETRTS)
  else
    EscapeCommFunction(FHandle, WinTypes.CLRRTS);
end;
http://www.delphi-treff.de/tutorials...faengerfehler/
Glückauf
  Mit Zitat antworten Zitat
LuJ

Registriert seit: 10. Sep 2008
4 Beiträge
 
Delphi 5 Standard
 
#6

Re: TSerial - RS232 ansprechen

  Alt 16. Sep 2008, 14:10
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.
  Mit Zitat antworten Zitat
arnold mueller

Registriert seit: 27. Jul 2005
129 Beiträge
 
#7

Re: TSerial - RS232 ansprechen

  Alt 16. Sep 2008, 14:52
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
  Mit Zitat antworten Zitat
LuJ

Registriert seit: 10. Sep 2008
4 Beiträge
 
Delphi 5 Standard
 
#8

Re: TSerial - RS232 ansprechen

  Alt 17. Sep 2008, 12:13
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!
  Mit Zitat antworten Zitat
Benutzerbild von zebrafalke
zebrafalke

Registriert seit: 25. Feb 2006
155 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: TSerial - RS232 ansprechen

  Alt 7. Nov 2008, 13:50
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
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: TSerial - RS232 ansprechen

  Alt 7. Nov 2008, 17:00
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
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte » 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:15 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