Python - Productor-consumidor python3

 
Vista:
sin imagen de perfil

Productor-consumidor python3

Publicado por ALEX PATRICIO (2 intervenciones) el 10/04/2018 08:58:28
Hola a todos... me estoy iniciando en el mundo de python y me surgen muchas dudas....
Estoy implementando un proceso que practicamente se refiere a mandar datos de labview a python (6 datos por segundo) mediante comunicacion TCP/IP usando sockets multi hilo python es el servidor... mi problema surge en que los datos ya recibidos dentro del lazo multihilo no se como utilizarlos en otro script.... es decir en el primer script estaria ejecuatandose el socket y recibiendo todos los datos, esos datos quiero pasarlos a otro script para desde ahi generar un hmi para visualizarlos en tiempo real.... estoy utilizando python 3 instalado en una raspberry pi2.
Adjunto el codigo el cual me permite comunicarme con labview mediante sockets: como se puede ver en el codigo los datos de posición y velocidad quiero pasarlos a otro script(ventana) para usarlos desde alla. es decir exportar de este codigo esos datos para usarlos en otro script y graficarlos en tiempo real..
De antemano Gracias por sus respuestas
Saludos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import socket
import time
from _thread import *
import sys
 
HOST='161.111.120.229'
PORT=8888
 
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print('socket creado correctamente')
 
try:
    s.bind((HOST,PORT))
    print('socket esta enlazado correctamente')
 
except socket.error as e:
    print(str (e))
 
s.listen(10)
print('socket se encuentra esperando conexiones desde clientes')
 
def clientthread(conn):
# enviamos datos desde raspberry a labview para empezar la conexion 
    conn.send(str.encode('Bienvenido a raspberry \n'))
    time.sleep(2)
    conn.send(str.encode('Inicializando conexion \n'))
    time.sleep(2)
    conn.send(str.encode('Recibiendo datos \n'))
 
    while True:
        data=conn.recv(1024).decode() # se reciben desde labview los datos tipo string
 
        dato_listo=(data.split())
        velocidadx=(dato_listo[0])
        posiciony=(dato_listo[1])
 
        print(velocidadx)
        print(posiciony)
 
        time.sleep(0.05)# timepo de espera para recibir datos
        #si no se recibe ningun dato se produce un salto
        if not data:
            break
 
    conn.close()
 
 
while True:
    conn,addr=s.accept()
    print('conexion aceptada de:''\t' +addr[0]+ ':'+str(addr[1]))
 #empezar nuevo hilo, toma como argumentos: el nombre de la funcion a ejecutar y tupla de argumentos para la funcion    
    start_new_thread(clientthread, (conn,))
s.close()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder