Python Package for Digitizers and Generators: High-Level Object-Oriented Design
Spectrum Instrumentation presents a new open-source Python package (“spcm”) that is now available for the current line of all Spectrum Instrumentation test and measurement products. The new package makes the programming of all 200+ instruments, offering sampling rates from 5 MS/s to 10 GS/s, faster and easier. Python, popular for its simplicity, versatility and flexibility, boasts an extensive collection of libraries and frameworks (such as NumPy) that significantly accelerates programming development cycles. The new spcm package allows users to take full advantage of the Python language by providing a high-level Object-Oriented Programming (OOP) interface that is specifically designed for the Spectrum Instrumentation Digitizer, AWG and Digital I/O products. It includes the full source code as well as a number of detailed examples. Available on GitHub, spcm is free of charge under the MIT license.
Spectrum’s Python package safely handles the automatic opening and closing of cards, groups of cards and Ethernet instruments, as well as the allocation of memory for transferring data to and from these devices. All the device specific functionality is capsulated in easy-to-use classes. This includes clock and trigger settings, hardware channel settings, card synchronization, direct memory access (DMA) and product features such as Block Averaging, DDS and Pulse Generator.
The package supports the use of real-world physical quantities and units (e.g. “10 MHz”) enabling the user to directly program driver settings in their preferred unit system. This removes the need for tedious manual conversions to cryptic API settings. Moreover, this package also includes support for calculations with NumPy and Matplotlib, allowing the user to handle data coming from, or going to, the products with the vast toolbox provided by those packages. Detailed examples can be found in the GitHub repository.