MillisecondTime for windows os

Share your advanced PureBasic knowledge/code with the community.
User avatar
gurj
Enthusiast
Enthusiast
Posts: 658
Joined: Thu Jan 22, 2009 3:48 am
Location: china
Contact:

MillisecondTime for windows os

Post by gurj »

Code: Select all

;MillisecondTime for windows os
date.SYSTEMTIME;GetLocalTime_(@date):GetSystemTime_(@date)

OpenWindow(0,0,0,400,150,"",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
LoadFont(0,"System", 12, #PB_Font_Bold):SetGadgetFont(#PB_Default, FontID(0))
ButtonGadget(0, 0, 0,200, 20, "start")
ButtonGadget(2, 200, 0,200, 20, "stop")

TextGadget(1, 0, 30,200, 20, "")
TextGadget(3, 0, 50,200, 20, "start at:")
TextGadget(4, 0, 70,400, 20, "")
TextGadget(5, 0, 100,200, 20, "stop at:\/")
TextGadget(6, 0, 120,400, 20, "")
Repeat:ev=WaitWindowEvent():Select ev
  Case #PB_Event_Gadget:eg=EventGadget()
   Select eg
    Case 0:DisableGadget(0,1)
     n=0:m=0:GetLocalTime_(@date):Gosub settext
     Repeat:m+1
      GetLocalTime_(@date)
      SetGadgetText(1,""+date\wMilliseconds)
      
      ev=WindowEvent():If ev=#PB_Event_Gadget:eg=EventGadget()
       If eg=2:n=1
        Gosub settext
        SetGadgetText(5,"stop at: \/ Repeat_m="+m)
        m=0:DisableGadget(0,0)
      EndIf:EndIf
     Until n=1
    Case 2:GetLocalTime_(@date):Gosub settext
     SetGadgetText(5,"stop at: \/ Repeat_m="+m)
     SetGadgetText(4,"")
   EndSelect
   
  Case #PB_Event_CloseWindow:Break
EndSelect:ForEver
End
settext:
SetGadgetText(eg+4,"WeekDay_"+Str(date\wDayOfWeek)+" > "+Str(date\wYear)+"."+Str(date\wMonth)+"."+Str(date\wDay)+" > "+Str(date\wHour)+
                 ":"+Str(date\wMinute)+":"+Str(date\wSecond)+"."+Str(date\wMilliseconds))
Return
my pb for chinese:
http://ataorj.ys168.com
User avatar
gurj
Enthusiast
Enthusiast
Posts: 658
Joined: Thu Jan 22, 2009 3:48 am
Location: china
Contact:

Re: MillisecondTime for windows os

Post by gurj »

but on my PC, every GetLocalTime_(@date) need 15 or 16 Millisecond...

Code: Select all

;MillisecondTime for windows os
date0.SYSTEMTIME:date.SYSTEMTIME;GetLocalTime_(@date):GetSystemTime_(@date)

OpenWindow(0,0,0,400,150,"",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
LoadFont(0,"System", 12, #PB_Font_Bold):SetGadgetFont(#PB_Default, FontID(0))
ButtonGadget(0, 0, 0,200, 20, "start")
ButtonGadget(2, 200, 0,200, 20, "stop")

TextGadget(1, 0, 30,200, 20, "")
TextGadget(3, 0, 50,200, 20, "start at:")
TextGadget(4, 0, 70,400, 20, "")
TextGadget(5, 0, 100,400, 20, "stop at:\/")
TextGadget(6, 0, 120,400, 20, "")
Repeat:ev=WaitWindowEvent():Select ev
  Case #PB_Event_Gadget:eg=EventGadget()
   Select eg
    Case 0:DisableGadget(0,1)
     n=0:GetLocalTime_(@date):Gosub settext
     
     Repeat:m+1
      GetLocalTime_(@date):If date\wMilliseconds<>date0\wMilliseconds
       date0=date:v+1
      ;SetGadgetText(1,""+date\wMilliseconds)
      If v<22:Debug date\wMilliseconds:EndIf
      ev=WindowEvent():If ev=#PB_Event_Gadget:eg=EventGadget()
       If eg=2:n=1
        Gosub settext
        SetGadgetText(5,"stop at: \/ Repeat_m\v="+m+"\"+v)
        m=0:v=0:DisableGadget(0,0);:WindowEvent():WindowEvent():WindowEvent():WindowEvent():WindowEvent()
      EndIf:EndIf:EndIf
     Until n=1
    Case 2:GetLocalTime_(@date):Gosub settext
     SetGadgetText(5,"stop at: \/ Repeat_m="+m)
     SetGadgetText(4,"")
   EndSelect
   
  Case #PB_Event_CloseWindow:Break
EndSelect:ForEver
End
settext:
SetGadgetText(eg+4,"WeekDay_"+Str(date\wDayOfWeek)+" > "+Str(date\wYear)+"."+Str(date\wMonth)+"."+Str(date\wDay)+" > "+Str(date\wHour)+
                 ":"+Str(date\wMinute)+":"+Str(date\wSecond)+"."+Str(date\wMilliseconds))
Return
my pb for chinese:
http://ataorj.ys168.com
User avatar
gurj
Enthusiast
Enthusiast
Posts: 658
Joined: Thu Jan 22, 2009 3:48 am
Location: china
Contact:

Re: MillisecondTime for windows os

Post by gurj »

ok!
code1:

Code: Select all

a=ElapsedMilliseconds()
re:
Debug a;0,1,2,3,...
Repeat:b=ElapsedMilliseconds()
 
Until b<>a
a=b:n+1
If n<22:Goto re:EndIf
code2:

Code: Select all

p=Date()
Repeat:q=Date()
 
Until q<>p
p=q
a=ElapsedMilliseconds()
Debug a
Repeat:q=Date()
 
Until q<>p
b=ElapsedMilliseconds()
Debug b
my pb for chinese:
http://ataorj.ys168.com
PureLust
Enthusiast
Enthusiast
Posts: 477
Joined: Mon Apr 16, 2007 3:57 am
Location: Germany, NRW

Re: MillisecondTime for windows os

Post by PureLust »

Thanks a lot, ... exactly what I needed for an actual project !!! Image
[Dynamic-Dialogs] - create complex GUIs the easy way
[DeFlicker] - easily deflicker your resizeable Windows
[WinFX] - Window Effects (incl. 'click-through' Window)
User avatar
gurj
Enthusiast
Enthusiast
Posts: 658
Joined: Thu Jan 22, 2009 3:48 am
Location: china
Contact:

Re: MillisecondTime for windows os

Post by gurj »

'bad' MillisecondTime:

Code: Select all

;'bad' MillisecondTime for windows os

OpenWindow(0,0,0,200,60,"",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
LoadFont(0,"System", 12, #PB_Font_Bold):SetGadgetFont(#PB_Default, FontID(0))
ButtonGadget(0, 0, 30,200, 25, "start/stop",#PB_Button_Toggle)
TextGadget(1, 0, 0,200, 20, "",#PB_Text_Center )
Repeat:ev=WaitWindowEvent():Select ev
  Case #PB_Event_Gadget:eg=EventGadget()
   Select eg
    Case 0
     If GetGadgetState(0):ClearDebugOutput()
      a=ElapsedMilliseconds()
      t=a:Repeat
       Delay(1);1-15-25-....
       b=ElapsedMilliseconds()
       c=b-a:If c>0:If c>3:Debug ""+b+"-"+a+"="+c:EndIf
        a=b:SetGadgetText(1,Str(a-t))
       EndIf
       WindowEvent()
       If GetGadgetState(0)=0:Break:EndIf
     ForEver:EndIf
   EndSelect
   
  Case #PB_Event_CloseWindow:Break
EndSelect:ForEver
End
my pb for chinese:
http://ataorj.ys168.com
User avatar
gurj
Enthusiast
Enthusiast
Posts: 658
Joined: Thu Jan 22, 2009 3:48 am
Location: china
Contact:

Re: MillisecondTime for windows os

Post by gurj »

'bad' MillisecondTime2:

Code: Select all

;'bad' MillisecondTime

OpenWindow(0,0,0,200,60,"",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
LoadFont(0,"System", 12, #PB_Font_Bold):SetGadgetFont(#PB_Default, FontID(0))
ButtonGadget(0, 0, 30,200, 25, "start/stop",#PB_Button_Toggle)
TextGadget(1, 0, 0,200, 20, "",#PB_Text_Center )
Repeat:ev=WaitWindowEvent():Select ev
  Case #PB_Event_Gadget:eg=EventGadget()
   Select eg
    Case 0
     If GetGadgetState(0):ClearDebugOutput()
      a=ElapsedMilliseconds()
      t=a:Repeat
       ;del---Delay(1);1-15-25-....
       b=ElapsedMilliseconds()
       c=b-a:If c>0:If c>16:Debug ""+b+"-"+a+"="+c:EndIf
        a=b:SetGadgetText(1,Str(a-t))
       EndIf
       WaitWindowEvent(1)
       If GetGadgetState(0)=0:Break:EndIf
     ForEver:EndIf
   EndSelect
   
  Case #PB_Event_CloseWindow:Break
EndSelect:ForEver
End
my pb for chinese:
http://ataorj.ys168.com
Post Reply