Avatar billede delphi Nybegynder
09. december 1999 - 08:54 Der er 7 kommentarer og
1 løsning

BP7: Tid synchronisering mod server i DOS

Er der nogen der ved, hvorledes man kan synchronisere uret i en DOS maskine, fra en Borland Pascal 7 application, på en maskine der aldrig slukkes?
Jeg har et sæt dataopsamlings maskiner, hvor tiden driver.  Fx. har en maskine jeg manuelt indstillede den 22/11 i dag tabt 3.5 timer.  Dette er ikke holdbart!
Maskinerne står i kontakt med nogle NT servere via et TCP/IP netværk.
Det må på en eller anden måde være muligt, at opdatere urene mod et atomur eller anden reference tidsstandard.

NiP/Delphi
Avatar billede chris13 Nybegynder
09. december 1999 - 09:21 #1
Hvis den er koblet til internet kan du bruge et time syncronizer program og en timeserver:

Yatz32 (kan fåes hos Tucows)
ntp.inet.tele.dk (TDK's timeserver)

mvh

Christian
Avatar billede delphi Nybegynder
09. december 1999 - 09:28 #2
Dem kender jeg. men som jeg skrev, så skal jeg synchronisere fra en Pascal program - Maskinerne kører konstant et dataopsamlingsprogram og det er ikke praktisk muligt at "stille uret" manuelt - der er ikke engang tastatur på maskinerne...

NiP
Avatar billede chris13 Nybegynder
09. december 1999 - 09:31 #3
Hvis dataopsamlingsmaskinen kun kører DOS kender jeg ikke svaret, men hvis den kører windows kan Yatz32 automatisk stille uret når programmet (yatz32) starter op.

mvh

Christian
Avatar billede sjensen Nybegynder
09. december 1999 - 11:24 #4
Brug EXEC funktionen til at starte en DOS commandline og sæt parameter til

"Date < dd.mm.yyyy"

og/eller

"Time < hh:mm"

i Exec kan du specificere at den skal termineres efter eksekvering og ellers kan du bare skabe en bat fil med samme linier og hvor sidste linie er EXIT.

Det vil ændre klokken permanent, både i DOS og i BIOS

Sig til hvis du har brug for yderligere hjælp så skal jeg sende dig en stump (turbo pascal 5) kode der kan gøre det.

sjensen
Avatar billede sjensen Nybegynder
09. december 1999 - 11:26 #5
Jeg glemte lige den detaile med serveren. Det letteste, når det ikke er windows/internet o.s.v. er at skrive en temp fil på serverens harddisk, tage hhv. dato og tid fra filen, slette den igen og så bruge denne dato og tid som beskrevet i mit svar.

sjensen
Avatar billede delphi Nybegynder
09. december 1999 - 13:20 #6
Jeg har overvejet en løsning i de baner.  I øjeblikket er det sådan at der gemmes data i en fil ca. hvert tiende sekund.  Det burde således være muligt at bruge en kombination af GetFTime, UnPackTime og SetTime. 
Denne løsning har dog to umiddelbare problemer:
- Fil serverens tid stilles om ved Sommer-/Ventertid.  Det vil to gange om året give mig et problem i min dataopsamling.
- SetTime sætter ikke Bios (RTC) clocken - kun MS-Dos timeren, som er den der driver. 
Det sidste er måske ikke umiddelbart det største problem, men jeg ville gerne vide, om der ikke er en metode til at læse den ægte tid fra en ekstern kilde, fx. en NTP server, og så bruge denne tid til at sætte maskinens system tid.
Det er iøvrigt ikke sådan at der ikke er internet på de pågældende maskiner - de kører bare dos.  Findes der et DOS ntp object?

NiP
Avatar billede sjensen Nybegynder
10. december 1999 - 13:11 #7
Næh, det tror jeg ikke, men til gengæld findes der flere DOS interuptkald der kan give dig tiden / datoen fra en given maskine i netværket.

Hvis du har en bog der viser de forskellige dos-interupts (f.eks. Peter Norton's) så skal du kigge efter dos int. 20, med funktionsnumre 5Exx. Det er dem der handler om net. Dog SKAL dos versionen være 3.29 eller større men det er den vel også ?

Hvis du ikke selv kan se noget så har jeg bogen derhjemme, men er ikke tilmeldt eksperten hjemmefra (2 brugere du ved !!) så jeg kan ikke hjælpe dig før i næste uge, med mindre jeg kan sende til dig direkte på mail.

sjensen
Avatar billede delphi Nybegynder
13. december 1999 - 11:23 #8
Jeg har for at være færdig med projektet, benyttet metode med en fil næsten sådan som SJensen bekrev.  Jeg har givet ham points'ne, selvom jeg egentligt selv havde tænkt i de baner (hvilket han selvsagt ikke kunne vide) og selvom svaret ikke går på det jeg helst ville ha', nemlig muligheden for at hente tiden via nettet.

PS: Jo jeg har en interrupt bog, dog ikke Nortons med Advanced MS-DOS fra Microsoft Press.  Er INT 20 i øvrigt ikke Program Exit?  (Det er længe siden jeg har knoklet med Dos, men er det ikke Int 21 du mener?)  Jeg mindes dog ikke lige i hovedet, at der er kald der giver adgang til andre maskiners clock, sådan som du beskriver.

NiP
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester