Affichage Rep trame RS232 / vb excel

Module29 Messages postés 25 Date d'inscription vendredi 11 mai 2012 Statut Membre Dernière intervention 21 janvier 2015 - 11 mai 2012 à 14:02
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 - 25 mai 2012 à 20:31
Bonjour,


suite à mon programme en vb, qui envoi des commandes à une carte de simulation.

j'aimerai pouvoir récupérer la réponse des trames et pouvoir les afficher dans une cellule, ou dans une textbox ect..

Comment faire ? je vous envoie la partie de mon programme qui envoie les commandes sur la carte de simulation. (cela marche )



Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMillisenconds As Long)



Private Sub CommandButton1_Click()
If MSComm1.PortOpen True Then MSComm1.PortOpen False         ' si le bouton 1 = true alors on fait appel à la fonction test_liaison
Call test_liaison


End Sub


Sub test_liaison()

Dim trame_recue As String
Dim buffer As String

mouchard = 1


MSComm1.CommPort 3              'Comm1.CommPort Sheets("Test&Réglage & PV").Range("port").Value      'permet de recuperer le numero du port com
MSComm1.Settings = "9600,N,8,1"   'configuration liaison série ( tjrs la même chose ) ' 9600 bauds, pas de parité, 8 bits de données et 1 bit d'arrêt.
MSComm1.PortOpen = True           'ouverture du port pour debuter la communication
MSComm1.SThreshold = 1
MSComm1.InputLen = 0             ' lecture total du buffer



MSComm1.Output = ActiveSheet.Cells(6, 9).Value & vbCrLf       ' envoi la saisie dans la cellule D2

 
Do

  DoEvents                                                    'indispensable sinon ça marche pas ( boucle de reception )
  
  trame_recue = trame_recue & MSComm1.Input

Loop Until InStr(trame_recue, vbCrLf)




fin:

MSComm1.PortOpen = False                                 'on ferme le port afin de terminer la communication
If mouchard = 1 Then                                     'si une trame a bien été envoyée
    MsgBox ("Opération terminée avec succès!")           'alors les caracteres sont bons et la communication est correcte
Else
    MsgBox ("Test échoué... nombre de trame envoyée par le pc :" & mouchard)    'sinon pb dans les caracteres
End If


End Sub 'fin





Ps : je suis en liaison RS232


Merci d'avance

1 réponse

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
25 mai 2012 à 20:31
Bonjour,

Regardes l’événement DataReceive (ou similaire) du MsComm.

Sinon, ton test me semble biaisé, car Mouchard=1 avant même de tester la réception.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
Rejoignez-nous