lokomass | Bonjour,
Je développe actuellement une application en VB6, qui sert à configurer des Switchs à travers le port Comm.
Souvent, il apparait des caractères spéciaux comme ci - dessous (un carré noir)
Ceci est très génant puisqu'en gros cela remplace la touche entrée, quand je veux appuyer sur entrée,il affiche ceci, et c'est uniquement après en réappuyant sur entrée que ça disparait et que j'envoi réellement la commande.
Voici aussi le code que j'utilise sur le texte.
Si vous avez une solution ou bidouille poiur modifier ceci ca m'aiderai énormément merci.
Code :
- Private Static Sub MSComm1_OnComm()
- ' Sélectionne en fonction de la propriété CommEvent.
- Select Case MSComm1.CommEvent
- ' Messages d'événement.
- Case comEvReceive
- Buffer = MSComm1.Input
- 'Debug.Print "Réception - " & StrConv(Buffer, vbUnicode)
- ShowData txtTerm, Buffer
- Case comEvSend
- Case comEvCTS
- End Select
- End Sub
- ' Cette procédure ajoute des données dans la propriété Text du
- ' contrôle Term. Elle filtre également les caractères de contrôle,
- ' comme le retour arrière, le retour chariot, et les sauts de
- ' ligne, et inscrit les données dans un fichier journal ouvert.
- ' Les caractères de retour arrière suppriment le caractère de
- ' gauche dans la propriété Text ou dans la chaîne passée. Les
- ' caractères de saut de ligne sont ajoutés à tous les retours
- ' chariot. La taille de la propriété Text du contrôle Term est
- ' également contrôlée de façon à ne pas excéder les caractères de
- ' la constante MAXTERMSIZE.
- Private Static Sub ShowData(Term As Control, Data As String)
- On Error GoTo Handler
- Const MAXTERMSIZE = 16000
- Dim TermSize As Long, i
-
- ' Vérifie que le texte existant ne devient pas trop grand.
- TermSize = Len(Term.Text)
- If TermSize > MAXTERMSIZE Then
- Term.Text = Mid$(Term.Text, 4097)
- TermSize = Len(Term.Text)
- End If
- ' Pointe à la fin des données du contrôle Term.
- Term.SelStart = TermSize
- ' Filtre/manipule les caractères de retour arrière.
- Do
- i = InStr(Data, Chr$(8))
- If i Then
- If i = 1 Then
- Term.SelStart = TermSize - 1
- Term.SelLength = 1
- Data = Mid$(Data, i + 1)
- Else
- Data = Left$(Data, i - 2) & Mid$(Data, i + 1)
- End If
- End If
- Loop While i
- ' Élimine les sauts de ligne.
- Do
- i = InStr(Data, Chr$(2))
- If i Then
- Data = Left$(Data, i - 1) & Mid$(Data, i + 1)
- End If
- Loop While i
- ' Vérifie que tous les retours chariot ont un saut de ligne.
- i = 1
- Do
- i = InStr(i, Data, Chr$(3))
- If i Then
- Data = Left$(Data, i - 1) & Chr$(13) & Chr$(10) & Mid$(Data, i + 1)
- i = i + 1
- End If
- Loop While i
- ' Ajoute les données filtrées à la propriété SelText.
- Term.SelText = Data
-
- ' Inscrit les données dans le fichier sur demande.
- Term.SelStart = Len(Term.Text)
- Exit Sub
- Handler:
- MsgBox Error$, vbCritical
- Resume Next
- End Sub
- Private Sub txtTerm_KeyPress(KeyAscii As Integer)
- ' Si le port de communication est ouvert...
- If MSComm1.PortOpen Then
- ' Envoie les touches frappées vers le port de communication.
- MSComm1.Output = Chr$(KeyAscii)
- ' À moins que le mode Écho ne soit activé,
- ' le contrôle texte n'a pas besoin d'afficher les touches.
- ' En général, un modem renvoie un caractère en retour.
- If Not Echo Then
- ' Place la position à la fin du terminal.
- txtTerm.SelStart = Len(txtTerm)
- KeyAscii = 0
- End If
- End If
- End Sub
- Private Sub txtTerm_KeyDown(KeyCode As Integer, Shift As Integer)
- If KeyCode = vbKeyC And Shift = vbCtrlMask Then
- Clipboard.Clear
- Clipboard.SetText txtTerm.SelText
- End If
- If KeyCode = vbKeyV And Shift = vbCtrlMask Then
- Call CopierColler(Clipboard.GetText)
- End If
- If KeyCode = vbKeyUp Or KeyCode = vbKeyDown Then KeyCode = 0
- 'End If
- End Sub
|
|