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
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to