Читать RTC в Windows - PullRequest
       42

Читать RTC в Windows

3 голосов
/ 16 июня 2019

Я не разработчик C / ASM, и я хотел бы получить текущую дату и время из RTC с помощью программы для Windows.

Здесь , я нашел код на C, чтобы сделатьthis.

Я изменил этот код следующим образом и скомпилировал его с помощью компилятора Visual Studio 2017 cl.exe без ошибок и предупреждений:

#include <stdio.h>

int main()
{
   unsigned char tvalue, index;

   printf("STARTING...\n");

   for(index = 0; index < 128; index++)
   {
      __asm
      {
         cli             /* Disable interrupts */
         mov al, index   /* Move index address */
                         /* since the 0x80 bit of al is not set, */
                         /* NMI is active */
         out 0x70, al    /* Copy address to CMOS register */
                         /* some kind of real delay here is probably best */
         in al, 0x71     /* Fetch 1 byte to al */
         sti             /* Enable interrupts */
         mov tvalue, al
      }

      printf("%u\n", (unsigned int)tvalue);
   }

   printf("FINISHED!\n");
   return 0;
}

Когда я пытаюсь выполнить exeиз командной строки ничего не вижу, только строка «НАЧИНАЕТСЯ ...».

Что я делаю не так?

Большое спасибо.

Ответы [ 2 ]

8 голосов
/ 16 июня 2019

Пример кода, который вы нашли, - это код операционной системы, а не код Windows. Было бы просто хаосом, если бы Windows позволяла случайным процессам случайным образом взаимодействовать с аппаратными устройствами, такими как часы реального времени. В операционной системе есть драйвер, который взаимодействует с часами реального времени, и он не позволяет процессам случайным образом «засовывать» в него.

Как самая очевидная проблема, вы не можете просто отключить прерывания в процессе, пока работает современная операционная система!

3 голосов
/ 16 июня 2019

Я хотел бы получить текущую дату и время из RTC с помощью программы для Windows.

В Windows вы используете API Windows (или оболочки)

Основные API для чтения системного времени:

GetSystemTime

GetSystemTimePreciseAsFileTime

NtQuerySystemTime

...