Products > Test Equipment
Download speed from Rigol DS1054Z or similar oscilloscope to a PC
alm:
I don't have any Rigol scope to test on, so I used netcat to create a listening TCP socket: nc -l -p 1052. Then I installed python-ivi from your Github, removed all the Python-2 style print statements that would give errors in Python 3 (after from __future__ import print_function, print(...) with parentheses should work in any Python version released after 2008), installed pyvisa and pyvisa-py, and made a small change to ivi/interfaces/pyvisa.py lines 32-39 and replaced the word visa by pyvisa. Apparently the module changed names in the past six years. And then it seems to work fine for me:
--- Code: ---% python
>>> import ivi
>>> rig = ivi.rigol.rigolDS1054Z('TCPIP0::localhost::1052::SOCKET')
# This was necessary because I'm using a Linux terminal and not a real DS1054 scope
>>> rig._interface.instrument.read_termination = '\n'
>>> rig._interface.instrument.write_termination = '\n'
>>> rig.identity.instrument_model
'DS1102E'
--- End code ---
In netcat I'd see:
% nc -l -p 1052
*CLSRIGOL TECHNOLOGIES,DS1102E,DS1EB104702974,00.02.01.01.00
*IDN?
Red is what the driver sent, and green is what I typed to simulate the response of a scope.
*CLS is what the DS1054Z driver sends when you instantiate it, and RIGOL TECHNOLOGIES,... is what I typed as a pre-emptive response to the *IDN? query since I can't type fast enough to stay within the timeout. I'm pretty sure that the same Python code, probably without changing the termination, would work with a real scope.
RoGeorge:
Sorry for the invalid Python2 prints, not mine, I've removed them only locally, now removed them from my git fork, too.
The problem is that I get invalid resource string for something like:
>>> rig = ivi.rigol.rigolDS1054Z('TCPIP0::localhost::1052::SOCKET')
--- Code: ---...
python-ivi_RoGeorge_fork/python-ivi/ivi/ivi.py", line 1817, in _initialize
raise IOException('Invalid resource string')
ivi.ivi.IOException: Invalid resource string
>>>
--- End code ---
If that resource string worked for you, then you must be having one of the proprietary VISA libraries installed, something like NI-VISA, Keysight VISA, R&S VISA, Tektronix VISA, and python-IVI or maybe pyvisa detects the closed source library and sends the resource string to it.
I don't have any of the proprietary VISA libraries, only the FOSS python modules: python-ivi, python-vxi11, pyvisa and pyvisa-py. IIRC pyvisa also has some options to configure its backend.
Also I've noticed your prompt is % (% prompt is usually for csh). What OS did you used to test the line "ivi.rigol.rigolDS1054Z('TCPIP0::localhost::1052::SOCKET')"?
TL DR;
'TCPIP0::localhost::1052::SOCKET' doesn't work on my Kubuntu 22.04 LTS, I have no proprietary NI-VISA or alike installed. Any hints what am I missing, or mis-configured, or what should I install to make my python-IVI work with SOKET connection just like yours, please?
alm:
This was on Ubuntu 22.04.1 LTS without any proprietary VISA installed, just PyVISA and PyVISA-py. These are the only modules installed inside the virtual environment where I ran these commands:
--- Code: ---python = "^3.10" (resolved to Python 3.10.6)
PyVISA = "^1.12.0" (resolved to 1.12.0)
PyVISA-py = "^0.5.3" (resolved to 0.5.3)
numpy = "^1.23.4" (resolved to 1.23.4)
python-ivi = {git = "https://github.com/RoGeorge/python-ivi.git"}
and as indirect dependency of PyVISA typing-extensions 4.4.0
--- End code ---
PyVISA used the PyVISA-py backend without any configuration on my side. This is with using PyVISA directly:
--- Code: --->>> import pyvisa
>>> rm = pyvisa.ResourceManager()
>>> res = rm.open_resource('TCPIP0::localhost::1052::SOCKET')
>>> res.read_termination = '\n'
>>> res.write_termination = '\n'
>>> res.write('*IDN?')
7
>>> res.read()
'ME.' (this is just what I typed in netcat)
--- End code ---
If this doesn't work for you, then maybe try explicitly setting the PyVISA-py backend as described here. I did have to modify ivi/interface/pyvisa.py as I described above before python-ivi would detect pyvisa. Without that modification I also got the Invalid resource string error.
RoGeorge:
Thanks for pointing to the visa -> pyvisa name changes, wouldn't have noticed that too soon, if ever!
Now it can open a SOCKET connection from python-ivi. :D
alm:
Yeah, I guess the module was called "visa" back in 2015 when that code was written. I've never run into it myself because all devices I've controlled so far have a GPIB interface that I access via VXI-11 using a LAN to GPIB bridge (HP/Agilent, Tektronix, etc). So I have no use for anything but VXI-11 for now.
Nice, does it work with the DS1054Z now?
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version