elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
06 Octubre 2008, 18:18  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderador: ®®)
| | |-+  Ayuda para transmitir datos por el lpt1
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Ayuda para transmitir datos por el lpt1  (Leído 370 veces)
Leon8086x

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Ayuda para transmitir datos por el lpt1
« en: 23 Febrero 2008, 21:58 »

Este post tambien esta en "programacion general", pero desidi ponerlo aqui que creo que esta mejor ubicado, Si nesesitan eliminar el post ubicado en "programacion general" haganlo, pero preferiria que lo dejasen.


En este post ire haciendo diferentes preguntas respecto a formas y programas para transmitir y/o resibir informacion por los diferentes puertos, para poder controlar dispositivis externos. Esto va orientedo a "Control electronico" pero tambien es muy util en el tema de "Transmicion de datos".

Bueno en general, comensare con el puerto lpt1 (del que tengo una idea), hasta llegar al usb y presentare diferentes programas listos para compilar, ya sean extraidos de la web o propios, para este fin.

Mi compilador es dev c++ 4.9x no me acuero bien.

Todo esto me va a llevar un buen tiempo y a medida que vaya logrando programas funcionales los posteare aqui. Con su ayuda a partir de este post se podria llegar a Hacer un buen tuto de control de dispositivos externos mediante los dif puertos del pc (todos son utiles, aunque reine el usb). Luego puede subdividirse en un tutorial de "Control electronico" y otro de trasmicion de datos.

Se que mi proyecto es ambisioso pero no ñegen que tiene vastante perspectiva, bueno esa es la idea y obiamente da pa largo asi que manos a la obra.

Despues corrigo la ortografia.
 

Bueno sufisiente lata. Aqui ba El primer problema.


Alguien pregunto.

"bien queria sber con que lenguaje ademas de c/c++ podia hacer programas para mandar datos , recibir datos de entradas y salidas del puerto paralelo , sé que en c/c++ se puede porq vi algunos ejemplos ( si a alguien le interesa estos ejemplos de c/c++ , puedo dejarlos aqui mismo   )...

saludos =)."

Y otro posteo 2 ejemplos interesantes


Ej1
----------------------------

/**********************************************************
*  puerto1.c                                              *
*  (c)Virgilio Gómez Negrete                              *
*  Determina la direccion del puerto paralelo             *
**********************************************************/

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

int main()
{
    unsigned int __far *puntero_a_direccion;
    int i;

    puntero_a_direccion=(unsigned int __far *)0x00000408;

    for (i=0; i<3; i++)
    {
        if (*puntero_a_direccion == 0)
        printf("No se encontro puerto asignado a LPT%d \n", i+1);
        else
        printf("La direccion asignada a LPT%d es 0x%Xh\n",
          i+1, *puntero_a_direccion);
        puntero_a_direccion++;
    }

    return 0;
}



Ej2
-----------------------------

/**********************************************************
*  puerto2.c                                              *
*  Escribe datos al puerto paralelo de la PC              *
*  (c)1999, Virgilio Gómez Negrete                        *
**********************************************************/

#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;
}

--------------------------------------

1er problema

Al intentar compilar el ej 1 me aparesen estos errores.

d:\progra~1\progra~1\pp1.c: In function `main':
d:\progra~1\progra~1\pp1.c:12: syntax error before `*'
d:\progra~1\progra~1\pp1.c:15: `puntero_a_direccion' undeclared (first use in this function)
d:\progra~1\progra~1\pp1.c:15: (Each undeclared identifier is reported only once
d:\progra~1\progra~1\pp1.c:15: for each function it appears in.)
d:\progra~1\progra~1\pp1.c:15: parse error before `far'

Al intentar compilar el ej 2 me aparesen estos errores.

d:\progra~1\progra~1\pp1.c: In function `main':
d:\progra~1\progra~1\pp1.c:16: syntax error before `*'
d:\progra~1\progra~1\pp1.c:19: `puntero_a_direccion' undeclared (first use in this function)
d:\progra~1\progra~1\pp1.c:19: (Each undeclared identifier is reported only once
d:\progra~1\progra~1\pp1.c:19: for each function it appears in.)
d:\progra~1\progra~1\pp1.c:19: parse error before `__far'


Que son y como se resuelven ya que de c ten una idea pero todavia me falta.

Desde ya muchas gracias por el esfuerzo que aqui le ponen.

Suerte.
« Última modificación: 23 Febrero 2008, 22:06 por Leon8086x » En línea
project 2501

Desconectado Desconectado

Mensajes: 137



Ver Perfil
Re: Ayuda para transmitir datos por el lpt1
« Respuesta #1 en: 24 Febrero 2008, 03:25 »

Lo primero decirte que no tengo windows para probar ese programa, asi que todo lo que voy a decir es en plan teorico.

El error que te da creo que por la variable que usas "__far" que no es correcta. He buscado a ver si encontraba algo donde se usase esa variable y me he encontrado esto:

http://electrosofts.com/parallel/

Y como podras ver, en la parte final del articulo hay un programa muy parecido al de virgilio y en ese programa no usa la variable "__far", sino que usa "far" a secas. Puedes probar ese programilla a ver si te funciona y a cambiar la variable en estos, y sino te funciona vuelve a postear que ya buscaremos mas. ;)
En línea

¿Y a dónde va el recién nacido desde aquí? La red es vasta e infinita
Eternal Idol N&P

Desconectado Desconectado

Mensajes: 1.339


Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)


Ver Perfil WWW
Re: Ayuda para transmitir datos por el lpt1
« Respuesta #2 en: 24 Febrero 2008, 08:37 »

Eso es codigo para MS-DOS (16 bits) usa un compilador adecuado. Si queres hacerlo bajo Windows usa CreateFile.
En línea

http://www.nacionalypopular.com/
http://www.lucheyvuelve.com.ar/

"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este"
Juan Domingo Peron
Leon8086x

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: Ayuda para transmitir datos por el lpt1
« Respuesta #3 en: 25 Febrero 2008, 04:18 »

Exelente material, les agradezco.

Mas tarde me pongo a compilar los programas propuestos en la web que recomendo "Project 2520"

En cuanto a esa funcion create file esta un poco (vastante) avamnzada para el conosimiento que yo tengo sobre c, me gustaria saber un poco sobrec en windows puesto que no tengo mucha idea espero recomendaciones y algun tutorial.

gracias a todos y EXITOS!
En línea
Leon8086x

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: Ayuda para transmitir datos por el lpt1
« Respuesta #4 en: 27 Febrero 2008, 03:05 »

Bueno ahora estoy intentando compilar este programa con turbo c, bueno luego les digo que resulta.

/*     file:  ex1.c
       by HarshaPerla for electroSofts.com.
       Displays contents of status register of parallel port.
       Tested with TurboC 3.0 and Borland C 3.1 for DOS.
*/

#include"stdio.h"
#include"conio.h"
#include"dos.h"

#define PORT 0x378

void main()
{
    int data;
    clrscr();
    while(!kbhit())
    {
        data=inportb(PORT+1);
        gotoxy(3,10);
        printf("Data available in status register: %3d (decimal), %3X (hex)\n", data, data);
        printf("\n Pin 15: %d",(data & 0x08)/0x08);
        printf("\n Pin 13: %d",(data & 0x10)/0x10);
        printf("\n Pin 12: %d",(data & 0x20)/0x20);
        printf("\n Pin 11: %d",(data & 0x80)/0x80);
        printf("\n Pin 10: %d",(data & 0x40)/0x40);
        delay(10);
    }
}

Lo que si, no se bien que Hace ese  #define PORT 0x378 y suponiendo que esa direccion sea la del puerto lpt1, entonces estoy diciendo que elijo ese puerto?

E intentado compilarlo en el turbo c++ y me sale con que no puede encontrar a un tal cos.obj ???? Y ahora que es esto? siempre 5 pal peso, que paso?
 
« Última modificación: 27 Febrero 2008, 05:06 por Leon8086x » En línea
Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats