Moulinette extraction des variables

Vous pouvez télécharger divers logiciels de programmation, demos, logiciels de supervision industrielle
Avatar de l’utilisateur
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7037
Inscription : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Moulinette extraction des variables

Message par itasoft »

Slts,
Cette moulinette en VBScript extrait les variables de tout fichier ASCII et génère un fichier _RESULT_UNITY.txt à importer dans les variables élémentaires de Unity.
et un fichier _RESULT_VIJEO.csv à importer dans les variables de Vijeo-designer
(Utilise l'objet VBScript.RegExp très puissant)
(Extrait les variables %Mi / %MWi / %MWi:Xi / %MDi / %MFi)
(Modifier le .Pattern pour les variables type PL7-3 Bi / Wi / Wi,i / DWi )
Très utile quand on en as l’utilité, LOL
Procédure:
Copier les lignes de programme ci dessous et les coller dans le BlocNotes , enregistrer sous ExtraitVar.vbs
Avec l’explorateur de fichiers de Windows, double clic sur ExtraitVar.vbs pour l’exécuter vivante.

Code : Tout sélectionner

Option explicit
Dim TXT,fileNameSource,fileNameCible,fileNameCible2,sOBJ,sVAL, sL,sSYMB,sSSS,sEquipement,sMOT,sBIT
Dim mySize,X1
Dim FSO,Rtxt,Wtxt,Wtxt2
Dim oRegExp, oMatches, oMatch
'Objet Régular-expressions
Set oRegExp = CreateObject("VBScript.RegExp")
oRegExp.Global = True
oRegExp.IgnoreCase = True
fileNameSource=GetFileNameDlg()
if InStr(fileNameSource,".")=0 then
MsgBox("Fichier avec Extension obligatoire ex: *.txt")
WScript.Quit 0
end if
'Fichier résultant avec la liste des variables extraites à importer dans UNITY
fileNameCible = Replace(fileNameSource, ".", "_RESULT_UNITY") & ".txt"
'Fichier résultant avec la liste des variables extraites à importer dans VIJEO-DESIGNER
fileNameCible2 = Replace(fileNameSource, ".", "_RESULT_VIJEO") & ".csv"
'*******************************************
sEquipement="EquipementUniTelway01"
'******************************************
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Rtxt = FSO.OpenTextFile(fileNameSource)
TXT=Rtxt.ReadAll
Rtxt.close
'UNITY
Set Wtxt = FSO.createTextFile(fileNameCible,true)
'VIJEO
Set Wtxt2 = FSO.createTextFile(fileNameCible2,true)
Wtxt2.writeline ("'5.1.0; Vijeo-Designer 6.1.3 CSV output")
Wtxt2.writeline ("Type;Name;Data Type;Data Source;Dimension;Description;Initial Value;NumofBytes;Data Sharing;Alarm;Langue1 ID;Alarm Message;Alarm Type;Trigger Condition;Deadband;Target;LoLo\Lo\Hi\HiHi;Minor;Major;Alarm Group;Severity;Vibration Pattern;Vibration Time;Sound File;Play Mode;Scan Group;Device Address;Bit Number;Data Format;Signed;Data Length;Offset Bit No;Bit Width;InputRange;Min;Max;DataScaling;RawMin;RawMax;ScaledMin;ScaledMax;IndirectEnabled;IndirectAddress;Retentive;LoggingGroup;LogUserOperationsOnVariable")
'Extrait les variables %M ---------------------------------------------------
sL=""
oRegExp.Pattern = "%M[0-9]+"
Set oMatches = oRegExp.Execute(TXT)
For Each oMatch In oMatches
'Anti-doublons
sVAL=oMatch.Value & "*"
if instr(sL,sVAL)= 0 then
sSYMB=Replace(oMatch.Value,"%","")
sOBJ=oMatch.Value
sSSS=sSYMB & chr(9) & sOBJ & chr(9) & "EBOOL" & chr(9) & "." & chr(9)
Wtxt.writeline (sSSS)
sSSS="Variable;" & sSYMB & ";BOOL;External;0;##;;;None;Disable;1;;;;;;;;;;;;;;;" & sEquipement & ";#" & sOBJ & "#;;;;;;;;;;;;;;;Disable;;;Aucun;Disable;"
sSSS=Replace(sSSS,"#",chr(34))
Wtxt2.writeline (sSSS)
sL=sL & sVAL
end if
Next
'Extrait les variables %MD -----------------------------------------------------
sL=""
oRegExp.Pattern = "%MD[0-9]+"
Set oMatches = oRegExp.Execute(TXT)
For Each oMatch In oMatches
sVAL=oMatch.Value & "*"
if instr(sL,sVAL)= 0 then
sSYMB=Replace(oMatch.Value,"%","")
sOBJ=Replace(oMatch.Value,"%MD","%MW")
sSSS=sSYMB & chr(9) & sOBJ & chr(9) & "DINT" & chr(9) & "." & chr(9)
Wtxt.writeline (sSSS)
sOBJ=oMatch.Value
sSSS="Variable;" & sSYMB & ";DINT;External;0;##;;;None;Disable;1;;;;;;;;;;;;;;;" & sEquipement & ";#" & sOBJ & "#;;BIN;2sComplement;32Bits;;;Disable;;;Disable;;;;;Disable;;;Aucun;Disable;"
sSSS=Replace(sSSS,"#",chr(34))
Wtxt2.writeline (sSSS)
sL=sL & sVAL
end if
Next
'Extrait les variables %MF --------------------------------------------------------
sL=""
oRegExp.Pattern = "%MF[0-9]+"
Set oMatches = oRegExp.Execute(TXT)
For Each oMatch In oMatches
sVAL=oMatch.Value & "*"
if instr(sL,sVAL)= 0 then
sSYMB=Replace(oMatch.Value,"%","")
sOBJ=Replace(oMatch.Value,"%MF","%MW")
sSSS=sSYMB & chr(9) & sOBJ & chr(9) & "REAL" & chr(9) & "." & chr(9)
Wtxt.writeline (sSSS)
sOBJ=oMatch.Value
sSSS="Variable;" & sSYMB & ";REAL;External;0;##;;;None;Disable;1;;;;;;;;;;;;;;;" & sEquipement & ";#" & sOBJ & "#;;;;;;;Disable;;;Disable;;;;;Disable;;;Aucun;Disable;"
sSSS=Replace(sSSS,"#",chr(34))
Wtxt2.writeline (sSSS)
sL=sL & sVAL
end if
Next
'Extrait les variables %MWx:x ---------------------------------------------------
sL=""
oRegExp.Pattern = "%MW[0-9]+(:X[0-9]+)"
Set oMatches = oRegExp.Execute(TXT)
For Each oMatch In oMatches
sOBJ = oMatch.Value
TXT = Replace(TXT, sOBJ, "???")
sSYMB = Replace(sOBJ, "%", "")
sSYMB = Replace(sSYMB, ":X", "_")
X1=instr(sOBJ,":")
sMOT=left(sOBJ,X1-1)
sBIT=mid(sOBJ,X1+1)
sVAL=sOBJ
if instr(sL,sVAL)= 0 then
sSYMB=Replace(oMatch.Value,"%","")
sSYMB=Replace(sSYMB,":X","_")
sOBJ=Replace(oMatch.Value,":X",".")
sSSS=sSYMB & chr(9) & sOBJ & chr(9) & "BOOL" & chr(9) & "." & chr(9)
Wtxt.writeline (sSSS)
sSSS="Variable;" & sSYMB & ";BOOL;External;0;##;;;None;Disable;1;;;;;;;;;;;;;;;" & sEquipement & ";#" & sMOT & "#;" & sBIT & ";;;;;;;;;;;;;;Disable;;;Aucun;Disable;"
sSSS=Replace(sSSS,"#",chr(34))
Wtxt2.writeline (sSSS)
sL=sL & sVAL
end if
Next
'Extrait les variables %MW -----------------------------------------------------
sL=""
oRegExp.Pattern = "%MW[0-9]+"
Set oMatches = oRegExp.Execute(TXT)
For Each oMatch In oMatches
sVAL=oMatch.Value & "*"
if instr(sL,sVAL)= 0 then
sSYMB=Replace(oMatch.Value,"%","")
sOBJ=oMatch.Value
sSSS=sSYMB & chr(9) & sOBJ & chr(9) & "INT" & chr(9) & "." & chr(9)
Wtxt.writeline (sSSS)
sSSS="Variable;" & sSYMB & ";INT;External;0;##;;;None;Disable;1;;;;;;;;;;;;;;;" & sEquipement & ";#" & sOBJ & "#;;BIN;2sComplement;16Bits;;;Disable;;;Disable;;;;;Disable;;;Aucun;Disable;"
sSSS=Replace(sSSS,"#",chr(34))
Wtxt2.writeline (sSSS)
sL=sL & sVAL
end if
Next


Wtxt.close
Wtxt2.close
Set oRegExp = Nothing
Set oMatches =Nothing
Set oMatch =Nothing
MsgBox "Fin des opérations" , vbInformation, fileNameCible
Function GetFileNameDlg()
GetFileNameDlg=CreateObject("WScript.Shell").Exec("mshta.exe ""about:<input type=file id=f><script language=""VBScript"">f.click():CreateObject(""Scripting.FileSystemObject"").GetStandardStream(1).Write(f.value):close()</script>""").StdOut.ReadAll
End Function
Automaticien privé (de tout)
itasoft@free.fr
Répondre