Génération de trames Téléinfo de tests.



  • Bonsoir à tous,

    J'envisage d'utiliser Wifinfo en utilisant un Nodemcu (Esp8266 esp-12).
    Comme je n'ai pas encore reçu les composants nécessaires pour construire le capteur(optocoupleur ...), j'ai écrit un programme de génération de trames de tests téléinfo en vbscript.

    J'ai compilé Wifinfo (Version 1.01) sous l'IDE Arduino.
    Wifinfo fonctionne, les trames sont bien analysées et comptabilisées mais j'ai remarqué que les compteurs associés aux étiquettes continuent à s’incrémenter après l’arrêt du programme qui génère les trames sur le port série.
    Par contre les valeurs associées aux étiquettes ne changent plus.

    J’envoie peut être les trames trop rapidement ou ces trames sont mal construites.
    merci pour les réponses.
    SMBA38.

    [0_1487802122143_trames sur com9.zip](Uploading 100%)



  • Hello,
    Le lien vers le code du programme vbscript de génération de trames de tests semble ne pas fonctionner.
    Voici le code
    Modifier les constantes en début de programme en fonction de vos besoins.

    '
    ' Génération et envoi de trames téléinfo  SMBA38 02/2017
    '
    ' Trois trames différentes sont créées dans trois fichiers trame1.txt, trames2.txt et trame3.txt
    ' Un fichier trames.bat est créé, ce fichier .bat boucle sur l'envoi successif des trois trames sur PORTCOM
    ' Avec un délai DELAIMS entre chaque trame (en millisecondes)
    '
    ' NBENVOICOM=n  permet d’envoyer n fois les  trames sur PORTCOM directement depuis ce programme.
    ' Si NBENVOICOM=0 pas d’envoi sur PORTCOM
    ' 
    '
    '---- Constantes à modifier en fonction des besoins
    const PORTCOM="COM9"  	' A changer en fonction du port à utiliser
    const DELAIMS=2000    	' delai entre l'envoi de deux trames (en millisecondes).
    const NBENVOICOM=0	' nb fois à envoyer les trames sur le port PORTCOM (si=0 pas d'envoi via PORTCOM)
    '-----Fin constantes
    
    const CONFIGPORT="baud=1200 data=7 parity=e stop=1" ' paramètres du PORTCOM pour téléinfo 
    const  ForWriting=2
    
    nbpings=1				' pour simuler un delai utilisation d'un ping nb fois
    if DELAIMS >0 then
    	nbpings=int(DELAIMS/1000)	' environ une seconde par ping
    	if nbpings <1 then nbpings=1	' nbpings=nombre entier
    end if
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ficho = fso.OpenTextFile("trames.bat", forwriting,true)
    '
    ' Fichier .bat d'envoi de trames contenues dans les fichier trame1.txt, trame2.txt, trame3.txt 
    '
    ficho.writeline  "mode " & PORTCOM & ": " & CONFIGPORT
    ficho.writeline ":boucle"
    ficho.writeline "type trames1.txt >" & PORTCOM
    ficho.writeline "ping -n " & nbpings & "  127.0.0.1"  ' pour simuler une attente entre deux trames
    ficho.writeline "type trames2.txt >" & PORTCOM
    ficho.writeline "ping -n " & nbpings & "  127.0.0.1"  ' pour simuler une attente entre deux trames
    ficho.writeline "type trames3.txt >" & PORTCOM
    ficho.writeline "ping -n " & nbpings & "  127.0.0.1"  ' pour simuler une attente entre deux trames
    ficho.writeline "goto boucle"		' boucle infinie
    ficho.close
    
    buf1="" 'trame1
    buf1=buf1 & crc("ADCO 012345678901") 'F
    buf1=buf1 & crc("OPTARIF HC..")  '<
    buf1=buf1 & crc("ISOUSC 20")  	'8
    buf1=buf1 & crc("HCHC 036424518") ''
    buf1=buf1 & crc("HCHP 026582379") '=
    buf1=buf1 & crc("PTEC HP..") 	'
    buf1=buf1 & crc("IINST1 003") 	'K
    buf1=buf1 & crc("IINST2 002") 	'I
    buf1=buf1 & crc("IINST3 001") 	'K
    buf1=buf1 & crc("IMAX1 019")	': 
    buf1=buf1 & crc("IMAX2 020") 	'3
    buf1=buf1 & crc("IMAX3 018")	'; 
    buf1=buf1 & crc("PMAX 08380") 	'9
    buf1=buf1 & crc("PAPP 00970")	'1 
    buf1=buf1 & crc("HHPHC E") 	'0
    buf1=buf1 & crc("OTDETAT 000000")	'0 
    buf1=buf1 & crc("PPOT 00")	'#
    Set ficho = fso.OpenTextFile("trames1.txt", forwriting,true)
    ficho.writeline(chr(02) & buf1 & chr(03))' début trame  & contenu trame & fin trame
    ficho.close
    
    buf2="" 'trame 2 avec quelques changements
    buf2=buf2 & crc("ADCO 012345678902") 'F
    buf2=buf2 & crc("OPTARIF HC..")  '<
    buf2=buf2 & crc("ISOUSC 20")  	'8
    buf2=buf2 & crc("HCHC 036424518") ''
    buf2=buf2 & crc("HCHP 026582379") '=
    buf2=buf2 & crc("PTEC HP..") 	'
    buf2=buf2 & crc("IINST1 004") 	'K
    buf2=buf2 & crc("IINST2 001") 	'I
    buf2=buf2 & crc("IINST3 002") 	'K
    buf2=buf2 & crc("IMAX1 019")	': 
    buf2=buf2 & crc("IMAX2 020") 	'3
    buf2=buf2 & crc("IMAX3 018")	'; 
    buf2=buf2 & crc("PMAX 08380") 	'9
    buf2=buf2 & crc("PAPP 00970")	'1 
    buf2=buf2 & crc("HHPHC E") 	'0
    buf2=buf2 & crc("OTDETAT 000000")	'0 
    buf2=buf2 & crc("PPOT 00")	'#  
    Set ficho = fso.OpenTextFile("trames2.txt", forwriting,true)
    ficho.writeline(chr(02) & buf2 & chr(03))' début trame  & contenu trame & fin trame
    ficho.close
    
    buf3="" ' trame3  (trame partielle)
    buf3=buf3 & crc("IINST1 002") 	'K
    buf3=buf3 & crc("IINST2 000") '	I
    buf3=buf3 & crc("IINST3 001") 	'K
    buf3=buf3 & crc("IMAX1 012")	': 
    buf3=buf3 & crc("IMAX2 014") 	'3
    buf3=buf3 & crc("IMAX3 014")	'; 
    Set ficho = fso.OpenTextFile("trames3.txt", forwriting,true)
    ficho.writeline(chr(02) & buf3 & chr(03))' début trame  & contenu trame & fin trame
    ficho.close
    
    '
    ' envoi trames sur PORTCOM
    '
    if NBENVOICOM>0 then 
    	Set oShell = CreateObject("Wscript.Shell")
    	oShell.Run "mode " & PORTCOM & ": "  & CONFIGPORT ,0,1	' conviguration port via CMD 
    '           car PB pour configure les paramètres du port via OpenTextFile
        	on error resume next
    	Set comObj = fso.OpenTextFile(PORTCOM  , forwriting)	' ouverture port COM configuré via CMD
    	If Err.Number <> 0 Then
    		msgbox " Erreur sur ouverture port de communications série " & PORTCOM
    		err.clear
    		wscript.quit
        	End If
    	On error goto 0
    	Wscript.sleep(2000)
    '	comObj.writeline(string(100,chr(0)))
       	for i=1 to NBENVOICOM
            	comObj.writeline(chr(02) & buf1 & chr(03))  ' trame1
    		wscript.sleep(DELAIMS)
    		comObj.writeline(chr(02) & buf2 & chr(03))  ' trame2
    		wscript.sleep(DELAIMS)
    		comObj.writeline(chr(02) & buf3 & chr(03))  ' trame3
    		wscript.sleep(DELAIMS)
    	next
    	comOBJ.Close
    	msgbox "fin envoi trames: " & NBENVOICOM & " fois avec un délai de " & DELAIMS & " millisecondes"
    else
    	msgbox "Fin génération des fichiers trame1.txt, trames.txt, trame3.txt et trames.bat"
    end if
    wscript.quit
    
    '--------------------------
    '
    '  calcul CRC ajout entête LF (0x0A)   et ajout fin de ligne CR (OX0D)
    '
    function crc( chaine_crc )
    icrc=0
    for i=1 to len(chaine_crc)
      icrc=icrc+asc(mid(chaine_crc,i,1))
    next 
    icrc=(icrc and 63) + 32   '  sum = sum & 0x3F + 0x20
    crc= chr(10) & chaine_crc & " " & chr(icrc) & chr(13) ' le blanc avant le CRC ne fait pas partie du calcul du CRC
    end function
    


  • This post is deleted!


  • This post is deleted!


  • This post is deleted!

Log in to reply
 

Looks like your connection to hallard.me's community was lost, please wait while we try to reconnect.