Probleme avec port usb en visual basic express

Résolu
soulseek85 Messages postés 4 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 20 juin 2007 - 19 juin 2007 à 17:28
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011 - 20 juin 2007 à 18:16
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

TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
20 juin 2007 à 13:16
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
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
19 juin 2007 à 20:43
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
0
soulseek85 Messages postés 4 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 20 juin 2007
20 juin 2007 à 09:46
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)
0
soulseek85 Messages postés 4 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 20 juin 2007
20 juin 2007 à 14:22
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
20 juin 2007 à 18:16
content que tu ai trouvé :p

TeBeCo
0
Rejoignez-nous