C/Visual C - Como se monitoriza un puerto serie

 
Vista:

Como se monitoriza un puerto serie

Publicado por Edu (10 intervenciones) el 26/09/2000 00:00:00
Necesito saber como puedo hacer para ver el estado de todas las patillas del puerto serie del ordenador, es decir, he de poder ver las señales de control CTS, DSR, etc.
Si es posible necesito escanear las 9 patillas.
Muchisimas gracias de antemano a quien me eche un cable.
Edu
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como se monitoriza un puerto serie

Publicado por Endos (143 intervenciones) el 26/09/2000 00:00:00
Puedes usar la funcion 03H de la Int 14H del BIOS para saber
el estado de los pines. El resultado que te interesa se devuelve
en el registro AL.

Saludos,
Endos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como se monitoriza un puerto serie

Publicado por Edu (10 intervenciones) el 27/09/2000 00:00:00
Endos, ¿me lo podrias ampliar un poco mas?.No se trabajar con las interrupciones demasiado bien.
Muchisismas gracias
Edu
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como se monitoriza un puerto serie

Publicado por Endos (143 intervenciones) el 27/09/2000 00:00:00
Algo asi como esto

unsigned char EstadoSerie(int ComPort)
{
_DX=ComPort; // Numero de puerto 0= COM1, 1=COM2, etc
_AX=0x0300;
geninterrupt(0x14);

return _AL; // Retornar estado
}

El byte retornado tiene esta estructura:

Bit(s) Description
7 carrier detect
6 ring indicator
5 data set ready
4 clear to send
3 delta carrier detect
2 trailing edge of ring indicator
1 delta data set ready
0 delta clear to send

Asi que para ver si esta a 1 o 0 una linea solo hay que hacer un & con dicho bit.

#define COM1 0
#define COM2 1

...

Estado=EstadoSerie(COM1);

if(Estado&64) // Bit 6 = 2 elevado a 6 = 64
printf("Linea Ring puesta a 1\n");
else
printf("Linea Ring puesta a 0\n);

Saludos,
Endos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GRACIAS

Publicado por Edu (10 intervenciones) el 28/09/2000 00:00:00
muchisimas gracias Endos. Eres un fiera
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar