Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2912 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Caractère spécial sur Port Comm en VB

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Caractère spécial sur Port Comm en VB

n°1955866
lokomass
Posté le 07-01-2010 à 16:16:29  profilanswer
 

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


 

mood
Publicité
Posté le 07-01-2010 à 16:16:29  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Caractère spécial sur Port Comm en VB

 

Sujets relatifs
[SHELL] Ajouter une chaine de caractère particulière dans un fichierConversion caractère -> nombre, erreur
[VBS] Quel est le caractère qui annule l'interprétation...Supprimer le dernier caractère si c'est un "/"
Programmation VB problèmes de débutant[VB/Excel] Différent résultat execution classique/execution pas à pas
[VB/VBA/VBS] Mauvaise détection de plage.Assistant de mise à niveau de VB6.0 a VB studio
BOOST_PP : concatener un caractère spécial 
Plus de sujets relatifs à : Caractère spécial sur Port Comm en VB


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR