Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: wiserlander en 2 Febrero 2013, 20:55 pm



Título: Salidas digitales del puerto paralelo en C++
Publicado por: wiserlander en 2 Febrero 2013, 20:55 pm

Hola, estoy usando CodeBlocks, Wxwidget y Gcc para hacer un panel con botones que activan algunos pines del puerto paralelo.

Para comunicar la botonera con el puerto tengo de intermediario otro programa, WndLp que viene a ser el que maneja el puerto realmente.

Lo que realmente hace la botonera es llamar a otros archivos, exe, bat que se ejecutan.
Lo hago así por que casi no tengo ni idea de programación en C++, apenas estoy empezando.

¿ Seria muy difícil usar el código en asembler en la botonera hecha en c++,
 para activar o desactivar los pines del puerto paralelo en windows 7 - 64 bit ?

Es que estuve intentado con código en assembler que encontré en la red, por ejemplo use de referencia esto entre otros...
http://foro.elhacker.net/programacion_cc/integrar_asm_en_c-t288404.0.html (http://foro.elhacker.net/programacion_cc/integrar_asm_en_c-t288404.0.html)
pero no tuve éxito para poder saltarme el intermediario para manejar el puerto paralelo, WndLpt.

Se que Asm es lo mas rápido y maneja el hardware directamente o eso creo,
tampoco tengo idea del uso de asm y por eso lo hago con la llamada de archivos .bat

La verdad es que me he vuelto un poco loco buscando info de como hacer algo simple,
parece que para hacer una pequeña utilidad en c++ tengo que aprender mucho =S

(http://img255.imageshack.us/img255/2497/botonera.jpg)

El código que uso para encender....   Los archivos .txt tienen lo que WndLpt necesita para encender o apagar, en este caso "1***********" encendería el primer diodo led o pin 2 del puerto paralelo.


Código:
void wsnLPTFrame::OnButton1Click(wxCommandEvent& event) 
{
system ("start C:/WndLpt/wndlpt C:/WndLpt/scripts/1.txt");
}

Y el que uso para apagar...

Código:
void wsnLPTFrame::OnButton2Click(wxCommandEvent& event) 
{
system ("start C:/WndLpt/wndlpt C:/WndLpt/scripts/2.txt");
}

Este para matar un proceso..

Código:
void wsnLPTFrame::OnButton3Click(wxCommandEvent& event)
 {
system ("taskkill /F /IM explorer.exe");
}
Funcionan bien pero no ahorran recursos y no resulta practico llamar a otro programa para que haga el trabajo =)
Me gustaría poder usar el mismo botón para encender o apagar, en lugar de dos botones, uno para encender y otro para apagar una salida, y de paso si el color del botón cambiara según su estado.  =D...

Estuve investigando Wxwidget, al intentar usar esta librería, a parte de lo que ya sale por defecto en el proyecto da muchos errores por no saber donde declarar y que declarar... por no saber los tipos de datos... etc, es duro ser autodidacta en programación =S

¿Tienes un poco de tiempo para orientarme en como mejorar esta botonera?

¿Quieres el proyecto completo en un archivo comprimido?

Gracias por leerme, saludos.