OVH Cloud OVH Cloud

Recherche des ports série existants

5 réponses
Avatar
Bertrand Lenoir-Welter
Tiens, pendant que j'y suis, est-ce qu'il existe une méthode
intelligente qui permet de savoir si un port série COM* existe sur le PC ?

Je dis ça parce que j'utilise une méthode très bête qui consiste à
balayer de COM1 à COM12 avec CreateFile() et voir sur lesquels j'obtiens
un handle. Ca marche pas trop mal, sauf qu'avec certains convertisseurs
USB->Série, heureusement rares, ça fait badaboum.

Désolé de vous embêter encore avec mes vieux ports série...

5 réponses

Avatar
Christian ASTOR
Bertrand Lenoir-Welter wrote:
Tiens, pendant que j'y suis, est-ce qu'il existe une méthode
intelligente qui permet de savoir si un port série COM* existe sur le PC ?



Par ex, avec QueryDosDevice()
Avatar
Bertrand Lenoir-Welter
> Par ex, avec QueryDosDevice()



Super. Et apparemment, ça marche aussi bien avec un convertisseur
USB->Série qu'avec un vrai port série.

Merci Christian, une fois de plus.
Avatar
Thierry
Bonjour,

Bertrand Lenoir-Welter a écrit :

Tiens, pendant que j'y suis, est-ce qu'il existe une méthode
intelligente qui permet de savoir si un port série COM* existe sur le
PC ?



HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionPorts ?

--
« Le travail est probablement ce qu'il y a sur cette terre de plus bas et
de plus ignoble. Il n'est pas possible de regarder un travailleur sans
maudire ce qui a fait que cet homme travaille, alors qu'il pourrait nager,
dormir dans l'herbe ou simplement lire ou faire l'amour avec sa femme. »
Boris VIAN
Mon blog RSS : http://yarglah.free.fr/monblog_rss.php <<




Avatar
Aurelien Regat-Barrel
Bertrand Lenoir-Welter a écrit :
Tiens, pendant que j'y suis, est-ce qu'il existe une méthode
intelligente qui permet de savoir si un port série COM* existe sur le PC ?

Je dis ça parce que j'utilise une méthode très bête qui consiste à
balayer de COM1 à COM12 avec CreateFile() et voir sur lesquels j'obtiens
un handle. Ca marche pas trop mal, sauf qu'avec certains convertisseurs
USB->Série, heureusement rares, ça fait badaboum.

Désolé de vous embêter encore avec mes vieux ports série...



6 manières de faire:
http://www.naughter.com/enumser.html

J'avais retenu que l'approche bourrin que tu utilises n'est pas si mal,
car en même temps tu vérifies que le port est libre et non utilisé par
une autre appli.
Du coup, pourrais-tu en dire un peu plus sur ce "badaboum" ?


--
Aurélien Regat-Barrel
Avatar
Bertrand Lenoir-Welter
> 6 manières de faire:
http://www.naughter.com/enumser.html



Ok, merci, mais j'ai définitivement adopté le QueryDosDevice() suggéré
par Christian. Simple et efficace, y compris pour les convertisseurs
USB-Série qui m'ont causé tant de soucis.


J'avais retenu que l'approche bourrin que tu utilises n'est pas si mal,
car en même temps tu vérifies que le port est libre et non utilisé par
une autre appli.
Du coup, pourrais-tu en dire un peu plus sur ce "badaboum" ?



Sur "certains" PC , je sais pas pourquoi, CreateFile() sur un port non
existent déclenche une exception. Me demandez pas de détails, ça m'est
pas arrivé ici mais chez quelques - rares - clients. Je voulais donc une
fonction qui filtre les ports avant le CreateFile() pour éviter ça. Pour
moi, maintenant, QueryDosDevice() me dit si le port existe, CreateFile()
s'il est disponible, et ensuite ma petite cuisine cherche à y détecter
l'automate. Chacune sa spécialité.