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 4 von 5   « Erste     234 5      
Benutzerbild von Lee500
Lee500

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

Re: TSerial - RS232 ansprechen

  Alt 20. Okt 2009, 17:03
Also ich habe mir jetz ne LED an einen ausgang gebastelt. Wenn ich per Delphi sende passiert gar nix. Mach ichs per HyperTerminal geht sie an sobald ich was sende.

Zitat:
Hast Du z.B. daran gedacht RX und TX zu kreuzen? Senden auf der einen ist ja Empfangen auf der anderen Seite.
Wenn ich das nicht getan hätte würde die Verbindung wohl kaum mit dem HT gehen oder?

Gruß Lee
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

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

Re: TSerial - RS232 ansprechen

  Alt 20. Okt 2009, 17:17
Wenn Du nicht ganz grobe Verdrahtungsfehler drin hast (wovon ich nicht ausgehe) dann zeigt das ja zumindest schonmal, dass das Senden an den Controller geht, wenn auch nicht mit Delphi . Geht denn auch die Antwort des Controllers? Die sollte durchaus auch per Hyperterminal zu sehen sein. Wenn das klappt, sind wir schonmal einen Schritt weiter mit der Fehlereingrenzung. Wenn der Part des Controllers dann komplett funktioniert, dann sehen wir uns die Delphi-Seite an. Immer einen Schritt nach dem anderen machen.
"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
Benutzerbild von Lee500
Lee500

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

Re: TSerial - RS232 ansprechen

  Alt 20. Okt 2009, 17:22
Ja der Hardware Teil funktioniert. Wenn ich per HyperTerminal ein 'x' sende, antwortet mir der Controller mit '12345678'.

Wenn ich per HT sende geht die LED auch an, da der Controller ein Zeichen empfangen hat. Bei Delphi ist dies nicht der fall. Also vermute ich mal, sendet Delphi gar nicht, oder so, dass der Controller es nicht lesen kann.

Gruß Lee
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#34

Re: TSerial - RS232 ansprechen

  Alt 20. Okt 2009, 17:23
Hast du schon mit Portmon nachgeschaut, was da rein und raus geht?
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Lee500
Lee500

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

Re: TSerial - RS232 ansprechen

  Alt 20. Okt 2009, 17:32
Per HT sagt mir Portmon folgendes:
Delphi-Quellcode:
0.12418143   hypertrm.exe   IRP_MJ_CREATE   Serial2   SUCCESS   Options: Open    
0.00000782   hypertrm.exe   IOCTL_SERIAL_SET_QUEUE_SIZE   Serial2   SUCCESS   InSize: 8192 OutSize: 8192   
0.00000251   hypertrm.exe   IOCTL_SERIAL_CONFIG_SIZE   Serial2   SUCCESS   Size: 0   
0.00000196   hypertrm.exe   IOCTL_SERIAL_GET_BAUD_RATE   Serial2   SUCCESS      
0.00000196   hypertrm.exe   IOCTL_SERIAL_GET_LINE_CONTROL   Serial2   SUCCESS      
0.00000196   hypertrm.exe   IOCTL_SERIAL_GET_CHARS   Serial2   SUCCESS      
0.00000196   hypertrm.exe   IOCTL_SERIAL_GET_HANDFLOW   Serial2   SUCCESS      
0.00000196   hypertrm.exe   IOCTL_SERIAL_GET_BAUD_RATE   Serial2   SUCCESS      
0.00000196   hypertrm.exe   IOCTL_SERIAL_GET_LINE_CONTROL   Serial2   SUCCESS      
0.00000196   hypertrm.exe   IOCTL_SERIAL_GET_CHARS   Serial2   SUCCESS      
0.00000196   hypertrm.exe   IOCTL_SERIAL_GET_HANDFLOW   Serial2   SUCCESS      
0.00000223   hypertrm.exe   IOCTL_SERIAL_SET_BAUD_RATE   Serial2   SUCCESS   Rate: 9600   
0.00275426   hypertrm.exe   IOCTL_SERIAL_SET_RTS   Serial2   SUCCESS      
0.00297496   hypertrm.exe   IOCTL_SERIAL_SET_DTR   Serial2   SUCCESS      
0.00000279   hypertrm.exe   IOCTL_SERIAL_SET_LINE_CONTROL   Serial2   SUCCESS   StopBits: 1 Parity: NONE WordLength: 8   
0.00295652   hypertrm.exe   IOCTL_SERIAL_SET_CHAR   Serial2   SUCCESS   EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13   
0.01298852   hypertrm.exe   IOCTL_SERIAL_SET_HANDFLOW   Serial2   SUCCESS   Shake:80000001 Replace:80000040 XonLimit:80 XoffLimit:200   
0.00000391   hypertrm.exe   IOCTL_SERIAL_SET_TIMEOUTS   Serial2   SUCCESS   RI:10 RM:0 RC:0 WM:0 WC:5000   
0.00000363   hypertrm.exe   IOCTL_SERIAL_SET_WAIT_MASK   Serial2   SUCCESS   Mask: RLSD ERR    
0.00000000   hypertrm.exe   IOCTL_SERIAL_WAIT_ON_MASK   Serial2         
0.00000000   hypertrm.exe   IRP_MJ_READ   Serial2      Length 80   
0.00076993   hypertrm.exe   IRP_MJ_WRITE   Serial2   SUCCESS   Length 1: .   
0.00000670   hypertrm.exe   IOCTL_SERIAL_GET_COMMSTATUS   Serial2   SUCCESS      
0.00092945   hypertrm.exe   IRP_MJ_WRITE   Serial2   SUCCESS   Length 1: .   
21.23459630   hypertrm.exe   IRP_MJ_READ   Serial2   TIMEOUT   Length 8: 12305678
per Delphi macht es das:
Delphi-Quellcode:
0.12224207   Zeitmessung.exe   IRP_MJ_CREATE   Serial2   SUCCESS   Options: Open    
0.00000475   Zeitmessung.exe   IOCTL_SERIAL_GET_BAUD_RATE   Serial2   SUCCESS      
0.00000251   Zeitmessung.exe   IOCTL_SERIAL_GET_LINE_CONTROL   Serial2   SUCCESS      
0.00000223   Zeitmessung.exe   IOCTL_SERIAL_GET_CHARS   Serial2   SUCCESS      
0.00000223   Zeitmessung.exe   IOCTL_SERIAL_GET_HANDFLOW   Serial2   SUCCESS      
0.00000196   Zeitmessung.exe   IOCTL_SERIAL_GET_BAUD_RATE   Serial2   SUCCESS      
0.00000196   Zeitmessung.exe   IOCTL_SERIAL_GET_LINE_CONTROL   Serial2   SUCCESS      
0.00000196   Zeitmessung.exe   IOCTL_SERIAL_GET_CHARS   Serial2   SUCCESS      
0.00000196   Zeitmessung.exe   IOCTL_SERIAL_GET_HANDFLOW   Serial2   SUCCESS      
0.00000196   Zeitmessung.exe   IOCTL_SERIAL_SET_BAUD_RATE   Serial2   SUCCESS   Rate: 9600   
0.00277857   Zeitmessung.exe   IOCTL_SERIAL_CLR_RTS   Serial2   SUCCESS      
0.00299871   Zeitmessung.exe   IOCTL_SERIAL_CLR_DTR   Serial2   SUCCESS      
0.00000251   Zeitmessung.exe   IOCTL_SERIAL_SET_LINE_CONTROL   Serial2   SUCCESS   StopBits: 1 Parity: NONE WordLength: 8   
0.00295764   Zeitmessung.exe   IOCTL_SERIAL_SET_CHAR   Serial2   SUCCESS   EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13   
0.00000307   Zeitmessung.exe   IOCTL_SERIAL_SET_HANDFLOW   Serial2   SUCCESS   Shake:80000000 Replace:80000000 XonLimit:2048 XoffLimit:512   
0.00000223   Zeitmessung.exe   IOCTL_SERIAL_SET_QUEUE_SIZE   Serial2   SUCCESS   InSize: 1024 OutSize: 1024   
0.00000223   Zeitmessung.exe   IOCTL_SERIAL_SET_TIMEOUTS   Serial2   SUCCESS   RI:0 RM:0 RC:1 WM:0 WC:0   
0.00090235   Zeitmessung.exe   IRP_MJ_WRITE   Serial2   SUCCESS   Length 1: x   
0.00000279   Zeitmessung.exe   IOCTL_SERIAL_GET_COMMSTATUS   Serial2   SUCCESS      
0.00000223   Zeitmessung.exe   IOCTL_SERIAL_GET_COMMSTATUS   Serial2   SUCCESS      
0.00000223   Zeitmessung.exe   IOCTL_SERIAL_GET_COMMSTATUS   Serial2   SUCCESS      
0.00000251   Zeitmessung.exe   IOCTL_SERIAL_GET_COMMSTATUS   Serial2   SUCCESS      
0.00000223   Zeitmessung.exe   IOCTL_SERIAL_GET_COMMSTATUS   Serial2   SUCCESS      
0.00000251   Zeitmessung.exe   IOCTL_SERIAL_GET_COMMSTATUS   Serial2   SUCCESS      
0.00000223   Zeitmessung.exe   IOCTL_SERIAL_GET_COMMSTATUS   Serial2   SUCCESS      
... es folgt noch mehr davon
Gruß Lee
  Mit Zitat antworten Zitat
Klaus01

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

Re: TSerial - RS232 ansprechen

  Alt 20. Okt 2009, 18:28
.. in Deinem 2. Protokoll taucht doch ein x auf
Zitat:
.00090235 Zeitmessung.exe IRP_MJ_WRITE Serial2 SUCCESS Length 1: x
Wohingegen im 1. Protokoll zwei mal der Punkt '.' auftaucht.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Lee500
Lee500

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

Re: TSerial - RS232 ansprechen

  Alt 20. Okt 2009, 18:30
Das hat ja nix zu sagen, weil es das Zeichen ist was gesendet wird. Der Controller sendet aber auch zurück wenn er ein x bekommt, da er sendet sobald ein Zeichen kommt, egal welches.

Gruß Lee

//EDIT: Habe jetzt herausgefunden warum es nicht ging. Mein Controller erwartete einen Zeilenumbruch bzw. ein Zeilenende oder sowas. Ohne dieses Ende antwortet er nicht, weil er glaubt nichts empfangen zu haben. Jetzt, mit Zeilenumbruch, funktioniert es wunderbar.
  Mit Zitat antworten Zitat
delphihasen

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

AW: TSerial - RS232 ansprechen

  Alt 2. Apr 2012, 12: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 12:48 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: TSerial - RS232 ansprechen

  Alt 2. Apr 2012, 13: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
 
#40

AW: TSerial - RS232 ansprechen

  Alt 2. Apr 2012, 14: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
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 16:55 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