Programming ps3000 with Python

Post your Linux discussions here
Post Reply
riovandaino
Newbie
Posts: 1
Joined: Tue Oct 07, 2008 1:11 pm
Location: Italy

Programming ps3000 with Python

Post by riovandaino »

Hi!
I'm an italian high school student and I and my classmates are using a ps3000 oscilloscope for a project about radioactivity.
In this moment we need to write our own code to run the oscilloscope; personally I'm a good python programmer and I'm thinking to write the code of the program in this scripting language. I've studied the documentation of the ps3000.dll library and also the various examples in C, C++ and VB6 and I would very pleased to know if I can use this library in python. The problem is that I've found that a lot of the ps3000's functions want pointers as parameter ( such as ps3000.get_timebases or ps3000.get_values ) and python doesn't have pointers.
So this is my question: can I program the oscilloscope using this language or is better to use another one?

p.s.: please excuse me if I've posted this in the wrong section, but I didn't a better place.

Robin
Advanced User
Advanced User
Posts: 558
Joined: Fri Sep 19, 2008 10:17 am

Post by Robin »

Hi riovandaino

We don't have any Python examples, but other users out there might.

You might find it easier to choose one of the examples in another language and adapt it.

Sorry I can't be more help.

Robin

wayoda
Active User
Active User
Posts: 11
Joined: Fri Aug 01, 2008 9:49 am
Location: Wuppertal/Germany

Post by wayoda »

Hi riovandaino ,

I once used swig
http://www.swig.org
to interface pythoncode with a library written in C that had methods with pointers as arguments in it.
I think you should at least give it a try !

Eberhard

fearick
Newbie
Posts: 1
Joined: Wed Nov 12, 2008 1:39 pm
Location: Cape Town

Post by fearick »

It's quite easy to program in Python using ctypes to interface to the dll:

import ctypes as ct
ps3000=ct.windll.ps3000

#function interface to dll
ps_open_unit=ps3000.ps3000_open_unit
ps_open_unit.restype=ct.c_short

ps_set_channel=ps3000.ps3000_set_channel
ps_set_channel.restype=ct.c_short
ps_set_channel.argtypes=[ct.c_short,ct.c_short,ct.c_short,ct.c_short,ct.c_short]

... etc ...
#use:
handle=ps_open_unit() # p16
err=ps_set_channel(handle,PS_A,PS_ENABLE,ct.c_short(PS_DC), ct.c_short(PS_100mV)) # p19
...etc ...

I can provide a better example if requested, but I haven't yet
get a complete interface file at the moment, only what I have need for.

Roger.
Roger Fearick

Post Reply