-----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? > 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? > 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? > 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. > 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