OVH Cloud OVH Cloud

port comm urgent

6 réponses
Avatar
msillienne
bonjour a vous ,=20
je voudrais dans mon menu cr=E9er en vb6, faire apparaitre=20
la fentre de propri=E9t=E9 de mon port comm comment faire=20
dans mon appli les utilisateur seront dans des config=20
diff=E9rente alors ils pourrons choisir quel port est=20
disponible ??? comment faire svp

6 réponses

Avatar
ng
Salut,

Je n'ai pas très bien compris, tu veux lister les ports disponibles ?
AMHA le plus simple et de mettre de COM1 à COM5 seulement puis l'utilisateur
se débrouille pour choisir un port qui lui convient.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

msillienne wrote:
bonjour a vous ,
je voudrais dans mon menu créer en vb6, faire apparaitre
la fentre de propriété de mon port comm comment faire
dans mon appli les utilisateur seront dans des config
différente alors ils pourrons choisir quel port est
disponible ??? comment faire svp


Avatar
Vincent Guichard
ng a écrit :
Salut,

Je n'ai pas très bien compris, tu veux lister les ports disponibles ?
AMHA le plus simple et de mettre de COM1 à COM5 seulement puis l'utilisateur
se débrouille pour choisir un port qui lui convient.



Oui, mais je connais beaucoup de config (dans mon millieu tout au moins)
qui ont plus de 5 ports COM. Une solution est d'en mettre 16 (c'est je
crois la limitte max de MSComm). Un autre est d'aller faire Joujou avec
la base de registre pour lister les ports du système. Il exite
probablement une autre solution.

Sinon, je vais essayer de retrouver un bout de code que j'ai écris qui
fais ça (lister les ports COM disponibles).

Vincent Guichard
Avatar
Vincent Guichard
Vincent Guichard a écrit :
Sinon, je vais essayer de retrouver un bout de code que j'ai écris qui
fais ça (lister les ports COM disponibles).



Voila, j'ai remis la main dessus: La fonction GetSerialCOMM retourne un
tableau de chaines contenant la liste des ports COM disponibles (nom du
device et nom du port).
Bien sûr, ce code est fournis "Tel-Quel" ... etc.

Vincent Guichard

Option Explicit

Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias
"RegOpenKeyExA" _
(ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As
Long, _
ByVal samDesired As Long, phkResult As Long) As Long

Private Declare Function RegEnumValue Lib "advapi32.dll" Alias
"RegEnumValueA" _
(ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As
String, _
lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, _
lpData As Any, lpcbData As Long) As Long

Private Declare Function RegCloseKey Lib "advapi32.dll" _
(ByVal hKey As Long) As Long
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const SYNCHRONIZE = &H100000
Private Const STANDARD_RIGHTS_READ = &H20000
Private Const STANDARD_RIGHTS_WRITE = &H20000
Private Const STANDARD_RIGHTS_EXECUTE = &H20000
Private Const STANDARD_RIGHTS_REQUIRED = &HF0000
Private Const STANDARD_RIGHTS_ALL = &H1F0000
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_SET_VALUE = &H2
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_NOTIFY = &H10
Private Const KEY_CREATE_LINK = &H20
Private Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or
KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Private Const REG_DWORD = 4 ' 32-bit number
Private Const REG_BINARY = 3 ' Free form binary
Private Const REG_SZ = 1 ' Unicode nul
terminated string

Private Const ERROR_SUCCESS = 0&

Public Function ArrayOfByteToString(ByRef Data() As Byte, ByVal Size As
Long) As String
Dim index As Long
For index = 0 To Size
If Data(index) = 0 Then Exit Function
ArrayOfByteToString = ArrayOfByteToString & Chr(Data(index))
Next index
End Function

Public Function GetSerialCOMM() As String()
Dim Ret() As String
Dim KeyStr As String
KeyStr = "HardwareDeviceMapSerialCOMM"
Dim hKey As Long
If ERROR_SUCCESS <> RegOpenKeyEx(HKEY_LOCAL_MACHINE, _
KeyStr, 0, KEY_READ, hKey) Then Exit Function
Dim index As Long
Dim Name As String, NameSize As Long
Dim Data As String, DataB(255) As Byte, DataSize As Long
Name = Space(255): NameSize = 255
Data = Space(255): DataSize = 255
index = 0
While ERROR_SUCCESS = RegEnumValue(hKey, index, Name, NameSize, 0,
0, DataB(0), DataSize)
ReDim Preserve Ret(0 To 1, 0 To index)
Ret(0, index) = Left(Name, NameSize)
Data = ArrayOfByteToString(DataB, DataSize - 1)
Ret(1, index) = Data
Name = Space(255): NameSize = 255
Data = Space(255): DataSize = 255
index = index + 1
Wend
GetSerialCOMM = Ret
End Function
Avatar
ng
Salut,
Oui en effet on peut tjrs prévoir une marge supérieure pour éviter d'avoir
des problèmes avec certaines configs, mais bon ca dépend aussi de al cible
de l'appli, pour le grand public on utilise rarement plus de 5 ports (en
comptant les ports virtuels style pour les périphériques Bluetooth...)

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Vincent Guichard wrote:
ng a écrit :
Salut,

Je n'ai pas très bien compris, tu veux lister les ports disponibles ?
AMHA le plus simple et de mettre de COM1 à COM5 seulement puis
l'utilisateur se débrouille pour choisir un port qui lui convient.



Oui, mais je connais beaucoup de config (dans mon millieu tout au
moins) qui ont plus de 5 ports COM. Une solution est d'en mettre 16
(c'est je crois la limitte max de MSComm). Un autre est d'aller faire
Joujou avec la base de registre pour lister les ports du système. Il
exite probablement une autre solution.

Sinon, je vais essayer de retrouver un bout de code que j'ai écris qui
fais ça (lister les ports COM disponibles).

Vincent Guichard


Avatar
msillienne
merci a vous ,
mais mon messag n'est pas trés claire je voulais afficher
la boite de dialogue de propriété du port comm , lorsque
j'ajoute un objet port comm dans mon userform, je peux
faire propriété de ce dernier eh bien c'est cette fenetre
que je veux faire affciher dans un menu
es ce possible ????.?
merci avous



Avatar
ng
Salut,

C'est uniquement une boite de design, il faudra en créer une toi même.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

msillienne wrote:
merci a vous ,
mais mon messag n'est pas trés claire je voulais afficher
la boite de dialogue de propriété du port comm , lorsque
j'ajoute un objet port comm dans mon userform, je peux
faire propriété de ce dernier eh bien c'est cette fenetre
que je veux faire affciher dans un menu
es ce possible ????.?
merci avous