Caractère spécial sur Port Comm en VB

Caractère spécial sur Port Comm en VB - VB/VBA/VBS - Programmation

Marsh Posté le 07-01-2010 à 16:16:29    

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.
 
 
http://ups.imagup.com/06/1262925076.JPG
 

Code :
  1. Private Static Sub MSComm1_OnComm()
  2.     ' Sélectionne en fonction de la propriété CommEvent.
  3.     Select Case MSComm1.CommEvent
  4.         ' Messages d'événement.
  5.         Case comEvReceive
  6.             Buffer = MSComm1.Input
  7.             'Debug.Print "Réception - " & StrConv(Buffer, vbUnicode)
  8.             ShowData txtTerm, Buffer
  9.         Case comEvSend
  10.         Case comEvCTS
  11.     End Select
  12. End Sub
  13. ' Cette procédure ajoute des données dans la propriété Text du
  14. ' contrôle Term. Elle filtre également les caractères de contrôle,
  15. ' comme le retour arrière, le retour chariot, et les sauts de
  16. ' ligne, et inscrit les données dans un fichier journal ouvert.
  17. ' Les caractères de retour arrière suppriment le caractère de
  18. ' gauche dans la propriété Text ou dans la chaîne passée. Les
  19. ' caractères de saut de ligne sont ajoutés à tous les retours
  20. ' chariot. La taille de la propriété Text du contrôle Term est
  21. ' également contrôlée de façon à ne pas excéder les caractères de
  22. ' la constante MAXTERMSIZE.
  23. Private Static Sub ShowData(Term As Control, Data As String)
  24.     On Error GoTo Handler
  25.     Const MAXTERMSIZE = 16000
  26.     Dim TermSize As Long, i
  27.    
  28.     ' Vérifie que le texte existant ne devient pas trop grand.
  29.     TermSize = Len(Term.Text)
  30.     If TermSize > MAXTERMSIZE Then
  31.        Term.Text = Mid$(Term.Text, 4097)
  32.        TermSize = Len(Term.Text)
  33.     End If
  34.     ' Pointe à la fin des données du contrôle Term.
  35.     Term.SelStart = TermSize
  36.     ' Filtre/manipule les caractères de retour arrière.
  37.     Do
  38.        i = InStr(Data, Chr$(8))
  39.        If i Then
  40.           If i = 1 Then
  41.              Term.SelStart = TermSize - 1
  42.              Term.SelLength = 1
  43.              Data = Mid$(Data, i + 1)
  44.           Else
  45.              Data = Left$(Data, i - 2) & Mid$(Data, i + 1)
  46.           End If
  47.        End If
  48.     Loop While i
  49.     ' Élimine les sauts de ligne.
  50.     Do
  51.        i = InStr(Data, Chr$(2))
  52.        If i Then
  53.           Data = Left$(Data, i - 1) & Mid$(Data, i + 1)
  54.        End If
  55.     Loop While i
  56.     ' Vérifie que tous les retours chariot ont un saut de ligne.
  57.     i = 1
  58.     Do
  59.        i = InStr(i, Data, Chr$(3))
  60.        If i Then
  61.           Data = Left$(Data, i - 1) & Chr$(13) & Chr$(10) & Mid$(Data, i + 1)
  62.           i = i + 1
  63.        End If
  64.     Loop While i
  65.     ' Ajoute les données filtrées à la propriété SelText.
  66.     Term.SelText = Data
  67.  
  68.     ' Inscrit les données dans le fichier sur demande.
  69.     Term.SelStart = Len(Term.Text)
  70. Exit Sub
  71. Handler:
  72.     MsgBox Error$, vbCritical
  73.     Resume Next
  74. End Sub
  75. Private Sub txtTerm_KeyPress(KeyAscii As Integer)
  76.     ' Si le port de communication est ouvert...
  77.     If MSComm1.PortOpen Then
  78.         ' Envoie les touches frappées vers le port de communication.
  79.         MSComm1.Output = Chr$(KeyAscii)
  80.         ' À moins que le mode Écho ne soit activé,
  81.         ' le contrôle texte n'a pas besoin d'afficher les touches.
  82.         ' En général, un modem renvoie un caractère en retour.
  83.         If Not Echo Then
  84.             ' Place la position à la fin du terminal.
  85.             txtTerm.SelStart = Len(txtTerm)
  86.             KeyAscii = 0
  87.         End If
  88.     End If
  89. End Sub
  90. Private Sub txtTerm_KeyDown(KeyCode As Integer, Shift As Integer)
  91. If KeyCode = vbKeyC And Shift = vbCtrlMask Then
  92.     Clipboard.Clear
  93.     Clipboard.SetText txtTerm.SelText
  94. End If
  95. If KeyCode = vbKeyV And Shift = vbCtrlMask Then
  96.     Call CopierColler(Clipboard.GetText)
  97. End If
  98. If KeyCode = vbKeyUp Or KeyCode = vbKeyDown Then KeyCode = 0
  99. 'End If
  100. End Sub


 

Reply

Marsh Posté le 07-01-2010 à 16:16:29   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed