Autor Tema: Puerto Rs232  (Leído 10107 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Puerto Rs232
« Respuesta #15 en: 10 de Noviembre de 2004, 15:48:00 »
En primer lugar, decirte que ese PIC que has mencionado es perfecto para hacer una comunicación serie y bastantes cosas más. No en vano es el más famoso que hay.
Aarggg, acabas de pinchar a tu capo en hueso.
No tengo ni idea de ASM, medio me manejo en Basic y C, pero ni puñetera de ASM.
No obstante, seguimos avanzando con tu proyecto, seguro que algún capo real del ASM se ASoMa por aquí y aporta su ayuda.
A ver, dices que cómo puedes conectar tu teclado al PIC para que reciba los caracteres. ¿Qué teclado tienes conectado?, ¿es matricial, serial, de PC, de calculadora?
Tendrás que describir mejor tu proyecto para seguir avanzando. Las dudas y las alternativas son tantas que sería necesaria una mayor concreción.

No conozco el protocolo RS232 a bajo nivel, pero creo recordar que una comunicación serie lleva su bit de start, su trama de datos, tipicamente un byte con 8 bits, y su bit de stop. De todas formas, no creo que eso tenga que preocuparte, ya se encargará el PIC de hacerlo.
 
Ah, claro, en ASM quizás tengas que tenerlo en cuenta , en C sería tan fácil como esto:

Codigo:
#use rs232(baud=19200, xmit=PIN_C6, rcv=PIN_C7, bits=8, parity=N)
void main() {
printf ("Esto está siendo enviado por el puerto serie"Giño;
}


Bueno, venga, mójate y explica con el mayor número de detalles que puedas en qué consiste tu proyecto.

Desconectado dannyman

  • PIC10
  • *
  • Mensajes: 17
RE: Puerto Rs232
« Respuesta #16 en: 11 de Noviembre de 2004, 19:32:00 »
Hola nocturno como te va...

Oye te cuento que estuve revisando mas o menos lo del pic y como conectarlo ya lo entiendo mas o menos.

En lo que se refiere al teclado te puedeo decir que es un matricial de 12 teclas 4 filas y tres columnas.. de ahi mediante dispos ttl obtengo secuencialmente los bits como te dije cada un segundo... Creo que todo eso va a quedar casi y no lo vamos a usar cierto para no hacernos problemas voy a empezar todo de nuevo es decir has de cuenta que tenemos ese teclado, como lo vamos a trbajar???? y como van a salir los bits del pic al max232... secuencialmente o como...

Oye lo del ASM es para cargarl un programa al pic cierto, osea que puedo cargarlo uno de c como tu dices, si si lo mejor seria hacerlo en c como tu dices para no hacernos largo, en el programa de recepcion uso visual basic pero en este no creo que ya tengo problema como te comente arriba...

Espero haberte ayudado con algo pero no se que mas decirte  como te digo sera mejor empezar desde el principio cierto....

Saludos CAPO, cuidate y espero tu respuesta

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Puerto Rs232
« Respuesta #17 en: 11 de Noviembre de 2004, 23:25:00 »
Vale, pues en ese caso, tendrás que conectar el MAX232 al Pic como te dije en otro post y el teclado de la manera que puedes ver aquí:
http://www.x-robotics.com/rutinas.htm#Teclado%20Matricial%204x4

Tu teclado tiene una columna menos, pero supongo que el esquema es suficientemente clarificador. Claro, tú gastarás un pin menos.

Para programar un PIC se utiliza un fichero HEX que contiene los Bytes del programa. A ese fichero HEX se llega compilando desde un lenguaje de programación de alto nivel, o ensamblando desde ASM, pero el resultado será un fichero HEX en cualquier caso.

Por ello, si te mueves bien en C, será seguramente lo más recomendable.

A grandes rasgos, tu programa debería tener un bucle infinito en el que espere mientras no haya una pulsación de tecla. Si esa tecla se pulsa, se enviarán los datos por el puerto serie y vuelta a empezar.

Creeme, es un programa sencillito. Te dejo algunos ejemplos aquí que pueden darte inspiración.
En este primer ejemplo se explora el teclado y se envía la tecla pulsada a una pantalla LCD:

Codigo:
#if defined(__PCB__)
#include <16c56.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=20000000)

#elif defined(__PCM__)
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)

#elif defined(__PCH__)
#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#endif

#include <lcd.c>
#include <kbd.c>


void main() {
   char k;

   lcd_init();
   kbd_init();

   lcd_putc("fReady...
");

   while (TRUE) {
      k=kbd_getc();
      if(k!=0)
        if(k=="*")
          lcd_putc("f");
        else
          lcd_putc(k);
   }
}


Y en este otro se dialoga con el PC vía puerto serie, se reciben caracteres y se envían, por lo que será bastante ilustrativo:

Codigo:
#if defined(__PCM__)
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)  // Jumpers: 8 to 11, 7 to 12

#elif defined(__PCH__)
#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)  // Jumpers: 8 to 11, 7 to 12
#endif

#include <stdlib.h>
#include <input.c>

void main() {
   long int l;
   float a, b;

   while(TRUE) {
      printf("
Enter first number: ");
         a=get_float();

      printf("
Enter second number: ");
         b=get_float();

      printf("

A= %E
", a);
      printf("B= %E
", b);
      printf("
a + b = %E", a + b);
      printf("
a - b = %E", a - b);
      printf("
a * b = %E", a * b);
      printf("
a / b = %E
", a / b);

      if(a <= b)
         printf("a<=b, ");
      else
         printf("a>b, ");
      if(a < b)
         printf("a<b, ");
      else
         printf("a>=b, ");
      if(a == b)
            printf("a==b
");
      else
         printf("a!=b
");

      l = (long int)a;
      printf("
(long)a = %lu ", l);
      a = (float)l;
      printf("
(float)(long)a = %E
", a);
   }
}


Bueno, ¿a qué estás esperando?, quiero ir viendo ya por aquí tu código...


Desconectado dannyman

  • PIC10
  • *
  • Mensajes: 17
RE: Puerto Rs232
« Respuesta #18 en: 13 de Noviembre de 2004, 11:03:00 »
Te das cuenta que eres el Capo de los capos...  Gracias Nocturno en estos momentos estoy con que se casa mi nano pero manana lo empiezo a hacer y no dudes que lo coy a poner aqui para todos los panas del foro..

GRacias cuidate y por fis estate pendiente por si te tengo como siempre alguna consulta de problemas...

Saludos eres PUTO como se dice en tu pais Rebotado

Desconectado randux

  • PIC10
  • *
  • Mensajes: 11
RE: Puerto Rs232
« Respuesta #19 en: 16 de Diciembre de 2004, 09:29:00 »
Saludos Amigos

Ya tengo mas datos sobre lo del torniquete que estubo algo lento, pero ya fue reactivado el proyecto... anexo unas fotos que le tomé a la tarjeta que este trae la cual posee un ULN y un pic. como ya les comente no se mucho sobre esto, pero estoy seguro que uds, podran ayudarme

Refrescando un poco la idea sería activar el rele del torniquete para abrirlo utiliazanco protocolo Rs232, creo por comentarios anteriores que solo debo enviar un bit de paridad por el puerto serial pues de la ampliación de la señal que se envia por el puerto se encarga la tarjeta....

Si alguien sacbe como envio esa señal a traves de visual basic con el objeto mscom se lo agradeceria mucho

Saludos amigos

Desconectado randux

  • PIC10
  • *
  • Mensajes: 11
RE: Puerto Rs232
« Respuesta #20 en: 16 de Diciembre de 2004, 09:30:00 »
Disculpen no pude enviar las fotos y da error, las fotos pesan solo 54 k

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Puerto Rs232
« Respuesta #21 en: 17 de Diciembre de 2004, 00:11:00 »
Escrito originalmente por randux
Saludos Amigos
Refrescando un poco la idea sería activar el rele del torniquete para abrirlo utiliazanco protocolo Rs232, creo por comentarios anteriores que solo debo enviar un bit de paridad por el puerto serial pues de la ampliación de la señal que se envia por el puerto se encarga la tarjeta....



Pues no acabo de entender lo que necesitas: ¿enviar un bit de paridad?. ¿Qué significa que la tarjeta amplía la señal que se envía por el puerto?

Para subir la foto puedes intentarlo aquí todopic3.foro.st que es el almacén del foro, o registrarte a algún servidor gratuito como PicServer: http://picserver.student.utwente.nl/?action=notification

Desconectado randux

  • PIC10
  • *
  • Mensajes: 11
RE: Puerto Rs232
« Respuesta #22 en: 17 de Diciembre de 2004, 06:56:00 »
Gracias Amigo nocturno por estar pendiente,


En realidad lo que necesito es activar un relé de un torniquete.

Tengo una lectora optica la cual lee un codigo de barra se chequea y si es valido debe enviarse, no se una señal o un impulso electrico por el puerto rs232 serial, para activar la liberación del brazo del torniquete.  Eso es todo

Necesito saber como activar el rele, abrir el torniquete, cualquier dato adicional que requieran para poder ayudarme dejenme saber


Muchas gracias amigos...

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Puerto Rs232
« Respuesta #23 en: 17 de Diciembre de 2004, 07:10:00 »
A ver, por lo que cuentas, intuyo que ya dispones del lector de códigos de barras que tiene salida RS232 y necesitas interpretar la señal que este lector envía cuando lee un código de barras.
Imagino que no será tan simple como un impulso. ¿Tienes documentación del lector de códigos de barras?, ¿sabes qué envía por el puerto?

Lo que tengas que montar en el torno dependerá de eso.

Desconectado randux

  • PIC10
  • *
  • Mensajes: 11
RE: Puerto Rs232
« Respuesta #24 en: 17 de Diciembre de 2004, 07:17:00 »
Amigo nocturno ya leo el codigo de barra que me envía la lectora verifico en una base de datos de sql server 2000.

Lo que utilizo el el objeso mscom de visual basic 6 , el problema lo tengo a la hora de abrir el tolrniquete pues no tengo idea de como hacer esto


el Torniquete es marca Henfor.

Gracias Amigo

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Puerto Rs232
« Respuesta #25 en: 17 de Diciembre de 2004, 07:27:00 »
Ah, vale.
Pues si estás seguro que puedes abrir el torno sólo con activar un relé, para enviarlo con mscomm sería tan fácil como esto:

MSComm1.Output = 255

Esto enviará un byte completo con sus ocho bits a 1.

Previamente, en las propiedades del objeto MSComm1, tendrás que haber establecido la velocidad de transmisión y otros parámetros. Imagino que te servirá una velocidad lenta, así que puedes probar con:

Settings = 1200,n,8,1

Por supuesto, no debes olvidar indicarle al Mscomm qué puerto serie vas a usar. Si es el puerto Com2, por ejemplo:

ComPort = 2

Bueno, ya nos contarás


 

anything