I am trying to connect to a temperature chamber via an Ethernet connection using pyVisa in Python. The device only allows connections through port 2049. I have no problems connecting to it via PuTTY or HyperTerminal, but when I try this command in Python
import visa
chamber = visa.instrument("TCPIP::10.2.17.130::2049")
I get this error:
VI_ERROR_RSRC_NFOUND: Insufficient location information or the requested device or resource is not present in the system
I know the device is there because I can talk through it in PuTTY, but I cannot seem to get the Python code to work. Any hints? Does pyvisa use SSH by default?
Solution: In order for pyvisa-py to be able to connect to USB instruments, you need to install the Python usb library! In case you still don't see the output, run python3 -m visa info or python -m visa info (for Python 2. x).
PyVISA-py is a backend for PyVISA. It implements most of the methods for Message Based communication (Serial/USB/GPIB/Ethernet) using Python and some well developed, easy to deploy and cross platform libraries.
The simplest way (IMHO) to access a VISA resource is still by using the VISA device detection which would be through:
visa.ResourceManager().list_resources()
, if you're using pyVisa
viFindRsrc()
and viFindNext()
if you use the visa32.dll
library.Now by default, LAN connections are not detected using either method. This leaves you with two choices:
list_resources()
and viFindRsrc()
/viFindNext()
Actually, it's not always INSTR, depending on the resource class (see http://zone.ni.com/reference/en-XX/help/371361J-01/lvinstio/visa_resource_name_generic/).
Be sure to send byte strings to the instrument (especially if using Python 3+), otherwise you will get the following error:
VI_ERROR_RSRC_NFOUND: Insufficient location information or the requested device or resource is not present in the system
which can also be identified by 0xBFFF0011
or a return value of -1073807343
.
Are you sure the temp chamber supports the LAN instrument protocol?
If unsure, try using raw socket instead, i.e.
chamber = visa.instrument("TCPIP::10.2.17.130::2049::SOCKET")
(pyvisa does not use SSH by default)
Try this:
import socket
HOST = "10.2.17.130" # The remote host
PORT = 2049 # The same port as used by the server
s = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With