mikael2235
XLDnaute Occasionnel
Bonjour à tous,
Dans le cadre de mon travail, je souhaite récupérer dans Excel le signal RS232 d'une machine de contrôle.
Ceci dans le but de pouvoir faire une macro qui par la suite enregistrera les résultats dans le classeur.
C'est le premier point qui me pose problème.
Voici ce que j'ai comme doc du fournisseur :
Le service informatique a tenté de faire une macro, n'a pas réussi, et a maintenant abandonné...
(Je précise qu'il ont fait quand même un executable, et que cela fonctionne. Il ne doit pas manquer grand chose)
Voici le contenu VBA de leur controle MSCOMM.
Parfois, Il recupère des données, mais soit pas assez, ou soit c'est vide.
Il arrive également, que la macro soit en erreur avec le message "Espace pile insuffisant".
Pourriez vous m'aider ?
Merci. Mikael
Dans le cadre de mon travail, je souhaite récupérer dans Excel le signal RS232 d'une machine de contrôle.
Ceci dans le but de pouvoir faire une macro qui par la suite enregistrera les résultats dans le classeur.
C'est le premier point qui me pose problème.
Voici ce que j'ai comme doc du fournisseur :
5.4 RS232 DATA OUTPUT
Selections in the “STATISTICS” menu allow test data or a report to be sent to the RS232
port. A selection in the “TEST SETUP” menu allows each test result to be sent to the
RS232 port as it is completed. The RS232 report format will contain the same elements
as the selected printout format.
The following describes the RS-232 output format from System 226.
Baud : 9600
Bit : 7
Parity : Even
Stop : 1
Flow : none
1 2 3 4
1234567890123456789012345678901234567890
========================================
nnnnn, fff.f ,”ssssssssssssssssss” , ccCL
nnnn accumulative test number
fff.f test force result in grams
sss..sss failure mode description (in quotes)
cc failure mode code
C carriage return, ASCII code 13
L line feed, ASCII code 10
Le service informatique a tenté de faire une macro, n'a pas réussi, et a maintenant abandonné...
(Je précise qu'il ont fait quand même un executable, et que cela fonctionne. Il ne doit pas manquer grand chose)
Voici le contenu VBA de leur controle MSCOMM.
Parfois, Il recupère des données, mais soit pas assez, ou soit c'est vide.
Il arrive également, que la macro soit en erreur avec le message "Espace pile insuffisant".
Code:
Public Valeur As String
Public Delai
Public Ligne As Integer
Public Sub UserForm_Initialize()
'UserForm1.InitialiseCom MSComm1, 3
End Sub
Public Function InitialiseCom(Com As MSComm, PortSerie As Integer)
'Initialise le port Com
If Com.PortOpen = True Then Com.PortOpen = False
With Com
.CommPort = PortSerie 'Port série utilisé
.Settings = "9600,n,8,1" 'On définit ici les paramètres de transmission.
.InputLen = 0 'Lire la totalité du tampon
.Handshaking = 2 'Protocole de communication
.RThreshold = 1 'déclenche procédure évenementielle à 1 caractères au moins
.PortOpen = True 'Ouvre le port de communication
End With
End Function
Public Sub MSComm1_OnComm()
TraitementReponse MSComm1
End Sub
Public Sub TraitementReponse(Com As MSComm)
Select Case Com.CommEvent
Case comEvReceive
If Not Delai > Timer Then
Valeur = ""
Ligne = Ligne + 1
Delai = Timer + 1
End If
DoEvents
Do
If (Timer > Delai) Then
Exit Sub
End If
Valeur = Valeur & Com.Input
Loop While Len(Com.Input) > 0 'vbCrLf
Worksheets("Sheet1").Cells(Ligne, 1) = Valeur
'Worksheets("Sheet1").Cells(Ligne, 2) = Timer
'Worksheets("Sheet1").Cells(Ligne, 3) = Delai
End Select
End Sub
Pourriez vous m'aider ?
Merci. Mikael