Sub PDF_Druck()
'*** Deklarationen ***
Dim f, fs, path, pathname, filepath, file, oldFile, newFile
Dim Attribut
Dim filepathALLPDF
Dim oldFileLEN, newFileLEN, fileLEN, fileLENnext
Dim directoryPath, directoryName
Dim USBpath, SDpath, SDlogpath
Dim USBpathName, SDpathName, SDlogpathName
Dim SCREEN, errFIELD
Dim myDateTime, myYear, myMonth, myDay, myHour, myMinute, mySecond
Dim printFileDateCreate, printFileDateModified
Dim KdNr, RBGNr
Dim FileAttr
Dim i, j
'*** Initialisierungen ***
Err.Clear
On Error Resume Next
Set fs = CreateObject("FileCtl.Filesystem")
'Set f = CreateObject("FileCtl.File")
'*** Zuweisungen ***
errFIELD = "TextError"
SCREEN = "240_DIAGNOSE_Statistik"
HmiRuntime.ActiveScreen.ScreenItems("TextError_1").text = ""
HmiRuntime.ActiveScreen.ScreenItems("TextError_2").text = ""
HmiRuntime.ActiveScreen.ScreenItems("TextError_3").text = ""
HmiRuntime.ActiveScreen.ScreenItems("TextError_4").text = ""
HmiRuntime.Screens(SCREEN).ScreenItems(errFIELD).text = ""
HmiRuntime.ActiveScreen.ScreenItems("TextError_1").Visible = False
HmiRuntime.ActiveScreen.ScreenItems("TextError_2").Visible = False
HmiRuntime.ActiveScreen.ScreenItems("TextError_3").Visible = False
HmiRuntime.ActiveScreen.ScreenItems("TextError_4").Visible = False
HmiRuntime.Screens(SCREEN).ScreenItems(errFIELD).Visible = False
HmiRuntime.ActiveScreen.ScreenItems("TextPrint").text = "Druckauftrag angestossen!"
HmiRuntime.ActiveScreen.ScreenItems("TextPrint").Visible = True
'*** CODE ***
'Prüfen, ob ein USB-Stick gesteckt ist,
'wenn nicht, Script beenden!
USBpathName = "Storage Card USB" ' "Storage Card USB"
USBpath = "\" & USBpathName ' "\Storage Card USB"
If fs.dir (USBpath) <> USBpathName Then
HmiRuntime.ActiveScreen.ScreenItems("TextPrint_1").text = "Das Kopieren ist fehlgeschlagen: kein USB-Stick gesteckt!"
HmiRuntime.ActiveScreen.ScreenItems("TextPrint_1").Visible = True
Delay(3)
HmiRuntime.ActiveScreen.ScreenItems("TextPrint").Visible = False
HmiRuntime.ActiveScreen.ScreenItems("TextPrint_1").Visible = False
Exit Sub
End If
'Prüfen, ob eine SD-Card gesteckt ist,
'wenn nicht, Script beenden!
SDpathName = "Storage Card SD" ' "Storage Card SD"
SDpath = "\" & SDpathName ' "\Storage Card SD"
If fs.dir (SDpath) <> SDpathName Then
HmiRuntime.ActiveScreen.ScreenItems("TextPrint_1").text = "Das Kopieren ist fehlgeschlagen: keine SD-Card gesteckt!"
HmiRuntime.ActiveScreen.ScreenItems("TextPrint_1").Visible = True
Delay(3)
HmiRuntime.ActiveScreen.ScreenItems("TextPrint").Visible = False
HmiRuntime.ActiveScreen.ScreenItems("TextPrint_1").Visible = False
Exit Sub
End If
'Prüfen, ob der Ordnerpfad auf der SD-Card angelegt ist,
'wenn nicht, Odnerpfad anlegen!
directoryName = "log"
directoryPath = "\" & directoryName '"\log"
SDlogpathName = "Storage Card SD" & directoryPath ' "Storage Card SD\log"
SDlogpath = "\" & SDlogpathName ' "\Storage Card SD\log"
If fs.dir (SDlogpath) <> directoryName Then
fs.MkDir SDlogpath
End If
'Prüfen, ob der Ordner das Attribut "Versteckt" hat.
'Wenn nicht, Attribut zu "Verstteckt" setzen
If fs.getattr(SDlogpath) <> 2 Then
fs.setattr SDlogpath,2
End If
'Prüfen, ob der Ordnerpfad auf der SD-Card leer ist,
'wenn nicht, dann leeren
'Ausdruck kopieren und dabei umbenennen
filepath = SDlogpath & "\*.pdf"
file = fs.dir(filepath)
If file <> "" Then
fs.kill filepath
End If
'Protokoll drucken
HmiRuntime.ActiveScreen.ScreenItems("TextPrint").text = "Druckauftrag gestartet!"
PrintReport("Statistik") 'Protokoll "Statistik" ausdrucken
'Als Drucker ist ein PDF-Drucker eingestellt
'Der Druckerpfad ist auf die SD-Card eingestellt
HmiRuntime.ActiveScreen.ScreenItems("TextPrint").text = "Druckauftrag aktiv!"
While fs.dir(filepath) = "" ' warten, bis eine Datei vorhanden ist
Wend
file = fs.dir(filepath)
filepath = SDlogpath & "\" & file
printFileDateCreate = fs.filedatetime(filepath)
printFileDateModified = printFileDateCreate
While printFileDateCreate = printFileDateModified
printFileDateModified = fs.filedatetime(filepath)
Wend
fileLEN = fs.FileLen(filepath)
fileLENnext = 0
i = 0
HmiRuntime.ActiveScreen.ScreenItems("TextPrint").text = "Druckauftrag aktiv! Dateigröße: 0 byte"
While fileLEN <> fileLENnext
fileLEN = fileLENnext
Delay(3)
fileLENnext = fs.FileLen(filepath)
HmiRuntime.ActiveScreen.ScreenItems("TextPrint").text = "Druckauftrag aktiv! Dateigröße: " & fileLEN & " byte"
Wend
filepathALLPDF = SDlogpath & "\*.pdf"
KdNr = SmartTags("HMI_CONSTANT_DB_Kundennummer")
RBGNr = SmartTags("HMI_CONSTANT_DB_RBG_NO")
'Quelldatei
file = fs.dir(filepathALLPDF)
oldFile = SDlogpath & "\" & file
'Datumsformat für Dateinamen umbauen
myYear = Mid(SmartTags("MAIN_CLOCK_DB_Lokalzeit"),7,4)
myMonth = Mid(SmartTags("MAIN_CLOCK_DB_Lokalzeit"),4,2)
myDay = Mid(SmartTags("MAIN_CLOCK_DB_Lokalzeit"),1,2)
myHour = Mid(SmartTags("MAIN_CLOCK_DB_Lokalzeit"),12,2)
myMinute = Mid(SmartTags("MAIN_CLOCK_DB_Lokalzeit"),15,2)
mySecond = Mid(SmartTags("MAIN_CLOCK_DB_Lokalzeit"),18,2)
myDateTime = myYear & myMonth & myDay & "_" & myHour & myMinute & mySecond
'Zieldatei
newFile = USBpath & "\" & KdNr & "_RBG" & RBGNr & "_" & myDateTime & ".PDF"
fs.setattr oldFile, 0 ' Quelldatei auf 'Normal' setzen
fs.FileCopy oldFile, newFile ' Datei von SD-Card auf USB-Stick kopieren und dabei umbenennen
fs.kill oldFile
If Err.Number <> 0 Then
HmiRuntime.Screens(SCREEN).ScreenItems(errFIELD).text = "Oops! #21 " & Err.Number & " " & Err.Description
HmiRuntime.Screens(SCREEN).ScreenItems(errFIELD).Visible = True
Delay(2)
HmiRuntime.Screens(SCREEN).ScreenItems(errFIELD).Visible = False
HmiRuntime.ActiveScreen.ScreenItems("TextPrint").Visible = False
Exit Sub
End If
Set fs = Nothing ' Filesystem-Objekt freigeben
HmiRuntime.ActiveScreen.ScreenItems("TextPrint").Visible = False
End Sub