hi
ich baue mir gerade ein tool welches übers inernet die aktuelel uhrzeit holt und anzeigt und ab einer bestimmten sekunde bsp. 37 und 50 einen zähler hochzählt.
jedoch zählt der zähler nur 1x hoch und danach nicht mehr. ich weiß nicht genau warum
!!!gelöst! es fehlte bei der Abfrage ein $i +1 anstaatt nur +1
anbei mal der code
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.0
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
; Script Start - Add your code below here
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Date.au3>
#include <IE.au3>
Global $ntpServer = '0.de.pool.ntp.org' ; NTP-Server zum synchronisieren der Uhrzeit über das Internet
Dim $i = 0
Dim $wartezeit = 2
#Region ### START Koda GUI section ### Form=c:\users\steven\desktop\autoit projekt\hauptseite.kxf
$Form1_1 = GUICreate("Zeitkommentar", 268, 383, 192, 124)
$quit_btn = GUICtrlCreateButton("Quit", 144, 96, 75, 25, $WS_GROUP)
$Save_btn = GUICtrlCreateButton("Speichern", 48, 96, 75, 25, $WS_GROUP)
$Label1 = GUICtrlCreateLabel("Countdown:", 48, 40, 178, 17)
$Label2 = GUICtrlCreateLabel("Aktuelle Zeit:", 48, 16, 178, 17)
$Edit1 = GUICtrlCreateEdit("tee", 40, 152, 193, 193)
$Label3 = GUICtrlCreateLabel("Wartezeit:", 48, 64, 52, 17)
$wartezeit_inp = GUICtrlCreateInput(" ", 120, 64, 73, 21)
GUICtrlSetData(-1, "3")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
AdlibRegister("_timer", 1000)
AdlibRegister("_TimeSync", 600)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
AdlibUnRegister("_TimeSync")
AdlibUnRegister("_timer")
Exit
Case $quit_btn
AdlibUnRegister("_TimeSync")
AdlibUnRegister("_timer")
Exit
Case $Save_btn
Save()
MsgBox(0, "Test", "Die Wartezeit wurde auf " & $wartezeit & " Gesetzt")
EndSwitch
WEnd
Func Save()
$wartezeit = GUICtrlRead($wartezeit_inp)
EndFunc ;==>Save
;hier Beginnt der Durchlauf Counter
Func _timer()
$sek = StringRight(_TimeSync(), 2)
If $sek = 30 or $sek = 50 Then
$i = +1
If $i = $wartezeit Then
_IECreate("www.google.com", 1, 1, 0);hier muss die Funktion rein die dann nach ablauf ausgeführt werden soll
$i = 0
EndIf
EndIf
GUICtrlSetData($Label1, "Countdown: " & $i)
EndFunc ;==>_timer
Func _TimeSync()
UDPStartup()
Dim $socket = UDPOpen(TCPNameToIP($ntpServer), 123)
;$status = UDPSend($socket, MakePacket('1b0e010000000000000000004c4f434ccb1eea7b866665cb00000000000000000000000000000000cb1eea7b866665cb'))
Local $status = UDPSend($socket, MakePacket('1b0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'))
Local $data = '', $a = TimerInit() ; Timer setzen, damit im Fehlerfall die Schleife abgebrochen wird
While $data = ''
$data = UDPRecv($socket, 100)
Sleep(100)
If TimerDiff($a) > 1000 Then ExitLoop ; Wenn Timer > 1sek. (Fehler), dann Schleife verlassen
WEnd
If $data <> '' Then
UDPCloseSocket($socket)
UDPShutdown()
Local $unsignedHexValue = StringMid($data, 83, 8); Extract time from packet. Disregards the fractional second.
Local $value = UnsignedHexToDec($unsignedHexValue)
Local $TZinfo = _Date_Time_GetTimeZoneInformation()
Local $TZoffset = -(UnsignedToLong($TZinfo[1]) + (UnsignedToLong($TZinfo[4]) * ($TZinfo[0] < 2)) + (UnsignedToLong($TZinfo[7]) * ($TZinfo[0] = 2)))
Local $UTC = _DateAdd('s', $value, '1900/01/01 00:00:00')
Sleep(100)
;Return _DateAdd('n',$TZoffset,$UTC)
$uhr = StringSplit(_DateAdd('n', $TZoffset, $UTC), " ")
GUICtrlSetData($Label2, "Aktuelle Zeit: " & $uhr[2])
Return $uhr[2]
EndIf
EndFunc ;==>_TimeSync
Func MakePacket($d)
Local $p = ''
While $d
$p &= Chr(Dec(StringLeft($d, 2)))
$d = StringTrimLeft($d, 2)
WEnd
Return $p
EndFunc ;==>MakePacket
Func UnsignedHexToDec($n)
Local $ones = StringRight($n, 1)
$n = StringTrimRight($n, 1)
Return Dec($n) * 16 + Dec($ones)
EndFunc ;==>UnsignedHexToDec
Func UnsignedToLong($value)
Local Const $OFFSET_4 = 4294967296
Local Const $MAXINT_4 = 2147483647
If $value < 0 Or $value >= $OFFSET_4 Then Return SetError(1, 0, $value) ;' Overflow
If $value <= $MAXINT_4 Then
Return $value
Else
Return $value - $OFFSET_4
EndIf
EndFunc ;==>UnsignedToLong