OVH Cloud OVH Cloud

Trouver si un port série existe ???

1 réponse
Avatar
hken
Bonjours à toutes est à tous.
Ba voilà, j'ai une question toute simple. J'ai un bout de programme (ci
dessous) qui ouvre un prot série de mon Pc pour attendre des données sur un
réseau ModBus. Dans ce bout de code, je gére les erreurs. Par exemple si le
port désigné par l'utilisateur n'existe pas, ou s'il est déja occupé, il
renvoie un message d'erreur. C'est à dire qu'après avoir tenté de l'ouvrir,
il le programme s'apperçois qu'il ne peut ouvrir le port demandé donc il
balance unb erreur. Ce que j'aimerais savoir : est-il possible de vérifier
l'existence du port avant même de tenter de l'ouvrir ???? Autrement dis, si
l'utilisateur demande d'ouvrir le Port série N° 9, alors que j'en ais que 2
sur mon Pc, le programme ne tente même pas de l'ouvrir et balance
automatiquement un message d'erreur.

Merci à tous ceux est celles qui prendront la peine de ma répondre.
Merci d'avance...

'------------------ MON PROGRAMME -----------------------
' Initialisation du composant Active X : MSComm
Public Function InitCommunication(Vitesse As Long, Parite As String,
BitDonnees As Integer, BitStop As String) As Boolean
'Retourne True si connexion ouverte
Dim MyParamConnexion As String

On Error GoTo InitCommunicationErr

' Initialisation
MyParamConnexion = Vitesse & "," & Parite & "," & BitDonnees & "," & BitStop

' Ouvre le port si fermé
If MSComm1.PortOpen = False Then
' Définit la propriété InputMode pour la lecture de données binaires
MSComm1.InputMode = comInputModeBinary

' Définit qu'il n'y a pas de protocole matériel
MSComm1.Handshaking = comNone

' Définit les paramètres de connexion
MSComm1.Settings = MyParamConnexion

' Définit le port
MSComm1.CommPort = MyVoie

' Ouvre le port
MSComm1.PortOpen = True

End If
' Lancement du Timer
Timer1 = True
InitCommunication = True
On Error GoTo 0
Exit Function

InitCommunicationErr:
Timer1 = False
Debug.Print "Erreur "; Err.Number & " - " & Err.Description & " dans
InitCommunication"
MsgBox "Le port COM" & MyVoie & " n'est pas disponible.", vbCritical,
"Initcommunication"

On Error GoTo 0
InitCommunication = False
Unload Me

End Function

--
Merci d''''avance pour vos réponses !!

1 réponse

Avatar
Gloops
Salut,

Regarde si tu trouves ton bonheur là :
http://www.mentalis.org/apilist/EnumPorts.shtml

Un exemple tout près est disponible avec la version téléchargeable, mais
je ne l'ai pas vu en ligne, si tu veux je te l'envoie. Peut-être que
tout simplement j'ai mal cherché.

A ce que j'ai vu on a le même type pour tous les ports locaux, qu'ils
soient parallèles ou en série, mais si l'intitulé de chaque port série
commence par "COM", ça doit permettre de les compter.

___________________________________
hken a écrit, le 04/11/2005 16:33 :
Bonjours à toutes est à tous.
Ba voilà, j'ai une question toute simple. J'ai un bout de programme (ci
dessous) qui ouvre un prot série de mon Pc pour attendre des données sur un
réseau ModBus. Dans ce bout de code, je gére les erreurs. Par exemple si le
port désigné par l'utilisateur n'existe pas, ou s'il est déja occupé, il
renvoie un message d'erreur. C'est à dire qu'après avoir tenté de l'ouvrir,
il le programme s'apperçois qu'il ne peut ouvrir le port demandé donc il
balance unb erreur. Ce que j'aimerais savoir : est-il possible de vérifier
l'existence du port avant même de tenter de l'ouvrir ???? Autrement dis, si
l'utilisateur demande d'ouvrir le Port série N° 9, alors que j'en ais que 2
sur mon Pc, le programme ne tente même pas de l'ouvrir et balance
automatiquement un message d'erreur.

Merci à tous ceux est celles qui prendront la peine de ma répondre.
Merci d'avance...

'------------------ MON PROGRAMME -----------------------
' Initialisation du composant Active X : MSComm
Public Function InitCommunication(Vitesse As Long, Parite As String,
BitDonnees As Integer, BitStop As String) As Boolean
'Retourne True si connexion ouverte
Dim MyParamConnexion As String

On Error GoTo InitCommunicationErr

' Initialisation
MyParamConnexion = Vitesse & "," & Parite & "," & BitDonnees & "," & BitStop

' Ouvre le port si fermé
If MSComm1.PortOpen = False Then
' Définit la propriété InputMode pour la lecture de données binaires
MSComm1.InputMode = comInputModeBinary

' Définit qu'il n'y a pas de protocole matériel
MSComm1.Handshaking = comNone

' Définit les paramètres de connexion
MSComm1.Settings = MyParamConnexion

' Définit le port
MSComm1.CommPort = MyVoie

' Ouvre le port
MSComm1.PortOpen = True

End If
' Lancement du Timer
Timer1 = True
InitCommunication = True
On Error GoTo 0
Exit Function

InitCommunicationErr:
Timer1 = False
Debug.Print "Erreur "; Err.Number & " - " & Err.Description & " dans
InitCommunication"
MsgBox "Le port COM" & MyVoie & " n'est pas disponible.", vbCritical,
"Initcommunication"

On Error GoTo 0
InitCommunication = False
Unload Me

End Function