0% encontró este documento útil (0 votos)
55 vistas4 páginas

API Windows para Configuración RS-232

El documento describe la API de Windows para comunicaciones serie RS-232, incluyendo la estructura DCB que se usa para configurar parámetros como tamaño de bits, paridad, velocidad de baudios. También cubre control de flujo por hardware utilizando señales como RTS, CTS, DSR y control de flujo por software usando XON/XOFF.

Cargado por

crvalencia2009
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
55 vistas4 páginas

API Windows para Configuración RS-232

El documento describe la API de Windows para comunicaciones serie RS-232, incluyendo la estructura DCB que se usa para configurar parámetros como tamaño de bits, paridad, velocidad de baudios. También cubre control de flujo por hardware utilizando señales como RTS, CTS, DSR y control de flujo por software usando XON/XOFF.

Cargado por

crvalencia2009
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Escuela de Educación Técnica Nº 6 Profesor: Valencia, Carlos R.

Lenguajes Electrónicos 6º Tema: API Windows para RS232

API WINDOWS PARA RS-232

INTRODUCCIÓN

En la programación del puerto serie, hasta antes de la aparición de XP, se podía manejar directamente el dispositivo de
hardware a voluntad pudiéndose acceder, setear, leer y escribir directamente. Ahora, en cambio, en XP se obliga a
utilizar la Interfaz para Programas de Aplicación (API - Application Programming Interface), la cual consiste en hacer
uso del hardware a través de las funciones y estructuras que provee el sistema operativo. Esto, lamentablemente quita
libertad de uso en cuanto al hardware, debido a que la API solo provee lo necesario para hacer el uso que el sistema
operativo considere valido. Por ejemplo, para Windows XP, el puerto paralelo es solo para manejar una impresora,
Scanner o realizar una conexión directa por cable (conectar dos PC por puerto paralelo), no contempla ningún otro uso,
cuando en realidad este puerto en electrónica permite comandar diferentes dispositivo electrónicos, y que las funciones
y estructuras que provee son acotadas e insuficiente para este fin.
Debido a esto, para manejar el puerto serie es necesario conocer y usar las estructuras y funciones de la API de
Windows.

LA ESTRUCTURA DCB

SETEO CONFIGURACIÓN BASE:

BYTE ByteSize; Número de bits, de 4 a 8


DWORD fParity: 1; Permitir la verificación de paridad
BYTE Parity;
Valor Constante Tipo
0 NOPARITY No parity: Sin paridad
1 ODDPARITY Odd: Paridad Impar
2 EVENPARITY Even: Paridad par
3 MARKPARITY Mark: Paridad marca
4 Space: Paridad espacio

DWORD fErrorChar: 1;
Especifica que si los bytes recibidos con errores de paridad se reemplaza con el
carácter especificado en ErrorChar. Si es True y fParity es True, se efectúa el
reemplazo.
char ErrorChar;
Especifica el valor del carácter usado como reemplazo al byte recibido con error de
paridad.
BYTE StopBits;

Valor Constante Tipo


0 ONESTOPBIT 1 bit de stop
1 ONE5STOPBITS 1.5 bit de stop
2 TWOSTOPBITS 2 bit de stop
DWORD BaudRate;

Valor Constante Tipo Valor Constante Tipo


110 CBR_110 . 110 bps 19200 CBR_19200 . 19200 bps
300 CBR_300 . 300 bps 38400 CBR_38400 . 38400 bps
600 CBR_600 . 600 bps 56000 CBR_56000 . 56000 bps
1200 CBR_1200 . 1200 bps 57600 CBR_57600 . 57600 bps
2400 CBR_2400 . 2400 bps 115200 CBR_115200 115200 bps
4800 CBR_4800 . 4800 bps 128000 CBR_128000 128000 bps
9600 CBR_9600 . 9600 bps 256000 CBR_256000 256000 bps
14400 CBR_14400 14400 bps

1 de 4
Escuela de Educación Técnica Nº 6 Profesor: Valencia, Carlos R.
Lenguajes Electrónicos 6º Tema: API Windows para RS232

CONSIDERACIONES:

Cuando una estructura de DCB se usa para configurar los 8250, se aplican las siguientes restricciones a los
valores de ByteSize y StopBits:

• El tamaño de los bits de datos deben ser de entre 5 a 8 bits.


• El uso de 5 bits de datos con 2 bits de Stop no es válida, como lo es 6, 7, u 8 bit de datos con 1.5 bits de
Stop.

SETEO CONTROL DE FLUJO X HARDWARE:

DWORD fOutxCtsFlow:1;
Especifica si la señal CTS debe ser supervisada para el control de flujo de salida. Si
es true y CTS se desactiva, la salida se suspende hasta que CTS se reenvía.
DWORD fRtsControl:2;
Especifica el control de flujo por RTS. Puede ser uno de los valores siguientes

Valor Constante Tipo


Desactiva la línea de RTS cuando el dispositivo se abre y lo deja
0 RTS_CONTROL_DISABLE
apagado.
Habilita la línea de RTS cuando el dispositivo se abre y lo deja
1 RTS_CONTROL_ENABLE
encendido.
Habilita RTS handshaking. El controlador de dispositivo activa la
línea RTS cuando los caracteres ingresados al buffer ocupan menos
de la mitad del mismo, y baja la línea RTS cuando el buffer supera
2 RTS_CONTROL_HANDSHAKE
la ¾ del total.
Si el handshaking esta habilitado, no se puede usar la función
EscapeCommFunction, sino ocurre un error en la aplicación.
Especifica que la línea RTS será alta si los bytes están disponibles
3 RTS_CONTROL_TOGGLE para la transmisión. Después de enviar todos los bytes del buffer, la
línea RTS se desactiva.

DWORD fOutxDsrFlow:1;
Especifica si se debe monitorear la señal DSR para el control de flujo de salida. Si
este miembro es True y DSR se apaga, la salida se suspende hasta que DSR se
reenvie.

DWORD fDtrControl:2;
Especifica el control de flujo del DTR.

Valor Constante Tipo


Desactiva la línea DTR cuando el dispositivo se abre y lo deja
0 DTR_CONTROL_DISABLE
desactivo.
1 DTR_CONTROL_ENABLE Habilita la línea DTR cuando el dispositivo se abre y lo deja activo.
Habilita el DTR handshaking.
2 DTR_CONTROL_HANDSHAKE Si el handshaking se habilita, no se puede usar la función
EscapeCommFunction, sino la aplicación genera error.

DWORD fDsrSensitivity:1;
Especifica si el controlador de dispositivo de comunicaciones es sensible al estado
de la señal de DSR. Si este miembro es True, el controlador de dispositivo ignora
cualquier byte recibido, a menos que la línea DSR sea alta.

SETEO CONTROL DE FLUJO POR SOFTWARE:

DWORD fOutX: 1;
Activa el control de flujo por XON/XOFF durante la transmisión.
Si es True, la transmisión se detiene cuando se recibe el carácter XoffChar y
empieza de nuevo cuando se recibe el carácter XonChar.

2 de 4
Escuela de Educación Técnica Nº 6 Profesor: Valencia, Carlos R.
Lenguajes Electrónicos 6º Tema: API Windows para RS232

char XonChar;
Especifica el valor del carácter XON para la transmisión y recepción.
char XoffChar;
Especifica el valor del carácter XOFF para la transmisión y recepción.
DWORD fInX: 1;
Especifica si se usa el control de flujo por XON/XOFF durante la recepción. Si este
miembro es True, el carácter XoffChar se envía cuando el buffer de recepción esta
dentro del limite indicado por XoffLim (valor tope máximo), y el carácter XonChar
se envía cuando el buffer de recepción esta dentro del limite indicado por XonLim
(valor tope mínimo).
WORD XonLim;
Especifica que el número mínimo de bytes permitido en el buffer de recepción antes
de enviar el carácter XON.
WORD XoffLim;
Especifica que el número máximo de bytes permitido en el buffer de recepción antes
de enviar el carácter XOFF. El número del máximo de bytes permitido es calculado
substrayendo este valor del tamaño, en bytes, del buffer de recepción.

DWORD fTXContinueOnXoff:1;
Especifica si la transmisión se detiene cuando el buffer de entrada está lleno y el
controlador de dispositivo ha transmitido el carácter XoffChar. Si este miembro es
True, la transmisión continúa después de que el buffer de recepción llega al limite
indicado por XoffLim y el controlador de dispositivo ha transmitido el carácter
XoffChar para detener bytes receptores. Si este miembro es False, la transmisión no
continúa hasta que el buffer de recepción este dentro del limite indicado en XonLim
y el controlador de dispositivo ha transmitido el carácter XonChar para reasumir la
recepción.

SINCRONIZACIÓN DE TRAMAS (CARÁCTER / BIT):

DWORD fBinary: 1;
Permite activar el modo binario o modo carácter.
La API Win32 no soporta el modo de transferencia por carácter, así que debe ser
True. Si intenta usar False no trabaja el hardware.
Bajo Windows 3.1, si es False, el modo carácter se habilita, y se reconoce el carácter
especificado en EofChar como comienzo y fin de la trama.
char EofChar;
Especifica el valor del carácter usado para comienzo y final de trama.

OTROS SETEOS:

DWORD DCBlength;
Tamaño de la estructura DCB: sizeof(DCB)
DWORD fNull: 1;
Especifica si se desechan bytes nulos. Si es True se desechan los bytes nulos
recibidos.
DWORD fAbortOnError:1;
Especifica si las operaciones de lectura y escritura finalizan con errores. Si este
miembro es True, el controlador de dispositivo termina con todas las operaciones de
lectura y escritura con un error de estado (Status) si ocurre un error. El controlador
de dispositivo no aceptará ninguna otra operación de comunicación hasta que la
aplicación haya reconocido el error llamando a la función ClearCommError.
char EvtChar;
Especifica el valor del carácter señalado como un evento.

3 de 4
Escuela de Educación Técnica Nº 6 Profesor: Valencia, Carlos R.
Lenguajes Electrónicos 6º Tema: API Windows para RS232

ESTRUCTURA COMSTAT (Communication Status – Estado de la Comunicación)

La estructura COMSTAT contiene información sobre un dispositivo de comunicaciones.


Esta estructura es llenada a través del uso de la función ClearCommError ( ).

DWORD fCtsHold : 1;
Especifica si la transmisión esta esperando la señal CTS.
Si es True, la transmisión lo esta esperando.

DWORD fDsrHold : 1;
Especifica si la transmisión esta esperando la señal DSR.
Si es True, la transmisión lo esta esperando.

DWORD fRlsdHold : 1;
Especifica si la transmisión esta esperando la señal RLSD (detección de la señal de línea
recibido). Si es True, la transmisión lo esta esperando.

DWORD fXoffHold : 1;
Especifica si la transmisión esta esperando recibir el carácter XOFF.
Si es True, la transmisión lo esta esperando.

DWORD fXoffSent : 1;
Especifica si la transmisión está esperando por el carácter XOFF que fue transmitido.
Si es True, la transmisión está esperando. La transmisión se detiene cuando se transmite el
carácter XOFF a un sistema que toma el próximo carácter como XON, sin tener en cuenta el
carácter actual.
DWORD fEof : 1;
Especifica si se recibe el carácter de final de archivo (EOF). Si es True, se ha recibido.
DWORD fTxim : 1;
Si es True, hay un carácter colado para transmitirlo y que llega al dispositivo de
comunicaciones a través de la función TransmitCommChar. El dispositivo de
comunicaciones transmite mencionado carácter delante de otros caracteres presente en el
buffer de salida del dispositivo.
DWORD cbInQue;
Especifica el número de bytes recibido (cargados en el buffer de entrada) y que aun no se han
leído a través de la función ReadFile.

DWORD cbOutQue;
Especifica el número de bytes restantes de datos del usuario ha ser transmitido por todas las
operaciones de escritura. Este valor sera cero para escrituras no solapadas.

4 de 4

También podría gustarte