Page 2 of 2
VO 2.8 Prog unter Win10/64bit
Posted: Wed Jun 17, 2020 4:55 pm
by lagraf
Hallo Wolfgang,
die Unterschiede sind allerdings gewaltig zwischen dem alten und dem neuen Rechner wie ich selber bemerkt habe:
- Beim Upload einer größeren Datei über die Fernwartung war der alte fast doppelt so schnell, obwohl der neue einen Gbit Adapter hat
- Ich erstelle in meinem Prog PDF Rechnungen per PDFCreator, die dann per Mail versandt werden. Am alten Pc hat ein Timeout von 5 Sek fürs Warten auf die PDF-Erstellung genügt,l beim neuen mußte ich das Timeout auf 10 Sek setzen.
Das kommt halt davon wenn Anwender sich als EDV Gurus fühlen!:)
LG Franz
VO 2.8 Prog unter Win10/64bit
Posted: Wed Jun 17, 2020 6:22 pm
by g.bunzel@domonet.de
Hallo Franz,
...ich hatte mal ein ähnliches Problem mit einem 'kleinen PC' - da wurde bei bestimmten Funktionen der Prozessor zu heiß und hat einfach abgeschalten. Der PC ist einfach eingefroren. Der Lüfter hat das nicht geschafft - war völlig unterdimensioniert. Da in dem Mini-PC ein recht 'einfacher Prozessor' verbaut ist, wäre das evtl. dort auch möglich. Einfach mal die Prozessor-Temperatur mit einem Tool anzeigen lassen.
Noch etwas zu dem Timeout für die Pdf-Dateien. Ich verwende dafür auch den Pdf-Creator.
Anstelle eines Timeout prüfe ich die fertige Datei, da der Dateiname dafür ja bekannt ist. Das funktioniert seit Jahren problemlos:
cFile := SELF:cPDFPfad + cArtNr + "_Datenblatt.PDF"
Sleep(500)
nStart := Seconds()
DO WHILE nStart + 30.0 > Seconds()
nJobs := CountJobs(cPrinter)
IF nJobs == 0 .AND. File(cFile)
IF .NOT. IsFileInUse(cFile)
EXIT
ENDIF
ENDIF
Sleep(500)
ApplicationExec(EXECWHILEEVENT)
ENDDO
Sleep(500) // ...noch etwas Zeit für die Dateierstellung...
FUNCTION CountJobs (cPrinter AS STRING) AS INT PASCAL
LOCAL pDrucker, pPi AS PTR
LOCAL pPrinterInfo IS _winPrinter_Info_2
LOCAL pBytes AS DWORD
LOCAL pDruckername AS PSZ
LOCAL nRet AS INT
LOCAL pDefaults IS _winPrinter_Defaults
~"ONLYEARLY+"
// Drucker-Kontext öffnen
pDruckerName := StringAlloc( cPrinter )
IF OpenPrinter(pDruckerName, PTR(_CAST, @pDrucker), @pDefaults)
GetPrinter(pDrucker, 2, NULL_PTR, 0, PTR(_CAST, @pBytes))
pPi := MemAlloc(pBytes)
IF GetPrinter(pDrucker, 2, pPi, pBytes, PTR(_CAST, @pBytes) )
// In der Printer-Info Nr 2. steht die Anzahl der aktuellen Jobs
MemCopy( @pPrinterInfo, pPi, _SIZEOF(_winprinter_info_2) )
nRet := INT(pPrinterInfo.cJobs)
ELSE
// GetPrinter gescheitert
nRet := -1
ENDIF
// Drucker-Kontext wieder schliessen
ClosePrinter(pDrucker)
MemFree(pPi)
ELSE
// OpenPrinter gescheitert
nRet := -1
ENDIF
MemFree(pDruckername)
// Anzahl Jobs gehen zurück
RETURN nRet
~"ONLYEARLY-"
FUNCTION IsFileInUse (cFileName AS STRING) AS LOGIC PASCAL
LOCAL lReturn AS LOGIC
LOCAL ptrFile AS PTR
lReturn := FALSE
IF File(cFileName)
ptrFile := CreateFile(String2Psz(cFileName), DWORD(_CAST, (GENERIC_READ + GENERIC_WRITE + GENERIC_EXECUTE)), ;
0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)
lReturn := (ptrFile == INVALID_HANDLE_VALUE) // INVALID_HANDLE_VALUE = -1
IF .NOT. lReturn
CloseHandle(ptrFile)
ENDIF
ENDIF
RETURN lReturn
HTH
Gerhard Bunzel
VO 2.8 Prog unter Win10/64bit
Posted: Thu Jun 18, 2020 5:45 am
by lagraf
Hallo Gerhard,
ich prüfe auch in einer Schleife im 1/10 Sek. Intervall, das Timeout ist nur dazu da, um irgendwann aus der Schleife rauszukommen, falls das PDF nicht erstellt wird. Hat bisher auch immer tadellos funktioniert, musste nur erhöht werden, weil der neue so langsam ist.
Das mit dem Überhitzen habe ich dem Kunden auch schon gesagt, da ich mir schon gedacht hatte, dass es mit Lüftung nicht weit her sein kann in so einem Gerät.
Ich investiere aber nicht allzu viel Arbeit in das Problem, mein PC-Angebot hat er abgelehnt weil zu teuer, dafür hat er sich den Mini-PC bei Amazon gekauft. Ich habe leider 2 solche Kunden, die sich selber für EDV Spezialisten halten und alles besser wissen, da ist Hopfen und Malz verloren.
LG Franz