Probleme avec port usb en visual basic express

Résolu
Signaler
Messages postés
4
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
20 juin 2007
-
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011
-
Bonjour,
pendant mon stage, je suis chargé de déveloper un logiciel pour piloter une petite machine. Le logiciel est pret, il fonctionne sur mon pc.
pour communiquer, je dispose d'un port serie et aussi d'un adaptateur serie/usb pour pouvoir connecter la machine a un pc qui n'a pas de port serie.
je demande donc au programme d'aller chercher dans la base de registre le numero COM... qui a été créé lors de la connection de la machine.
je vais donc chercher dans : HKEY_LOCAL_MACHINE\system\currentcontrolset\enum\usb\vid_067b&PID_2303\5&21ed38b5&0&1
le probleme, c'est que sur le deuxieme pc le denier repertoire ne porte pas le meme nom. le seul point commun est le 5& du debut... est ce qu'il est possible d'ouvrir un repertoire dont on connait que le debut du nom et si oui comment? sinon y-a-t-il une autre solution?
Merci d'avance de l'aide que vous pourrez m'apporter
Francois

5 réponses

Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011

Imports
Microsoft.Win32





Dim keylocalmachine As Microsoft.Win32.RegistryKey
keylocalmachine = Microsoft.Win32.Registry.LocalMachine
Dim key As Microsoft.Win32.RegistryKey
key = keylocalmachine.OpenSubKey("SYSTEM\CurrentControlSet\Enum\USB\Vid_067b&Pid_2303")

dim sKeys() as String = key.GetKeyNames()

for each sKey in sKeys
   if sKey like "5&*" then
      exit for
   end if
next

Dim deviceparameters As Microsoft.Win32.RegistryKey
deviceparameters = key.OpenSubKey(sKey & "\Device Parameters")
Me.SerialPort1.PortName = CType(deviceparameters.GetValue("PortName"), String)






peut etre ai je mal compris tu m'en verrais dsl je trouve pas tout tres clair de plus j'ai regardé sur ma base de registre les numero de serie different donc si tu veux publier ton application ca risque de te surprendre ca aussi

TeBeCo
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Si tu utilise VB2005 regarde du coté de la classe System.IO.SerialPort, elle contient tout ce qu'il faut pour gérer un port série.

Et notament la méthode GetPortName qui va te renvoyer la liste des nom de ports séries déclarés sur le poste

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
4
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
20 juin 2007

bonjour,
merci de ta réponse, mais j'ai deja beaucoup cherché a ce niveau la et je n'arrive pas a trouver ce qui m'interesse. Le probleme est que je ne sais pas quel nom aura le port que je vais utiliser, la seule facon dont je dispose pour savoir de quel port il s'agit est de passer par la base de registre et de retrouvrer mon serial to usb converter...et du coup le probleme du repertoire qui change de nom selon les ordinateurs reapparait.
est il possible de selectionner un repertoire uniquement avec le debut de son nom?
voici la procedure de recherche du port :

Imports Microsoft.Win32

Dim keylocalmachine
As Microsoft.Win32.RegistryKey
keylocalmachine = Microsoft.Win32.Registry.LocalMachine

Dim keysystem
As Microsoft.Win32.RegistryKey
keysystem = keylocalmachine.OpenSubKey(
"SYSTEM")
D
im keycurrentcontrolset
As Microsoft.Win32.RegistryKey
keycurrentcontrolset = keysystem.OpenSubKey(
"CurrentControlSet")

Dim kenum
As Microsoft.Win32.RegistryKey
kenum = keycurrentcontrolset.OpenSubKey(
"Enum")

Dim kusb
As Microsoft.Win32.RegistryKey
kusb = kenum.OpenSubKey(
"USB")

Dim vidpid
As Microsoft.Win32.RegistryKey
vidpid = kusb.OpenSubKey(
"Vid_067b&Pid_2303\5&21ed38b5&0&1")

Dim deviceparameters
As Microsoft.Win32.RegistryKey
deviceparameters = vidpid.OpenSubKey(
"Device Parameters")

Me.SerialPort1.PortName =
CType(deviceparameters.GetValue(
"PortName"),
String)
Messages postés
4
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
20 juin 2007

Salut
merci pour l'aide, sinon j'ai trouvé une autre solution, en interrogeant le nom du repertoire...
Dim

vidpid
As Microsoft.Win32.RegistryKey
vidpid = kusb.OpenSubKey(
"Vid_067b&Pid_2303")
Dim SousDos()
As
String = vidpid.GetSubKeyNames

Dim Dossier
As
String
Dossier = SousDos.GetValue(0).ToString

Dim zero
As Microsoft.Win32.RegistryKey
zero = vidpid.OpenSubKey(Dossier)

Dim deviceparameters
As Microsoft.Win32.RegistryKey
deviceparameters = zero.OpenSubKey(
"Device Parameters")

Me.SerialPort1.PortName =
CType(deviceparameters.GetValue(
"PortName"),
String)
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011

content que tu ai trouvé :p

TeBeCo