Moulinette extraction des variables
Publié : 26 juin 2016, 06:34
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.
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