Metadata-Version: 2.1
Name: scippy
Version: 0.1.22
Summary: Python package for communication with SCPI-based instruments
Home-page: https://github.com/edmundsj/scippy
Author: Jordan Edmunds
Author-email: edmundsj@uci.edu
License: MIT
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: numpy (>=1.14.5)
Requires-Dist: matplotlib (>=2.0.0)
Requires-Dist: pandas (>=0.24.0)
Requires-Dist: scipy (>=1.2.2)
Requires-Dist: pyyaml (>=5.1.1)
Requires-Dist: pint (>=0.16.0)
Requires-Dist: sciparse
Requires-Dist: pyvisa
Requires-Dist: pyserial

#Setting up a new Repository
[![Build](https://github.com/edmundsj/pyscpi/actions/workflows/python-package-conda.yml/badge.svg)](https://github.com/edmundsj/pyscpi/actions/workflows/python-package-conda.yml) [![docs](https://github.com/edmundsj/pyscpi/actions/workflows/build-docs.yml/badge.svg)](https://github.com/edmundsj/pyscpi/actions/workflows/build-docs.yml) [![codecov](https://codecov.io/gh/edmundsj/pyscpi/branch/main/graph/badge.svg?token=VossgkNDyW)](https://codecov.io/gh/edmundsj/pyscpi)

Pronounced "skippy". Module for instrument communication via SCPI, implemented using pyvisa and pyserial (depending on the device)

## Features
- Communicate with devices over GPIB, RS232, or USB via SCPI protocol
- Several common instruments (Agilent 33210A, Keithley 2400 sourcemeter) already have dedicated classes
- Create new instruments with the SCPIDevice class

## Getting Started

### Installation

This package can be installed directly with pip from [pypi](https://pypi.org/project/scippy/): 
```
pip install scippy
```

### Agilent Example
The following example sets the frequency, amplitude, and output state of an Agilent 33210A instrument, and verifies that the parameters match the ones you set.

```
from scippy import Agilent

agilent = Agilent()
agilent.frequency = 2500
agilent.amplitude = 0.5
agilent.output_on = True
agilent.verify()
```

### Keithley Example
The following sets up a Keithley 2400 source meter, sets the voltage compliance, and sets a current

```
from scippy import Keithley, ureg

keithley = Keithley()
keithley.current = 0.05 # Units assumed to be in Amps
keithley.voltage_compliance = 25 * ureg.mV # Set compliance to 25mV
voltage, current = keithley.measure() # Sets the output on, measures the current and voltage
print(voltage)
print(current)

```

### Common Issues (Keithley)
Some instruments, unfortunately, have much less reliable communication interfaces than others. In particular, the Keithley is extremely sensitive to not being closed.


