La Web del Programador: Comunidad de Programadores
 
    Pregunta:  34119 - LECTURA Y ESCRITURA DE PUERTO SERIAL EN WIN NT
Autor:  Angeles Gonzalez
Hola a todos!!
Tengo un programa en C++ Builder que manda una señal al puerto serial, este programa esta corriendo en win98. Ahora quiero cambiar a NT pero me marca un error cuando quiero mandar o recibir una señal desde el puerto. Las instrucciones en ensamblador son:

void outportb(unsigned short int port, unsigned char value)
{
asm{
mov dx, port;
mov al, value;
out dx, al;
}
}
unsigned char inportb(unsigned short int port)
{
unsigned char value;
asm{
mov dx, port;
in al, dx;
mov value, al;
}
return value;
}
El error (bueno no es propiamente un error) me lo marca en out y en in y detiene el programa en la línea de código out si le doy nuevamente F9 lo corre y pasa ese renglón y se detiene nuevamente en in, dándole F9 pasa el renglón y sigue con la ejecución del programa, cada vez que hago una llamada a puerto me detiene el programa y me marca un EPrivilege. Diciéndome que es una instrucción privilegiada.
Me dijeron que podía utilizar el MSComm32.ocx y que lo tenia que registrar, esto ya lo hice, pero tengo que cambiar las instrucciones de mi programa? O que es lo que tengo que hacer porque mi programa sigue marcando el mismo error.
Espero que puedan ayudarme, Gracias

  Respuesta:  David Guerrero
Hola.

Bajo la plataforma NT (Windows NT,XP,2000) no está permitido llamar ni acceder a los puertos por cuestiones de seguridad. Si quisieras acceder a los puertos, debes de crear un controlador de dispositivos con el DDK,lo cual no te recomiendo. Sin embargo, existen programas que permiten a otros programas acceder a los puertos, con lo cual, tu código que funciona bien en Windows 98 tambien lo haría sin modificaciones en plataforma NT. Un programa como estos es el UserPort. Utiliza el buscador de google para encontrarlo.