Product
Introducing SSO
Streamline your login process and enhance security by enabling Single Sign-On (SSO) on the Socket platform, now available for all customers on the Enterprise plan, supporting 20+ identity providers.
Readme
USB-DUX are open source & hardware data acquisition boxes designed for Linux
https://github.com/glasgowneuro/usbdux
pyusbdux supports the USB-DUX-sigma: 16 analogue inputs (isolated, 24 bit, 1 kHz), 4 analogue out (isolated, 8 bit) and 8 digital I/O
Make sure that you have all comedi
libraries,
swig
and python3
installed (both runtime and development).
Use your favourite package manager to install the packages.
Then install pyusbdux
by typing::
pip3 install pyusbdux [--user] [--upgrade]
or
./setup install [--user]
Here are the basic steps how to use the API::
# load the module
import pyusbdux as dux
# create a callback interface
class DataCallback(dux.Callback):
def hasSample(self,sample): # sample arrived
print("s:",sample) # process sample
cb = DataCallback()
# opens the 1st USBDUX device (autodetect)
dux.open()
# Start asynchronous data acquisition in the background: one channel, fs=250Hz
dux.start(cb,1,250)
# do nothing or run a gui
input() # do nothing here
# shutdown
dux.stop()
dux.close()
These are the commands which allow you to access the analogue inputs asynchronously and the analogue outputs, digital input and outputs synchronously::
# opens the comedi device with comediDeviceNumber
open(comediDeviceNumber)
open() # opens 1st USB-DUX device (autodetect)
# Callback interface
class DataCallback(dux.Callback):
def hasSample(self,sample): # sample arrived
# implement your callback handler here
# Starts acquisition of n_channels at the sampling rate of fs.
# Expects an instance of Callback with overloaded hasSample(self,sample).
start(Callback,n_channels, fs)
start(Callback,n_channels) # at fs=250
# gets the actual sampling rate of the running acquisition
getSamplingRate()
# stops the background acquisition
stop()
# writes to a digital pin the value 0 or 1
digital_out(channel, value)
# reads from a digital pin
digital_in(channel)
# writes to an analogue output pin (raw ADC values)
analoge_out(channel, value)
# gets the max raw value of the analogue output
get_analogue_out_max_raw_value()
# closes the comedi device
close()
# returns the name of the board connected
get_board_name()
Any error in comedi throws an exception in python.
In the folder https://github.com/berndporr/pyusbdux/tree/master/examples are example scripts which show you how to sample data from the analogue and digital ports.
Start your program from the terminal and never within Spyder. Here is an example::
~/pyusbdux$ cd examples
~/pyusbdux/examples$ python3 ./realtime_plot.py
The problem with Spyder is that it won't let your Python program terminate properly so that you can examine variables etc. However, this means that the USB-DUX board keeps running even if it seems that execution has finished. If you then re-run your program it won't be able to talk to your USB-DUX.
Bottomline: Use Spyder only for editing, instead run your program from the terminal. Never start your program from within Spyder.
If you use the --user
option to install / update packages Python might keep older versions.
Solution: Do a pip uninstall pyusbdux
multiple times until no version is left
on your computer. Then install it again as described above.
FAQs
API for the USB-DUX DAQ boxes for Linux (https://github.com/glasgowneuro/usbdux)
We found that pyusbdux demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Streamline your login process and enhance security by enabling Single Sign-On (SSO) on the Socket platform, now available for all customers on the Enterprise plan, supporting 20+ identity providers.
Security News
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
Security News
As cyber threats become more autonomous, AI-powered defenses are crucial for businesses to stay ahead of attackers who can exploit software vulnerabilities at scale.