![]() |
Bluetooth und AsyncPro
Hallo zusammen,
eine Frage zu einer seriellen Verbindung via Bluetooth - Bluetooth dongle an einem USB-Port im Notebook - Gerätemanager zeigt virtuellen COM Port auf COM 9 - Verbindung mit Hyperterminal funktioniert - Daten lassen sich von und zum Bluetooth Gerät übertragen Nun das Ganze in einem Delphi Programm mit AsycnPro Beim Öffenen des COM Ports gibt es eine Exception, Exception kann von AsyncPro nicht zugeordnet werden. Debuggen im Programm liefert eine Stelle ( in AsyncPro.AWUser) mit einem Aufruf von CREATEFILE mit dem COM-Namen \\.\COM9 , das klappt nicht! Zum Vergleich das Programm mit einem „normalen“ seriellen USB-Port (COM5) gestartet und die Stelle bei CREATEFILE überprüft, dort wird mit \\.\COM5 aufgerufen und alles klappt wie gewünscht. Brauche ich da einen Zauberstab von Microsoft :? Ich arbeite schon mehrer Jahre mit AyncPro und kenne eigentlich die übleichen Probleme, aber das ist neu! |
AW: Bluetooth und AsyncPro
Kannst du dir anzeigen lassen, welchen Fehlercode (GetLastError) das CreateFile dort zurückliefert?
Und wie sehen die anderen Parameter des CreateFile-Aufrufs aus? Zitat:
Was gerne vorkommt, daß irgendein anderes Programm den Port schon exklusiv geöffnet hat und dann kein Anderer mehr drauf zugreifen kann. |
AW: Bluetooth und AsyncPro
Hallo yogie,
benutzt Du noch Delphi 6 Prof? Bis bald Chemiker |
AW: Bluetooth und AsyncPro
.. das ging schnell
Auszug aus AsyncPro Result := CreateFile(ComName, {name} GENERIC_READ or GENERIC_WRITE, {access attributes} 0, {no sharing} nil, {no security} OPEN_EXISTING, {creation action} FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED, {attributes} 0); {no template} als Result kommt -1 @ Chemiker : ja immer noch D6 Pro @ himitsu : das problem ist bekannt, der Fehler tritt auch unmittelbar nach einem reboot auf Ich lasse AsyncPro nach verfügbaren COM Ports suchen, manch mal ist der Bluetooth Port in der Liste, manchmal nicht, obwohl er im Gerätemanager immer auftaucht! Zusatz: GetLastError liefert als code 1168 das ist laut einer Liste "Element not found" |
AW: Bluetooth und AsyncPro
Hallo yogie,
um auszuschließen, dass es am Delphi-Programm liegt, benutze ich immer einen virtuellen COM-Port (Com0Comm) um unter kontrollierte Bedingungen Fehler im Programm auszuschließen. Wenn die Übertragung dann nicht funktioniert liegt es nicht am Programm, sondern am Adapter. Und es ist leider so, dass nicht jeder Adapter geeignet ist. Bis bald Chemiker |
AW: Bluetooth und AsyncPro
Kann AsyncPro bis max. COM-Port 255 arbeiten ?
Evtl. ist ein Limit gesetzt. Alternative: 1. Alle Geräte deaktivieren, die auf einen COM-Port zugreifen. 2. Unter "Systemsteuerung - System - Erweitert - Umgebungsvariablen - Systemvariablen" einen neuen Eintrag erstellen: devmgr_show_nonpresent_devices Wert: 1 3. Im Gerätemanager unter "Ansicht" auswählen: Geräte nach Typ und Ausgeblendete Geräte anzeigen Dort sollten jetzt alle COM-Ports, auch die zur Zeit nicht genutzten, angezeigt werden. Nicht gewünschte COM-Ports löschen: Mit einem Rechtsklick auf den jeweiligen Anschluss kann dann in dem erscheinenden Kontextmenü die Option "Deinstallieren" gewählt werden. |
AW: Bluetooth und AsyncPro
@ hathor : danke für den Tip
nein, kein Limit ich habe in anderen Anwendungen schon COM Ports mit Nummern bis 20 verwendet. AsyncPro sucht bei nicht eingestellter Nummer (soweit ich weiß) bis 255- |
AW: Bluetooth und AsyncPro
Ändere den Modus trotzdem mal testweise auf sharing
|
AW: Bluetooth und AsyncPro
Win XP mit SP2 benutzt einen internen Zähler, um die COM-Ports zu verwalten.
Diesen kann man zurücksetzen, indem man über Start, Ausführen, das Programm Regedit aufruft. Dann dort unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\COM Name Arbiter den Wert "ComDB" auf "0F" stellen. Danach zählt Win XP wieder ab COM 5 hoch. |
AW: Bluetooth und AsyncPro
Hier noch eine kurze Meldung zu meinem Problem:
Es liegt nicht ausschließlich am öffnen des Ports. Ich lasse AsyncPro nach verfügbaren Ports suchen. Das hat bisher auch immer funktioniert. In Zusamenhang mit Bluetooth geht da aber was schief. Ich vermute wegen der langen Antwortzeiten beim Aufbau der Verbindung. Das dann folgende Open auf den (verfügbaren) Port liefert dann den Fehler. Ich werde das aber noch genauer darstelen. Jetzt ist aber erstmal Schluß! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 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