![]() |
| |||
| Hola, Tengo una tarjeta de Entradas/Salidas, la cual tiene 3 puertos configurables independientemente como entradas o salidas. Según la API del fabricante, con una función de la API debo especificar como están configurados dichos puertos, por ejemplo: Puerto A= Entrada, Puerto B= Salida y Puerto C= Entrada. Hasta aquí todo correcto, pero yo quiero encapsular esa llamada por otra que me retorne una estructura con dos campos entradas y salidas. pero claro la longitud es variable según la configuración de puertos, ya que si configuro todos los puertos como Entradas en la estructura quedaría la variable Entrada con 3 Bytes y Salidas con 0 Bytes. ¿Alguna Idea? Un saludo, Plextor |
| | ||||
| ||||
| |
| |||
| On 10 Apr 2007 03:27:55 -0700, "Plextor" <mario.campo***pookmail.com> wrote: >Tengo una tarjeta de Entradas/Salidas, la cual tiene 3 puertos >configurables independientemente como entradas o salidas. > >Según la API del fabricante, con una función de la API debo >especificar como están configurados dichos puertos, por ejemplo: >Puerto A= Entrada, Puerto B= Salida y Puerto C= Entrada. > >Hasta aquí todo correcto, pero yo quiero encapsular esa llamada por >otra que me retorne una estructura con dos campos entradas y salidas. >pero claro la longitud es variable según la configuración de puertos, >ya que si configuro todos los puertos como Entradas en la estructura >quedaría la variable Entrada con 3 Bytes y Salidas con 0 Bytes. > >¿Alguna Idea? > Lo mejor que se me ocurre, que no incluya llamadas a "malloc" que luego se olviden de "free": #define MAX_SALIDAS 4 /* sutsituir por lo que sea correcto */ #define MAX_SALIDAS 4 /* sutsituir por lo que sea correcto */ typedef struct entra_sale_ { unsigned char entradas[MAX_ENTRADAS]; unsigned char salidas[MAX_SALIDAS]; size_t entradas_validas,salidas_validas; } entra_sale; .... y se me puede haber desliazado algún error en el typedef, yo uso mucho el C++ y se tengo el C puro y duro algo oxidado. pero creo que se entiene lo que quiero decir. salu2 Zara |
| |||
| On 10 Apr 2007 03:27:55 -0700, "Plextor" <mario.campo***pookmail.com> wrote: >Tengo una tarjeta de Entradas/Salidas, la cual tiene 3 puertos >configurables independientemente como entradas o salidas. > >Según la API del fabricante, con una función de la API debo >especificar como están configurados dichos puertos, por ejemplo: >Puerto A= Entrada, Puerto B= Salida y Puerto C= Entrada. > >Hasta aquí todo correcto, pero yo quiero encapsular esa llamada por >otra que me retorne una estructura con dos campos entradas y salidas. >pero claro la longitud es variable según la configuración de puertos, >ya que si configuro todos los puertos como Entradas en la estructura >quedaría la variable Entrada con 3 Bytes y Salidas con 0 Bytes. > >¿Alguna Idea? > Lo mejor que se me ocurre, que no incluya llamadas a "malloc" que luego se olviden de "free": #define MAX_SALIDAS 4 /* sutsituir por lo que sea correcto */ #define MAX_SALIDAS 4 /* sutsituir por lo que sea correcto */ typedef struct entra_sale_ { unsigned char entradas[MAX_ENTRADAS]; unsigned char salidas[MAX_SALIDAS]; size_t entradas_validas,salidas_validas; } entra_sale; .... y se me puede haber desliazado algún error en el typedef, yo uso mucho el C++ y se tengo el C puro y duro algo oxidado. pero creo que se entiene lo que quiero decir. salu2 Zara |
| |||
| On 10 Apr 2007 03:27:55 -0700, "Plextor" <mario.campo***pookmail.com> wrote: >Tengo una tarjeta de Entradas/Salidas, la cual tiene 3 puertos >configurables independientemente como entradas o salidas. > >Según la API del fabricante, con una función de la API debo >especificar como están configurados dichos puertos, por ejemplo: >Puerto A= Entrada, Puerto B= Salida y Puerto C= Entrada. > >Hasta aquí todo correcto, pero yo quiero encapsular esa llamada por >otra que me retorne una estructura con dos campos entradas y salidas. >pero claro la longitud es variable según la configuración de puertos, >ya que si configuro todos los puertos como Entradas en la estructura >quedaría la variable Entrada con 3 Bytes y Salidas con 0 Bytes. > >¿Alguna Idea? > Lo mejor que se me ocurre, que no incluya llamadas a "malloc" que luego se olviden de "free": #define MAX_SALIDAS 4 /* sutsituir por lo que sea correcto */ #define MAX_SALIDAS 4 /* sutsituir por lo que sea correcto */ typedef struct entra_sale_ { unsigned char entradas[MAX_ENTRADAS]; unsigned char salidas[MAX_SALIDAS]; size_t entradas_validas,salidas_validas; } entra_sale; .... y se me puede haber desliazado algún error en el typedef, yo uso mucho el C++ y se tengo el C puro y duro algo oxidado. pero creo que se entiene lo que quiero decir. salu2 Zara |
| |||
| On 10 Apr 2007 03:27:55 -0700, "Plextor" <mario.campo***pookmail.com> wrote: >Tengo una tarjeta de Entradas/Salidas, la cual tiene 3 puertos >configurables independientemente como entradas o salidas. > >Según la API del fabricante, con una función de la API debo >especificar como están configurados dichos puertos, por ejemplo: >Puerto A= Entrada, Puerto B= Salida y Puerto C= Entrada. > >Hasta aquí todo correcto, pero yo quiero encapsular esa llamada por >otra que me retorne una estructura con dos campos entradas y salidas. >pero claro la longitud es variable según la configuración de puertos, >ya que si configuro todos los puertos como Entradas en la estructura >quedaría la variable Entrada con 3 Bytes y Salidas con 0 Bytes. > >¿Alguna Idea? > Lo mejor que se me ocurre, que no incluya llamadas a "malloc" que luego se olviden de "free": #define MAX_SALIDAS 4 /* sutsituir por lo que sea correcto */ #define MAX_SALIDAS 4 /* sutsituir por lo que sea correcto */ typedef struct entra_sale_ { unsigned char entradas[MAX_ENTRADAS]; unsigned char salidas[MAX_SALIDAS]; size_t entradas_validas,salidas_validas; } entra_sale; .... y se me puede haber desliazado algún error en el typedef, yo uso mucho el C++ y se tengo el C puro y duro algo oxidado. pero creo que se entiene lo que quiero decir. salu2 Zara |
| |||
| En news:1176200875.437994.163500***b75g2000hsg.googlegr oups.com, Plextor va escriure: > Tengo una tarjeta de Entradas/Salidas, la cual tiene 3 puertos > configurables independientemente como entradas o salidas. > > Hasta aquí todo correcto, pero yo quiero encapsular esa llamada por > otra que me retorne una estructura con dos campos entradas y salidas. > pero claro la longitud es variable según la configuración de puertos, > ya que si configuro todos los puertos como Entradas en la estructura > quedaría la variable Entrada con 3 Bytes y Salidas con 0 Bytes. struct targeta { unsigned char puertoA, puertoB, puertoC; }; int/*resultado de la operación*/ hacerAlgo(int mando, struct targeta *entradas, struct targeta *salidas); Se rellena la estructura "entradas" con los debidos valores en los puestos correspondientes, se llama a la función y se lee les resultados en la estructura "salidas". Según la manera de programar la tarjeta, se puede poner como parte del "mando" una indicación de cuales son los puertos de entrada y los de salidas (1 significa puerto A es de salida, 2 lo mismo para puerto B, 4 para puerto C; mando==7 significa todos de salida, ==0 todos de entrada). Tienes un ejemplo muy parecido con el interfaz con el firmware (bios/dos) en arquitectura x86-16 (la función se llama int86(), y la estructura es union REGS). Antoine |
| |||
| En news:1176200875.437994.163500***b75g2000hsg.googlegr oups.com, Plextor va escriure: > Tengo una tarjeta de Entradas/Salidas, la cual tiene 3 puertos > configurables independientemente como entradas o salidas. > > Hasta aquí todo correcto, pero yo quiero encapsular esa llamada por > otra que me retorne una estructura con dos campos entradas y salidas. > pero claro la longitud es variable según la configuración de puertos, > ya que si configuro todos los puertos como Entradas en la estructura > quedaría la variable Entrada con 3 Bytes y Salidas con 0 Bytes. struct targeta { unsigned char puertoA, puertoB, puertoC; }; int/*resultado de la operación*/ hacerAlgo(int mando, struct targeta *entradas, struct targeta *salidas); Se rellena la estructura "entradas" con los debidos valores en los puestos correspondientes, se llama a la función y se lee les resultados en la estructura "salidas". Según la manera de programar la tarjeta, se puede poner como parte del "mando" una indicación de cuales son los puertos de entrada y los de salidas (1 significa puerto A es de salida, 2 lo mismo para puerto B, 4 para puerto C; mando==7 significa todos de salida, ==0 todos de entrada). Tienes un ejemplo muy parecido con el interfaz con el firmware (bios/dos) en arquitectura x86-16 (la función se llama int86(), y la estructura es union REGS). Antoine |
| |||
| En news:1176200875.437994.163500***b75g2000hsg.googlegr oups.com, Plextor va escriure: > Tengo una tarjeta de Entradas/Salidas, la cual tiene 3 puertos > configurables independientemente como entradas o salidas. > > Hasta aquí todo correcto, pero yo quiero encapsular esa llamada por > otra que me retorne una estructura con dos campos entradas y salidas. > pero claro la longitud es variable según la configuración de puertos, > ya que si configuro todos los puertos como Entradas en la estructura > quedaría la variable Entrada con 3 Bytes y Salidas con 0 Bytes. struct targeta { unsigned char puertoA, puertoB, puertoC; }; int/*resultado de la operación*/ hacerAlgo(int mando, struct targeta *entradas, struct targeta *salidas); Se rellena la estructura "entradas" con los debidos valores en los puestos correspondientes, se llama a la función y se lee les resultados en la estructura "salidas". Según la manera de programar la tarjeta, se puede poner como parte del "mando" una indicación de cuales son los puertos de entrada y los de salidas (1 significa puerto A es de salida, 2 lo mismo para puerto B, 4 para puerto C; mando==7 significa todos de salida, ==0 todos de entrada). Tienes un ejemplo muy parecido con el interfaz con el firmware (bios/dos) en arquitectura x86-16 (la función se llama int86(), y la estructura es union REGS). Antoine |
| |||
| En news:1176200875.437994.163500***b75g2000hsg.googlegr oups.com, Plextor va escriure: > Tengo una tarjeta de Entradas/Salidas, la cual tiene 3 puertos > configurables independientemente como entradas o salidas. > > Hasta aquí todo correcto, pero yo quiero encapsular esa llamada por > otra que me retorne una estructura con dos campos entradas y salidas. > pero claro la longitud es variable según la configuración de puertos, > ya que si configuro todos los puertos como Entradas en la estructura > quedaría la variable Entrada con 3 Bytes y Salidas con 0 Bytes. struct targeta { unsigned char puertoA, puertoB, puertoC; }; int/*resultado de la operación*/ hacerAlgo(int mando, struct targeta *entradas, struct targeta *salidas); Se rellena la estructura "entradas" con los debidos valores en los puestos correspondientes, se llama a la función y se lee les resultados en la estructura "salidas". Según la manera de programar la tarjeta, se puede poner como parte del "mando" una indicación de cuales son los puertos de entrada y los de salidas (1 significa puerto A es de salida, 2 lo mismo para puerto B, 4 para puerto C; mando==7 significa todos de salida, ==0 todos de entrada). Tienes un ejemplo muy parecido con el interfaz con el firmware (bios/dos) en arquitectura x86-16 (la función se llama int86(), y la estructura es union REGS). Antoine |
| |
| |
![]() |
| Herramientas | |
| Desplegado | |
| |
Temas Similares | ||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| OpenRowSet con variables | Mario | Newsgroup microsoft.public.es.sqlserver | 1 | 13-12-2007 11:38:05 |
| Datos de variables a celdas | ElProfe | Newsgroup microsoft.public.es.excel | 6 | 08-12-2007 12:43:11 |
| Pasar datos de un DataView a unas variables | Armando Ballesteros S. | Newsgroup microsoft.public.es.desarrollo | 8 | 07-07-2005 10:37:10 |
| Variables | JMContreras | Newsgroup microsoft.public.es.aplicaciones.moviles | 4 | 12-01-2005 22:01:04 |
| Obtener datos históricos de variables macroeconómicas | David | Newsgroup es.charla.economia.misc | 10 | 30-10-2004 20:11:46 |