Lunes 23 de Diciembre de 2024, 08:36
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
»
Visual C++
(Moderador:
Eternal Idol
) »
Cómo Mandar Información A Lcd En Visual C++
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Cómo Mandar Información A Lcd En Visual C++ (Leído 7325 veces)
laupotter
Miembro activo
Mensajes: 49
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;
}
Tweet
JuanK
Miembro de ORO
Mensajes: 5393
Nacionalidad:
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
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
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++
http]
Empty your memory,
with a free()...
like a pointer!
If you cast a pointer to a integer,
it becomes the integer,
if you cast a pointer to a struct,
it becomes the struct...
The pointer can crash...,
and can Overflow...
Be a pointer my friend...
laupotter
Miembro activo
Mensajes: 49
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
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
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
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
................
public:
int puerto(int direcc);
.........
en la declaracion de la clase CAccPuertosDlg.cpp debes poner el cuerpo de la funcion de la siguiente manera
Código: Text
int CAccPuertosDlg::puerto(int direcc)
{
//aqui el codigo de lo que haga la funcion
}
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
http]
Empty your memory,
with a free()...
like a pointer!
If you cast a pointer to a integer,
it becomes the integer,
if you cast a pointer to a struct,
it becomes the struct...
The pointer can crash...,
and can Overflow...
Be a pointer my friend...
Diodo
Moderador
Mensajes: 658
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
http]
Empty your memory,
with a free()...
like a pointer!
If you cast a pointer to a integer,
it becomes the integer,
if you cast a pointer to a struct,
it becomes the struct...
The pointer can crash...,
and can Overflow...
Be a pointer my friend...
carquemo
Miembro activo
Mensajes: 35
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
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
http]
Empty your memory,
with a free()...
like a pointer!
If you cast a pointer to a integer,
it becomes the integer,
if you cast a pointer to a struct,
it becomes the struct...
The pointer can crash...,
and can Overflow...
Be a pointer my friend...
Diodo
Moderador
Mensajes: 658
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
http]
Empty your memory,
with a free()...
like a pointer!
If you cast a pointer to a integer,
it becomes the integer,
if you cast a pointer to a struct,
it becomes the struct...
The pointer can crash...,
and can Overflow...
Be a pointer my friend...
carquemo
Miembro activo
Mensajes: 35
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
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
// Enviar Datos a la Torreta
void Torreta(AnsiString vLinea)
{
vLinea=vLinea+" ";
vLinea=vLinea.SubString(1,20);
// Falta Parametrizar
String printerPort = "TORRETA"; // o aqui pon String printerPort = "LPT1:"
HANDLE printerHandle = 0;
PRINTER_DEFAULTS printerOptions;
printerOptions.pDatatype = "RAW";
printerOptions.pDevMode = NULL;
printerOptions.DesiredAccess = PRINTER_ACCESS_USE;
try
{
if (!OpenPrinter(printerPort.c_str(), &printerHandle, NULL)) throw "Error when opening printer port";
DOC_INFO_1 docInfo;
docInfo.pDocName = "TORRETA";
docInfo.pOutputFile = NULL;
docInfo.pDatatype = "RAW";
if (!StartDocPrinter(printerHandle, 1, (LPBYTE)&docInfo)) throw "Error when starting printing";
if (!StartPagePrinter(printerHandle)) throw "Error when starting a new page";
char* lineToPrint = "";
DWORD numBytesWritten;
//nsiString vClear=12; // CLR de la torreta
/*lineToPrint="\x12"; //vClear.c_str(); //
BOOL correct = WritePrinter(printerHandle, (LPVOID*)lineToPrint,
strlen(lineToPrint), &numBytesWritten);
*/
lineToPrint=vLinea.c_str(); // convertir linea a cadena
bool correct = WritePrinter(printerHandle, (LPVOID*)lineToPrint,
strlen(lineToPrint), &numBytesWritten);
if (!correct || numBytesWritten < DWORD(strlen(lineToPrint))) throw "Error al imprimir la linea";
if (!EndDocPrinter(printerHandle)) throw "Error al finalizr la impresion";
ClosePrinter(printerHandle);
}
catch (...)
{
// NO se pudo enviar a la torreta
}
}
carquemo
Miembro activo
Mensajes: 35
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
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
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
http]
Empty your memory,
with a free()...
like a pointer!
If you cast a pointer to a integer,
it becomes the integer,
if you cast a pointer to a struct,
it becomes the struct...
The pointer can crash...,
and can Overflow...
Be a pointer my friend...
laupotter
Miembro activo
Mensajes: 49
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
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
»
Visual C++
(Moderador:
Eternal Idol
) »
Cómo Mandar Información A Lcd En Visual C++