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

De Wikilibros, la colección de libros de texto de contenido libre.

DosAsyncTimer[editar]

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ámetros[editar]

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 error[editar]

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

DosGetDateTime[editar]

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ámetros[editar]

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 error[editar]

No retorna ningún valor.

DosSetDateTime[editar]

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ámetros[editar]

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 error[editar]

0 Sin error
327 Fecha u hora no válida

DosSleep[editar]

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ámetros[editar]

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

Codigos de error[editar]

0 Sin error
322 Incapaz de despertar

DosStartTimer[editar]

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ámetros[editar]

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 error[editar]

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

DosStopTimer[editar]

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ámetros[editar]

htimerHandle El handle del temporizador a parar.

Codigos de error[editar]

0 Sin error
326 Handle de temporizador no válido