Manual de programación de OS/2/Llamadas DOSxxx para temporizadores

DosAsyncTimerEditar

DosAsyncTimer inicia un temporizador asíncrono de un sólo intervalo (solo cuenta una vez).

#define INCL_BASE
#include <os2.h>

ULONG ulTimeInterval;
HSEM hsemSemHandle;
PHTIMER pHandle;
APIRET rc; /* Codigo de error */

rc = DosAsyncTimer(ulTimeInterval, hsemSemHandle, pHandle);

ParámetrosEditar

ulTimeInterval El tiempo, en milisegundos, que debe pasar para que el temporizador active (post) el semáforo de evento. (El sistema redondea este valor al siguiente ciclo del conmutador de tareas).
hsemSemHandle El handle de un semáforo de evento que será activado cuando pase el tiempo indicado en ulTimeInterval. Tiene que ser un semáforo de evento compartido, y debe ser reseteado antes de llamar a DosAsyncTimer.
pHandle Un puntero a una posición de memoria donde OS/2 devolverá el handle del temporizador. Este handle puede ser pasado a DosStopTimer para parar el temporizador antes de que termine el intervalo.

Codigos de errorEditar

0 Sin error
323 Semáforo del sistema
324 No quedan temporizadores disponibles

DosGetDateTimeEditar

DosGetDateTime devuelve la fecha y hora actual del sistema.

#define INCL_BASE
#include <os2.h>

PDATETIME pPDateTime;
APIRET rc; /* Codigo de error */

rc = DosGetDateTime(pPDateTime);

ParámetrosEditar

pPDateTime Puntero a una estructura FechaHora, con los siguientes campos:
Hours (UCHAR) Hora actual, usando valores desde 0 hasta 23.
Minutes (UCHAR) Minuto actual, usando valores desde 0 hasta 59.
Seconds (UCHAR) Segundo actual, usando valores desde 0 hasta 59.
Hundredths (UCHAR) Centesima de segundo actual, usando valores desde 0 hasta 99.
Day (UCHAR) Día actual del mes, usando valores desde 1 hasta 31.
Month (UCHAR) Mes actual del año, usando valores desde 1 hasta 12.
Year (USHORT) Año actual.
TimeZone (SHORT) La diferencia en minutos entre la zona horaria actual y el meridiano de Greenwich (hora GMT). Este valor es positivo para zonas al oeste de Greenwich (Inglaterra) y negativo para zonas al este de Greenwich. Un valor de -1 indica que la zona horaria no está definida.
DayofWeek (UCHAR) Día actual de la semana, usando valores desde 0 hasta 6. (Domingo es igual a 0).

Codigos de errorEditar

No retorna ningún valor.

DosSetDateTimeEditar

DosSetDateTime permite cambiar la fecha y la hora actual.

#define INCL_BASE
#include <os2.h>

PDATETIME pPDateTime;
APIRET rc; /* Codigo de error */

rc = DosSetDateTime(pPDateTime);

ParámetrosEditar

pPDateTime Puntero a una estructura FechaHora donde se le dan a OS/2 los nuevos valores. Tiene los siguientes campos:
Hours (UCHAR) Hora actual, usando valores desde 0 hasta 23.
Minutes (UCHAR) Minuto actual, usando valores desde 0 hasta 59.
Seconds (UCHAR) Segundo actual, usando valores desde 0 hasta 59.
Hundredths (UCHAR) Centesima de segundo actual, usando valores desde 0 hasta 99.
Day (UCHAR) Día actual del mes, usando valores desde 1 hasta 31.
Month (UCHAR) Mes actual del año, usando valores desde 1 hasta 12.
Year (USHORT) Año actual.
TimeZone (SHORT) La diferencia en minutos entre la zona horaria actual y el meridiano de Greenwich (hora GMT). Este valor es positivo para zonas al oeste de Greenwich (Inglaterra) y negativo para zonas al este de Greenwich. Un valor de -1 indica que la zona horaria no está definida.
DayofWeek (UCHAR) Día actual de la semana, usando valores desde 0 hasta 6. (Domingo es igual a 0).

Codigos de errorEditar

0 Sin error
327 Fecha u hora no válida

DosSleepEditar

DosSleep duerme el thread actual durante un intervalo de tiempo determinado. Este intervalo es redondeado al ciclo de conmutador de programas más próximo. Si el intervalo indicado es 0 y hay algún thread de igual o mayor prioridad en espera, pasará a ejecutarse, durmiendo el thread actual hasta el siguiente turno. Si no hay ningun thread que cumpla esa condición, se retornará inmediatamente (nunca se cede el control a un thread de menor prioridad). En aplicaciones PM no se debe usar esta llamada, sino WinStartTimer.

#define INCL_BASE
#include <os2.h>

ULONG ulTimeInterval;
APIRET rc; /* Codigo de error */

rc = DosSleep(ulTimeInterval);

ParámetrosEditar

ulTimeInterval El tiempo, en milisegundos, durante el cual se detendrá la ejecución del thread.

Codigos de errorEditar

0 Sin error
322 Incapaz de despertar

DosStartTimerEditar

DosStartTimer inicia un temporizador asíncrono, que se repite indefinidamente.

#define INCL_BASE
#include <os2.h>

ULONG ulTimeInterval;
HSEM hsemSemHandle;
PHTIMER pHandle;
APIRET rc; /* Codigo de error */

rc = DosStartTimer(ulTimeInterval, hsemSemHandle, pHandle);

ParámetrosEditar

ulTimeInterval El tiempo, en milisegundos, que debe pasar para que el temporizador active (post) el semáforo de evento. (El sistema redondea este valor al siguiente ciclo del conmutador de tareas).
hsemSemHandle El handle de un semáforo de evento que será activado cada vez que pase el tiempo indicado en ulTimeInterval. Tiene que ser un semáforo de evento compartido, y debe ser reseteado entre cada activación con DosResetEventSem.
pHandle Un puntero a una posición de memoria donde OS/2 devolverá el handle del temporizador. Este handle puede ser pasado a DosStopTimer para parar el temporizador.

Codigos de errorEditar

0 Sin error
323 Semáforo del sistema
324 No quedan temporizadores disponibles

DosStopTimerEditar

DosStopTimer detiene un temporizador asíncrono. Una vez hecho esto, no se puede hacer ninguna suposición sobre el estado del semáforo asociado a éste, por lo que si se va a reutilizar, es necesario inicializarlo con DosResetEventSem.

#define INCL_BASE
#include <os2.h>

HTIMER htimerHandle;
APIRET rc; /* Codigo de error */

rc = DosStopTimer(htimerHandle);

ParámetrosEditar

htimerHandle El handle del temporizador a parar.

Codigos de errorEditar

0 Sin error
326 Handle de temporizador no válido