[newbie] trying socket as a replacement for nc
Christian Gollwitzer
auriocus at gmx.de
Thu Dec 12 18:43:27 EST 2013
Am 12.12.13 00:08, schrieb Jean Dubois:
> I have an ethernet-rs232 adapter which allows me to connect to a measurement instrument by means of netcat on a linux system.
> e.g. entering nc 10.128.59.63 7000
> allows me to enter e.g.
> *IDN?
> after which I get an identification string of the measurement instrument back.
> I thought I could accomplish the same using the python module "socket"
> and tried out the sample program below which doesn't work however:
> import socket
> host = '10.128.59.63'
> port = 7000
> size = 10
The socket library advises to use a small power of two like 1024; 10
seems very small.
> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> s.connect((host,port))
> s.send('*IDN?')
\n or \r\n is missing, you found this by yourself - look into the device
manual, which one is correct
> data = s.recv(size)
It may be, that you simply need to wait for some time after the write,
before you read. And then before the device is ready, you close the
connection. If this is the case, try waiting a short time in between and
use socket.sendall() instead of socket.send()
> s.close()
Maybe you need to read twice?
> Can anyone here tell me how to do it properly?
The most proper way is to use asynchronous IO; never done this in python
before, check this:
http://docs.python.org/2/library/asyncore.html#asyncore-example-basic-http-client
Christian
More information about the Python-list
mailing list