Re: Off topic - Programa en C para manejar puerto serial

2008-07-04 Por tema javier
El mié, 02-07-2008 a las 23:20 +0200, Jesús Genicio escribió:
> Hola:
> 
> Aquí tienes varios ejemplos de cómo hacerlo.
> 
> http://tuxgraphics.org/electronics/
> 
> S2.
> 
> 

tal vez esto te sirva:

http://es.tldp.org/COMO-INSFLUG/es/ps/Programacion-Serie-Como.ps.gz

O esto:
Este programita se comunica con un PIC y a través del puerto serie lee
datos y los grafica. A lo mejor podés sacar algo.


#include
#include
#include
#include
#include
#include
#include
#include
#include"Escala.h"
#include"Escala.cc"
// Ancho y alto de la ventana en pixels.
#define ANCHO 800
#define ALTO 540
/* la tasa de baudios esta definida en , que esta
   incluida  */
#define BAUDRATE B57600
/* cambie esta definicion por el puerto correcto */
#define MODEMDEVICE "/dev/ttyS0"
#define _POSIX_SOURCE 1 /* fuentes cumple POSIX */
#define FALSE 0
#define TRUE 1
main()
{
   int fd , res;
   double x,y;
   int xPixel, yPixel;
   struct termios oldtio,newtio;
   unsigned char datosrx[2500]={0}, datostx;
   Display *disp = NULL;
   /* Ventana que vamos a crear para dibujar */
   Window ventana;
   /* Color que vamos a utilizar para dibujar una linea */
   XColor color;
   /* Abrimos la conexion con el servidor de X */
   disp = XOpenDisplay(NULL);
   /* Creamos una ventana */
   ventana = XCreateSimpleWindow (
  disp,
  XDefaultRootWindow (disp),
  100, 100,
  ANCHO, ALTO,
  1, 1,
  WhitePixel (disp, DefaultScreen(disp)));
   /* Hacemos que la ventana sea visible */
   XMapWindow (disp, ventana);
   /* Obtenemos el color azul */
   color.flags = DoRed | DoGreen | DoBlue;
   color.red = 65535;
   color.blue = 0;
   color.green = 0;
   color.pad = 0;
   XAllocColor (
  disp,
  DefaultColormap (disp, DefaultScreen(disp)),
  &color);
   /* Indicamos que el color de dibujo a partir de ahora es el
azul */
   XSetForeground (
  disp,
  XDefaultGC (disp, DefaultScreen(disp)),
  color.pixel);
   /* Instanciamos y preparamos la clase de conversión de escala.*/
   EscalaC escala;
   escala.tomaExtremos (0.0, 3.0, -1.01, 2.0);
   escala.tomaAreaGrafica (ANCHO, ALTO);
   sleep(1);
   fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY );
   if (fd <0) { perror(MODEMDEVICE); exit(-1); }
   tcgetattr(fd,&oldtio);
   bzero(&newtio, sizeof(newtio)); /* limpiamos struct para
recibir los
 /*   typesnuevos parametros del puerto */
/*
  BAUDRATE: Fija la tasa bps. Podria tambien usar cfsetispeed y
cfsetospeed.
  CRTSCTS : control de flujosize de salida por hardware (usado solo
si el cable
  tiene todas las lineas necesarias Vea sect. 7 de Serial-HOWTO)
  CS8  : 8n1 (8bit,no paridad,1 bit de parada)
  CLOCAL : conexion local, sin control de modem
  CREAD : activa recepcion de caracteres
*/
//| CRTSCTS
   newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
   newtio.c_iflag = IGNPAR;
   newtio.c_oflag = 0;
   cfsetispeed(&newtio, B57600);
   cfsetospeed(&newtio, B57600);
   newtio.c_lflag = 0;
   newtio.c_cc[VTIME]=0; /* temporizador entre caracter, no
usado */
   newtio.c_cc[VMIN] =250; /* bloquea lectura hasta recibir 5
chars */
   tcflush(fd, TCIFLUSH);
   tcsetattr(fd,TCSANOW,&newtio);
/**
Mandandole un 15 al pic comienza a convertir
**/
   int variable = 0;
   datostx = 1;
   write(fd, &datostx, 1);
   usleep(100);
   x=0.0;
   y=1.0;
   while(1)
   {
  res = read(fd, &datosrx[250 * variable], 250);
  //printf("caracteres leidos:%d\n\n", res);
  variable++;
  res = read(fd, &datosrx[250 * variable], 250);
  //printf("caracteres leidos:%d\n\n", res);
  variable++;
  res = read(fd, &datosrx[250 * variable], 250);
  //printf("caracteres leidos:%d\n\n", res);
  variable++;
  graficar(datosrx, x, y, disp, ventana, escala);
  XFlush(disp);
  //scanf("%c", &datostx);
x=y;
y+=1.0;
  if(y > 3)
{
y=1.0;
variable=0;
x=0;
XClearWindow(disp, ventana);
}
  }
  tcsetattr(fd,TCSANOW,&oldtio);
  printf("\nchau\n");
}



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: Off topic - Programa en C para manejar puerto serial

2008-07-02 Por tema Jesús Genicio
Hola:

Aquí tienes varios ejemplos de cómo hacerlo.

http://tuxgraphics.org/electronics/

S2.


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



RE: Off topic - Programa en C para manejar puerto serial

2008-07-02 Por tema frank
Que tal,

No sabría indicarte si existen diferencias entre la programación entre un S.O. 
y otro (hablando de C++). Lo que te puedo decir es que mi proyecto lo hice en 
el Borland C++ de hace como 5 años sobre Windows ME.

No creo que existan diferencias pues al parecer según tu link la sintaxis es 
igual.

Lo que tienes que ver es como llamar al puerto serial, y dentro de éste cómo 
trabajar con cada uno de los pines de dicho puerto, hecho esto la sintaxis es 
lo de menos ya que incluso lo podrías hacer en visual basic si quisieras o en 
Mono.

http://www.conclase.net/c/Borland/macro.php?mac=outportb
http://www.conclase.net/c/Borland/funcion.php?fun=outport
http://www.geocities.com/gear996/sub/parallel.html


De: >p3dRø< [mailto:[EMAIL PROTECTED] 
Enviado el: miércoles, 02 de julio de 2008 11:34
Para: debian-user-spanish@lists.debian.org
Asunto: Re: Off topic - Programa en C para manejar puerto serial

El día 2 de julio de 2008 10:36, Jhosue Rui <[EMAIL PROTECTED]> escribió:
>p3dRø< escribió:


El día 2 de julio de 2008 10:12, Julián Esteban Perconti <[EMAIL PROTECTED] 
<mailto:[EMAIL PROTECTED]>> escribió:


>p3dRø< escribió:

   Hola amigos listeros,

   Quiero hacer una conexión de 2 PIR (detectores de movimiento) se
   comuniquen con el puerto serial DB9 de una placa soekris
   enrutador inalámbrico (http://www.soekris.com/net4521.htm).

   Para eso voy a hacer un hardware que es un adaptador para
   conectar ambos PIR al puerto serial. Por otro lado también
   necesito hacer un programa para la placa soekris que monitorice
   su puerto serial constantemente y que cuando reciba un voltaje
   de 5 V entonces active un script. No tengo noción de dónde
   empezar o si hay ejemplos parecidos en Internet o ustedes ya han
   hecho algo similar. Por favor necesito ayuda por esa parte.

   Yo creo que tengo que monitorizar únicamente el pin de
   recepción. Es correcto?

   Cualquier sugerencia o info me será de gran ayuda. Gracias.

   -- >p3dRø<

-- 
>p3dRø< 


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: Off topic - Programa en C para manejar puerto serial

2008-07-02 Por tema >p3dRø
El día 2 de julio de 2008 11:58, frank <[EMAIL PROTECTED]> escribió:

> 
>
> >p3dRø< escribió:
>
>Hola amigos listeros,
>
>Quiero hacer una conexión de 2 PIR (detectores de movimiento) se
>comuniquen con el puerto serial DB9 de una placa soekris
>enrutador inalámbrico (http://www.soekris.com/net4521.htm).
>
>Para eso voy a hacer un hardware que es un adaptador para
>conectar ambos PIR al puerto serial. Por otro lado también
>necesito hacer un programa para la placa soekris que monitorice
>su puerto serial constantemente y que cuando reciba un voltaje
>de 5 V entonces active un script. No tengo noción de dónde
>empezar o si hay ejemplos parecidos en Internet o ustedes ya han
>hecho algo similar. Por favor necesito ayuda por esa parte.
>
>Yo creo que tengo que monitorizar únicamente el pin de
>recepción. Es correcto?
>
>Cualquier sugerencia o info me será de gran ayuda. Gracias.
>
>-- >p3dRø<
>
> --
>  >p3dRø<
>
> --
> 
>
>
> Que tal,
>
> Hace tiempo hice un programa en C++ (bajo Windows) el cual trabajaba con
> una
> función propia del lenguaje llamada "outport" y otra llamada "outportb" (o
> algo parecido, eso ya fue hace mucho tiempo) estas hacían la comunicación
> con el puerto LPT1 y podías especificar el No. de PIN del puerto y el
> puerto
> (en mi caso era LPT1) y con lo cual podía conseguir, por ejemplo, prender o
> apagar una secuencia de LEDs simplemente diciéndole a la función qué No. de
> PIN encender/apagar.
>
> Revisa la ayuda del C++ allí hay unos buenos ejemplos con los cuales yo me
> base en ese tiempo.
>
> Suerte, espero te sea de utilidad
>
>
> --
> To UNSUBSCRIBE, email to [EMAIL PROTECTED]
> with a subject of "unsubscribe". Trouble? Contact
> [EMAIL PROTECTED]
>
>
Lo que yo quiero que al momento de detectar un evento en el puerto serial el
programa en C active un script que por ejemplo cree una carpeta nueva en el
directorio home.

Así, de ese modo, solo necesito de que el puerto serial esté en escucha y NO
en trasmisión. Por ahi he encontrado código en C, lo cual estoy estudiando
que es el link:
http://www.ontrak.net/linux.htm

Si saben más del tema y me pudiesen ayudar estaré muy agradecido. Por ahora
estoy analizando la función que se encuentra en el archivo adrserial.c

*ReadAdrPort(sResult,254)*

Saludos,

-- 
>p3dRø<


RE: Off topic - Programa en C para manejar puerto serial

2008-07-02 Por tema frank


    >p3dRø< escribió:

       Hola amigos listeros,

       Quiero hacer una conexión de 2 PIR (detectores de movimiento) se
       comuniquen con el puerto serial DB9 de una placa soekris
       enrutador inalámbrico (http://www.soekris.com/net4521.htm).

       Para eso voy a hacer un hardware que es un adaptador para
       conectar ambos PIR al puerto serial. Por otro lado también
       necesito hacer un programa para la placa soekris que monitorice
       su puerto serial constantemente y que cuando reciba un voltaje
       de 5 V entonces active un script. No tengo noción de dónde
       empezar o si hay ejemplos parecidos en Internet o ustedes ya han
       hecho algo similar. Por favor necesito ayuda por esa parte.

       Yo creo que tengo que monitorizar únicamente el pin de
       recepción. Es correcto?

       Cualquier sugerencia o info me será de gran ayuda. Gracias.

       --         >p3dRø<

-- 
 >p3dRø<

--



Que tal,

Hace tiempo hice un programa en C++ (bajo Windows) el cual trabajaba con una
función propia del lenguaje llamada "outport" y otra llamada "outportb" (o
algo parecido, eso ya fue hace mucho tiempo) estas hacían la comunicación
con el puerto LPT1 y podías especificar el No. de PIN del puerto y el puerto
(en mi caso era LPT1) y con lo cual podía conseguir, por ejemplo, prender o
apagar una secuencia de LEDs simplemente diciéndole a la función qué No. de
PIN encender/apagar.

Revisa la ayuda del C++ allí hay unos buenos ejemplos con los cuales yo me
base en ese tiempo.

Suerte, espero te sea de utilidad


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: Off topic - Programa en C para manejar puerto serial

2008-07-02 Por tema >p3dRø
El día 2 de julio de 2008 10:36, Jhosue Rui <[EMAIL PROTECTED]> escribió:

> >p3dRø< escribió:
>
>>
>>
>> El día 2 de julio de 2008 10:12, Julián Esteban Perconti <
>> [EMAIL PROTECTED] > escribió:
>>
>>
>> >p3dRø< escribió:
>>
>>Hola amigos listeros,
>>
>>Quiero hacer una conexión de 2 PIR (detectores de movimiento) se
>>comuniquen con el puerto serial DB9 de una placa soekris
>>enrutador inalámbrico (http://www.soekris.com/net4521.htm).
>>
>>Para eso voy a hacer un hardware que es un adaptador para
>>conectar ambos PIR al puerto serial. Por otro lado también
>>necesito hacer un programa para la placa soekris que monitorice
>>su puerto serial constantemente y que cuando reciba un voltaje
>>de 5 V entonces active un script. No tengo noción de dónde
>>empezar o si hay ejemplos parecidos en Internet o ustedes ya han
>>hecho algo similar. Por favor necesito ayuda por esa parte.
>>
>>Yo creo que tengo que monitorizar únicamente el pin de
>>recepción. Es correcto?
>>
>>Cualquier sugerencia o info me será de gran ayuda. Gracias.
>>
>>-- >p3dRø<
>>
>>Hoal pedro, me encantaria ayudarte pero desconozco.
>>Mi pregunta es.. donde compraste el soekris, en que pais y demas. Yo
>>soy de argentina y no los consigo por ningun lado.
>>Gracias.
>>
>>
>> Hola la verdad yo no soy quien lo compra porque trabajo para un grupo de
>> investigación. Te aconsejo que entres a la página
>> http://www.soekris.com/net4521.htm y le escribas al mail del área de
>> soporte o de márketing. Suerte!
>>
>> Por favor alguien tiene sugerencias sobre el *programa en C* que permita
>> manejar el *puerto serial DB9* para la configuración que les expliqué
>> anteriormente ?
>>
>> --
>>  >p3dRø<
>>
>
>
> Hola.
>
> Se me ocurre algo, basado en la información que das. No tengo idea a que te
> refieres con PIR (de momento asumo que son alguna clase de sensor de
> movimiento que cuando se activa manda una señal de 5V), pero si vas a
> fabricar una pieza de hardware que los controle y que al recibir alguna
> señal de ellos vas a mandar información a través del puerto serial, creo que
> no estas enfocando las cosas como son.
>
> De momento y asumiendo que lo anterior es cierto. necesitarías usar un
> hardware intermedio entre el PIR y el puerto serial. Ya sea un
> microcontrolador (PIC? , Atmel?) o un MAX232 que te reciba los datos
> paralelos de los PIR y te los convierta a serie, de aquí para adelante la
> programación en C es sencilla porque lo único que tienes que hacer es
> utilizar las rutinas de lectura del puerto serial de las que hay miles de
> ejemplos en la internet, pero te repito, estoy tratando de entender lo que
> quieres hacer con la poca información que das.
>
> Visto de esta manera tu problema esta en generar un protocolo de tal forma
> que el micro o lo que uses te mande un dato en caso de actividad o no de
> cada uno de los sensores y leas ese dato con las rutinas estándar
> de C.
>
> En cuanto a tu idea de censar alguno de los pines del puerto, pues, yo
> hacia cosas como esas en mis antiguos tiempos de MS-DOS 5.0 con
> interrupciones del sistema, pero creo que en linux una vez las trate de usar
> y "creo" que el sistema operativo no te deja, además, si usaras un  puerto
> paralelo la idea de censar un pin seria viable pero dado que vas a usar un
> puerto serial esto no es muy útil que digamos ya que hay en juego muchos
> flancos y cosas por el estilo que no te dejarían hacer las cosas como
> quieres hacerlas.
>
> Esto solo por comentar.
>
> Comenta y te insto a que este tipo de preguntas las hagas por otro tipo de
> listas mas especializadas en cosas de hardware o electrónicas creo que te
> seria mucho mas útiles para este caso
>
>
> Suerte
> --
>
>

Exacto, voy a utilizar un Max232 que haga de adaptador entre los 2 PIR y el
puerto serial. Ahora dicho programa en C solo necesito de que monitoree
eventos en el pin de recepción. Qué rutinas de lectura del puerto serial
debo utilizar? por otro lado también debo utilizar interrupciones?

Me puedo ayudar del minicom (software que manejar el puerto serial sobre
Linux) para este propósito ? de qué forma?

-- 
>p3dRø<


Re: Off topic - Programa en C para manejar puerto serial

2008-07-02 Por tema Jhosue Rui

>p3dRø< escribió:



El día 2 de julio de 2008 10:12, Julián Esteban Perconti 
<[EMAIL PROTECTED] > escribió:


 >p3dRø< escribió:

Hola amigos listeros,

Quiero hacer una conexión de 2 PIR (detectores de movimiento) se
comuniquen con el puerto serial DB9 de una placa soekris
enrutador inalámbrico (http://www.soekris.com/net4521.htm).

Para eso voy a hacer un hardware que es un adaptador para
conectar ambos PIR al puerto serial. Por otro lado también
necesito hacer un programa para la placa soekris que monitorice
su puerto serial constantemente y que cuando reciba un voltaje
de 5 V entonces active un script. No tengo noción de dónde
empezar o si hay ejemplos parecidos en Internet o ustedes ya han
hecho algo similar. Por favor necesito ayuda por esa parte.

Yo creo que tengo que monitorizar únicamente el pin de
recepción. Es correcto?

Cualquier sugerencia o info me será de gran ayuda. Gracias.

-- 
 >p3dRø<


Hoal pedro, me encantaria ayudarte pero desconozco.
Mi pregunta es.. donde compraste el soekris, en que pais y demas. Yo
soy de argentina y no los consigo por ningun lado.
Gracias.


Hola la verdad yo no soy quien lo compra porque trabajo para un grupo de 
investigación. Te aconsejo que entres a la página 
http://www.soekris.com/net4521.htm y le escribas al mail del área de 
soporte o de márketing. Suerte!


Por favor alguien tiene sugerencias sobre el *programa en C* que permita 
manejar el *puerto serial DB9* para la configuración que les expliqué 
anteriormente ?


--
 >p3dRø<



Hola.

Se me ocurre algo, basado en la información que das. No tengo idea a que 
te refieres con PIR (de momento asumo que son alguna clase de sensor de 
movimiento que cuando se activa manda una señal de 5V), pero si vas a 
fabricar una pieza de hardware que los controle y que al recibir alguna 
señal de ellos vas a mandar información a través del puerto serial, creo 
que no estas enfocando las cosas como son.


De momento y asumiendo que lo anterior es cierto. necesitarías usar un 
hardware intermedio entre el PIR y el puerto serial. Ya sea un 
microcontrolador (PIC? , Atmel?) o un MAX232 que te reciba los datos 
paralelos de los PIR y te los convierta a serie, de aquí para adelante 
la programación en C es sencilla porque lo único que tienes que hacer es 
utilizar las rutinas de lectura del puerto serial de las que hay miles 
de ejemplos en la internet, pero te repito, estoy tratando de entender 
lo que quieres hacer con la poca información que das.


Visto de esta manera tu problema esta en generar un protocolo de tal 
forma que el micro o lo que uses te mande un dato en caso de actividad o 
no de cada uno de los sensores y leas ese dato con las rutinas estándar

de C.

En cuanto a tu idea de censar alguno de los pines del puerto, pues, yo 
hacia cosas como esas en mis antiguos tiempos de MS-DOS 5.0 con 
interrupciones del sistema, pero creo que en linux una vez las trate de 
usar y "creo" que el sistema operativo no te deja, además, si usaras un 
 puerto paralelo la idea de censar un pin seria viable pero dado que 
vas a usar un puerto serial esto no es muy útil que digamos ya que hay 
en juego muchos flancos y cosas por el estilo que no te dejarían hacer 
las cosas como quieres hacerlas.


Esto solo por comentar.

Comenta y te insto a que este tipo de preguntas las hagas por otro tipo 
de listas mas especializadas en cosas de hardware o electrónicas creo 
que te seria mucho mas útiles para este caso



Suerte
--

Por favor, NO utilice formatos de archivo propietarios para el
intercambio
de documentos, como DOC y XLS, sino HTML, PDF, TXT, CSV o cualquier
otro
que no obligue a utilizar un programa de un fabricante concreto.
Internet Explorer y Outlook son muy peligrosos por sus continuos
problemas
de seguridad. Utilice alternativas libres: http://www.mozillaes.org/

usuario linux registrado #387231
http://counter.li.org

Por favor evite enviar adjuntos de powerpoint y word
vea http://www.gnu.org/philosophy/no-word-attachments.es.html


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: Off topic - Programa en C para manejar puerto serial

2008-07-02 Por tema >p3dRø
El día 2 de julio de 2008 10:12, Julián Esteban Perconti <
[EMAIL PROTECTED]> escribió:

> >p3dRø< escribió:
>
>  Hola amigos listeros,
>>
>> Quiero hacer una conexión de 2 PIR (detectores de movimiento) se
>> comuniquen con el puerto serial DB9 de una placa soekris enrutador
>> inalámbrico (http://www.soekris.com/net4521.htm).
>>
>> Para eso voy a hacer un hardware que es un adaptador para conectar ambos
>> PIR al puerto serial. Por otro lado también necesito hacer un programa para
>> la placa soekris que monitorice su puerto serial constantemente y que cuando
>> reciba un voltaje de 5 V entonces active un script. No tengo noción de dónde
>> empezar o si hay ejemplos parecidos en Internet o ustedes ya han hecho algo
>> similar. Por favor necesito ayuda por esa parte.
>>
>> Yo creo que tengo que monitorizar únicamente el pin de recepción. Es
>> correcto?
>>
>> Cualquier sugerencia o info me será de gran ayuda. Gracias.
>>
>> --
>> >p3dRø<
>>
> Hoal pedro, me encantaria ayudarte pero desconozco.
> Mi pregunta es.. donde compraste el soekris, en que pais y demas. Yo soy de
> argentina y no los consigo por ningun lado.
> Gracias.
>
>
Hola la verdad yo no soy quien lo compra porque trabajo para un grupo de
investigación. Te aconsejo que entres a la página
http://www.soekris.com/net4521.htm y le escribas al mail del área de soporte
o de márketing. Suerte!

Por favor alguien tiene sugerencias sobre el *programa en C* que permita
manejar el *puerto serial DB9* para la configuración que les expliqué
anteriormente ?

-- 
>p3dRø<


Re: Off topic - Programa en C para manejar puerto serial

2008-07-02 Por tema Julián Esteban Perconti

>p3dRø< escribió:

Hola amigos listeros,

Quiero hacer una conexión de 2 PIR (detectores de movimiento) se 
comuniquen con el puerto serial DB9 de una placa soekris enrutador 
inalámbrico (http://www.soekris.com/net4521.htm).


Para eso voy a hacer un hardware que es un adaptador para conectar 
ambos PIR al puerto serial. Por otro lado también necesito hacer un 
programa para la placa soekris que monitorice su puerto serial 
constantemente y que cuando reciba un voltaje de 5 V entonces active 
un script. No tengo noción de dónde empezar o si hay ejemplos 
parecidos en Internet o ustedes ya han hecho algo similar. Por favor 
necesito ayuda por esa parte.


Yo creo que tengo que monitorizar únicamente el pin de recepción. Es 
correcto?


Cualquier sugerencia o info me será de gran ayuda. Gracias.

--
>p3dRø< 

Hoal pedro, me encantaria ayudarte pero desconozco.
Mi pregunta es.. donde compraste el soekris, en que pais y demas. Yo soy 
de argentina y no los consigo por ningun lado.

Gracias.


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]