ENTRADA/SALIDA EN C++ BUILDER

Páginas: 16 (3829 palabras) Publicado: 3 de septiembre de 2014
 ENTRADA/SALIDA EN C++ BUILDER


1. ACCESO A LOS PUERTOS DE E/S BAJO WINDOWS

El sistema operativo WINDOWS es bastante más estricto que el viejo MS-DOS, el control del hardware está firmemente controlado por el núcleo del sistema. El acceso a los recursos hardware se realiza mediante controladores de dispositivo o drivers, estos son una capa intermedia de software entre la máquina física yel sistema operativo.



Las aplicaciones de WINDOWS se comunican con los dispositivos a través de una colección de funciones denominada API (Aplication Program Interface), estas funciones acceden a los puertos mediante el controlador correspondiente. Por ejemplo, el controlador para el puerto serie por defecto se denomina comm.drv , esto se puede comprobar en el panel de control.

Estatécnica es necesaria en entornos multitarea donde dos aplicaciones pueden necesitar acceder al mismo recurso hardware que no puede ser compartido, por ejemplo un puerto de comunicaciones COM1. El controlador se encarga de que una vez que un puerto ha sido abierto por una aplicación no pueda ser utilizado por otra hasta que no sea cerrado.

Por este motivo, los compiladores para WINDOWS, incluidoC++ BUILDER no han implementado las funciones de bajo nivel intportb() / outportb() y similares que si que existían en la versión de DOS. No obstante, existen soluciones para poder acceder a los puertos de E/S las soluciones pueden ser.

TÉCNICAS DE ACCESO A PUERTOS
Técnica
Comentario
W95/98
NT
Utilización del API
Esta técnica es la más aconsejable si deseamos que los programas sean establesy portables. Requiere el conocimiento profundo de las funciones que necesitemos.
SI
SI
Acceso directo al hardware
Permite adaptar rápidamente los programas desarrollados bajo dos.
SI
NO
Acceso mediante controlador
Requiere el desarrollo de un controlador de dispositivo.
SI
SI

Respecto de la primera técnica, en la unidad siguiente se mostrará el acceso al puerto serie mediante el APIde Windows.

El acceso directo al hardware implica el desarrollo de las funciones inportb() y outportb(), para ello se puede utilizar el ensamblador integrado que se incorpora en el C++ Builder 3 o superior o en DELPHI y escribir el código en ensamblador que realiza la entrada o salida.

#include
//---- Para leer de un puerto
unsigned short inport (unsigned int puerto)
{
asm movdx,puerto;
asm in ax,dx;
return _AX;
}
//-----Para escribir en un puerto
void outport (unsigned int puerto,
unsigned short dato)
{
asm mov dx,puerto;
asm mov ax,dato;
asm out dx,ax;
};

Como la versión 1.0 de C++ BUILDER no dispone de compilador de ensamblador utilizaremos una función de muy bajo nivel denominada __emit__ que nos permita lanzar el código de cualquierinstrucción de ensamblador. El siguiente fragmento usa la función emit para lanzar las ordenes de ensamblador IN y OUT.

#include
//---- Para leer de un puerto
unsigned short inport (unsigned int puerto)
{
_DX=puerto;
// 66ED=código de operación: in ax,dx
__emit__(0x66,0xED);
return _AX;
}
//-----Para escribir en un puerto
void outport (unsigned int puerto,
unsigned shortdato)
{
_DX=puerto;
_AX=dato;
// 66FF=código de operación :out dx,ax
__emit__(0x66,0xEF);
};


Para que estas funciones estén disponibles desde cualquier formulario basta guardarlas en un unidad FUN_ES.CPP e incluir los prototipos de las funciones en el fichero de cabecera asociado FUN_ES.H . La unidad la crearemos con New-Unit , no es necesario que sea un formulario pues no contieneningún control de la VCL. Para poder utilizar las funciones desde cualquier unidad bastará con incluir la unidad en el proyecto y hacer un #include al fichero de cabecera correspondiente. El siguiente proyecto dispone de un botón Button1 que al pulsarlos mostrará el registro de estado del puerto paralelo.

//---------------------------------------
#include
#pragma hdrstop
#include "Unit1.h"...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Entrada Y Salida C++
  • ejercicios entrada y salida en C
  • entrada y salida en c++
  • Código Para Formatear Entradas y Salidas En c
  • Entrada Proceso Y Salida C
  • ENTRADA Y SALIDA DEL LENGUAJE C
  • Entrada y Salida de datos C/C++
  • Entrada y salida

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS