9300bruno
Messages postés5Date d'inscriptionmercredi 31 mars 2010StatutMembreDernière intervention 1 avril 2010
-
31 mars 2010 à 15:30
9300bruno
Messages postés5Date d'inscriptionmercredi 31 mars 2010StatutMembreDernière intervention 1 avril 2010
-
1 avril 2010 à 14:48
Bonsoir,
Mon code permet de lire les infos issues d'un port serie et de les transferer dans un tableau excel.
La macro semble juste, le port correctement defini (Settings, N°..) et pourtant, j'ai un message m'indiquant le refus d'execution pour cause d'erreur "8018": l'application ne peut fonctionner qu'avec le port ouvert.
J'ai testé hyper terminal avec le meme raccordement (convertisseur serie/usb, meme port...) et je recois sans pb les infos.
Si quelqu'un a une idée, je lui passe le code pour analyse.
9300bruno
Messages postés5Date d'inscriptionmercredi 31 mars 2010StatutMembreDernière intervention 1 avril 2010 1 avril 2010 à 14:48
Voila le code complet :
'CODE de la MACRO Visual basic de traitement Teleinfo avec interface simple entrée WinVista
'initialisation
Private Sub CommandButton1_Click()
Dim tampon As Single
tampon = 0
Dim ADCO, OPTARIF, ISOUSC, EJPHN, EJPHPM, PTEC, IIST, IMAX, NB As String
'fait le menage du tableau precedent
Range("a12:k65536").Value = ""
Range("a11").Value = "0"
Range("a12").Select
With NETComm1
.CommPort = 4
.InBufferCount = 0
.Settings = "1200,E,7,1"
.InputMode = comInputModeText
.Handshaking = comNone
.InputLen = 0
.PortOpen = True
End With
End Sub
'acquisition manuelle
Private Sub CommandButton3_Click()
Do While NETComm1.InputData <> Chr$(2) ' Ici
Loop
Do
DoEvents
tampon = tampon & NETComm1.InputData
Loop Until InStr(tampon, Chr$(3))
' appel de la routine de traitement des donnees
Call trait(tampon)
'vidage du tampon
tampon = ""
End Sub
'acquisition auto
Private Sub CommandButton4_Click()
'initialisation des compteurs
pausetime = CSng(Range("g7")) 'cadence acquisition
nbacq = CSng(Range("g8")) 'nb acquisition
For I = 1 To nbacq
NETComm1.InBufferCount = 0
start = Now 'Définit l'heure de début
fin = start + (pausetime / 86400) 'Définit l'heure de captation
Do While Now < fin
'Range("h2").Value = (fin - Now) * 100000
Range("h3").Value = Now
Range("h4").Value = fin
Loop
'stockage des données dans "tampon"
'attente de "STX",début de groupe de message
Do While NETComm1.InputData <> Chr$(2) 'Chr$(2)="STX"
Loop
'stockage dans tampon jusqu'a "ETX",fin de groupe
Do
DoEvents
tampon = tampon & NETComm1.InputData
Loop Until InStr(tampon, Chr$(3)) 'Chr$(3)="ETX"
' appel de la routine de traitement des donnees
Call trait(tampon)
' vidage du tampon
tampon = ""
Next I
End Sub
Sub trait(tampon)
'calcul de numero chronologique de la saisie n+1
NB = CSng(ActiveCell.Offset(-1, 0)) + 1
'calcul des valeurs d'entrée en fonction
'position ds groupe message et
'nb caractères de chaque message
ADCO = Mid(tampon, 6, 13)
OPTARIF = Mid(tampon, 31, 4)
ISOUSC = Mid(tampon, 44, 2)
EJPHN = Mid(tampon, 61, 10)
EJPHPM = Mid(tampon, 79, 10)
PTEC = Mid(tampon, 90, 5)
IIST = Mid(tampon, 101, 4)
IMAX = Mid(tampon, 111, 4)
'affichage des valeurs dans la feuille xls
' numero chronologique d'acquisition
ActiveCell.Offset(0, 0).Value() = CSng(NB)
' date et heure d'acquisition
ActiveCell.Offset(0, 1).Value = CDate(Date)
ActiveCell.Offset(0, 2).Value = CDate(Time)
' valeur des entrées
ActiveCell.Offset(0, 3).Value() = ADCO
ActiveCell.Offset(0, 4).Value = OPTARIF
ActiveCell.Offset(0, 5).Value = ISOUSC
ActiveCell.Offset(0, 6).Value = EJPHN
ActiveCell.Offset(0, 7).Value = EJPHPM
ActiveCell.Offset(0, 8).Value = PTEC
ActiveCell.Offset(0, 9).Value = IIST
ActiveCell.Offset(0, 10).Value = IMAX
' passage à la ligne suivante
ActiveCell.Offset(1, 0).Select
End Sub
'arrêt de la macro
Private Sub CommandButton2_Click()
NETComm1.PortOpen = False
Unload Me
End
End Sub
Private Sub TextBox1_Change()