• Sábado 20 de Abril de 2024, 02:57

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - blasata

Páginas: [1] 2
1
C/C++ / Re: hexadecimal en con 0x
« en: Viernes 12 de Noviembre de 2010, 17:41 »
guau, un momento solo?!!

muchas gracias es justo lo que andaba buscando, me estaba liando mucho ya...
 :beer:

2
C/C++ / Re: hexadecimal en con 0x
« en: Miércoles 10 de Noviembre de 2010, 19:09 »
Bueno la cosa es todavia me hago un lio con los arrays.. :wacko:
A ver si hay una forma rápida de hacer esto: si un declaro un array de caracteres como este

Código: C
  1. char buffer[40];
  2.  

como puedo pasarlo a un array como este(con la idea de poder guardar numeros de 0..255..)

Código: C
  1. unsigned char Leer[40];
  2.  

en el que cada elemento se forme tomando de dos en dos de la cadena original.

O sea que si tengo por ejemplo:

Código: C
  1. Buffer[0]=65; // la A
  2. Buffer[1]=57;   // el 9
  3. Buffer[2]=48;  // el 0
  4. Buffer[3]=70;  // la F
  5.  
  6.  


pueda llegar a tener en 'Leer'  el primer elemento A9, 0F...
O si se puede, directamente en decimal, que seria 169, 15...
muchas gracias! :comp:

3
C/C++ / hexadecimal en con 0x
« en: Martes 9 de Noviembre de 2010, 20:52 »
Hola, mirar no sé si se podrá hacer pero bueno, a ver si alguien me puede ayudar:

la cosa es que estoy recibiendo por serie datos como estos, por ejemplo ..DA 11 21 C3..en hexadecimal, y parte de ellos los uso para enviar yo una respuesta. El problema es que no sé crear un array de char con el 0x delante. Me explico, manualmente me puedo crear esto:

Código: C++
  1. unsigned char inventario[8] =  {0xD6,0x00,0x05,0xFE,0x00,0x05,0xFA,0x40};
  2. WriteFile(hLCD, inventario, 8, &m, NULL);
  3.  
(no sé si se puede hacer de alguna forma mejor...)

Lo envio y todo bien. Luego a la respuesta que me llega le extraigo la parte de la trama que me interesa y la guardo en:

Código: C
  1. unsigned char sn[8];
  2.  

Ahora con lo que hay dentro de sn debo formar una nueva trama que debo enviar. ¿Pero como? He probado haciendo:

Código: C++
  1. unsigned char b;
  2.    
  3.     sprintf(b,"%c",0x40);
  4.  

pero no va bien, como se puede poner el 0x delante a un hexadeciamal que yo quiera y guardarlo en un array?

Lo que no sé es cómo se puede crear la matriz de ejemplo de arriba pero con datos que el programa va recibiendo? :brickwall:

No tendré que crear un montón de
Código: C
  1. #define                A4     0xA4
  2.  
  3.  
para luego usarlos... :argh:

4
C/C++ / Re: crc16 ccitt polinomio 1021
« en: Martes 9 de Noviembre de 2010, 11:07 »
La solución que he encontrado:

Código: C
  1. #define                 P_CCITT     0x1021
  2.  
  3.  
  4. static int              crc_tabccitt_init       = FALSE;
  5. static unsigned short   crc_tabccitt[256];
  6.  
  7. static void init_crcccitt_tab( void )
  8.  { 
  9.     int i, j;
  10.     unsigned short crc, c;
  11.     for (i=0; i<256; i++)
  12.         {
  13.         crc = 0;
  14.         c   = ((unsigned short) i) << 8;
  15.         for (j=0; j<8; j++)
  16.                {
  17.                  if ( (crc ^ c) & 0x8000 ) crc = ( crc << 1 ) ^ P_CCITT;
  18.                  else                      crc =   crc << 1;
  19.                  c = c << 1;
  20.                }
  21.          crc_tabccitt[i] = crc;
  22.     }
  23.     crc_tabccitt_init = TRUE;
  24. }  /* init_crcccitt_tab */
  25.  
  26. unsigned short update_crc_ccitt( unsigned short crc, char c ) {
  27.  
  28.     unsigned short tmp, short_c;
  29.     short_c  = 0x00ff & (unsigned short) c;
  30.     if ( ! crc_tabccitt_init )
  31.         init_crcccitt_tab();
  32.     tmp = (crc >> 8) ^ short_c;
  33.     crc = (crc << 8) ^ crc_tabccitt[tmp];
  34.     return crc;
  35. }  
  36. char input_string[20]="000311r";
  37.     char *ptr, *dest, hex_val, prev_byte;
  38.     unsigned short crc_ccitt_ffff;
  39.  
  40.     ptr  = input_string;
  41.     dest = input_string;
  42.     while( *ptr  &&  *ptr != 'r'  &&  *ptr != 'n' )
  43.        {
  44.             if ( *ptr >= '0'  &&  *ptr <= '9' ) *dest++ = (char) ( (*ptr) - '0'      );
  45.             if ( *ptr >= 'A'  &&  *ptr <= 'F' ) *dest++ = (char) ( (*ptr) - 'A' + 10 );
  46.             if ( *ptr >= 'a'  &&  *ptr <= 'f' ) *dest++ = (char) ( (*ptr) - 'a' + 10 );
  47.             ptr++;
  48.        }
  49.      * dest    = 'x80';
  50.      *(dest+1) = 'x80';
  51.         crc_ccitt_ffff = 0xffff;
  52.         prev_byte = 0;
  53.         ptr       = input_string;
  54.  
  55.         while ( *ptr != 'x80' )
  56.             {
  57.                 hex_val  = (char) ( ( * ptr     &  'x0f' ) << 4 );
  58.                 hex_val |= (char) ( ( *(ptr+1)  &  'x0f' )      );              
  59.                 crc_ccitt_ffff = update_crc_ccitt(  crc_ccitt_ffff, hex_val            );
  60.                 prev_byte = hex_val;
  61.                 ptr      += 2;
  62.              }
  63.  
  64.            //input_string[0] = 0;
  65.  printf( "CRC-CCITT (0xffff) = 0x%04Xn", crc_ccitt_ffff);
  66.    
  67.     getchar();
  68.     return 0;
  69.  

Para la cadena 000311 da CRC de 9BDF, luego lo pongo en Complemento a 1 y el cacharro ya me responde a lo comandos que le mando por fin!
saludos :good:

5
C/C++ / Re: crc16 ccitt polinomio 1021
« en: Lunes 8 de Noviembre de 2010, 00:47 »
bueno ya tengo una función que lo hace bien:

Código: C
  1. static int calcByte(int crc, int b)
  2. {
  3.     crc = crc ^ (int)b << 8;
  4.     for (int i = 0; i < 8; i++)
  5.         {
  6.             if ((crc & 0x8000) == 0x8000)
  7.                 crc = crc << 1 ^ 0x1021;
  8.             else
  9.                 crc = crc << 1;
  10.         }
  11.     return crc & 0xffff;
  12. }
  13.  
  14.  

Y el resto algo así
Código: C
  1. char datos[30]="000903000200000003";
  2.     int i, crc;
  3.     crc=0xFFFF;
  4.  
  5.     for(i=0;i<strlen(datos);i++)    
  6.          crc = calcByte(crc, datos[i]);
  7.    
  8.    
  9.     printf("El CRC de la cadena: %s es: %4X, y el C1 es: %4Xn",datos,crc,~crc);
  10.  

Pero ahora lo que quiero es que me trate la cadena datos como Hex, porque tal como está los trata como ASCII. Esto lo podeis ver en la web http://www.lammertbies.nl/comm/info/crc-calculation.html
Alli podeis seleccionar la cadena como ASCII o como Hex, y como ASCII mi porgrama y la web coinciden, pero necesito el resultado que da con la opción Hex, ¿alguna idea?

Para más datos la definición de CRC que debo usar es esta:

CRC-CCITT
16 bits
Poly 0x1021
Forward
Preset FFFF
Residuo 1D0F

Y lo que trato de conseguir es obtener para 00 09 03 00 02 00 00 00 03 un CRC de 12E6 (que es el Complento a 1 de ED19, resultado que da la web con la opción Hex marcada)

gracias

6
C/C++ / crc16 ccitt polinomio 1021
« en: Domingo 7 de Noviembre de 2010, 02:59 »
Hola a todos,
por favor alguien puede decirme que está mal en el siguiente código? me devuelve para la cadena "123456789" un valor de CRC de: E245. Sin embargo debería ser 29B1, según esta web: http://zorc.breitbandkatze.de/crc.html
Se trata de CRC16 CCITT, polinomio 0x1021, valor inicial 0xffff y final 0.
 :hitcomp:

Código: C
  1.  
  2. long CRC16(char value, long poly, long init_value, long exit_value)
  3. {
  4.     long re, i;
  5.     res=value;
  6.  
  7.     res^=init_value;
  8.  
  9.     for(i=0; i<8; i++)  // a cada byte hacer
  10.     {
  11.         if(res & 1)
  12.            {
  13.             res >>= 1;
  14.             res ^= poly;      // 1021
  15.            }
  16.         else
  17.            {
  18.             res >>= 1;
  19.            }
  20.     }
  21.    res ^= exit_value;
  22.    return res;
  23. }
  24. int _tmain(int argc, _TCHAR* argv[])
  25. {
  26.     char datos[]="123456789";
  27.     int i;
  28.     long inival;
  29.     inival=0xFFFF;
  30.  
  31.     for(i=0; i<strlen(datos); i++)
  32.       {
  33.          printf("INIVAL VALE: %Xn",inival);
  34.        inival = CRC16(datos[i],0x1021,inival,0x0000);
  35.       }
  36.     inival = inival ^ 0xFFFF;
  37.     printf("El CRC de la cadena: %s es: %4Xn", datos, inival);
  38.     getchar();
  39.     return 0;
  40. }
  41.  
  42.  

muchas gracias

7
Visual C++ / Re: cerrar puertos COM antes de usarlos
« en: Jueves 22 de Abril de 2010, 23:54 »
vale, para dar más detalles, tengo dos COM abiertos(pero 'virtuales') :
    -  mediante conversor USB uno.  
    -  otro también USB (en una placa con un chip ftdi).

Aparte también está la conexión de red por sockets en la tarjeta integrada de la placa (que es un conector que además tiene dos USB de los cuales uso uno para el USB conversor a serie).

Total lo raro es que al hacer Ctr-C hay veces que la conexión por sockets se cierra (lo veo en el servidor al que me conecto) y otras no. Es en estas veces que no se cierra 'bien' el socket cuando debo sacar los USBs y volverlos a pinchar. Al momento veo que se cierra el socket. Pero no sé por qué a veces sí y otras no, porque siempre hago Crt-C en el mismo punto del programa que es (está esperando):

Código: C
  1.  
  2. do  {  
  3.      }                                          
  4. while ( ( (Inp32(ESTADO))&(128) ) == 0 );
  5.  
  6.  

Nadie debería parar el programa así pero por si se les ocurre...

Pero estoy por no comerme más el coco, si dices que Ctr-C acaba con los handles, el problema debe ser ese los sockets..digo yo :blink:

8
Visual C++ / cerrar puertos COM antes de usarlos
« en: Lunes 19 de Abril de 2010, 22:30 »
Hola de nuevo,

tengo una duda, ¿se pueden cerrar los puertos COM que se habrieron en una ejecución anterior de un programa que finalizó incorrectamente (y que los dejó abiertos)?   :question:
esto me pasa al parar mi programa con Ctrl C, cuando vuelvo a cargar el programa no consigue arrancar los puertos. En concreto uso esto

Código: C
  1. DCB dcbLCD;  // estructura de configuracion
  2.     //HANDLE hLCD;
  3.     char dd[5];
  4.     //LPCSTR(COM_LCD) antes
  5.     sprintf(dd,"%s%c","COM",COM_LCD);
  6.     printf("LCD: accediendo a COM: %s n",dd);
  7. lab1:hLCD = CreateFile(dd, GENERIC_READ|GENERIC_WRITE, 0, NULL,OPEN_EXISTING, 0, NULL);// abrimos el puerto
  8.      if(hLCD == INVALID_HANDLE_VALUE) {
  9.              printf("Error al acceder al puerto serie LCDn");
  10.              escribelog("Error al acceder al Puerto COM LCD");  
  11.              Sleep(1000);
  12.              goto lab1;
  13.             }
  14.      else   { printf("Acceso correcto LCDn");
  15.               escribelog("Acceso correcto al Puerto COM LCD");  
  16.             }
  17.  
gracias de antemano :comp:
sí..uso goto :P

9
Visual C++ / Re: guardar cadenas de fichero en array de cadenas
« en: Lunes 19 de Abril de 2010, 21:45 »
ok! funciona
 :beer:

10
Visual C++ / guardar cadenas de fichero en array de cadenas
« en: Lunes 19 de Abril de 2010, 00:28 »
Hola a todos, quiero guardar las cadenas de lengua.txt en un array de cadenas *msj[62], pero este código no va bien:
 se van sobreescribiendo y me guarda en todas las posiciones de msj la última cadena leída del archivo: :ouch:

Código: C
  1.  
  2. *msj_LCD[62], tmp_l[200];  // estas variables las declaro como globales aunque se vean aquí
  3. if(archivo_lengua!=NULL) // Si lo abrimos correctamente.
  4.          for ( a=0; a<62; a++)
  5.              { fgets(tmp_l, 200, archivo_lengua);  
  6.                msj_LCD[a]= tmp_l;
  7.              }
  8.      fclose(archivo_lengua);
  9.  
 :brickwall:

11
C/C++ / Re: cerrar ventana
« en: Martes 13 de Abril de 2010, 11:04 »
pues yo creo que puedes intentar esto:

CDialog::OnCancel();

mira: http://msdn.microsoft.com/en-us/library/kw3wtttf.aspx

12
Robótica / Re: inversor de giro motor CC chasquea rele
« en: Jueves 8 de Abril de 2010, 00:01 »
bueno para que se sepa,

los reles parece que chasquean porque el motor consume demasiada corriente al inicio. Aunque no le he probado debo cambiar la fuente que estaba utilizando...

saludos a todos

13
Robótica / inversor de giro motor CC chasquea rele
« en: Viernes 2 de Abril de 2010, 08:16 »
hola compañeros, espero que alguno tenga más experiencia y me pueda ayudar:

tengo un motorcito que consume 2.5A, y debo controlar el sentido de giro con dos relés (12V 10A). El esquema que uso para el giro es:  

 El caso es que el circuito tanto para un giro como para el otro no funciona bien cuando conecto uno de los relés: chasquea la pata N.O. todo el rato. Vamos que la pata N.O. se conecta con la C. pero al momento se desconecta y así muchas veces y muy rápido... Lo raro es que si con la mano muevo el eje del motor, y, digamos, le ayudo a arrancarlo, si engancha la pata del rele bien, no chasquea.  :argh:

También he probado con un motor más pequeño, y con este los relés se enganchan bien sin ayuda. Sólo chasquea con el motor grande.
Me estoy equivocando en algo?  :blink:

14
Visual C++ / Re: debug y release y SYSTEMTIME
« en: Miércoles 31 de Marzo de 2010, 07:11 »
gracias.. una cosa más para la libretita
  :comp:

15
Visual C++ / Re: Cómo establecer Juego de Caracteres VC?
« en: Miércoles 31 de Marzo de 2010, 07:02 »
..y si el proyecto se copila como multibyte que puede pasar?

16
Visual C++ / Cómo establecer Juego de Caracteres VC?
« en: Jueves 25 de Marzo de 2010, 18:09 »
Hola a todos,

el usuario de mi programa debe tener la opción de elegir el juego de caracteres que quiera ( Latin 1250, 1252, 850, etc). Pero..

Cómo se hace esto en VC?

He encontrado esta web: http://www.zator.com/Cpp/E2_2_1a2.htm
Pero no sé si van por ahí los tiros.. :huh:

Gracias

17
Visual C++ / debug y release y SYSTEMTIME
« en: Miércoles 17 de Marzo de 2010, 11:52 »
Hola a todos,
 tengo un problemón con esta función para conectarme por sockets a un servidor

Código: C++
  1. int conectar(char IP[], int Puerto)    
  2. {
  3.         WSADATA wsa;
  4.        SOCKET buzonete;  
  5.        // Struct hostent *host;
  6.        struct sockaddr_in direc;
  7.        int conex;    
  8.        //Inicializamos
  9.        WSAStartup(MAKEWORD(2,2),&wsa);
  10.        escribelog("Intentando crear Socket...");
  11.        do
  12.         {  buzonete = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); //creamos el socket  
  13.            printf("Intentando crear el Socket...n");
  14.            Sleep(1000);
  15.         }
  16.        while (buzonete == -1);
  17.         escribelog("Socket creado...");
  18.        // Definimos la dirección a conectar
  19.        direc.sin_family = AF_INET;
  20.        direc.sin_port = htons(Puerto);                
  21.        direc.sin_addr.s_addr = inet_addr( &IP[0] );  
  22.        memset(direc.sin_zero,0,8);        
  23.  
  24.        escribelog("Conectando ...");
  25.        printf("Intentando conexion ...n"); 
  26.        do
  27.         {   conex = connect( buzonete, (sockaddr *)&direc, sizeof(sockaddr) );
  28.             Sleep(1000);  
  29.         }
  30.        while (conex==-1);
  31.        printf("Conectado  n");
  32.        
  33.        return buzonete;
  34. }
  35.  
Cuando llamo a la función, en modo debug voy paso a paso, y veo como pasa por cada sentencia y se conecta. Así funciona bien......pero en release, se salta directamente a
Código: C++
  1.  printf("Conectado  n");
  2.  
Y no sé por qué. Ya me ha pasado más veces esto de que se "salte" código.  :argh:
También estoy intentando esto
Código: C++
  1.  char sip[6];
  2.      SYSTEMTIME ahora;
  3.      sprintf(sip,"%s", ahora.wYear);
  4.  

 pero tampoco, me dice
     en DEBUG: que la variable está siendo usada sin estar definida en debug
     y en RELEASE: Unhandled exception at 0x10227c2f (msvcr80d.dll)  

Si hago paso a paso veo como se salta la linea SYSTEMTIME ! :brickwall:
 :hitcomp:

Ah y como podría hacer que los campos de ahora.wDay etc... si son menores de 10, aparezcan con dos cifras, es decir, si son 5 seg. por ejemplo que aparezca como 05

Gracias!

18
Visual C++ / Re: el segundo send no llega
« en: Martes 12 de Enero de 2010, 18:02 »
Sí me he explicado un poco mal,
tengo un software de desarrollo donde hacer las pruebas: un Servidor y un Cliente. Protocolo utilizado: SIP
   - Si desarrollo un cliente, verifico que se comporta igual que el Cliente original al comunicarse con el Servidor.
   - Y si desarrollo un servidor ver que se comporta igual que el Servidor original con los clientes.
Mi caso es el primero: hacer un cliente.
El Servidor, como el Cliente, tienen un archivo de configuración en el que se puede activar la opción de control de errores(checksum y todo eso).

- Si pongo control de errores desactivado, al hacer el primer send, llega lo que mande (sea un comando SIP válido o no)

       1. Received raw, non-SIP text:    en el caso de enviar una cadena que no reconoce
        o
       2. Una ventana indicando el nombre del comando enviado:  en el caso de enviar una cadena que sí reconoce

    La segunda y siguientes veces que envío, sale la primera ventana pero vacía (mande un comando SIP válido o texto cualquiera)


  - Si pongo control de errores activado es lo mismo, sólo que si mando cadenas que no reconoce como comandos SIP, las ignora sin decir nada. Pero igual que antes sólo me muestra la primera, las demás no.

El servidor no cierra el socket, y los valores de send van bien (el nº de bytes quue envía).
Espero que ahora se entienda mejor. Si se os ocurre algo....

EI: juntando mensajes.

He hecho pruebas con un programita TCP IP Test Server: todo lo que mi cliente envía lo recibe...
El problema está en el Servidor que me han pasado para probar.
Por lo menos ya sé que el cliente envía como dios manda. Vamos a seguir probando cosas.

EI: juntando mensajes.

el fallo está en el +1 de:

send(cliente_m, sip, strlen(sip)+1, 0);

Para que el server que uso se entere debería ser:

send(cliente_m, sip, strlen(sip), 0);

saludos

19
Visual C++ / el segundo send no llega
« en: Lunes 11 de Enero de 2010, 19:07 »
Hola de nuevo,
tratando de hacer la aplicación cliente me encuentro con que el primer send que envío al servidor llega correctamente, pero los que mando después no: o llega algo pero no contiene nada. Y si al servidor le pongo control de errores ni eso.
El valor que devuelve send es correcto, no hay errores yo creo.

No sé si poner código, es simplemente
send(cliente_m, sip, strlen(sip)+1, 0); //ok
send(cliente_m, sip, strlen(sip)+1, 0); // falla, aunque cambien el mensaje

El programa servidor viene con un su cliente (que tengo que emular), y he comprobado que con él todos los send llegan.
¿Antes de hacer hacer otro envío hay que hacer algo pero qué?
¿¿se me escapa algo??

20
Visual C++ / Re: crear funcion conectar
« en: Sábado 9 de Enero de 2010, 17:31 »
:good:

21
Visual C++ / crear funcion conectar
« en: Viernes 8 de Enero de 2010, 10:09 »
Hola, seguramente será una chorrada pero al crear una función como esta (a la que he dejado en los huesos para que se vea mejor):

int conectar()
{
      WSADATA wsa;
      int cliente;  
      struct sockaddr_in direc;
      WSAStartup(MAKEWORD(2,2),&wsa);
      direc.sin_family=AF_INET;
      direc.sin_port=htons(6001);
      direc.sin_addr.s_addr = inet_addr("127.0.0.1");
      memset(direc.sin_zero,0,8);  
      cliente = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
           connect(cliente, (sockaddr *)&direc, sizeof(sockaddr));
return cliente;          
}


Si hago en main
conectar();
send(cliente...

me dice que cliente está sin declarar.

He intentado a cambiar void por SOCKET. Y static int cliente también.  :argh:
qué estará mal?

22
Hardware / Re: puerto paralelo.entradas digitales
« en: Domingo 13 de Diciembre de 2009, 18:30 »
bueno he estado haciendo pruebas.
Tengo una placa antigua "acer lab inc aladdin pro M726MRT" con slot 1 de un pentium II. en la BIOS me da la opción de Normal, EPP, ECP+EPP, Bidir para el LPT1. He probado con todos los modos (desde windows y msdos) a hacer esto: activar el C5 del puerto de control, estoy siguiendo esta fuente:

Si C5=1, el  buffer de los datos de salida se pone en alta impedancia, "desconectando" dicho  buffer de los pines 2 a 9 del  conector del puerto (D0 a D7). Si se escribe en el registro de datos, se escribe en el buffer pero no en la salida. Esto permite que al leer el puerto se lea el estado de las entradas y no lo que hay en buffer. Cuando C5=0 el puerto retorna al modo salida, su estado por defecto.

Después de hacer esto, escribo algo al registro de datos, y leo lo que he escrito. Y según esta otra fuente:

1. Set bit 5 of the control register (at base address+2). 2. With nothing connected to the port, write a couple of values to the data port, and read each back after you write it. If the reads DON'T match the writes, your port is probably bidirectional. Setting C5 disabled the data outputs and you're reading the open inputs of the data-port buffer. If the reads DO match the writes, your port isn't bidirectional. The data outputs are still enabled, you're reading back what you wrote, and you won't be able to read external signals.


...luego mi puerto no es bidireccional porque coincide lo que escribo y lo que leo. Entonces para qué está la opción en la BIOS? Y por qué puedo acceder al bit C5? Tan antigua es la placa que no es bidireccional??

Alguien tiene idea?? :hitcomp:

23
Hardware / Re: puerto paralelo.entradas digitales
« en: Jueves 10 de Diciembre de 2009, 14:46 »
pues ver el estado de unos 8 switch.
Me estaba guiando por esta web, y no parece que esté mal, pero nunca se sabe. Habrá que probar.

cfievalladolid2.net/tecno/cyr_01/control/practicas/p_2.htm#bidireccional

24
Hardware / Re: puerto paralelo.entradas digitales
« en: Miércoles 9 de Diciembre de 2009, 08:52 »
gracias. bueno, pensaba usar los ocho(2..9) de datos como entradas, si el puerto se configura en la bios como bidireccional se podría hacer no?

25
Hardware / puerto paralelo.entradas digitales
« en: Martes 8 de Diciembre de 2009, 21:18 »
Hola a todos
una vez configurado el puerto paralelo como bidireccional, me gustaría que me confirmara alguien (antes de nada) si esta conexión para usar el puerto paralelo como entrada es la correcta:  

Código: C
  1.  
  2.                               switch
  3. uno de los pin de datos ______  ______tierra
  4.                            |
  5.                          10k
  6.                            |
  7.                          +5V  
  8.  

Poner la fuente de 5V en serie con una resistencia y conectarlo al pin de datos, y del mismo pin de datos el microinterruptor que al cerrar lleva a tierra.

Páginas: [1] 2