Skip to main content

A python package for instrumenting the FleaScope

Project description

Python library for instrumenting FleaScope

With this library, you can control and read your FleaScope(s).

Usage

Connect to your FleaScope

from pyfleascope.flea_scope import FleaScope

scope = FleaScope.connect() # for default hostname FleaScope
# scope = FleaScope.connect('scope1')
# scope = FleaScope.connect(port='/dev/ttyACM0')

Connecting by name will also take care of resetting the device if necessary.

Get your first reading from the BNC connector

df = scope.x1.read(timedelta(milliseconds=20))['bnc']

Calibration

Calibration values are by default read from flash upon connection. If necessary, recalibration can be performed via

# BNC probe in x1 mode
# Connect probe to GND
scope.x1.calibrate_0()
# Connect probe to 3.3V
scope.x1.calibrate_3v3()
scope.x1.write_calibration_to_flash()

# BNC probe in x10 mode
# Connect probe to GND
scope.x10.calibrate_0()
# Connect probe to 3.3V
scope.x10.calibrate_3v3()
scope.x10.write_calibration_to_flash()

Triggers

Trigger reading on analog edges

from pyfleascope.trigger_config import AnalogTrigger

df = scope.x1.read(
            timedelta(milliseconds=20),
            trigger=AnalogTrigger.start_capturing_when().rising_edge(volts=2),
)

or on digital signals

from pyfleascope.trigger_config import DigitalTrigger, BitState

df = scope.x1.read(
            timedelta(milliseconds=20),
            trigger=DigitalTrigger.start_capturing_when()
              .bit1(BitState.HIGH)
              .bit7(BitState.LOW)
              .starts_matching(),
)

Delay

Start capturing with a delay.

df = scope.x1.read(
            timedelta(milliseconds=20),
            trigger=AnalogTrigger.start_capturing_when().rising_edge(volts=2),
            delay=timedelta(milliseconds=0.2),
)

Waveform

Configure the built-in waveform generator.

from pyfleascope.flea_scope import Waveform

scope.set_waveform(Waveform.EKG, hz=1000)

Digital inputs

The digital input is captured in the column bitmask. The function extract_bits extracts boolean columns bit_$i for each bit.

df = scope.x1.read(
            timedelta(milliseconds=20),
            trigger=DigitalTrigger.start_capturing_when()
              .bit0(BitState.HIGH)
              .bit1(BitState.HIGH)
              .starts_matching(),
)
df = FleaScope.extract_bits(df)
df['bit_0'] = df['bit_0'].apply(int)

Using multiple FleaScopes

Multiple FleaScopes can be used at the same time. For exact timing alignment, the trigger signal can be forwarded.

scope1 = FleaScope.connect('scope1')
scope2 = FleaScope.connect('scope2')


capture_time = timedelta(microseconds=120)

# Capture data from two FleaScopes at the same time by forwarding the trigger
# TRIGGER_OUT on scope1 is connected to Bit 0 on scope2 via cable

def read_scope1():
    time.sleep(1) # give scope1 time to prepare
    return scope1.x1.read(
        capture_time,
        AnalogTrigger.start_capturing_when().auto(2),
    )

def read_scope2():
    return scope2.x1.read(
            capture_time,
            DigitalTrigger.start_capturing_when().bit0(BitState.HIGH).starts_matching(),
    )

with ThreadPoolExecutor(max_workers=8) as executor:
    f1 = executor.submit(read_scope1)
    f2 = executor.submit(read_scope2)
    df1 = f1.result()
    df2 = f2.result()

Cancel ongoing read

While waiting for the trigger or capturing values, the FleaScope is unresponsive. The ongoing read operation can be canceled via the unblock method.

scope.unblock()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyfleascope-0.0.4.tar.gz (534.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyfleascope-0.0.4-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file pyfleascope-0.0.4.tar.gz.

File metadata

  • Download URL: pyfleascope-0.0.4.tar.gz
  • Upload date:
  • Size: 534.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for pyfleascope-0.0.4.tar.gz
Algorithm Hash digest
SHA256 8199600528ffc85afc9c62cab6ab2d9aa91bf01d61469b4ea1b4b8a83c9cd7bd
MD5 6f4f9864dd18e2fea61cfbfcc8b54a25
BLAKE2b-256 e8f749e0ba58972850981e7095b0ef174f4d94f63c5e18aa0049f9b56dd920cb

See more details on using hashes here.

File details

Details for the file pyfleascope-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: pyfleascope-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 7.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for pyfleascope-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 116bfce52571a51483ad8db4359009fe7d6c256f316bd584392eb1d55f7992e7
MD5 c0d8b2ae4f1a92ff805f28fc0ebac17c
BLAKE2b-256 04adae78f8a6624959be3f812ba64a3d33328363d9c36a56ee2340c3b1bd9b19

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page