Diferencia entre revisiones de «Manual de programación de OS/2/Llamadas DOSxxx para temporizadores»

Contenido eliminado Contenido añadido
m Bot controlado: actualizada sintaxis de tabla; cambios triviales
 
Línea 3:
<P>DosAsyncTimer inicia un temporizador as&iacute;ncrono de un s&oacute;lo intervalo (solo cuenta una vez).
 
<P>#define INCL_BASE<BRbr />#include &lt;os2.h&gt;
<P>ULONG ulTimeInterval;
<BRbr />HSEM hsemSemHandle;
<BRbr />PHTIMER pHandle;
<BRbr />APIRET rc; /* Codigo de error */
<P>rc = DosAsyncTimer(ulTimeInterval, hsemSemHandle, pHandle);
== Par&aacute;metros ==
<TABLE>
<TR><TD>ulTimeInterval</TD><TD>El tiempo, en milisegundos, que debe pasar para que el temporizador active (<I>post</I>) el sem&aacute;foro de evento. (El sistema redondea este valor al siguiente ciclo del conmutador de tareas).</TD></TR>
 
{|
<TR><TD>hsemSemHandle</TD><TD>El handle de un sem&aacute;foro de evento que ser&aacute; activado cuando pase el tiempo indicado en <B>ulTimeInterval</B>. Tiene que ser un sem&aacute;foro de evento compartido, y debe ser reseteado antes de llamar a <B>DosAsyncTimer</B>.</TD></TR>
|-
<TR><TD>pHandle</TD><TD>Un puntero a una posici&oacute;n de memoria donde OS/2 devolver&aacute; el handle del temporizador. Este handle puede ser pasado a <B>DosStopTimer</B> para parar el temporizador antes de que termine el intervalo.</TD></TR>
| ulTimeInterval
| El tiempo, en milisegundos, que debe pasar para que el temporizador active (''post'') el sem&aacute;foro de evento. (El sistema redondea este valor al siguiente ciclo del conmutador de tareas).
|-
| hsemSemHandle
| El handle de un sem&aacute;foro de evento que ser&aacute; activado cuando pase el tiempo indicado en '''ulTimeInterval'''. Tiene que ser un sem&aacute;foro de evento compartido, y debe ser reseteado antes de llamar a '''DosAsyncTimer'''.
|-
| pHandle
| Un puntero a una posici&oacute;n de memoria donde OS/2 devolver&aacute; el handle del temporizador. Este handle puede ser pasado a '''DosStopTimer''' para parar el temporizador antes de que termine el intervalo.
|}
== Codigos de error ==
 
{|
</TABLE>
|-
==Codigos de error==
| 0 || Sin error
<TABLE>
|-
<TR><TD>0</TD><TD>Sin error</TD></TR>
<TR><TD>| 323</TD><TD> || Sem&aacute;foro del sistema</TD></TR>
|-
<TR><TD>324</TD><TD>No quedan temporizadores disponibles</TD></TR>
| 324
</TABLE>
| No quedan temporizadores disponibles
|}
<P>
 
= DosGetDateTime =
 
<P>DosGetDateTime devuelve la fecha y hora actual del sistema.
<P>#define INCL_BASE<BRbr />#include &lt;os2.h&gt;
<P>PDATETIME pPDateTime;
<BRbr />APIRET rc; /* Codigo de error */
<P>rc = DosGetDateTime(pPDateTime);
== Par&aacute;metros ==
<TABLE>
<TR><TD>pPDateTime</TD><TD>Puntero a una estructura FechaHora, con los siguientes campos:</TD></TR>
<TR><TD></TD><TD>
<TABLE BORDER=1>
 
{|
<TR>
|-
<TD>Hours (UCHAR)</TD>
| pPDateTime
<TD>Hora actual, usando valores desde 0 hasta 23.</TD>
| Puntero a una estructura FechaHora, con los siguientes campos:
</TR>
|-
<TR>
|
<TD>Minutes (UCHAR)</TD>
||
<TD>Minuto actual, usando valores desde 0 hasta 59.</TD>
{| BORDER="1"
</TR>
|-
<TR>
| 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&iacute;a actual del mes, usando valores desde 1 hasta 31.
|-
| Month (UCHAR)
| Mes actual del a&ntilde;o, usando valores desde 1 hasta 12.
|-
| Year (USHORT) || A&ntilde;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&aacute; definida.
|-
| DayofWeek (UCHAR)
| D&iacute;a actual de la semana, usando valores desde 0 hasta 6. (Domingo es igual a 0).
|}
|}
== Codigos de error ==
 
{|
<TD>Seconds (UCHAR)</TD>
|-
<TD>Segundo actual, usando valores desde 0 hasta 59.</TD>
| No retorna ning&uacute;n valor.
</TR>
|}
<TR>
<TD>Hundredths (UCHAR)</TD>
<TD>Centesima de segundo actual, usando valores desde 0 hasta 99.</TD>
</TR>
<TR>
<TD>Day (UCHAR)</TD>
 
<TD>D&iacute;a actual del mes, usando valores desde 1 hasta 31.</TD>
</TR>
<TR>
<TD>Month (UCHAR)</TD>
<TD>Mes actual del a&ntilde;o, usando valores desde 1 hasta 12.</TD>
</TR>
<TR>
<TD>Year (USHORT)</TD>
 
<TD>A&ntilde;o actual.</TD>
</TR>
<TR>
<TD>TimeZone (SHORT)</TD>
<TD>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&aacute; definida.</TD>
</TR>
<TR>
<TD>DayofWeek (UCHAR)</TD>
 
<TD>D&iacute;a actual de la semana, usando valores desde 0 hasta 6. (Domingo es igual a 0).</TD>
</TR>
</TABLE>
</TD></TR>
</TABLE>
==Codigos de error==
<TABLE>
<TR><TD>No retorna ning&uacute;n valor.</TD></TR>
</TABLE>
<P>
= DosSetDateTime =
 
<P>DosSetDateTime permite cambiar la fecha y la hora actual.
<P>#define INCL_BASE<BRbr />#include &lt;os2.h&gt;
<P>PDATETIME pPDateTime;
<BRbr />APIRET rc; /* Codigo de error */
<P>rc = DosSetDateTime(pPDateTime);
== Par&aacute;metros ==
<TABLE>
<TR><TD>pPDateTime</TD><TD>Puntero a una estructura FechaHora donde se le dan a OS/2 los nuevos valores. Tiene los siguientes campos:</TD></TR>
<TR><TD></TD><TD>
<TABLE BORDER=1>
 
{|
<TR>
|-
<TD>Hours (UCHAR)</TD>
| pPDateTime
<TD>Hora actual, usando valores desde 0 hasta 23.</TD>
| Puntero a una estructura FechaHora donde se le dan a OS/2 los nuevos valores. Tiene los siguientes campos:
</TR>
|-
<TR>
|
<TD>Minutes (UCHAR)</TD>
||
<TD>Minuto actual, usando valores desde 0 hasta 59.</TD>
{| BORDER="1"
</TR>
|-
<TR>
| 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&iacute;a actual del mes, usando valores desde 1 hasta 31.
|-
| Month (UCHAR)
| Mes actual del a&ntilde;o, usando valores desde 1 hasta 12.
|-
| Year (USHORT) || A&ntilde;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&aacute; definida.
|-
| DayofWeek (UCHAR)
| D&iacute;a actual de la semana, usando valores desde 0 hasta 6. (Domingo es igual a 0).
|}
|}
== Codigos de error ==
 
{|
<TD>Seconds (UCHAR)</TD>
|-
<TD>Segundo actual, usando valores desde 0 hasta 59.</TD>
| 0 || Sin error
</TR>
|-
<TR>
| 327 || Fecha u hora no v&aacute;lida
<TD>Hundredths (UCHAR)</TD>
|}
<TD>Centesima de segundo actual, usando valores desde 0 hasta 99.</TD>
</TR>
<TR>
<TD>Day (UCHAR)</TD>
 
<TD>D&iacute;a actual del mes, usando valores desde 1 hasta 31.</TD>
</TR>
<TR>
<TD>Month (UCHAR)</TD>
<TD>Mes actual del a&ntilde;o, usando valores desde 1 hasta 12.</TD>
</TR>
<TR>
<TD>Year (USHORT)</TD>
 
<TD>A&ntilde;o actual.</TD>
</TR>
<TR>
<TD>TimeZone (SHORT)</TD>
<TD>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&aacute; definida.</TD>
</TR>
<TR>
<TD>DayofWeek (UCHAR)</TD>
 
<TD>D&iacute;a actual de la semana, usando valores desde 0 hasta 6. (Domingo es igual a 0).</TD>
</TR>
</TABLE>
</TD></TR>
</TABLE>
==Codigos de error==
<TABLE>
<TR><TD>0</TD><TD>Sin error</TD></TR>
<TR><TD>327</TD><TD>Fecha u hora no v&aacute;lida</TD></TR>
 
</TABLE>
<P>
= DosSleep =
<P>DosSleep duerme el thread actual durante un intervalo de tiempo determinado. Este intervalo es redondeado al ciclo de conmutador de programas m&aacute;s pr&oacute;ximo. Si el intervalo indicado es 0 y hay alg&uacute;n thread de igual o mayor prioridad en espera, pasar&aacute; a ejecutarse, durmiendo el thread actual hasta el siguiente turno. Si no hay ningun thread que cumpla esa condici&oacute;n, se retornar&aacute; inmediatamente (nunca se cede el control a un thread de menor prioridad). En aplicaciones PM no se debe usar esta llamada, sino <B>'''WinStartTimer</B>'''.
<P>#define INCL_BASE<BRbr />#include &lt;os2.h&gt;
 
<P>ULONG ulTimeInterval;
<BRbr />APIRET rc; /* Codigo de error */
<P>rc = DosSleep(ulTimeInterval);
== Par&aacute;metros ==
<TABLE>
<TR><TD>ulTimeInterval</TD><TD>El tiempo, en milisegundos, durante el cual se detendr&aacute; la ejecuci&oacute;n del thread.</TD></TR>
</TABLE>
==Codigos de error==
<TABLE>
<TR><TD>0</TD><TD>Sin error</TD></TR>
 
{|
<TR><TD>322</TD><TD>Incapaz de despertar</TD></TR>
|-
</TABLE>
| ulTimeInterval
| El tiempo, en milisegundos, durante el cual se detendr&aacute; la ejecuci&oacute;n del thread.
|}
== Codigos de error ==
 
{|
|-
| 0 || Sin error
|-
| 322 || Incapaz de despertar
|}
<P>
 
= DosStartTimer =
<P>DosStartTimer inicia un temporizador as&iacute;ncrono, que se repite indefinidamente.
<P>#define INCL_BASE<BRbr />#include &lt;os2.h&gt;
<P>ULONG ulTimeInterval;
<BRbr />HSEM hsemSemHandle;
<BRbr />PHTIMER pHandle;
 
<BRbr />APIRET rc; /* Codigo de error */
<P>rc = DosStartTimer(ulTimeInterval, hsemSemHandle, pHandle);
 
== Par&aacute;metros ==
<TABLE>
<TR><TD>ulTimeInterval</TD><TD>El tiempo, en milisegundos, que debe pasar para que el temporizador active (<I>post</I>) el sem&aacute;foro de evento. (El sistema redondea este valor al siguiente ciclo del conmutador de tareas).</TD></TR>
<TR><TD>hsemSemHandle</TD><TD>El handle de un sem&aacute;foro de evento que ser&aacute; activado cada vez que pase el tiempo indicado en <B>ulTimeInterval</B>. Tiene que ser un sem&aacute;foro de evento compartido, y debe ser reseteado entre cada activaci&oacute;n con <B>DosResetEventSem</B>.</TD></TR>
 
{|
<TR><TD>pHandle</TD><TD>Un puntero a una posici&oacute;n de memoria donde OS/2 devolver&aacute; el handle del temporizador. Este handle puede ser pasado a <B>DosStopTimer</B> para parar el temporizador.</TD></TR>
|-
</TABLE>
| ulTimeInterval
==Codigos de error==
| El tiempo, en milisegundos, que debe pasar para que el temporizador active (''post'') el sem&aacute;foro de evento. (El sistema redondea este valor al siguiente ciclo del conmutador de tareas).
<TABLE>
|-
<TR><TD>0</TD><TD>Sin error</TD></TR>
| hsemSemHandle
<TR><TD>323</TD><TD>Sem&aacute;foro del sistema</TD></TR>
| El handle de un sem&aacute;foro de evento que ser&aacute; activado cada vez que pase el tiempo indicado en '''ulTimeInterval'''. Tiene que ser un sem&aacute;foro de evento compartido, y debe ser reseteado entre cada activaci&oacute;n con '''DosResetEventSem'''.
|-
| pHandle
| Un puntero a una posici&oacute;n de memoria donde OS/2 devolver&aacute; el handle del temporizador. Este handle puede ser pasado a '''DosStopTimer''' para parar el temporizador.
|}
== Codigos de error ==
 
{|
<TR><TD>324</TD><TD>No quedan temporizadores disponibles</TD></TR>
|-
</TABLE>
| 0 || Sin error
|-
| 323 || Sem&aacute;foro del sistema
|-
| 324
| No quedan temporizadores disponibles
|}
<P>
 
= DosStopTimer =
<P>DosStopTimer detiene un temporizador as&iacute;ncrono. Una vez hecho esto, no se puede hacer ninguna suposici&oacute;n sobre el estado del sem&aacute;foro asociado a &eacute;ste, por lo que si se va a reutilizar, es necesario inicializarlo con <B>'''DosResetEventSem</B>'''.
<P>#define INCL_BASE<BRbr />#include &lt;os2.h&gt;
 
<P>HTIMER htimerHandle;
<BRbr />APIRET rc; /* Codigo de error */
<P>rc = DosStopTimer(htimerHandle);
== Par&aacute;metros ==
 
<TABLE>
{|
<TR><TD>htimerHandle</TD><TD>El handle del temporizador a parar.</TD></TR>
|-
</TABLE>
| htimerHandle || El handle del temporizador a parar.
==Codigos de error==
|}
<TABLE>
== Codigos de error ==
<TR><TD>0</TD><TD>Sin error</TD></TR>
<TR><TD>326</TD><TD>Handle de temporizador no v&aacute;lido</TD></TR>
 
{|
</TABLE>
|-
| 0 || Sin error
|-
| 326
| Handle de temporizador no v&aacute;lido
|}
<P>