Il 04/10/2013 17:40, Manlio Perillo ha scritto:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 04/10/2013 17:33, Vittorio Spina wrote:
Ciao a tutti. Ho scritto un programma che riceve dati da un Laser
con interfaccia Ethernet.

Quale e' il protocollo usato dallo strumento?
in che senso il protocollo? E' una connessione TCP-IP... intendi come sono fatti i dati? in quel caso è un po complesso, diciamo che lui spara di continuo un header dove è scritto quanti punti ha scnsionato e poi la lista dei punti...

il programma riassumento ha la seguente forma:

from socket import * import config s = socket(AF_INET,SOCK_STREAM)
s.connect((config.IP, config.PORT)) while 1: if s.recv(1)=="\xAA":
letturaNumero = s.recv(1)

quando lancio il codice noto che letturaNumero identifica un
numero progressivo.
Noti?
Non e' specificato nel protocollo?
si ovviamente è specificato, diciamo che avvio il programma e sono alla scansione tipo 5500 e di lì inizio 5501, 2, ...
chiudo un attimo e riavvio il codice e sono a 7324, 7325...
insomma rimane appeso, mi aspetta.

E' come insomma se il device stesse ad aspettarmi fino alla
lettura successiva, cosa che io non voglio poich│ i dati sono tanti
e poi mi ritrovo con una sorta di macchina del passato.

Cosa vuoi fare, allora?
voglio i dati in tempo reale. Se apro e chiudo il socket scatta un po' ma funziona, altrimenti vedo con un ritardo di circa 5 secondi, che non va bene.

Se invece faccio come segue

while 1: s = socket(AF_INET,SOCK_STREAM) s.connect((config.IP,
config.PORT)) if s.recv(1)=="\xAA": letturaNumero = s.recv(1)

e cio│ apro e chiudo di continuo il socket, tutto funziona come
vorrei. Ma l'operazione di apertura e chiusira del socket │ in
effetti una cosa pensante. C'│ un modo per dire al socket di aprire
una connessione e che il device non stia ad aspettarmi?
select o poll.
Usa select per attendere fino a quando lo strumento non ha inviato dei
dati, e chiama recv solo allora.
non ho capito come, puoi farmi un esempio?

Grazie.

p.s usando il comando s.setblocking(0) ricevo l'errore: [Errno
10035] Impossibile completare immediatamente l'operazione sul
socket non a blocchi
Probabilmente nel tuo caso non hai bisogno di impostare il socket in
modalita' non bloccante, ma dipende dal protocollo usato dallo strumento.


Ciao  Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Icedove - http://www.enigmail.net/

iEYEARECAAYFAlJO4VwACgkQscQJ24LbaURMqgCaAoM+5ctD1G8NMmW4ZTA0LHYL
5rgAn1cC5cgmGkjjKQ435Op1y4PhmooS
=FBUM
-----END PGP SIGNATURE-----
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

--
==========================================
Spina Giovanni Vittorio
email:          vittorio.sp...@gmail.com
------------------------------------------
mobile:         +39 389 15 24 211
==========================================

:: AVVISO PRIVACY
= = = = = = = = = = = = = = = = = = = =
Il contenuto della presente e-mail ed i suoi allegati,
sono diretti esclusivamente al destinatario e devono
ritenersi riservati, con divieto di diffusione o di uso
non conforme alle finalità per le quali la presente e-mail
è stata inviata.
Pertanto, ne è vietata la diffusione e la comunicazione
da parte di soggetti diversi dal destinatario, ai sensi degli
artt. 616 e ss. c.p. e D.lgs n. 196/03 Codice Privacy.

Se la presente e-mail ed i suoi allegati sono stati ricevuti
per errore, siete pregati di distruggere quanto ricevuto e
di informare il mittente al seguente recapito:
Mailto:vittorio.sp...@gmail.com
==========================================

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a