Unités | | | | Andre Rohland | allô liebe Community,
je suis déjà un assez alter Profan - Dino ( depuis Version 5.5 ). qui Entwicklung de Profan habe je jusqu'à zur aktuellen Version stets aufmerksam et begeistert verfolgt, allerdings toujours seulement im Background, weil je mich la fois avec Thomas Bois gefetzt et mir pour pas wirklich Komplimente qui damaligen Profanergruppe eingefangen habe... .
Zur Zeit bastle je à einem Programme, welches erfordert, dass qui Systemzeit possible oui c'est ca aktualisiert, bzw. abgerufen wird.
Pour cette habe je bereits plusieurs Lösungsansätze gesehen, allerdings kamen vous mir zum partie comme: 1. trop compliqué et 2. trop grand avant, besonders si on seulement qui aktuelle Zeit beötigt.
Gott sei Dank gibt es toujours Server, qui qui aktuelle Zeit et cela date sur cela sogenannte Daytime-Protocol comme String zurückgeben. qui le tort ist seulement, dass cet Protokoll pas sans équivoque défini ist, so dass verschiedene Server aussi verschiedene Cordes zurückgeben... .
peut-être peux quelqu'un de Euch cet Unit gebrauchen, je serait mich par-dessus freuen. Voir le texte source gibt es naturellement sur Anfrage... .
Viele Grüße André Rohland |
| | | | |
| | | | | | | |
| | Andre Rohland | Habe den Voir le texte source encore un peu kommentiert.
Inettime
$L
Def WSAStart(2) !wsock32.dll,WSAStartup
Def socket(3) !wsock32.dll,socket
Def WSAAsyncSelect(4) !wsock32.dll,WSAAsyncSelect
Def htons(1) !wsock32.dll,htons
Def connect(3) !wsock32.dll,connect
Def gethostbyname(1) !wsock32.dll,gethostbyname
Def recv(4) !wsock32.dll,recv
Def ioctlsocket(3) !wsock32.dll,ioctlsocket
Def closesocket(1) !wsock32.dll,closesocket
Def WSAClean(0) !wsock32.DLL,WSACleanup
Def WSAGetLastError(0) !wsock32.dll,WSAGetLastError
Def RtlMoveMemory(3) !kernel32,RtlMoveMemory
Def InternetGetConnectedState(2) !WININET.DLL,InternetGetConnectedState
Def SetSystemTime(1) !KERNEL32,SetSystemTime
Def SetLocalTime(1) !KERNEL32,SetLocalTime
USERMESSAGES 4100 Message, qui auftritt, si un Netzwerkereignis stattfindet (WSAAsyncSelect)
proc ?_getTime
parameters netadr$,netport&,count&,pointer&,erlaubt&
Winsock - Variablen
declare wsaerror&,Inetadresse#,sockaddr_in#,zwbuf#,avdat&
declare dummy&,hostent#,xnetport&,xnetorderadr&,wsadata#,mysocket&
dim Inetadresse#,255
dim wsadata#,526
dim sockaddr_in#,16
dim hostent#,$5000
Kontrolle et Contrôle
declare ende%,ergebnis$,tstring$
Systemzeit etc
declare wYear%,wMonth%,wDay%,wHour%,wMinute%,wSecond%
ergebnis$ =
Bich je (déjà) drin ???
ifnot InternetGetConnectedState(0,0)
ergebnis$ = error 1
return ergebnis$
endif
Winsock.dll initialisieren
clear wsadata#
si WSAStart($101,wsadata#)
ergebnis$ = error 2
return ergebnis$
endif
Streamsocket erzeugen
P1: (AF_INET = 2) Internet Protokoll version 4 (IPv4) Adressfamilie/// P2: (SOCK_STREAM = 1)
es soll un Streamsocket erzeugt volonté/// P3: 0 - Provider bestimmt cela Protokoll
mysocket&=socket(2,1,0)
si mysocket& = -1
ergebnis$ = error 3
WSAClean()
return ergebnis$
endif
Nonblocking modus / Usermessage übergeben
si WSAAsyncSelect(mysocket&,%hwnd,4100,$1) <> 0
ergebnis$ = error 4
closesocket(mysocket&)
WSAClean()
return ergebnis$
endif
clear Inetadresse#
string Inetadresse#,0=netadr$
dummy&=gethostbyname(Inetadresse#) liefert Pointer sur Hostent - Struktur
si dummy& = 0 Internetadresse konnte pas trouvé/ aufgelöst volonté
ergebnis$ = error 5
closesocket(mysocket&)
WSAClean()
return ergebnis$
endif
clear hostent#
Kopieren qui Infos aus qui hostent - Struktur ( dummy& ) dans qui eigene Bereichsvariable hostent#
RtlMoveMemory(hostent#,dummy&,16)
dummy&=long(hostent#,12)
RtlMoveMemory(hostent#,dummy&,4)
dummy&=long(hostent#,0)
RtlMoveMemory(hostent#,dummy&,255)
xnetorderadr&=long(hostent#,0)
xnetport&=htons(netport&)
Struktur pour winsock connect (Protokoll, Port, Adresse ) füllen
word sockaddr_in#,0=2 AF_inet
word sockaddr_in#,2=xnetport&
long sockaddr_in#,4=xnetorderadr&
Streamsocket relier...
wsaerror& = connect(mysocket&,sockaddr_in#,16)
si wsaerror& = -1
wsaerror& = WSAGetLastError()
ifnot (wsaerror& = 10035) | (wsaerror& = 0) 0 = ne...aucune faute, 10035 = WSAWOULDBLOCK, cet
ergebnis$ = error 6 annonce erfolgt à cause de dem NonBlocking - Modus,
closesocket(mysocket&) ist mais pour uns unbeachtlich
WSAClean()
return ergebnis$
endif
endif
qui nachfolgende Boucle pourrait abgeändert volonté, indem z.B. SLEEP count& (= paramètre P3)
verwendet et qui Anzahl qui Durchläufe herabgesetzt wird
ebenso pourrait aussi qui USERMESSAGE 4100 abgefragt volonté, pour den de mir beabsichtigten Zweck
genügte cet variante ( i.d.R. liegt un Ergebnis pour etwa 50 Durchläufen avant ).
si ergebnis$ =
avdat&=0
Whileloop count&
ioctlsocket(mysocket&,$4004667F,addr(avdat&)) $4004667F = FIONREAD - prüft si données empfangen
si avdat& > 0 wurden et gibt qui Anzahl dans avdat& zurück
dim zwbuf#,avdat&
clear zwbuf#
recv(mysocket&,zwbuf#,avdat&,0) liest qui Anzahl qui empfangenen données (avdat&)
pause dans zwbuf# un
endif
endwhile
si avdat& > 0
ergebnis$ = string$(zwbuf#,0)
ergebnis$=translate$(ergebnis$,chr$(13)+chr$(10),) Carriage return / Line Feed entfernen
ifnot pointer&=0 paramètre 4 qui Unit, pointer& ist qui Adresse
wYear% = val(right$(ergebnis$,4)) einer übergebenen SystemTime - Struktur
RtlMoveMemory(pointer&,addr(wYear%),2) Struktur wird pleine....
cas instr(JAN,Upper$(ergebnis$)) : wMonth% = 1
cas instr(FEB,Upper$(ergebnis$)) : wMonth% = 2
cas instr(MAR,Upper$(ergebnis$)) : wMonth% = 3
cas instr(APR,Upper$(ergebnis$)) : wMonth% = 4
cas instr(MAY,Upper$(ergebnis$)) : wMonth% = 5
cas instr(JUN,Upper$(ergebnis$)) : wMonth% = 6
cas instr(JUL,Upper$(ergebnis$)) : wMonth% = 7
cas instr(AUG,Upper$(ergebnis$)) : wMonth% = 8
cas instr(SEP,Upper$(ergebnis$)) : wMonth% = 9
cas instr(OCT,Upper$(ergebnis$)) : wMonth% = 10
cas instr(NOV,Upper$(ergebnis$)) : wMonth% = 11
cas instr(DEC,Upper$(ergebnis$)) : wMonth% = 12
RtlMoveMemory(pointer&+2,addr(wmonth%),2)
wDay% = val(substr$(ergebnis$,3,chr$(32)))
RtlMoveMemory(pointer&+6,addr(wDay%),2)
tstring$ = substr$(ergebnis$,4,chr$(32))
wHour% = val(substr$(tstring$,1,:))
RtlMoveMemory(pointer&+8,addr(wHour%),2)
wMinute% = val(substr$(tstring$,2,:))
RtlMoveMemory(pointer&+10,addr(wMinute%),2)
wSecond% = val(substr$(tstring$,3,:))
RtlMoveMemory(pointer&+12,addr(wSecond%),2)
d'autre
erlaubt& = 0 aucun Struktur übergeben, alors aucun Erlaubnis zum
endif mettons qui Systemzeit = ignoriere paramètre 5
d'autre
ergebnis$ = error 7 es wurden aucun données empfangen
endif
closesocket(mysocket&)
WSAClean()
endif
si erlaubt& paramètre 5 qui Unit: mettons qui Systemzeit erlaubt
SetSystemTime(pointer&)
dummy& = SetLocalTime(pointer&)
casenot dummy& : ergebnis$ = error 8 faute beim mettons qui System ( lokalen ) Zeit
endif
return ergebnis$
endproc
|
| | | | |
| | Andre Rohland | Nanüchen...
Unit wurde 10 la fois heruntergeladen, kommentierter Voir le texte source wurde trop Disposition gestellt.
Wirklich aucun Bemerkungen, Hinweise o.ä. ? |
| | | | |
| | RGH | allô Andre,
gib den Leuten doch ewas Zeit, sich avec cela trop befassen. je lade souvent quoi herunter, um ensuite seulement très viel später - quelquefois sommes es Monate - en supplément trop venons, mich avec cela trop befassen. et manches wird geladen, venez mais mangels Gelegenheit nie zum Einsatz. sommes arrêt pas alles Schüler, Studenten ou bien retraité avec viel Zeit ici ...
Salut Roland (qui befürchtet, aussi dereinst comme retraité pas so viel Zeit trop avons, comment il volontiers hätte et comme étudiant pas cela nötige argent hatte, à Zeit so trop nutzen, comment il es autrefois volontiers getan hätte) |
| | | Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 04.02.2009 ▲ |
| |
| | | je lehne den Gedanken ab, dass Roland jamais retraité ist.
@Andre: avec qui Zeit volonté cela sûrement dutzende Downloads. toutefois, wir brauchen une weiteren Schlachtplan, viel viel plus XProfaner trop gewinnen. |
| | | | |
| | | | | | | |
| | Andre Rohland | O.k., O.k. habe je kapiert...
je voulais wirklich pas rumningeln et drängeln, je hatte mich seulement un peu gewundert. IF hatte doch sur meinen ersten poste ( Voir le texte source gibts sur Anfrage ) prompt avec Anfrage! geantwortet et je hatte eh bien irgendwie un peu Bammel, qui peut-être quelque chose pas funzt.
@Roland: Toll, toi wieder personnelle trop lesen. s'il te plaît mais pas vom alten Profan - Dino aus dem ersten poste irreführen laisser, je suis ( avec viel Glück ) peut-être dans 23 Jahren Mitglied Deiner dritten catégorie (retraité) . jusqu'à dahin arbeite je encore comme Trainer à Grundschulen avec Kindern. Zur Zeit sommes ici dans Berlin-Brandenburg Schulferien, quoi peut-être meinen actuellement übermäßigen Zeitfonds erklärt... .
@IF: Es ging mir wirklich moins à numéro qui Downloads, comme vielmehr tout autor, qui qui Unit aussi richtig funkioniert et brauchbar ist. Bezüglich Schlachtplan : Ist un assez komplexes Thema, à dem je durchaus intéressé suis. Schlage avant, wir belasten cette Beitrag avec cela pas, mais faire entweder une neuen Beitrag sur, ou bien unterhalten uns direct per eMail. Wir könnten so zum Beispiel Vorstellungen austauschen, gemeinsam par-dessus rire et im Ergebnis peut-être doch une gute Strategie trouver... . |
| | | | |
| | Andre Rohland | Doch encore un wichtiger Hinweis...
dans meinem Programme, dans welchem je qui Unit verwende, volonté alle trois Zeitserver qui Uni Braunschweig abgefragt. Im Falles eines Mißerfolgs wird qui Abfrage alle trois Minuten erneut durchgeführt.
Pour Kompilieren et Linken zur ausführbaren *.exe Dossier konnte aussi pour 20 Minuten encore aucun liaison le Zeitservern hergestellt volonté, quoique im Interpreter alles correcte klappte.
qui Ursache: je verwende Total Care de GDATA (Antivirus + Firewall). Pour dem Linken avec dem Runtime-Modul blockte qui Firewall qui liaison, quoi vous mir gemeinerweise naturellement pas anzeigte... .
Solltet son alors solche Probleme avons überprüft s'il te plaît d'abord Eure Einstellungen pour Euer Antivirusprogramm, bzw. qui Firewall(s).
dans meinem piège genügte un einfacher Scan avec qui Antivirus-Komponente de GDATA Total Care, um mon fertiges Programme comme vertrauenswürdig einzustufen, après klappte wieder alles beim ersten Versuch.
mfG André |
| | | | |
| | E.T. | Moin, hab ca la fois ausgegraben, weil je pour oui c'est ca so quelque chose cherche. Bringe mais cela Beispiel irgendwie pas zum courir
ou bien quelqu'un 'ne autre concept, qui Systemzeit per Internet trop se mettre ??
Hintergrund: mon calculateur pour mon Wetterstation hat pour einem Neustart (bzw. kurzzeitigem Stromausfall) toujours unsinnige Zeit-Einstellungen. Wohl qui Akku hin, peut sich sur 'nem Mini-PC (Orbsmart) aussi pas so simple échanger). avec Win-eigenen Mitteln komm je pas zuverlässig plus, qui Systemzeit sûrement pour dem calculateur-Start trop se mettre: la fois klappts, öffters mais aussi pas.
là qui Software pour mon Wetterstation (et Auswertung etc.) eh pour dem Start de WIN 8.1 de einem XProfan-Programme qui Reihe pour gestartet wird, était so qui idée, doch avant dem starten qui relevanten Programme juste qui Zeit auparavant avec irgendeinem Server trop syncronisieren. |
| | | Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 15.06.2020 ▲ |
| |
| | Matthias Arlt | cela obige Beispiel veux chez mir aussi pas so droite... une autre Possibilité bestünde sur qui Kommandozeile comment folgt:
net time /setsntp:ptbtime2.ptb.de w32tm /resync
qui Zeitserver ist naturellement variable (pas alle marcher toujours). cela peut sich ensuite sur différent Weise automatisieren. |
| | | WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 15.06.2020 ▲ |
| |
| | E.T. | Matthias Arlt (15.06.2020)
net time /setsntp:ptbtime2.ptb.de w32tm /resync
Funktioniert aussi pas, comme soll. Irgendwie startet mon 8.1 den "Zeitdienst" seulement certains Zeit pour dem Start / Neustart, cela peut sich sous Dienste aussi pas changement (trotz "Start sofort" toujours une Ewigkeit später). c'est pourquoi funzt cet variante aussi pas sûrement, et Erfolg ou bien Misserfolg peux aussi pas être contrôlé. |
| | | XProfan X3Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 15.06.2020 ▲ |
| |
|
répondreOptions du sujet | 16.561 Views |
Themeninformationencet Thema hat 6 participant: |