• Domingo 22 de Diciembre de 2024, 23:37

Autor Tema:  Cómo Mandar Información A Lcd En Visual C++  (Leído 7324 veces)

laupotter

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Cómo Mandar Información A Lcd En Visual C++
« en: Jueves 16 de Diciembre de 2004, 20:20 »
0
Hola a todos:
Quisiera ver si alguien me puede ayudar a mandar la infomación a una LCD (como la pantalla de las calculadoras) para que se puedan aparcer los números, se encienda y se apague.

Tengo este programa pero mi maestro nos lo pidió en VISUAL C++ y no se como lo puedo hacer, lo que pasa es que no se utilizar muy bien visual y pues tengo problemas, si alguien me puede ayudar se lo agradecería, y si notan algo que esté mal en el programa pueden decirmelo?? por favor.

saludos

#include <stdio.h>
#include <dos.h>

int puerto(int direcc);
int seleccion;

int main()
{
    unsigned int __far *puntero_a_direccion;
    int i, direccion[3]={0,0,0}, disponible[3]={0,0,0};

    puntero_a_direccion = (unsigned int __far *)0x00000408;

    printf("Seleccione el puerto:\n");
    /* ¿Cuantos puertos existen? */
    for (i=0; i<3; i++)
    {
        if (*puntero_a_direccion == 0)
        printf("Puerto LPT%d...............no disponible\n", i+1);
        else
        {
            disponible = 1;
            direccion = *puntero_a_direccion;
            printf("Puerto LPT%d...............%d\n", i+1, i+1);
        }
        puntero_a_direccion++;
    }
    printf("Salir del programa........0\n");
    scanf("%d", &seleccion);

    do
    {
        switch(seleccion)
        {
            case 0:/* Salir del programa */
            printf("Adios!!!\n");
            return 0;
            break;

            case 1:/* Puerto LPT1 */
            if(disponible[0]==1)
            puerto(direccion[0]);
            else
            {
                printf("ERROR: PUERTO NO DISPONIBLE\n");
                return 0;
            }
            break;

            case 2:/* Puerto LPT2 */
            if(disponible[1]==1)
            puerto(direccion[1]);
            else
            {
                printf("ERROR: PUERTO NO DISPONIBLE\n");
                return 0;
            }
            break;

            case 3:/* Puerto LPT3 */
            if(disponible[2]==1)
            puerto(direccion[2]);
            else
            {
                printf("ERROR: PUERTO NO DISPONIBLE\n");
                return 0;
            }
            break;

            default:
            printf("ERROR: OPCION INCORRECTA!\n");
            break;
        }
        if(seleccion!=0)
        {
            printf("Seleccione otra opcion\n");
            scanf("%d", &seleccion);
        }
    }
    while(seleccion!=0);

    return 0;
}

int puerto(int direcc)
{
    unsigned char valor; /* Solo valores entre 0 y 255 */

    printf("Ahora puede escribir cualquier valor\n");
    printf("entre 1 y 255, 0 para terminar el programa\n");
    do
    {
        printf("Valor al puerto?\n");
        scanf("%d", &valor);
        outp(direcc, valor);
        printf("Se ha escrito %d al puerto\n", valor);
    }
    while(valor!=0);

    return seleccion=0;
}

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Cómo Mandar Información A Lcd En Visual C++
« Respuesta #1 en: Lunes 20 de Diciembre de 2004, 18:05 »
0
He mirado el code y no entiendo que necesitas realmente
No das mucha informacion,
podrias ser mas puntual con lo que necesitas?
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

laupotter

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Re: Cómo Mandar Información A Lcd En Visual C++
« Respuesta #2 en: Martes 21 de Diciembre de 2004, 06:21 »
0
Hola:
Gracias por responder a mi mensaje.
Vas a decir que soy bien burra o no sé que solo estoy en este foro para que alguien me resuelva mis tareas, pero no es así, realmente necesito ayuda, porque en programación no me va muy bien, pero tampoco estoy en el oyo, claro que en la programación normalita, osea en C o C++, pero ya Visual es más complicado para mí, por lo mismo que se usa POO.

Bueno pero mira, el código que les puse lo buscamos en internet, esto como una base, porque mi equipo y yo pues hicimos uno pero solo es para reconocer el puerto, pero mira según yo lo analicé y veo que la dirección del puerto debe cambiar a 0x378. (puntero_a_direccion = (unsigned int __far *)0x00000408;).

Bueno lo que realmente tiene que hacer el programa es:
-Mediante el puerto paralelo mandarle la información a una LCD, la información se la manda desde la computadora y claro con el programa que hay que crear en VISUAL C++.

-Para este puerto pues tuvimos que armar nuestro circuito, y claro el cable plano ya agrupando los pines.

-El circuito y el cable ya están hechos, lo difícil es el programa, pues en el es en donde primero pues debe reconocer el puerto, y ya que lo haga empieza a preguntar al usuario que inserte los dígitos, (en el programa que puse es un número entre 0 y 255) pero no es sólamente con esos dígitos.
Pues en si es mandarle la información como si la computadora fueran los dígitos de la calculadora, por ejemplo al ponerle un 0 pues que se apague y un 1 para que se encienda.

Espero me haya explicado mejor. Y espero no vayan a pensar mal de mi por favor.

saludos
atte laura

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Cómo Mandar Información A Lcd En Visual C++
« Respuesta #3 en: Martes 11 de Enero de 2005, 22:09 »
0
Hola ya que el mensaje es un poco antiguo , si todavia te interesa dimelo y te digo como hacerlo, es mu facil no se tarda mas de 10 minutos en adaptar ese codigo a visual c++

laupotter

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Re: Cómo Mandar Información A Lcd En Visual C++
« Respuesta #4 en: Sábado 15 de Enero de 2005, 16:15 »
0
HOLA, gracias por responder, aún me es útil tu ayuda.

Pero también quisiera preguntarte si me puedes explicar cómo se crean funciones en Visual C++, lo que pasa es que este código que puse, creo que ya no nos va a servir, o si ves que con esto se pueda mandar informacion al LCD ? que si escriba letras, caracteres, parpade el cursor, se apague, se encienda??

Lo que pasa es que yya estamos haciendo otro, ya en visual c++, pero no sabemos como crear funciones.
PODRIAS AYUDARME POR FAVOR??

ATTE LAUPOTTER

laupotter

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Re: Cómo Mandar Información A Lcd En Visual C++
« Respuesta #5 en: Sábado 15 de Enero de 2005, 17:14 »
0
Hola DIODO:
Oye tienes messenger de hotmail o yahoo???

para que me pudieras ayudar por favor!!

atte laupotter

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Cómo Mandar Información A Lcd En Visual C++
« Respuesta #6 en: Sábado 15 de Enero de 2005, 17:47 »
0
Hola  :hola:

No tengo mucho tiempo ahora asi que voy a resolver tu duda mas concreta, la de como crear funciones en visual c++

Bien, para crear una funcion en visual c++ es practicamente igual que en c, solo que debes adaptarlo a la clase donde quieras que intervenga esa funcion

por ejemplo con la funcion int puerto(int direcc);

supongamos que has creado una aplicacion de tipo dialogo

En esa aplicacion tienes 2 clases (si has llamado a la aplicacion AccPuertos) seran:

CAccPuertosDlg  (esta controla todo lo relacionado con la interfaz del dialogo)

CAccPuertosApp (que controla basicamente la aplicacion y es la que inicia todo)

Bien pues para crear la funcion que pueda operar dentro del dialogo se haria lo siguiente:

en la definicion de la clase CAppPuertosDlg.h debes poner despues del acceso public lo siguiente

Código: Text
  1.  
  2. ................
  3.  
  4. public:
  5. int puerto(int direcc);
  6.  
  7. .........
  8.  
  9.  

en la declaracion de la clase CAccPuertosDlg.cpp debes poner el cuerpo de la funcion de la siguiente manera

Código: Text
  1.  
  2.  
  3. int CAccPuertosDlg::puerto(int direcc)
  4. {
  5.  
  6. //aqui el codigo de lo que haga la funcion
  7.  
  8. }
  9.  
  10.  
  11.  

Ahora podras usar esa funcion por ejemplo en los botones que crees en la ventana de dialogo o al iniciarse el dialogo, etc

Esto es un poco chapucero, si me permites un consejo seria mejor que crearas una clase AccesoPuerto en la que implementaras los metodos y variables para trabajar con el puerto paralelo

Bueno espero que te sirva, si tienes alguna duda mas sobre como adaptar cualquier codigo a visual c++ ya me diras....

Un saludo  :hola:

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Cómo Mandar Información A Lcd En Visual C++
« Respuesta #7 en: Sábado 15 de Enero de 2005, 18:03 »
0
Hola de nuevo

Si que tengo cuenta en hotmail, pero lo que no tengo ahora es mucho tiempo  ;) que no queda nada para los examenes.
Si tienes alguna duda y la pones por aqui no me importara echarle un vistazo cuando pueda

por cierto si vas a trabajar con visual c++ mirate esta pagina que tiene un tutorial muy bueno (mirate al menos los 5 primeros capitulos, con eso podras manejarte bastante bien para lo que pretendes hacer)

http://www.dcp.com.ar/

El tutorial de visual c++ esta en el recuadro de aplicaciones usando MFC

y aqui tienes una pagina de electronica que trata algo del puerto paralelo:

http://www.modelo.edu.mx/univ/virtech/circ...alelo.htm#cinco

Espero que no te molestes por que no te de mi direccion de msn, pero si se la doy a todos los que necesiten ayuda, no apruebo ni una ahora en febrero.

un saludo y suerte  :hola:

carquemo

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Re: Cómo Mandar Información A Lcd En Visual C++
« Respuesta #8 en: Martes 1 de Febrero de 2005, 18:27 »
0
Hola
Diodo, cuando pasen los examenes, te agradecería que pusieras aunque solo sea parte del codigo, o la dirección donde se puede conseguir, pues tengo algunas placas (programadores, emuladores, etc) que funcionan con el puerto paralelo y solo las hago funcionar con programas (y compiladores) para MSDOS, y me gustaría cambiarlos a algo más visual, por cierto que si puede ser que sea para XP, puestos a pedir...

Gracias y suerte en los examenes.
Tenemos dos orejas, dos ojos pero solo una boca, ¿será por algo?

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Cómo Mandar Información A Lcd En Visual C++
« Respuesta #9 en: Miércoles 2 de Febrero de 2005, 12:56 »
0
Hola

Lo siento pero no tengo  ningun codigo o programa para control del puerto paralelo en visual c++.Aunque partiendo de por ejemplo alguno de aplicacion en consola no veo que sea muy dificil adaptarlo a otro entorno grafico, como ya le dije a laupotter
Seguramente si buscas en el google encontraras algun ejemplo o codigo

saludos  :hola:

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Cómo Mandar Información A Lcd En Visual C++
« Respuesta #10 en: Miércoles 2 de Febrero de 2005, 13:03 »
0
Una pequeña pagina en ingles sobre el puerto paralelo y como programar aplicaciones visuales para cualquier SO windows con la libreria InpOut32.dll

http://www.logix4u.cjb.net/

saludos

carquemo

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Re: Cómo Mandar Información A Lcd En Visual C++
« Respuesta #11 en: Miércoles 2 de Febrero de 2005, 14:46 »
0
Vale, me explique mal, lo explico de otra manera:
La mayor pega es Windows XP, cuando no eres ni administrador ni nada que se le parezca, las instrucciones _inp, _out, y demás las rechaza en tiempo de ejecución, compilar el codigo lo compila, por que son validas, pero al ejecutarlas, XP dice que no, que por hay no pasa, que si los permisos, y demás, es por la protección que hace XP del hardware, que tienes que ejecutar en modo "sistema", no necesariamente siendo administrador.
Con el C++ Builder casí lo tengo, pero en Visual C++, que es el que al final tendre que usar, no lo consigo.

Perdona por el tiempo perdido, y gracias por la referencia, creo que puede servirme.
Tenemos dos orejas, dos ojos pero solo una boca, ¿será por algo?

touch

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Cómo Mandar Información A Lcd En Visual C++
« Respuesta #12 en: Lunes 7 de Febrero de 2005, 05:30 »
0
En realidad yo uso C++ Builder, pero analizando tu pregunta inicial , entendi que querias enviar datos a una pantalla LCD (torreta, DISPLAY DE CLIENTE etc) que esta en  el puerto paralelo.

Te envio la rutina que hice en C++ Builder para enviar datos a la torreta (lcd)
ejemplo de uso:

* DEBES DEFINIR UNA IMPRESORA MODO TEXTO , LLAMADA (EN ESTE CASO) TORRERA DIREGIDA CONECTADA AL PUERTO. COM1, LPT1 etc etc

Otro problema que tendras es que la clase AnsiString no esta definida en VC, asi que  debes modificar la funcion par que te funcione. Desgracidamente no soy experto en Micro$oft por eso no puedo traducirla)


Código: Text
  1.  
  2. // Enviar Datos a la Torreta
  3. void Torreta(AnsiString vLinea)
  4. {
  5.  
  6. vLinea=vLinea+&#34;                     &#34;;
  7. vLinea=vLinea.SubString(1,20);
  8. // Falta Parametrizar
  9. String printerPort = &#34;TORRETA&#34;; // o aqui pon String printerPort = &#34;LPT1:&#34;
  10. HANDLE printerHandle = 0;
  11. PRINTER_DEFAULTS printerOptions;
  12. printerOptions.pDatatype = &#34;RAW&#34;;
  13. printerOptions.pDevMode = NULL;
  14. printerOptions.DesiredAccess = PRINTER_ACCESS_USE;
  15. try
  16. {
  17.         if (!OpenPrinter(printerPort.c_str(), &printerHandle, NULL))  throw &#34;Error when opening printer port&#34;;
  18.         DOC_INFO_1 docInfo;
  19.         docInfo.pDocName = &#34;TORRETA&#34;;
  20.         docInfo.pOutputFile = NULL;
  21.         docInfo.pDatatype = &#34;RAW&#34;;
  22.         if (!StartDocPrinter(printerHandle, 1, (LPBYTE)&docInfo)) throw &#34;Error when starting printing&#34;;
  23.         if (!StartPagePrinter(printerHandle)) throw &#34;Error when starting a new page&#34;;
  24.          char* lineToPrint = &#34;&#34;;
  25.          DWORD numBytesWritten;
  26.          //nsiString vClear=12; // CLR de la torreta
  27.          /*lineToPrint=&#34;&#092;x12&#34;; //vClear.c_str(); //
  28.          BOOL correct = WritePrinter(printerHandle, (LPVOID*)lineToPrint,
  29.          strlen(lineToPrint), &numBytesWritten);
  30.          */
  31.          lineToPrint=vLinea.c_str(); // convertir linea a cadena
  32.          bool correct = WritePrinter(printerHandle, (LPVOID*)lineToPrint,
  33.          strlen(lineToPrint), &numBytesWritten);
  34.          if (!correct || numBytesWritten &#60; DWORD(strlen(lineToPrint))) throw &#34;Error al imprimir la linea&#34;;
  35.          if (!EndDocPrinter(printerHandle)) throw &#34;Error al finalizr la impresion&#34;;
  36.         ClosePrinter(printerHandle);
  37. }
  38. catch (...)
  39. {
  40. // NO se pudo enviar a la torreta
  41. }
  42.  
  43.  
  44. }
  45.  
  46.  
  47.  

carquemo

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Re: Cómo Mandar Información A Lcd En Visual C++
« Respuesta #13 en: Martes 8 de Febrero de 2005, 19:59 »
0
Hola touch
  La verdad es que parece sencillo pero creo que tiene alguna pega, me explico, si en realidad "estas imprimiendo", ¿quien se encarga de la linea de ACK?, cuando imprimes, cada byte debe ser reconocido, ¿con este codigo no es necesario?.
 Mi idea es conectar el LCD directamente, (como lo hacen para el MXPlay, por si te suena), sin circuiteria ni nada, quiza una resistencia para el contraste, entonces hay al menos dos patas del LCD que debes conectar a las salidas del puerto, y ¿esas como se controlan, con el strobe quiza?, me falta una.
   Yo habia pensado en cambiar directamente las patas, escribiendo en los registros del puerto, pero creo que no se va ha poder hacer.
En cualquier caso, muchas gracias, el codigo me sirve para el Builder.
Tenemos dos orejas, dos ojos pero solo una boca, ¿será por algo?

laupotter

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Re: Cómo Mandar Información A Lcd En Visual C++
« Respuesta #14 en: Viernes 18 de Febrero de 2005, 05:40 »
0
HOLA DIODO:
Oye esta pregunta que te voy a hacer no es de programación, lo que pasa es que necesito ayuda urgentemente!!!

Mi computadora tiene virus y no se los puedo quitar, por favor ayúdenme!!

El virus que he intentado quitar es Spyware/ISTbar, al igual que el Adware/nCase donde se ha instalado en la computradora un 180 searchAssistant.
Se puede reducir a que tengo Adware y Spyware, y tengo entendido que son hakers y por favor me da mucho problema está muy lenta la computadora y tengo que reiniciarla a cada rato.
He buscado en internet, pero lo que hay gratis es solo el scan pero no me los elimina para eso tengo que comprar el software, yo tengo el Norton 2004 pero ya se venció.

Por favor si me pueden ayudar, lo que pasa es que tambien no entiendo en donde debo buscar las HKEY pues vi como eliminarlo manualmente pero no se donde se encuentren en la computadora.

ESpero respuesta pronto.
saludos bye

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Cómo Mandar Información A Lcd En Visual C++
« Respuesta #15 en: Viernes 18 de Febrero de 2005, 10:12 »
0
Hola

Lo primero bajate un buen antivirus, por ejemplo el kapersky:

http://downloads1.kaspersky-labs.com/trial..._personalen.exe

te funciona durante 30 dias

Bajate tambien el Ad-ware

http://www.softonic.com/ie/12381/Ad-Aware

y pasalos los dos

Aveces algunos virus no pueden ser eliminados pq tenemos puesta la opcion de restaurar sistema, para dehabilitarla vete a mipc, coton derecho, propiedades, restaurar sitema , y clickeas la opcion de deshabilitar restaurar sitema en todas las unidades.

si no te funciona esto puedes buscar por internet poniendo el nombre del virus en cuestion te saldran forma de eliminarlo y o vacunas

PD: hay una seccion de virus donde te podran ayudar mas y mejor

http://foros.solocodigo.com/index.php?showforum=109

un saludo y suerte :hola:

laupotter

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Re: Cómo Mandar Información A Lcd En Visual C++
« Respuesta #16 en: Sábado 19 de Febrero de 2005, 05:29 »
0
Gracias por la ayuda DIODO, voy a seguir tu consejo, estoy bajando el anti virus que me dices y voy a entrar al foro que me dices también.

Gracias por ayudarme de verdad.
saludos
atte laura