[Python-es] Cambiar puerto serial a puerto ethernet

Rolando Paz flxpaz en gmail.com
Sab Jun 6 23:42:45 CEST 2015


Gracias por tu correo Flavio.

Adjunto se encuentra una de las pruebas que hice en función de modificar
dicho script y lograr graficar los datos que salen de mi IBOB.

Al ejecutar el modulo plot_auto_ethernet.py aparece el siguiente error:

Traceback (most recent call last):
  File "/usr/local/bin/plot_auto_ethernet.py", line 37, in <module>
    brd = arte.ibob_ethernet.IbobClient(ip, port)
  File "/usr/local/lib/python2.7/dist-packages/arte/ibob_ethernet.py", line
27, in __init__
    self._listdev()
  File "/usr/local/lib/python2.7/dist-packages/arte/ibob_ethernet.py", line
44, in _listdev
    line = file.readline()
  File "/usr/lib/python2.7/socket.py", line 447, in readline
    data = self._sock.recv(self._rbufsize)
socket.error: [Errno 111] Connection refused

Tienes alguna sugerencia?

Saludos

Rolando Paz
El jun 6, 2015 3:30 PM, "Flavio Danesse" <fdanesse en gmail.com> escribió:

En el script antes de leer del socket, se escribe en él.
Al parecer lee cuando el punto remoto le contesta, quizas debas hacer
cambios en esta función.

    def flush_text_buffers(self):
        self.ser.write('\n')
        time.sleep(1)
        self.ser.flushInput()
        #self.ser.flushOutput()
        self.ser.write('\n')
        line = self.ser.read(9)
        if line != '\n\rIBOB % ': raise Exception("Bad Reply: '%s'"%line)

Y toma en cuenta que UDP no te asegura la entrega de los datos.
No puedo ayudarte mucho más porque el caso que planteas es muy específico.
Yo tengo hecho un juego multiplayer con sockets pero utilizando tcp.
*los datos los mando así:*

datos = "%s\n" % datos
self.socket.sendall(datos)
time.sleep(0.02)

*Y los recibo así:*

entrada = ""
while not entrada:
    try:
        entrada = self.socket.recv(1024)
        entrada = entrada.replace("*", "").strip()
    except socket.error, err:
        ...
        time.sleep(0.02)
return entrada

Todo esto es del lado de los clientes y es un proceso que se repite cada 35
milesimas de segundo.
El servidor es mucho mas complejo porque es multihilo, ahí
utilizo SocketServer.StreamRequestHandler, SocketServer.ThreadingMixIn y
SocketServer.ThreadingTCPServer

El 5 de junio de 2015, 19:49, Rolando Paz <flxpaz en gmail.com> escribió:

> Hola nuevamente a todos.
>
> Pueden darme sugerencias sobre cómo puedo modificar el script adjunto que
> utiliza el puerto serial para comunciarse y cambiarlo para usar el puerto
> ethernet?
>
> Especificamente yo necesito obtener datos por UDP.
>
> Estaré muy agradecido por cualquier sugerencia, pues ya hice varios
> intentos y no lo logro :-)
>
> Estoy seguro que debo usar lo siguiente:
>
> HOST = '169.254.128.32'
> PORT = 6969
>
> #set up receiver using UDP sockets
> socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
> socket.connect((HOST, PORT))
>
> resp = socket.recv(4096)
>
> Pero no logro integrar estas lineas en el script ibob_serial.py
>
> Saludos
>
> Rolando
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>

_______________________________________________
Python-es mailing list
Python-es en python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20150606/88ccd56a/attachment.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: arte.rar
Type: application/rar
Size: 4232 bytes
Desc: no disponible
URL: <http://mail.python.org/pipermail/python-es/attachments/20150606/88ccd56a/attachment.rar>


Más información sobre la lista de distribución Python-es