Discussion:
Problema con puerto serie
Lisandro Lanfranco
2011-05-06 19:01:16 UTC
Permalink
Hola a todos, tengo instalado ubuntu 10.04 en una máquina por la que
quiero enviar y recibir datos por el puerto serie con un programa en
python.
Probé asignándole permisos de lectura y escritura al archivo /dev/ttyS0
y luego ejecutando: echo 'a' > /dev/ttyS0 y todas las demás pruebas
posibles para enviar un caracter de prueba por el puerto serie, sin
conseguirlo. El hardware con el microcontrolador está funcionando bien
pero no recibe nada.
Alguna idea?

Un saludo

--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
Martín Marcucci
2011-05-06 20:00:45 UTC
Permalink
Post by Lisandro Lanfranco
Hola a todos, tengo instalado ubuntu 10.04 en una máquina por la que
quiero enviar y recibir datos por el puerto serie con un programa en
python.
Probé asignándole permisos de lectura y escritura al archivo /dev/ttyS0
y luego ejecutando: echo 'a' > /dev/ttyS0 y todas las demás pruebas
posibles para enviar un caracter de prueba por el puerto serie, sin
conseguirlo. El hardware con el microcontrolador está funcionando bien
pero no recibe nada.
Alguna idea?
Hola Lisandro, el echo 'a' > /dev/ttyS0 escribe en el puerto serie,
pero sin configurarlo. No se sabe ni el BaudRate, ni el numero de bits
de stop, si hay o no paridad, nada.
Creo que deberias probar con algun programa de coneccion a puertos
series, como minicom (en este momento no me acuerdo de alguno
grafico).

Tenes puerto serie fisico o estas usando un USB-Serie, si este es el
caso, /dev/ttyUSB0 es el serie del conversor USB.

Con que estas leyendo datos del otro lado, para garantizar que no sale
nada?, si es con el pic, puede ser lo de configuracion del puerto.
--
R. Martin Marcucci    ( MarkU )
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
basel valentin
2011-05-06 20:19:38 UTC
Permalink
usa cutecom!!

es el minicom para linux, te premite configurar el baudrate, si va a tener
bit de paridad, etc etc etc... y despues te pones a enviar caracteres
directamente.
yo lo usaba para haer pruebas con los microcontroladores que estaba
trabajando, es muy util
estas usando python-serial?

---------------------------------------------------------------
Valentin Basel
Analista en Sistemas Informaticos
Departamento informatico
Centro de Estudios Avanzados - UNC - CONICET
---------------------------------------------------------------
http://www.sistema-icaro.blogspot.com/
http://fedoraproject.org/wiki/User:Valentinbasel

---------------------------------------------------------------------------
Lisandro Lanfranco
2011-05-06 21:31:51 UTC
Permalink
Gracias por sus respuestas.
Probé con puerto serie real y con conversor en USB0, el baudrate y demás
los configuré con una orden que no recuerdo muy bien ahora, pero ya la
voy a buscar así ñes indico como lo hice, también probé un programita
que se llama gtkterm pero nada.
Por ahí lei que había que recompilar el nucleo habilitando los puertos
serie, será cierto?, espero que no.
Voy a probar cutecom y minicom a ver que pasa.
Un saludo y gracias.
Lisandro.
Post by basel valentin
usa cutecom!!
es el minicom para linux, te premite configurar el baudrate, si va a
tener bit de paridad, etc etc etc... y despues te pones a enviar
caracteres directamente.
yo lo usaba para haer pruebas con los microcontroladores que estaba
trabajando, es muy util
estas usando python-serial?
---------------------------------------------------------------
Valentin Basel
Analista en Sistemas Informaticos
Departamento informatico
Centro de Estudios Avanzados - UNC - CONICET
---------------------------------------------------------------
http://www.sistema-icaro.blogspot.com/
http://fedoraproject.org/wiki/User:Valentinbasel
---------------------------------------------------------------------------
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
I am the one who is many.
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
Lisandro Lanfranco
2011-05-18 19:35:24 UTC
Permalink
Post by basel valentin
usa cutecom!!
es el minicom para linux, te premite configurar el baudrate, si va a
tener bit de paridad, etc etc etc... y despues te pones a enviar
caracteres directamente.
yo lo usaba para haer pruebas con los microcontroladores que estaba
trabajando, es muy util
estas usando python-serial?
---------------------------------------------------------------
Valentin Basel
Analista en Sistemas Informaticos
Departamento informatico
Centro de Estudios Avanzados - UNC - CONICET
---------------------------------------------------------------
http://www.sistema-icaro.blogspot.com/
http://fedoraproject.org/wiki/User:Valentinbasel
---------------------------------------------------------------------------
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
I am the one who is many.
Descubrimos que el cable alargador de rs-232 estaba metiendo errores de
manera aleatoria en la conexión, después de leer muchas páginas sobre
como armar este alargador y probar muchos tipos, encontramos una
solución que fue no usarlo y hacer largo el cable que sale desde la
placa. Con esto logramos comunicar sin ningún problema desde windows. En
unos días voy a probar sin este cable con linux para ver si esa era la
fuente de todos los problemas y poder conectar sin tener que usar más
windows.

Un saludo, en breve les comento como nos fue o caigo con más dudas.

Lisandro Lanfranco


--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.

Guillermo Marraco
2011-05-06 21:44:53 UTC
Permalink
Post by Lisandro Lanfranco
Hola a todos, tengo instalado ubuntu 10.04 en una máquina por la que
quiero enviar y recibir datos por el puerto serie con un programa en
python.
Probé asignándole permisos de lectura y escritura al archivo /dev/ttyS0
y luego ejecutando: echo 'a' > /dev/ttyS0 y todas las demás pruebas
posibles para enviar un caracter de prueba por el puerto serie, sin
conseguirlo. El hardware con el microcontrolador está funcionando bien
pero no recibe nada.
Alguna idea?
El drama va a ser si querés que al programa lo usen otros. El 90% no
se va a poner a configurar puertos.
--
Saludos,

Guillermo Marraco
__________________
Si no eres parte de la solución, eres parte del precipitado.
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
basel valentin
2011-05-06 23:33:30 UTC
Permalink
hummmmm............ tan complicado no es, a mi personalmente siempre me
anduvo de una.
podrias especificar que tipo de miccro estas usando (descartaste problemas
de hard).. de ser posible como lo compilaste o el codigo assembler. si te
sirve de algo, yo hice una "API" para mi proyecto de robotica educativa con
python:

http://valentinbasel.fedorapeople.org/apicaro.py

lo mas probable es que no te sirva directamente, pero por ahi para ver un
poco de codigo ;-)
yo para poder trabajar con el puerto serie (y lo estoy haciendo en este
preciso momento), como root hago chmod 777 /dev/ttyUSB0 y habilito el puerto
serie (visrtual) para los usuarios (tengo que ponerme a hacer las reglas
udev, pero soy vago) y nada mas......... por lo menos desde ubutnu 9,
fedora 10 y debian 3 en adelante nunca necesite recompilar nada.

yo te diría que revises el hard



---------------------------------------------------------------
Valentin Basel
Analista en Sistemas Informaticos
Departamento informatico
Centro de Estudios Avanzados - UNC - CONICET
---------------------------------------------------------------
http://www.sistema-icaro.blogspot.com/
http://fedoraproject.org/wiki/User:Valentinbasel

---------------------------------------------------------------------------
Lisandro Lanfranco
2011-05-07 02:43:48 UTC
Permalink
Al programa lo escribí con css, lo ejecuta un 16f877a y con windows se
comunica muy bien enviando datos por hyperterminal.
El código que lee el puerto serie es:

#use rs232(baud=4800, xmit=pin_c6, rcv=pin_c7, bits=8, stop=1)
char valor;

#int_RDA
RDA_isr()
{
valor=getc();
puts("Recibido");
}

El programa en python solo tiene que enviar una letra cuando ocurran
pulsaciones de algunas teclas y el pic las lee y con un switch ejecuta
alguna porción de código.
A la máquina la quería poner con ubuntu y que arranque solo el programa
ya que solo tiene que ejecutar este programa, no hay interacción con
usuarios
Voy a fijarme en el código que ponen en el link para ver que estoy
haciendo mal.
De nuevo muchas gracias.
Post by basel valentin
hummmmm............ tan complicado no es, a mi personalmente siempre
me anduvo de una.
podrias especificar que tipo de miccro estas usando (descartaste
problemas de hard).. de ser posible como lo compilaste o el codigo
assembler. si te sirve de algo, yo hice una "API" para mi proyecto de
http://valentinbasel.fedorapeople.org/apicaro.py
lo mas probable es que no te sirva directamente, pero por ahi para ver
un poco de codigo ;-)
yo para poder trabajar con el puerto serie (y lo estoy haciendo en
este preciso momento), como root hago chmod 777 /dev/ttyUSB0 y
habilito el puerto serie (visrtual) para los usuarios (tengo que
ponerme a hacer las reglas udev, pero soy vago) y nada mas.........
por lo menos desde ubutnu 9, fedora 10 y debian 3 en adelante nunca
necesite recompilar nada.
yo te diría que revises el hard
---------------------------------------------------------------
Valentin Basel
Analista en Sistemas Informaticos
Departamento informatico
Centro de Estudios Avanzados - UNC - CONICET
---------------------------------------------------------------
http://www.sistema-icaro.blogspot.com/
http://fedoraproject.org/wiki/User:Valentinbasel
---------------------------------------------------------------------------
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
I am the one who is many.
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
basel valentin
2011-05-07 02:50:34 UTC
Permalink
porque a 4800 baudios? viste que generalmente el bautrate va a 9600
(curiosidad nomas);
definitivamente usa cutecom primero :-D despues renega con python o C...
pero no deberia darte tanto problemas
Al programa lo escribí con css, lo ejecuta un 16f877a y con windows se
comunica muy bien enviando datos por hyperterminal.
#use rs232(baud=4800, xmit=pin_c6, rcv=pin_c7, bits=8, stop=1)
char valor;
#int_RDA
RDA_isr()
{
valor=getc();
puts("Recibido");
}
El programa en python solo tiene que enviar una letra cuando ocurran
pulsaciones de algunas teclas y el pic las lee y con un switch ejecuta
alguna porción de código.
A la máquina la quería poner con ubuntu y que arranque solo el programa
ya que solo tiene que ejecutar este programa, no hay interacción con
usuarios
Voy a fijarme en el código que ponen en el link para ver que estoy
haciendo mal.
De nuevo muchas gracias.
Post by basel valentin
hummmmm............ tan complicado no es, a mi personalmente siempre
me anduvo de una.
podrias especificar que tipo de miccro estas usando (descartaste
problemas de hard).. de ser posible como lo compilaste o el codigo
assembler. si te sirve de algo, yo hice una "API" para mi proyecto de
http://valentinbasel.fedorapeople.org/apicaro.py
lo mas probable es que no te sirva directamente, pero por ahi para ver
un poco de codigo ;-)
yo para poder trabajar con el puerto serie (y lo estoy haciendo en
este preciso momento), como root hago chmod 777 /dev/ttyUSB0 y
habilito el puerto serie (visrtual) para los usuarios (tengo que
ponerme a hacer las reglas udev, pero soy vago) y nada mas.........
por lo menos desde ubutnu 9, fedora 10 y debian 3 en adelante nunca
necesite recompilar nada.
yo te diría que revises el hard
---------------------------------------------------------------
Valentin Basel
Analista en Sistemas Informaticos
Departamento informatico
Centro de Estudios Avanzados - UNC - CONICET
---------------------------------------------------------------
http://www.sistema-icaro.blogspot.com/
http://fedoraproject.org/wiki/User:Valentinbasel
---------------------------------------------------------------------------
Post by basel valentin
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
I am the one who is many.
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
I am the one who is many.
--
---------------------------------------------------------------
Valentin Basel
Analista en Sistemas Informaticos
Departamento informatico
Centro de Estudios Avanzados - UNC - CONICET
---------------------------------------------------------------
http://www.sistema-icaro.blogspot.com/
http://fedoraproject.org/wiki/User:Valentinbasel

---------------------------------------------------------------------------
Lisandro Lanfranco
2011-05-07 03:05:46 UTC
Permalink
Si, en este momento está en 9600, ya probé todos las velocidades y
combinaciones posibles, no sé que más probar y/o tocar. La verdad no
pensé que iba a renegar tanto con esto.
Muy bueno lo de icaro, cuando pueda darle fin a este problema me voy a
poner a explorarlo un poco.
Un saludo.
Post by basel valentin
porque a 4800 baudios? viste que generalmente el bautrate va a 9600
(curiosidad nomas);
definitivamente usa cutecom primero :-D despues renega con python o
C... pero no deberia darte tanto problemas
Al programa lo escribí con css, lo ejecuta un 16f877a y con windows se
comunica muy bien enviando datos por hyperterminal.
#use rs232(baud=4800, xmit=pin_c6, rcv=pin_c7, bits=8, stop=1)
char valor;
#int_RDA
RDA_isr()
{
valor=getc();
puts("Recibido");
}
El programa en python solo tiene que enviar una letra cuando ocurran
pulsaciones de algunas teclas y el pic las lee y con un switch ejecuta
alguna porción de código.
A la máquina la quería poner con ubuntu y que arranque solo el programa
ya que solo tiene que ejecutar este programa, no hay
interacción con
usuarios
Voy a fijarme en el código que ponen en el link para ver que estoy
haciendo mal.
De nuevo muchas gracias.
Post by basel valentin
hummmmm............ tan complicado no es, a mi personalmente
siempre
Post by basel valentin
me anduvo de una.
podrias especificar que tipo de miccro estas usando
(descartaste
Post by basel valentin
problemas de hard).. de ser posible como lo compilaste o el
codigo
Post by basel valentin
assembler. si te sirve de algo, yo hice una "API" para mi
proyecto de
Post by basel valentin
http://valentinbasel.fedorapeople.org/apicaro.py
lo mas probable es que no te sirva directamente, pero por
ahi para ver
Post by basel valentin
un poco de codigo ;-)
yo para poder trabajar con el puerto serie (y lo estoy
haciendo en
Post by basel valentin
este preciso momento), como root hago chmod 777 /dev/ttyUSB0
y
Post by basel valentin
habilito el puerto serie (visrtual) para los usuarios (tengo
que
Post by basel valentin
ponerme a hacer las reglas udev, pero soy vago) y nada
mas.........
Post by basel valentin
por lo menos desde ubutnu 9, fedora 10 y debian 3 en
adelante nunca
Post by basel valentin
necesite recompilar nada.
yo te diría que revises el hard
---------------------------------------------------------------
Post by basel valentin
Valentin Basel
Analista en Sistemas Informaticos
Departamento informatico
Centro de Estudios Avanzados - UNC - CONICET
---------------------------------------------------------------
Post by basel valentin
http://www.sistema-icaro.blogspot.com/
http://fedoraproject.org/wiki/User:Valentinbasel
---------------------------------------------------------------------------
Post by basel valentin
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
I am the one who is
many.
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
I am the one who is many.
--
---------------------------------------------------------------
Valentin Basel
Analista en Sistemas Informaticos
Departamento informatico
Centro de Estudios Avanzados - UNC - CONICET
---------------------------------------------------------------
http://www.sistema-icaro.blogspot.com/
http://fedoraproject.org/wiki/User:Valentinbasel
---------------------------------------------------------------------------
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
I am the one who is many.
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
Ignacio Sánchez
2011-05-07 03:12:08 UTC
Permalink
El día 6 de mayo de 2011 23:43, Lisandro Lanfranco
Post by Lisandro Lanfranco
Al programa lo escribí con css, lo ejecuta un 16f877a y con windows se
comunica muy bien enviando datos por hyperterminal.
#use rs232(baud=4800, xmit=pin_c6, rcv=pin_c7, bits=8, stop=1)
char valor;
#int_RDA
RDA_isr()
{
  valor=getc();
  puts("Recibido");
}
El programa en python solo tiene que enviar una letra cuando ocurran
pulsaciones de algunas teclas y el pic las lee y con un switch ejecuta
alguna porción de código.
A la máquina la quería poner con ubuntu y que arranque solo el programa
ya que solo tiene que ejecutar este programa, no hay interacción con
usuarios
Voy a fijarme en el código que ponen en el link para ver que estoy
haciendo mal.
El paquete para python para manejar la comunicacion via serie es: python-serial

http://pyserial.sourceforge.net/

No te hace falta compilar nada en el kernel de linux para tener
soporte para puerto serie.

Si usas un conversor USB a Serie en una ventana hace:

sudo tail -f /var/log/syslog

y luego conecta el dispositivo. Fijate en el log si te reconoce el
dispositivo y con que nombre lo hace.

Saludos,
Ignacio.
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
Ramiro Morales
2011-05-07 13:54:55 UTC
Permalink
programa [...]lo ejecuta un 16f877a y con windows se
comunica muy bien enviando datos por hyperterminal.
Eso es importante, y hubiese sido bueno que lo comentaras
de movida en tu primer mensaje.

Supongo que desde Python estas usando pyserial como te
comenta Ignacio. Y que estás seteando los parámetros
de bits por segundo, paridad, bits de stop y datos en el
programa python con la API que provee serial.

Las dos sugerencias que se me ocurren para encontrar el problema son:

1. Si tenes que:
- PIC se comunica con Windows
- PIC no se comunica con Linux
Es casi obvio que ayudaría probar si Windows se comunica con Linux,
conectá un cable null modem entre Windows y Linux y reintentá tus
pruebas de transmisión desde tu app Python y/o de tweaking
de los parámetos del puerto serie en Linux y revisá si Hyperterminal
recibe algo.

2. Si se puede, corré el programa Python (o una version reducida)
en Windows. La portabilidad de Python mismo y pyserial
deberian ser de ayuda.
--
Ramiro Morales
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
Alejandro Gaut
2011-05-07 04:24:45 UTC
Permalink
Post by Lisandro Lanfranco
Hola a todos, tengo instalado ubuntu 10.04 en una máquina por la que
quiero enviar y recibir datos por el puerto serie con un programa en
python.
Probé asignándole permisos de lectura y escritura al archivo /dev/ttyS0
y luego ejecutando: echo 'a'> /dev/ttyS0 y todas las demás pruebas
posibles para enviar un caracter de prueba por el puerto serie, sin
conseguirlo. El hardware con el microcontrolador está funcionando bien
pero no recibe nada.
Alguna idea?
Un saludo
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
I am the one who is many.
Hola Lisandro, te envio dos scripts que me han sido utiles:
scan.py


#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
#----------------------------------------------------------------------------
# scan.py Modulo para obtener una lista de los puertos series disponibles
#----------------------------------------------------------------------------
# Notas: En Linux solo se detectan los puertos del tipo /dev/ttySx
# disponibles, que son a los que la libreria pyserial les asigna los
# valores 0, 1, 2, etc. Los dispositivos del tipo /dev/ttyUSBx no se
# detectan. Para poder usarlos como cualquier otro dispositivo, se
# puede hacer un enlace simbolico:
# # ln -s /dev/ttyUSB0 /dev/ttyS10
# Asociamos el dispositivo ttyUSB0 a uno del tipo ttyS10. En ese caso si
# se detecta correctamente con esta rutina. En este ejemplo devolveria el
# valor 10 (si realmente en /dev/ttyUSB0 hay un conversor usb-serie)
#----------------------------------------------------------------------------
#
# (C)2002 Chris Liechti (cliechti-***@public.gmane.org)
# (C)2007 Juan Gonzalez
#
# LICENCIA GPL
#----------------------------------------------------------------------------

import sys
import serial

#-----------------------------------------------------------------------------
# Buscar puertos series disposibles.
# ENTRADAS:
# -num_ports : Numero de puertos a escanear. Por defecto 20
# -verbose : Modo verboso True/False. Si esta activado se va
# imprimiendo todo lo que va ocurriendo
# DEVUELVE:
# Una lista con todos los puertos encontrados. Cada elemento de la lista
# es una tupla con el numero del puerto y el del dispositivo
#-----------------------------------------------------------------------------
def scan(num_ports = 20, verbose=True):

#-- Lista de los dispositivos serie. Inicialmente vacia
dispositivos_serie = []

if verbose:
print "Escanenado %d puertos serie:" % num_ports

#-- Escanear num_port posibles puertos serie
for i in range(num_ports):

if verbose:
sys.stdout.write("puerto %d: " % i)
sys.stdout.flush()

try:

#-- Abrir puerto serie
s = serial.Serial(i)

if verbose: print "OK --> %s" % s.portstr

#-- Si no hay errores, anadir el numero y nombre a la lista
dispositivos_serie.append( (i, s.portstr))

#-- Cerrar puerto
s.close()

#-- Si hay un error se ignora
except:
if verbose: print "NO"
pass

#-- Devolver la lista de los dispositivos serie encontrados
return dispositivos_serie


#--------------------------
# Pruebas del modulo Scan
#--------------------------
if __name__=='__main__':


#-- Escanear los puertos.
#-- Se puede indicar el numero de puertos a escaner
#-- El modo "verbose" esta activado por defecto. Se desactiva con False
puertos_disponibles=scan(num_ports=20,verbose=True)

#-- Recorrer la lista mostrando los que se han podido abrir
print ""
print "Puertos detectados:"
if len(puertos_disponibles)!=0:
for n,nombre in puertos_disponibles:
print " (%d) %s" % (n,nombre)
else:
print " Ninguno"


----------------------------------------------------------------------------
Y aca va otro mas:


#! /usr/bin/python
#---------------------------------------------------------------------------
#-- (C)2002-2004 Chris Liechti <cliecht-***@public.gmane.org>
#-- (C)2007 Juan Gonzalez
#--
#-- Miniterminal de comunicaciones en Python para hacer prueas
#--
#-- LICENCIA GPL
#---------------------------------------------------------------------------


import sys
import getopt
import serial
import consola_io
import threading

#-- Caracter empleado para salir del terminarl
EXITCHARCTER = '\x04' #ctrl+D

#-- Variable para indicar al thread que termine
fin = 0

#-----------------------------------------------------------------------------
#-- Este thread se ejecuta infinitamente. Esta todo el rato leyendo datos
#-- del puerto serie y sacandolos por la consola
#-----------------------------------------------------------------------------
def reader():

#-- Cuando fin=1 se termina el thread
while not(fin):
try:
data = s.read()
sys.stdout.write(data)
sys.stdout.flush()
except:
print "Excepcion: Abortando..."
break;

#-------------------------------------------------------------------------
#-- Este es el bucle principal. Todos los caracteres que llegan por la
#-- consola se envian por el puerto serie
#-------------------------------------------------------------------------
def writer():

while 1:

try:
#-- Esperar a que se pulse una tecla
c = consola_io.getkey()

#-- Si es la tecla de fin se termina
if c == EXITCHARCTER:
break
else:
#-- Enviar tecla por el puerto serie
s.write(c)

except: #-- Si se ha pulsado control-c terminar
print "Abortando..."
break


#--------------------------------
#-- Imprimir mensaje de ayuda
#--------------------------------
def help():
sys.stderr.write("""Uso: miniterm [opciones]
Miniterminal de comunicaciones en python

opciones:
-p, --port=PORT: Puerto serie a emplear. Bien un numero o una cadena

Ejemplo:
miniterm -p 0 --> Usar el primer puerto serie (Linux/Windos)
miniterm -p /dev/ttyS1 --> Especificar el dispositivo serie (Linux)

""")

#-----------------------------------------------------
#-- Analizar los argumentos pasados por el usuario
#-----------------------------------------------------
def Analizar_argumentos():

#-- Valor por defecto del puerto a usar
Puerto = 0

try:
opts, args = getopt.getopt(sys.argv[1:],
"hp:",
["help", "port="]
)
except getopt.GetoptError:
# print help information and exit:
help()
sys.exit(2)

#-- Leer argumentos pasados
for o, a in opts:
if o in ("-h", "--help"):
help()
sys.exit()
elif o in ("-p", "--port"): #specified port
try:
Puerto = int(a)
except ValueError:
Puerto = a

return Puerto

#----------------------
# MAIN
#----------------------

#-- Analizar los argumentos pasados por el usuario
Puerto=Analizar_argumentos()

#--------------------------------------
#-- Abrir el puerto serie
#--------------------------------------
try:
s = serial.Serial(Puerto, 9600)

#-- Timeout: 1 seg
s.timeout=1;

except serial.SerialException:
#-- Error al abrir el puerto serie
sys.stderr.write("Error al abrir puerto: " + str(Puerto))
sys.exit(1)

print ("Puerto serie (%s): %s") % (str(Puerto),s.portstr)
print ("--- Miniterm --- Ctrl-D para terminar\n")


#-- Lanzar el hilo que lee del puerto serie y saca por pantalla
r = threading.Thread(target=reader)
r.start()

#-- Ejecutar el bucle principal. Lee de la consola y envia por el puerto
#-- serie
writer()

#-- Indicar al trhead the termine y esperar
fin=1
r.join()

#-- Fin del programa
print "\n"
print "--- Fin ---"

#-- Cerrar puerto serie.
s.close()


------------------------------------------------------------------------------------
Asegurate de tener instalado python-serial

Espero haberte sido útil.
Cordiales saludos,
Alejandro.
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
Lisandro Damián Nicanor Pérez Meyer
2011-05-07 20:39:32 UTC
Permalink
Post by Lisandro Lanfranco
Hola a todos, tengo instalado ubuntu 10.04 en una máquina por la que
quiero enviar y recibir datos por el puerto serie con un programa en
python.
Probé asignándole permisos de lectura y escritura al archivo /dev/ttyS0
y luego ejecutando: echo 'a' > /dev/ttyS0 y todas las demás pruebas
posibles para enviar un caracter de prueba por el puerto serie, sin
conseguirlo. El hardware con el microcontrolador está funcionando bien
pero no recibe nada.
Alguna idea?
¡Hola tocayo!

Primero, fijate que tu usuario sea parte del grupo dialout. Si no lo es,
setealo y reiniciá tu enotrno gráfico.

Para probar un puerto serie, hay una forma muy sencilla y segura de hacerlo:
te hacés un cable que puentee TX y RX. Luego abrís algo como minicom o qutecom
y lo configurás como 115200 8N1, y cualquier letra que envíes por el puerto
serial (apretando teclas en minicom) deberías verla escrita en la interfaz.

¡Saludos!
--
"Los pibes no piden que levantemos un muro para que tengan un límite,
sino que los ayudemos a crecer en libertad."
Padre Bergoglio - http://www.lanacion.com.ar/1153085

Lisandro Damián Nicanor Pérez Meyer
http://perezmeyer.com.ar/
http://perezmeyer.blogspot.com/
Mario
2011-05-08 07:17:54 UTC
Permalink
Post by Lisandro Damián Nicanor Pérez Meyer
te hacés un cable que puentee TX y RX. Luego abrís algo como minicom o qutecom
y lo configurás como 115200 8N1, y cualquier letra que envíes por el puerto
serial (apretando teclas en minicom) deberías verla escrita en la interfaz.
¡Saludos!
una cosa para Lisandro el original , no le aflojes, si te anda con
windows fijate si no podes comunicarte desde adentro de una virtualbox
o un vmware, a mi ayer usando vmware player dentro de un ubuntu 10.10
me salio con que me habia detectado el celular (usb) y si lo queria
usar, y yo lo enchufe nomas para que se cargue, lo de que no le
aflojes viene por otro lado, resulta que yo en mis comienzos andaba
armando cuanto circuito se me cruzara y les tome idea a los
transmisores y las comunicaciones en general debido a que no me anduvo
como esperaba un par de emisores AM y FM, basicamente afloje los
guantes, y me cambio toda la carrera. cual no se si sera bueno pero
nunca se sabe.

suerte.
ah me olvidaba, en mi experiencia con los puertos serie me encontre
que algunas compus tienen soldado internamente el conector de manera
distinta, lo que hace que no te ande nada de nada, y es totalmente
"legal" y anda para todo lo demas.
la mejor forma de verlo seria que desarmes (ojo esto invalida
cualqueir garantia) el conector del puerto serie y lo mires y compares
con uno de una maquina viejita tipo pentium de las primeras. si es
posible varias. no me sale como decirlo facil, pero el orden de
soldado de los cables puede ser dos filas parejas de cinco y cuatro
respectivamente cinco arriba y cuatro abajo o puede venir alternado en
que del cable plano sale uno arriba y uno abajo , nunca le investigue
como hace para andar cuando esta de la forma que no anda pero me
imagino que la UART es una falsa UART, mas bien una virtual dentro del
puente sur y que acomoda los pines por soft.
yo lo unico que se es que le tuve que hacer esa modificacion a un
monton de compus en una casa de computacion donde trabajaba y asi
saque andando muchas que el cliente se quejaba de que no les andaba el
mouse y otras cosas como tabletas de dibujo. en muy pocos casos el
puerto serie estaba quemado y con una plaquita serial se arreglaba.
vos probaste con una placa pci serial?
suerte de nuevo. y disculpas por el post tan largo.
Mario
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
basel valentin
2011-05-08 15:02:15 UTC
Permalink
pero si le anda con la hyperterminal de win.......... tiene que andar con
linux, no es tan complicado, me parece que siplemente el error fue tratar de
hacer un "echo" al puerto sin configurar nada (baudrate, bit de apridad,
etc)..
Post by Lisandro Damián Nicanor Pérez Meyer
Post by Lisandro Damián Nicanor Pérez Meyer
Para probar un puerto serie, hay una forma muy sencilla y segura de
te hacés un cable que puentee TX y RX. Luego abrís algo como minicom o
qutecom
Post by Lisandro Damián Nicanor Pérez Meyer
y lo configurás como 115200 8N1, y cualquier letra que envíes por el
puerto
Post by Lisandro Damián Nicanor Pérez Meyer
serial (apretando teclas en minicom) deberías verla escrita en la
interfaz.
Post by Lisandro Damián Nicanor Pérez Meyer
¡Saludos!
una cosa para Lisandro el original , no le aflojes, si te anda con
windows fijate si no podes comunicarte desde adentro de una virtualbox
o un vmware, a mi ayer usando vmware player dentro de un ubuntu 10.10
me salio con que me habia detectado el celular (usb) y si lo queria
usar, y yo lo enchufe nomas para que se cargue, lo de que no le
aflojes viene por otro lado, resulta que yo en mis comienzos andaba
armando cuanto circuito se me cruzara y les tome idea a los
transmisores y las comunicaciones en general debido a que no me anduvo
como esperaba un par de emisores AM y FM, basicamente afloje los
guantes, y me cambio toda la carrera. cual no se si sera bueno pero
nunca se sabe.
suerte.
ah me olvidaba, en mi experiencia con los puertos serie me encontre
que algunas compus tienen soldado internamente el conector de manera
distinta, lo que hace que no te ande nada de nada, y es totalmente
"legal" y anda para todo lo demas.
la mejor forma de verlo seria que desarmes (ojo esto invalida
cualqueir garantia) el conector del puerto serie y lo mires y compares
con uno de una maquina viejita tipo pentium de las primeras. si es
posible varias. no me sale como decirlo facil, pero el orden de
soldado de los cables puede ser dos filas parejas de cinco y cuatro
respectivamente cinco arriba y cuatro abajo o puede venir alternado en
que del cable plano sale uno arriba y uno abajo , nunca le investigue
como hace para andar cuando esta de la forma que no anda pero me
imagino que la UART es una falsa UART, mas bien una virtual dentro del
puente sur y que acomoda los pines por soft.
yo lo unico que se es que le tuve que hacer esa modificacion a un
monton de compus en una casa de computacion donde trabajaba y asi
saque andando muchas que el cliente se quejaba de que no les andaba el
mouse y otras cosas como tabletas de dibujo. en muy pocos casos el
puerto serie estaba quemado y con una plaquita serial se arreglaba.
vos probaste con una placa pci serial?
suerte de nuevo. y disculpas por el post tan largo.
Mario
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
I am the one who is many.
--
---------------------------------------------------------------
Valentin Basel
Analista en Sistemas Informaticos
Departamento informatico
Centro de Estudios Avanzados - UNC - CONICET
---------------------------------------------------------------
http://www.sistema-icaro.blogspot.com/
http://fedoraproject.org/wiki/User:Valentinbasel

---------------------------------------------------------------------------
Mario
2011-05-08 15:16:48 UTC
Permalink
Post by basel valentin
pero si le anda con la hyperterminal de win.......... tiene que andar con
linux, no es tan complicado, me parece que siplemente el error fue tratar de
hacer un "echo" al puerto sin configurar nada (baudrate, bit de apridad,
etc)..
asi es, buen analisis, a veces parece que esta poseida la compu,
tambien se puede decir que si sin configurar nada te toma los defaults
y deberia andar de una, otra idea es copiar esa info del windows que
si anda y o usar un monitor de puerto serie. yo me armaria con unos
pocos leds y cables un monitor para "ver" como se comporta el puerto.

igual yo dejo el post para el futuro, a ver si alguien le pasa algo parecido.

Mario
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
Miguel Scapolla
2011-05-08 16:47:05 UTC
Permalink
On Sun, 8 May 2011 11:16:48 -0400
Post by Mario
Post by basel valentin
pero si le anda con la hyperterminal de win.......... tiene que
andar con linux, no es tan complicado, me parece que siplemente el
error fue tratar de hacer un "echo" al puerto sin configurar nada
(baudrate, bit de apridad, etc)..
asi es, buen analisis, a veces parece que esta poseida la compu,
tambien se puede decir que si sin configurar nada te toma los defaults
y deberia andar de una, otra idea es copiar esa info del windows que
si anda y o usar un monitor de puerto serie. yo me armaria con unos
pocos leds y cables un monitor para "ver" como se comporta el puerto.
¿Probaste configurar primero el puerto serie con setserial?. Acá está
el man de ese comando:
http://setserial.sourceforge.net/setserial-man.html

Saludos, Miguel.
--
---------------------------------------------------------------------
Miguel Scapolla - mascapolla en yahoo com ar
As of next week, passwords will be entered in Morse code.
---------------------------------------------------------------------

--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
Lisandro Damián Nicanor Pérez Meyer
2011-05-08 21:48:38 UTC
Permalink
Post by Miguel Scapolla
On Sun, 8 May 2011 11:16:48 -0400
Post by Mario
Post by basel valentin
pero si le anda con la hyperterminal de win.......... tiene que
andar con linux, no es tan complicado, me parece que siplemente el
error fue tratar de hacer un "echo" al puerto sin configurar nada
(baudrate, bit de apridad, etc)..
asi es, buen analisis, a veces parece que esta poseida la compu,
tambien se puede decir que si sin configurar nada te toma los defaults
y deberia andar de una, otra idea es copiar esa info del windows que
si anda y o usar un monitor de puerto serie. yo me armaria con unos
pocos leds y cables un monitor para "ver" como se comporta el puerto.
¿Probaste configurar primero el puerto serie con setserial?. Acá está
http://setserial.sourceforge.net/setserial-man.html
Normalmente no es necesario.
--
"La política es una actividad noble. Hay que revalorizarla, ejerciéndola con
vocación y una dedicación que exige testimonio, martirio, o sea, morir
por el bien común."
Padre Bergoglio - http://www.lanacion.com.ar/1153085

Lisandro Damián Nicanor Pérez Meyer
http://perezmeyer.com.ar/
http://perezmeyer.blogspot.com/
basel valentin
2011-05-09 21:14:27 UTC
Permalink
y ya que estamos, estas usando un adaptador usb/serie.. cual?

vos sabes, yo uso los manhatan y me andan barbaro, pero los noganet, no se
todavia bien porque me devuelven cualquier valor cuando los pruebo (es
desesperante) y eso que el comando lsusb me los muestra con el mismo
"vendor" (que usan el chip ft232rl)... lo que algunas empresas hacen es
falsificar los vendor y fabricar un componente que es "igual" pero con otras
especificaciones.. con su driver para win-xp andan-- pero en linux que te lo
reconoce por su numero de vendor.. hace cualquier cosa :-(




---------------------------------------------------------------
Valentin Basel
Analista en Sistemas Informaticos
Departamento informatico
Centro de Estudios Avanzados - UNC - CONICET
---------------------------------------------------------------
http://www.sistema-icaro.blogspot.com/
http://fedoraproject.org/wiki/User:Valentinbasel

---------------------------------------------------------------------------
Alejandro Gomez
2011-05-10 00:00:06 UTC
Permalink
Post by basel valentin
y ya que estamos, estas usando un adaptador usb/serie.. cual?
vos sabes, yo uso los manhatan y me andan barbaro, pero los noganet, no se
todavia bien porque me devuelven cualquier valor cuando los pruebo (es
desesperante) y eso que el comando lsusb me los muestra con el mismo
"vendor" (que usan el chip ft232rl)... lo que algunas empresas hacen es
falsificar los vendor y fabricar un componente que es "igual" pero con otras
especificaciones.. con su driver para win-xp andan-- pero en linux que te lo
reconoce por su numero de vendor.. hace cualquier cosa :-(
En mi experiencia, cualquier cosa que compré noganet se comportó raro
o funcionó mal.
Manhattan suele ser bastante bueno.
--
T!
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
basel valentin
2011-05-10 03:36:31 UTC
Permalink
Post by Alejandro Gomez
En mi experiencia, cualquier cosa que compré noganet se comportó raro
o funcionó mal.
Manhattan suele ser bastante bueno.
si  tal cual, pero los manhattan me los enchufan a $80 y los noganet a
$30..... pero es ciert noganet es un veneno con esas cosas eladaptador
usb/serie de manhattan anda bien


---------------------------------------------------------------
Valentin Basel
Analista en Sistemas Informaticos
Departamento informatico
Centro de Estudios Avanzados - UNC - CONICET
---------------------------------------------------------------
http://www.sistema-icaro.blogspot.com/
http://fedoraproject.org/wiki/User:Valentinbasel

---------------------------------------------------------------------------
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
Alejandro Lucas
2011-05-10 12:23:54 UTC
Permalink
Post by basel valentin
es ciert noganet es un veneno con esas cosas
+1, Ni que hablar de los adaptadores bluetooth.

Saludos
--
--
,= ,-_-. =.
((_/)o o(\_))
`-(. .)`-'
\_/
Gnu/Linux
//////////////////////////////////////////
Alejandro 9dj
--------------------------------------------------------------------
BLOG: HTTP://WWW.PASCALIZADO.COM.AR
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
Lisandro Lanfranco
2011-05-10 20:17:35 UTC
Permalink
Hola a todos, esta mañana tuvimos algunos avances con mariano verdú que
es quien escribió el programita de python, pero aún no funciona al 100%
como queremos.
El avance lo tuvimos cuando empezamos a usar el código de icaro y con
algunas letras particulares el pic las interpretaba, pero con otras no.
La duda que nos quedó es porque primero envías el caracter "s".
Los caracteres que generaban algún cmabio en los leds indicadores eran
la b, c, d, luego nada, también enviando el código correspondiente a los
caracteres, 97, 98, 99, y ahí descubrimos que con el código 67, 68, 69
hacía lo mismo, raro, no?
Pero todavía no interpreta todas las letras y las decodifica como
debería, segu8imos probando.
Cuando ejecuto el comando lsusb muestra Prolific Technology, Inc. PL2303
Serial Port, debe ser prolific, no?
Post by Alejandro Gomez
Post by basel valentin
y ya que estamos, estas usando un adaptador usb/serie.. cual?
vos sabes, yo uso los manhatan y me andan barbaro, pero los noganet, no se
todavia bien porque me devuelven cualquier valor cuando los pruebo (es
desesperante) y eso que el comando lsusb me los muestra con el mismo
"vendor" (que usan el chip ft232rl)... lo que algunas empresas hacen es
falsificar los vendor y fabricar un componente que es "igual" pero con otras
especificaciones.. con su driver para win-xp andan-- pero en linux que te lo
reconoce por su numero de vendor.. hace cualquier cosa :-(
En mi experiencia, cualquier cosa que compré noganet se comportó raro
o funcionó mal.
Manhattan suele ser bastante bueno.
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
basel valentin
2011-05-10 20:38:56 UTC
Permalink
Post by Lisandro Lanfranco
Hola a todos, esta mañana tuvimos algunos avances con mariano verdú que
es quien escribió el programita de python, pero aún no funciona al 100%
como queremos.
El avance lo tuvimos cuando empezamos a usar el código de icaro y con
algunas letras particulares el pic las interpretaba, pero con  otras no.
La duda que nos quedó es porque primero envías el caracter "s".
Los caracteres que generaban algún cmabio en los leds indicadores eran
la b, c, d, luego nada, también enviando el código correspondiente a los
caracteres, 97, 98, 99, y ahí descubrimos que con el código 67, 68, 69
hacía lo mismo, raro, no?
Pero todavía no interpreta todas las letras y las decodifica como
debería, segu8imos probando.
Cuando ejecuto el comando lsusb muestra Prolific Technology, Inc. PL2303
Serial Port, debe ser prolific, no?
estas usando el firmware de icaro para el pic??

 :-D el tema es asi, el firmware de icaro cuando se inicia se queda
esperando un caracter (no genera info, solo responde a los comandos
que le envias desde el puerto).

si mandas el caracter "s" en ascii el pic pasa a un bucle donde espera
otro caracter. el proximo caracter que le envies lo va a madar
directaemente a los pines de salida (RB1,2,3,6,7,8 y RA4 y 5) o sea si
mandas el caracter "a" y ese caracter en ascii es el (no me acuerdo) 5
en decimal.. en binario va a ser el 00000101 (y va activar dos pines
del puerto) ;-)
despues de eso vuelve a estar en un bucle esperando otro caracter de
instruccion.

si le mandas un "b", deberia devolverte una cadena de bienvenida (icaro03).
con "e" + un numero del 1 al 6, te devuelve si esta pulsado uno de los
6 pines habilitados para lectura (0 o el valor del pin, 1,2,3,4,5 o
6).

estas usando cutecom ??? proba mandarle un carácter "b" y que te
devuelva "icaro03" :-D
fijate en el plano esquematico de icaro para ver las salidas del pic..
no usa todo el puerto A porque hay dos pines que son de entradas..
pero ahi vas a ver como se activan ;-).

pl2303 es el adaptador mas universal para usb/serie :-d manhattan y
noganet marcan lo mismo con lsusb.. pero noganet no anda :-(
(pareciera que manhattan me pagara por decir eso)....

p.d: por eso te decia que la API que arme para icaro, no te
funcionaria directamente con tu desarrollo.. pero te sirvio apra
probar que andaba el puerto por lo menos!


---------------------------------------------------------------
Valentin Basel
Analista en Sistemas Informaticos
Departamento informatico
Centro de Estudios Avanzados - UNC - CONICET
---------------------------------------------------------------
http://www.sistema-icaro.blogspot.com/
http://fedoraproject.org/wiki/User:Valentinbasel

---------------------------------------------------------------------------
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
Lisandro Lanfranco
2011-05-10 20:55:51 UTC
Permalink
Post by basel valentin
Post by Lisandro Lanfranco
Hola a todos, esta mañana tuvimos algunos avances con mariano verdú que
es quien escribió el programita de python, pero aún no funciona al 100%
como queremos.
El avance lo tuvimos cuando empezamos a usar el código de icaro y con
algunas letras particulares el pic las interpretaba, pero con otras no.
La duda que nos quedó es porque primero envías el caracter "s".
Los caracteres que generaban algún cmabio en los leds indicadores eran
la b, c, d, luego nada, también enviando el código correspondiente a los
caracteres, 97, 98, 99, y ahí descubrimos que con el código 67, 68, 69
hacía lo mismo, raro, no?
Pero todavía no interpreta todas las letras y las decodifica como
debería, segu8imos probando.
Cuando ejecuto el comando lsusb muestra Prolific Technology, Inc. PL2303
Serial Port, debe ser prolific, no?
estas usando el firmware de icaro para el pic??
:-D el tema es asi, el firmware de icaro cuando se inicia se queda
esperando un caracter (no genera info, solo responde a los comandos
que le envias desde el puerto).
si mandas el caracter "s" en ascii el pic pasa a un bucle donde espera
otro caracter. el proximo caracter que le envies lo va a madar
directaemente a los pines de salida (RB1,2,3,6,7,8 y RA4 y 5) o sea si
mandas el caracter "a" y ese caracter en ascii es el (no me acuerdo) 5
en decimal.. en binario va a ser el 00000101 (y va activar dos pines
del puerto) ;-)
despues de eso vuelve a estar en un bucle esperando otro caracter de
instruccion.
si le mandas un "b", deberia devolverte una cadena de bienvenida (icaro03).
con "e" + un numero del 1 al 6, te devuelve si esta pulsado uno de los
6 pines habilitados para lectura (0 o el valor del pin, 1,2,3,4,5 o
6).
estas usando cutecom ??? proba mandarle un carácter "b" y que te
devuelva "icaro03" :-D
fijate en el plano esquematico de icaro para ver las salidas del pic..
no usa todo el puerto A porque hay dos pines que son de entradas..
pero ahi vas a ver como se activan ;-).
pl2303 es el adaptador mas universal para usb/serie :-d manhattan y
noganet marcan lo mismo con lsusb.. pero noganet no anda :-(
(pareciera que manhattan me pagara por decir eso)....
p.d: por eso te decia que la API que arme para icaro, no te
funcionaria directamente con tu desarrollo.. pero te sirvio apra
probar que andaba el puerto por lo menos!
---------------------------------------------------------------
Valentin Basel
Analista en Sistemas Informaticos
Departamento informatico
Centro de Estudios Avanzados - UNC - CONICET
---------------------------------------------------------------
http://www.sistema-icaro.blogspot.com/
http://fedoraproject.org/wiki/User:Valentinbasel
---------------------------------------------------------------------------
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
I am the one who is many.
Si, con este pequeño avance dimos por cerradas muchas dudas que
teníamos, si andaba el cable, si podiamos lograr la conexión co n linux
o nos teniamos que dedicar a otra cosa, ja.
Con cutecom no funciona de ninguna forma, probamos miles de opciones,
solo usando una función tuya escrita en python y por eso te preguntaba
lo de la s, pero eso seria mejor que lo comente mariano porque yo no sé
muy bien que se usó en python y que no.
El firmware sigue siendo el mismo, porque se me rompió la compu que
tiene puerto serie real y donde programaba el pic con un jdm, dicho sea
de paso, que programador me recomendas para usar con linux por puerto
usb para poder programar desde la netbook que tengo y no tener que andar
buscando y jodiendo a alguien que tenga una compu con puerto serie para
programar los pics.

Un saludo, Lisandro.

--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
Mariano Verdú
2011-05-10 22:18:21 UTC
Permalink
Hola, antes que nada, muchas gracias por la ayuda...
Post by basel valentin
estas usando el firmware de icaro para el pic??
No, estamos estamos usando la api que nos mostraste... (exclusivamente
necesitamos escribir por ahora, por eso nos sirvió..)
Post by basel valentin
p.d: por eso te decia que la API que arme para icaro, no te
funcionaria directamente con tu desarrollo.. pero te sirvio apra
probar que andaba el puerto por lo menos!
Luego nos dimos cuenta de un cierto "protocolo" que tenías hecho,
puntualmente al mandar "s" antes del dato y de la funcion leer.



Lo extraño empezó a suceder cuando vimos que con tu api conectaba y cutecom
no nos decía ni mu.
Más extraño todavía, cuando quitabamos el envio del caracter "s", no
llegaban datos al pic..


En fin, de tus consejos del segundo mail, lo único que no hemos hecho es
crear las reglas udev. Podrá ser eso ?

Saludos
--
Un hombre puede combatir una afirmación con un razonamiento; pero una sana
intolerancia es el único modo con que un hombre puede combatir una
tendencia.

Gilbert Keith Chesterton
basel valentin
2011-05-10 23:22:12 UTC
Permalink
Post by Mariano Verdú
No, estamos estamos usando la api que nos mostraste... (exclusivamente
necesitamos escribir por ahora, por eso nos sirvió..)
Luego nos dimos cuenta de un cierto "protocolo" que tenías hecho,
puntualmente al mandar "s" antes del dato y de la funcion leer.
Lo extraño empezó a suceder cuando vimos que con tu api conectaba y cutecom
no nos decía ni mu.
Más extraño todavía, cuando quitabamos el envio del caracter "s", no
llegaban datos al pic..
En fin, de tus consejos del segundo mail, lo único que no hemos hecho es
crear las reglas udev. Podrá ser eso ?
Saludos
depende, con un chmod 777 /dev/ttyUSB0 le das permisos a todos los
usuarios, si no tenes que ser root.. udev es solo para que te conserve
las reglas cad ves que conectas el dispositivo o reinicias la pc.

che.. y con el firmware que onda?, tenes el assembler asi le pegamos
una ojeada??? o esta en css, o sdcc?

porque es raro que reconosca al caracter "s" y si lo sacas no pase
nada....... con los pics a veces es todo un misterio :-P

con el tema del cargador de pics, conseguite un pickit2 (el pickit3
todavia no anda en linux)... yo tengo un clon que comercia
mcelectronics (son de bs as y te lo mandan por encomienda) usando
PK2CMD (lo bajas desd microchip) anda barbaro.

como recomendacion si queres usar un lindo IDE (y de desarrollo
nacional) proba I4UC

http://trac.usla.org.ar/i4uc/

es bien simple y comodo, yo lo siento mas comodo que pikev.. pero es
una opinion nomas
Post by Mariano Verdú
--
Un hombre puede combatir una afirmación con un razonamiento; pero una sana
intolerancia es el único modo con que un hombre puede combatir una
tendencia.
Gilbert Keith Chesterton
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
                                        I am the one who is many.
--
---------------------------------------------------------------
Valentin Basel
Analista en Sistemas Informaticos
Departamento informatico
Centro de Estudios Avanzados - UNC - CONICET
---------------------------------------------------------------
http://www.sistema-icaro.blogspot.com/
http://fedoraproject.org/wiki/User:Valentinbasel

---------------------------------------------------------------------------
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
Lisandro Lanfranco
2011-05-11 13:10:34 UTC
Permalink
Post by basel valentin
Post by Mariano Verdú
No, estamos estamos usando la api que nos mostraste... (exclusivamente
necesitamos escribir por ahora, por eso nos sirvió..)
Luego nos dimos cuenta de un cierto "protocolo" que tenías hecho,
puntualmente al mandar "s" antes del dato y de la funcion leer.
Lo extraño empezó a suceder cuando vimos que con tu api conectaba y cutecom
no nos decía ni mu.
Más extraño todavía, cuando quitabamos el envio del caracter "s", no
llegaban datos al pic..
En fin, de tus consejos del segundo mail, lo único que no hemos hecho es
crear las reglas udev. Podrá ser eso ?
Saludos
depende, con un chmod 777 /dev/ttyUSB0 le das permisos a todos los
usuarios, si no tenes que ser root.. udev es solo para que te conserve
las reglas cad ves que conectas el dispositivo o reinicias la pc.
che.. y con el firmware que onda?, tenes el assembler asi le pegamos
una ojeada??? o esta en css, o sdcc?
porque es raro que reconosca al caracter "s" y si lo sacas no pase
nada....... con los pics a veces es todo un misterio :-P
con el tema del cargador de pics, conseguite un pickit2 (el pickit3
todavia no anda en linux)... yo tengo un clon que comercia
mcelectronics (son de bs as y te lo mandan por encomienda) usando
PK2CMD (lo bajas desd microchip) anda barbaro.
como recomendacion si queres usar un lindo IDE (y de desarrollo
nacional) proba I4UC
http://trac.usla.org.ar/i4uc/
es bien simple y comodo, yo lo siento mas comodo que pikev.. pero es
una opinion nomas
Post by Mariano Verdú
--
Un hombre puede combatir una afirmación con un razonamiento; pero una sana
intolerancia es el único modo con que un hombre puede combatir una
tendencia.
Gilbert Keith Chesterton
--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
I am the one who is many.
Hola de nuevo Valentín, el código lo escribí en css, no es muy largo así
que lo pego completo:

#include <cpu.h>

#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, stop=1)

char valor;
int salida;

//
//Dato serie Placa Canal Micro Linea
//
//x 00 000 0 1 //Todos apagados, sin señal
//"a" 01 000 0 1 //Primer canal placa 1
//"b" 01 001 0 1 //Segundo canal placa 1
//"c" 01 010 0 1
//"d" 01 011 0 1
// .
// .
// .
//"i" 10 000 0 1 //Primer canal placa 2
//"j" 10 001 0 1
//"k" 10 010 0 1
//"l" 10 011 0 1
// .
// .
// .
//"q" 11 111 1 0 //Todos encendidos, condición de
micrófono.
//
//PORTB=[ x, Linea, Micro, Placa1, Placa0, Can2, Can1, Can0]
//

#int_RDA
RDA_isr()
{
valor=getc();
puts("Recibido");
switch(valor){
case 'a':
salida=0b01001000;
break;
case 'b':
salida=0b01001001;
break;
case 'c':
salida=0b01001010;
break;
case 'd':
salida=0b01001011;
break;
case 'e':
salida=0b01001100;
break;
case 'f':
salida=0b01001101;
break;
case 'g':
salida=0b01001110;
break;
case 'h':
salida=0b01001111;
break;
case 'i':
salida=0b01010000;
break;
case 'j':
salida=0b01010001;
break;
case 'k':
salida=0b01010010;
break;
case 'l':
salida=0b01010011;
break;
case 'm':
salida=0b01010100;
break;
case 'n':
salida=0b01010101;
break;
case 'o':
salida=0b01010110;
break;
case 'p':
salida=0b01010111;
break;
case 'q':
salida=0b00111000;
break;
default:
salida=0b01000000;
break;

}
return(0);
}

void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);

set_tris_b(0x00);

salida=0b01000000;
output_b(salida);

while(TRUE){
output_b(salida);
delay_ms(100);
}
}

Archivo cpu.h

#include <16F877A.h>
#device adc=8

#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Xtal oscillator
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or
B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected

#use delay(clock=4000000)

Seguimos probando cosas a ver que puede estar fallando, ya dudamos de
todo como para intentar que no se nos escape nada.
Parece estar muy bueno i4uc, apenas pueda sacarme este dolor de cabeza
de encima voy a ponerme a probarlo y ver si consigo ese grabador que
mencionas.
Un gran saludo y gracias de nuevo.

--
Para cancelar o configurar su suscripción, visite
http://mx.grulic.org.ar/list o envíe un email a
grulic-request-od3Ii2+oAupd+***@public.gmane.org
I am the one who is many.
Lisandro Damián Nicanor Pérez Meyer
2011-05-14 23:53:40 UTC
Permalink
On Mar 10 May 2011 20:22:12 basel valentin escribió:
[snip]
Post by basel valentin
depende, con un chmod 777 /dev/ttyUSB0 le das permisos a todos los
usuarios,
Nooo, por favor eso no :-P

Simplemente agregá tu usuario al grupo dialout y listo.

Saludos, Lisandro.
--
http://www.phdcomics.com/comics/archive.php?comicid=56

Lisandro Damián Nicanor Pérez Meyer
http://perezmeyer.com.ar/
http://perezmeyer.blogspot.com/
Loading...