AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Einzelnen Pin an der Seriellen Schnittstelle abfragen
Thema durchsuchen
Ansicht
Themen-Optionen

Einzelnen Pin an der Seriellen Schnittstelle abfragen

Ein Thema von Alex_ITA01 · begonnen am 5. Aug 2008 · letzter Beitrag vom 8. Aug 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von OldGrumpy
OldGrumpy

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

Re: Einzelnen Pin an der Seriellen Schnittstelle abfragen

  Alt 6. Aug 2008, 14:48
Au man, die Hitze bekommt mir wirklich nicht Ich schau mir jetzt gerade mal Code eines Objektes fürs Eventhandling einer seriellen Schnittstelle an. Mal schauen ob die was anders machen.

Also auf den zweiten Blick kommt mir das spanisch vor, was Du da mit der TmpMask anstellst. Das ist doch eine bitorientierte Flagsammlung, setzt Du da überhaupt den richtigen Wert? Setz mal bitte einen Breakpoint beim SetCommMask und sag mir welchen Zahlenwert TmpMask an der Stelle hat...
"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
Alex_ITA01

Registriert seit: 22. Sep 2003
1.123 Beiträge
 
Delphi 12 Athens
 
#12

Re: Einzelnen Pin an der Seriellen Schnittstelle abfragen

  Alt 6. Aug 2008, 15:07
Folgendes steht in tmpMask drinne:

EV_RXCHAR (= 1)

Ich habe es auch schon probiert, indem ich tmpMask auf EV_RING (=256 = $100) setze aber das ändert auch nix...

Danke erstmal für deine Bemühungen.
Hoffentlich kannst du mir noch ein wenig helfen.

Kann es evtl. sein, dass GetCommModemStatus nicht mehr bei WinXP unterstützt wird?
Weil ich bekomme immer eine 0 zurückgeliefert in nStatus.

Gruß
Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

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

Re: Einzelnen Pin an der Seriellen Schnittstelle abfragen

  Alt 6. Aug 2008, 15:36
Hmm... Kannste mal etwas mehr Code liefern? Vielleicht suchen wir gerade an der falschen Stelle... Wäre z.B. super hilfreich wenn Du die Codeblöcke fürs Init und Eventhandling etwas besser trennen könntest. Für mich sieht der Code irgendwie aus als wenn Du direkt nach dem Öffnen des Ports einen Event behandeln willst... Wo kommen z.B. die Sachen wie RXEvent her?
"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
Alex_ITA01

Registriert seit: 22. Sep 2003
1.123 Beiträge
 
Delphi 12 Athens
 
#14

Re: Einzelnen Pin an der Seriellen Schnittstelle abfragen

  Alt 6. Aug 2008, 15:40
Also das ist in alles in einer Komponente von unserer Firma. Daher nur der Ausschnitt oben...
Das Event ist nur eine Eigenschaft der Kompo aber die steht standardmäßig auf EV_RXCHAR.

Ich habe dann nur noch ein Thread außenrum, der zyklisch prüft, ob sich auf der Schnittstelle was tut...

Delphi-Quellcode:
if GetCommModemStatus(SerHandle, nStatus) then
begin
  if ((nStatus and MS_CTS_ON) > 0) or
     ((nStatus and MS_DSR_ON) > 0) or
     ((nStatus and MS_RING_ON) > 0) or
     ((nStatus and MS_RLSD_ON) > 0) then
    Result := True;
end;
Selbst wenn ich Zyklisch im Thread das oben aufrufe, ist Result immer False...
Mehr benutze ich nicht.

Viele Grüße
Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

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

Re: Einzelnen Pin an der Seriellen Schnittstelle abfragen

  Alt 6. Aug 2008, 16:01
das Eventding wirst Du umbauen müssen, denn Du willst ja auf mehrere Events reagieren und nicht nur auf eines, oder? Momentan kannst Du ja entweder auf RI oder auf ankommende Zeichen triggern, und wenn ich Dich richtig verstanden habe, willst Du ja beides. Da müsste der Flagwert also $101 sein. Desweiteren solltest Du bei den ganzen API-Aufrufen IMMER den Rückgabewert checken. Wenn der (bei BOOL APIs) nicht TRUE ist, dann mit GetLastError mehr Infos holen. So lässt sich der Fehler einkreisen. Zu allerletzt noch eine Idee... Es gibt Hardware die den RI gar nicht angeschlossen hat. Ist zwar ne schlechte Idee, aber schon zu meinen Mailboxzeiten gab es z.B. auch Modems die nur ein RING schickten statt den Pin zu ziehen. Teilweise wars auch nach Gusto konfigurierbar.

Jedenfalls lässt Deine Konstruktion da offen ob schon der Aufruf von GetCommModemStatus fehlschlug oder nur die Bits alle null waren.
"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
Alex_ITA01

Registriert seit: 22. Sep 2003
1.123 Beiträge
 
Delphi 12 Athens
 
#16

Re: Einzelnen Pin an der Seriellen Schnittstelle abfragen

  Alt 6. Aug 2008, 16:09
Erstmal Danke für die Infos.
Habe folgendes probiert:

Anstatt

if SetCommMask(SerHandle, TmpMask) then habe ich jetzt

if SetCommMask(SerHandle, TmpMask or EV_RING) then probiert. Das müsste ja dann für beide Events sein so wie ich dich verstanden habe.
Dadurch ändert sich mein Problem trotzdem nicht.

Desweiteren ist der Rückgabewert der Funktion GetCommModemStatus True daher ist mit GetLastError nix zu holen.

Außerdem habe ich eine Software gefunden (ComSniffer), welche mir anzeigt ob der RI kommt oder nicht und wenn ich dieses Bit bei meinem "Gegenüber" aktiviere, dann sehe ich dies in dem ComSniffer auch (das heißt, dass Signal liegt also auch Hardwaremäßig an).

Habe echt langsam keine Ideen mehr...
Viele Grüße
Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

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

Re: Einzelnen Pin an der Seriellen Schnittstelle abfragen

  Alt 6. Aug 2008, 23:33
Lies mal das hier aus der Microsoft KB... Interessant. Probiers mal aus!

Nachtrag: Das scheint wohl noch aus Win95-Zeiten zu sein. Ich werd hier mal Hardware aufbauen um es zu testen, das mach ich aber heute nicht mehr. Bin etwas angeschlagen und deshalb gehts heute mal früher ins Bett
"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
Alex_ITA01

Registriert seit: 22. Sep 2003
1.123 Beiträge
 
Delphi 12 Athens
 
#18

Re: Einzelnen Pin an der Seriellen Schnittstelle abfragen

  Alt 7. Aug 2008, 07:59
Guten Morgen und danke erstmal für deine Bemühungen.
EV_RINGTE kann ich leider nicht verwenden, ist nicht mehr vorhanden als Const in der Windows Unit...
Ich hatte es ja gestern mit einem ComPort Sniffer getestet und der hatte mir den RI komischerweise nur ganz kurz angezeigt obwohl ich die Spannung die ganze Zeit an Pin9 messen kann. Evtl. liegt das aber auch an dem Sniffer. Ich weiß ja nicht wie der arbeitet.
Hoffentlich hast du Erfolg mit deinem Aufbau.

Viele Grüße
Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.123 Beiträge
 
Delphi 12 Athens
 
#19

Re: Einzelnen Pin an der Seriellen Schnittstelle abfragen

  Alt 8. Aug 2008, 13:22
Hallo OldGrumpy,
hast du etwas mit deinem Versuchsaufbau erreicht?
Ich habe gestern noch ein bisschen experimentiert und festgestellt, dass wenn ich ein ComPort nehme, den es Hardwaremäßig gar nicht gibt (z.B. ich nehme COM2 obwohl ich nur COM1 habe), dann gibt mir die Funktion GetCommModemStatus mit nachstehenden Vergleich (RI) True zurück...
Komisch...

Viele Grüße
Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 21:32 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