Deutsch
Forum

XPSE Anfänger- Durcheinander (Unixtime)

 

Ulrich
Milde
Es ist nicht ganz einfach sich die Infos stückweise zusammenzusuchen, speziell wenn die Anfängerscheuklappen sich fast automatisch vor die Augen klappen sowie Assembler, DLL und ähnliches auftaucht. XPSE gesucht, gefunden, gesaugt und dann? Exakt das wars, nämlich ein grosses Fragezeichen. XPIA schwirrte in den Ergebnissen der XPSE Forensuche auch dauernd durch die Gegend. Klasse, da gabs Infos die mir weitergeholfen haben! XPSE tut jetzt vermutlich das, was es soll, aber nun hänge ich wieder fest und weiss nicht weiter.

Was will ich überhaupt und warum?
Weil Zeitgeber jeglicher Art in Profan Mangelware sind und der einzige Timer mit dem regelmässigen pollen der seriellen Schnittstelle schon gut beschäftigt ist war ich auf der Suche nach Alternativen. Time$ kam wegen des ungünstigen Formats nur sehr ungern und zähneknirschend in Frage. Die Lösung wäre Unixtime, das ich in der Codebibliothek gefunden hatte. Deswegen auch XPSE,und XPIA. Dummerweise scheint erstens Unixtime eher ein Testprogramm zu sein und zweitens bin ich noch dümmer wenn es um das Einbinden von dem geht, was Unixtime macht. (DLL - Scheuklappe klapp...)
Die Anzahl der Sekunden, die seit einem Tag irgendwann in den 70ern vergangen sind wäre genau passend für einen Timer. Gut, geht nicht kleiner als eine Sekunde und ist nicht rücksetztbar, aber damit kann ich gut auskommen.

IWie gehe ich mit dem um was XPSE ausgibt? Das einzig brauchbare scheint mir die erstellte DLL zu sein, wenn ich denn wüsste wie ich mit der umzugehen habe. Dazu kommt noch dass möglicherweise der Profancode zum Ausprobieren auch noch mit in der DLL steckt . CLS, Waitkey und Co. kann ich ganz bestimmt nicht gebrauchen...

Es wäre sehr nett wenn sich jemand erbarmen würde und mir sagt was ich wie zu tun habe damit Unixtime das tut, was es soll.

Vielen Dank, Grüsse und Tschüss!

PS. Schade dass so etwas gut brauchbares halbvollendet in der Codebibliothek vor sich hinschlummert! Unixtime wäre genau richtig,- denn einen Holzhammer der alles mögliche in allen Zeitsystemen umrechnen kann, den brauch ich eigentlich nicht..
 
02.03.2007  
 




Michael
Wodrich
Die Prozedur UnixTime ist ein Sekundenzähler, der am 1.1.1970 gestartet ist. Die seitdem verstrichene Zeit in Sekunden wird zurückgegeben. Unix bezieht aus diesem Zähler seine Zeitberechnung.

An dem Testcode unter der Funktion kann man den Aufruf ablesen. Hier noch ein Beispiel:
KompilierenMarkierenSeparieren
 {$Cleq}
 $H C:ProfanIncludeWindows.ph

Proc Unixtime

    Declare Buffer#, Bufferptr&, Zeit&
    ist Struct TimeBuffer = FTimeLo&, FTimeHi&, DivLo&, DivHi&, BiasLo&, BiasHi&, ErgebnisLo&, ErgebnisHi&
    Dim Buffer#,32
    Bufferptr& = Addr(Buffer#)
    ~Getsystemtimeasfiletime( Buffer# )
    Long Buffer#,8 = $00989680, 0, $D53e8000, $019Db1de

    Asmstart _tounix(Bufferptr&)

        mov esi,para1
        mov eax,[esi]
        mov edx,[esi+4]
        sub eax,[esi+16]
        sbb edx,[esi+20]
        mov [esi],eax
        mov [esi+4],edx
        xor edi,edi
        or edx,edx
        jns @tu1
        inc edi
        neg eax
        adc edx,0
        neg edx
        mov [esi],eax
        mov [esi+4],edx
        @tu1:
        mov ebx,[esi+8]
        mov esi,[esi+12]
        or esi,esi
        jns @tu2
        inc edi
        neg ebx
        adc esi,0
        neg esi
        @tu2:
        jnz @tu3
        or ebx,ebx
        jz @tu8
        mov ecx,eax
        mov eax,edx
        xor edx,edx
        div ebx
        xchg eax,ecx
        div ebx
        jmp @tu6
        @tu3:
        bsr ecx,esi
        inc cl
        push ebx
        shrd ebx,esi,cl
        shrd eax,edx,cl
        shr edx,cl
        div ebx
        mov ebx,eax
        mul esi
        mov ecx,eax
        pop eax
        push esi
        mov esi,para1
        mul ebx
        add edx,ecx
        jc @tu4
        cmp edx,[esi+4]
        ja @tu4
        jb @tu5
        cmp eax,[esi]
        jbe @tu5
        @tu4:
        dec ebx
        @tu5:
        pop esi
        xor ecx,ecx
        mov eax,ebx
        @tu6:
        dec edi
        jnz @tu7
        neg eax
        adc ecx,0
        neg ecx
        @tu7:
        mov esi,para1
        mov [esi+24],eax
        mov [esi+28],ecx
        jmp @exit
        @tu8:
        xor eax,eax
        dec eax
        mov ecx,7fffffffh
        jmp @tu6
        @exit:

    Asmend (Zeit&)

    Dispose Buffer#
    Return Zeit&

Endproc

Declare Sek1&, Sek2&
Sek1& = UnixTime()
sleep 4000   schlafe 4 Sekunden (4000 Millisekunden)
Sek2& = UnixTime()
cls
print Startzeit:, Sek1&
print Endezeit:, Sek2&
print vergangen in Sekunden:, Sek2& - Sek1&
waitkey
end

Ich habe eine DLL (MwDate) in Arbeit mit etlichen Datum- und Zeitroutinen. Da werde ich auch die UnixTime mit aufnehmen. Das dauert aber noch ein Weilchen.

DLL deshalb, weil sich die Assemblerteile damit leichter handhaben lassen.

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
03.03.2007  
 




Michael
Wodrich
Hattest Du eigentlich schon dies gefunden?

Millisekunden-genaue Zeitmessung [...] 
 
Programmieren, das spannendste Detektivspiel der Welt.
03.03.2007  
 




Ulrich
Milde
Keine DLL, nur ein bischen Profan, was das abfragt was bei Windows tickt. Das sieht ja gut aus, sehr gut sogar! Das ist der zweite Timer den ich vermisst hatte. Damit kann ich einen unabhängigen Timeout messen während sich %wmtimer weiter das pollen der RS232 kümmert. Timer$ kommt auch noch an die Reihe, wenn ich zum protokollieren der Messwerte komme.

Michael, vielen Dank für den Tipp und Grüsse vom Ulrich!
 
03.03.2007  
 




GDL
Falls dir die Timer noch ausgehen sollten, ich lese mit der Thread.pcu meine Schnittstellen ein.

Servus
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
03.03.2007  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.997 Betrachtungen

Unbenanntvor 0 min.
Michael W.05.02.2018
maroro26.09.2016
Jürgen Strahl03.05.2015
Uwe Lang06.02.2015
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Ulrich Milde (2x)
Michael Wodrich (2x)
GDL (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie