SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: tulum en Miércoles 4 de Agosto de 2004, 17:13
-
Hola a todos,
Casi no conozco C pero me dejaron unos programas que tengo que hacer que compilen pero me manda varios errores, uno de ellos y que ojala y me puedan ayudar es este que tengo en un UNION:
Primero lo tenia asi: union REGS v1, v2;
pero alguien me dijo que estaba mal y que era de esta forma:
union {
REGS v1;
REGS v2;
} ;
lo cambie pero me manda estos errores en el UNION(aparte de varios errores mas):
C:/Dev-Cpp/RNO/comunicaciones.c:16: parse error before "REGS"
C:/Dev-Cpp/RNO/comunicaciones.c:16: warning: no semicolon at end of struct or union
C:/Dev-Cpp/RNO/comunicaciones.c:17: warning: data definition has no type or storage class
Como les comente casi no conozco C pero estuve buscando si REGS estaba declarado en la cabecera o en otro programa y no encontre nada, ojala y con el programa que les pongo mas abajo me puedan decir que pude ser REGS, si es una estructura, una variable definida o alguna palabra reservada de C para saber si la tengo que declarar en otro lado y de que tipo seria o que hacer
El programa es este:
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define DC1 0x11 /* XON */
#define DC3 0x13 /* XOFF */
#define INIT 0 /* Función 0 de la Interrupción 14 */
#define SEND 1 /* Función 1 de la Interrupción 14 */
#define READ 2 /* Función 2 de la Interrupción 14 */
#define STAT 3 /* Función 3 de la Interrupción 14 */
#define n 81 /* Longitud máxima de la cadena */
//union REGS v1, v2;
union {
REGS v1;
REGS v2;
} ;
main ( )
{
void rs232_inic ( ); /* Inicializar puerto dado por DX (0 o 1) */
void rs232_lect ( ); /* Espera por un caracter de COM */
void rs232_stat ( ); /* Estado de COM */
void rs232_envi ( ); /* Enviar caracter XON o XOFF */
FILE *pf;
char c;
char cadena[n]; /* Caracteres leídos */
int i = 0;
if ((pf = fopen("datos", "w")) == NULL)
{
printf ("Error: el fichero datos no se puede abrir");
exit (1);
}
rs232_inic();
system("cls");
printf("Recepción de datos. Pulse una tecla para finalizar");
while ( 1 )
{
/* Pulse una tecla para finalizar la recepción */
if (kbhit() != 0) exit(0);
rs232_stat();
if ((v2.h.ah & 1) == 1) /* ¿Caracter Preparado? */
{
rs232_lect(); /* Leer el caracter */
cadena[i++]; = v2.h.al; /* Almacenarlo */
if (i == n)
{
v1.h.al = DC3; /* Enviar XOFF para detener */
rs232_envi(); /* la transmisión */
fwrite(cadena, sizeof(cadena), 1, pf);
i = 0;
v1.h.al = DC1; /* Enviar XON para continuar */
rs232_envi(); /* la transmisión */
}
}
}
}
void rs232_inic()
{
v1.x.dx = 0; /* Seleccionar puerto COM1 */
v1.h.al = 0xfe; /* Seleccionar: Baudios, Paridad,
* bit Stop y Longitud palabra
* ( BBBPPSL )
*/
v1.h.ah = INIT; /* Función (0) de Int 14 a realizar */
int86 (0x14, &v1, &v2); /* Llamada a la función */
}
void rs232_lect()
{
v1.h.ah = READ; /* Función (2) de Int 14 a realizar */
int86(20, &v1, &v2); /* Llamada a la función */
}
void rs232_stat()
{
v1.h.ah = STAT; /* Función (3) de Int 14 a realizar */
int86(20, &v1, &v2); /* Llamada a la función */
}
void rs232_envi()
{
v1.h.ah = SEND; /* Función (1) de Int 14 a realizar */
int86(20, &v1, &v2); /* Llamada a la función */
}
Les comento lo que se supone deben hacer estos programas por si alguien ya lo ha hecho y me puede ayudar.
Lo que tiene que hacer este programa y los otros que me dejaron es leer unas tarjetas con chip llamadas SAMARTCARD tipo Mifare y GCL8K con un lector GemEasyAccess 680SP fabricado por GEMPLUS
Gracias por su ayuda
-
Hola!!!!!!!!!!!!!
Segun lo q entendi REGS es un union tambien. Ahora si vos queres usar un union debes anteponerle esa palabra, o sea, hacer algo asi:
union
{
union REGS v1;
union REGS v2;
};
Salu2!!!!!!!!!!!!!!!
-
OK
Pero REGS entonces como podria declararlo porque no entiendo que quiere decir esto:
if ((v2.h.ah & 1) == 1)
o esto
v1.h.al = DC3;
que es cuando hace referencia a ellos en el programa
ya lo puse como me dijo nicokiki pero ahora me manda los siguientes errores
C:/Dev-Cpp/RNO/comunicaciones.c:16: field `v1' has incomplete type
C:/Dev-Cpp/RNO/comunicaciones.c:17: field `v2' has incomplete type
C:/Dev-Cpp/RNO/comunicaciones.c:18: warning: unnamed struct/union that defines no instances
C:/Dev-Cpp/RNO/comunicaciones.c: In function `main':
C:/Dev-Cpp/RNO/comunicaciones.c:46: `v2' undeclared (first use in this function)
C:/Dev-Cpp/RNO/comunicaciones.c:46: (Each undeclared identifier is reported only once
C:/Dev-Cpp/RNO/comunicaciones.c:46: for each function it appears in.)
C:/Dev-Cpp/RNO/comunicaciones.c:49: parse error before '=' token
C:/Dev-Cpp/RNO/comunicaciones.c:52: `v1' undeclared (first use in this function)
C:/Dev-Cpp/RNO/comunicaciones.c: In function `rs232_inic':
C:/Dev-Cpp/RNO/comunicaciones.c:65: `v1' undeclared (first use in this function)
C:/Dev-Cpp/RNO/comunicaciones.c:71: `v2' undeclared (first use in this function)
C:/Dev-Cpp/RNO/comunicaciones.c: In function `rs232_lect':
C:/Dev-Cpp/RNO/comunicaciones.c:76: `v1' undeclared (first use in this function)
C:/Dev-Cpp/RNO/comunicaciones.c:77: `v2' undeclared (first use in this function)
C:/Dev-Cpp/RNO/comunicaciones.c: In function `rs232_stat':
C:/Dev-Cpp/RNO/comunicaciones.c:82: `v1' undeclared (first use in this function)
C:/Dev-Cpp/RNO/comunicaciones.c:83: `v2' undeclared (first use in this function)
C:/Dev-Cpp/RNO/comunicaciones.c: In function `rs232_envi':
C:/Dev-Cpp/RNO/comunicaciones.c:88: `v1' undeclared (first use in this function)
C:/Dev-Cpp/RNO/comunicaciones.c:89: `v2' undeclared (first use in this function)
Ejecución Terminada
Gracias
-
Pero q es REGS??? Yo pense q eran cosas tuyas
No te entiendo
Salu2!!!