Problème ouverture de port com
Bonjour à tous!
J'ai de gros soucis avec l'ouverture d'un port com via mscomm1.
Mon port est ouvert, j'envoie une commande qui aboutie, une autre, et une troisième non avec erreur 8018. Je ne ferme absolument pas le port entre temps. Je comprends pas du tout pourquoi cela fait ça...
Si vous pouviez me filer un petit coup de pouce car je sèche complètement...
Merci!!
Cordialement
Innuendo 67.
Bonjour Innuendo67,
Sujet très intéressant pour moi que je ne me suis jamais servi des ports avec Excel. (Je n'ai aucune idée de comment m'en servir)
Néanmoins après un bref passage sur un site Internet traitant du sujet, j'en viens à te proposer d'essayer les choses suivantes:
1)
If MSComm1.PortOpen = True Then
'la commande que tu veux essayer
Else
'commande pour rouvrir le port
'la commande que tu veux essayer
End If
2)
Si le port se ferme subitement, la seconde technique te permettra de savoir quand, et peut être trouver ce qui cloche.
Dans l'attente d'un retour
Bonjour,
merci pour la réponse, cependant rien n'y fait.
J'ai tenté de contourner ce problème avec un GoTo.
Voici le code:
Private Sub LANCER_Click()
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
On Error GoTo fin
MSComm1.OutBufferCount = 0
If LISTE1.Text = "" Then
MsgBox "Veuillez choisir une musique à jouer."
Exit Sub
End If
If ENCOURS1.Visible = False Then
ENCOURS1.Visible = True
ENCOURS1.AutoSize = True
ENCOURS1.Value = ""
Else
ENCOURS1.AutoSize = True
ENCOURS1.Value = ""
End If
If LISTE1.Text = "BLABLA1.wav" Then
MsgBox "Lançons la musique:" & LISTE1.Text
LANCERMUSIQUE1.BackColor = &HFF&
LANCERMUSIQUE1.Caption = "MUSIQUE EN COURS"
prefixe1 = Chr$(&HFE) + Chr$(&HFE)
suffixe = Chr$(&HFD)
MSComm1.OutBufferCount = 0
MSComm1.Output = prefixe1 + XXXXXXXXXX + suffixe
X1.BackColor = &H8000000F
X2.BackColor = &HFF00&
MSComm1.OutBufferCount = 0
MSComm1.Output = prefixe1 + XXXXXXXX + suffixe
MODE1.Value = True
Application.Wait (Now + TimeValue("00:00:01"))
MSComm1.PortOpen = True
MSComm1.OutBufferCount = 0
MSComm1.Output = prefixe1 + Chr$(&H5) + Chr$(&H9) + suffixe
ENCOURS1.Value = "MUSIQUE en cours : BLABLA"
MSComm1.PortOpen = False
Application.Wait (Now + TimeValue("00:54:41"))
MSComm1.PortOpen = True
MSComm1.OutBufferCount = 0
MSComm1.Output = prefixe1 + XXXXXXXX + suffixe
ENCOURS1.Value = "MUSIQUE en cours : BLABLA2"
MSComm1.PortOpen = False
Application.Wait (Now + TimeValue("00:42:52"))
MSComm1.PortOpen = True
MSComm1.OutBufferCount = 0
MSComm1.Output = prefixe1 + XXXXXXXXXXX + suffixe
X1.BackColor = &H8000000F
X2.BackColor = &HFF00&
MSComm1.PortOpen = False
Application.Wait (Now + TimeValue("00:07:52"))
MSComm1.PortOpen = True
MSComm1.OutBufferCount = 0
MSComm1.Output = prefixe1 + XXXXXXXXXXX + suffixe
X1.BackColor = &H8000000F
X2.BackColor = &HFF00&
MSComm1.PortOpen = False
Application.Wait (Now + TimeValue("00:00:35"))
MSComm1.PortOpen = True
MSComm1.OutBufferCount = 0
MSComm1.Output = prefixe1 + XXXXXXXXXXX + suffixe
ENCOURS1.Value = "MUSIQUE en cours : BLABLA3"
MSComm1.OutBufferCount = 0
'fermeture du port com
MSComm1.PortOpen = False
End If
fin:
If MSComm1.PortOpen = False Then MSComm1.PortOpen = True
Resume
End Sub
Cependant, lorsque ma macro arrive à la fermeture du port, excel tourne dans le vide... Je dois faire Echap pour stopper l'execution de la macro.
Comment faire pour que mon code se termine proprement?
Merci à tous!
Cordialement,
Innuendo67.
Tu as fait une grosse erreur dans ton code en pensant que le code présent dans "fin" ne serait exécuté qu'en cas d'erreur!
Voilà ton code,
Sub nomProcedure()
On error Goto monEtiquette
'ton code
monEtiquette:
'code de l'étiquette
End Sub
et voilà le code que tu devrais avoir.
Sub nomProcedure()
On error Goto monEtiquette
'ton code
Exit Sub
monEtiquette:
'code de l'étiquette
End Sub
Bonjour,
je te remercie de ta réponse.
En effet, je ne savais pas que le code lisait la ligne s'il n'y avait aucune erreur...
J'aurais encore appris quelque chose!
Cordialement,
Innuendo67