Skip to content
Merged
Show file tree
Hide file tree
Changes from 42 commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
b7abc39
Analog Input - Voltage and Thermocouple Single Task
Jun 19, 2025
aa6488a
Merge branch 'main' of https://github.com/ni/nipanel-python
Jun 19, 2025
6d2ec85
Merge branch 'main' of https://github.com/ni/nipanel-python
Jun 19, 2025
89d9c2e
Merge branch 'main' of https://github.com/ni/nipanel-python
Jun 24, 2025
871f6e1
add niscope
Jun 24, 2025
336d7b5
Rename
Jun 25, 2025
31e7f0c
Merge branch 'main' of https://github.com/ni/nipanel-python
Jun 25, 2025
5f7776f
Merge branch 'main' into users/DilmiWickramanayake/niscope_ex_fetch_f…
Jun 25, 2025
1b00959
Merge branch 'main' into users/DilmiWickramanayake/niscope_ex_fetch_f…
Jun 25, 2025
5534c9a
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 26, 2025
6083519
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 26, 2025
01a2e08
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 26, 2025
435aedd
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 26, 2025
8dbd7d0
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 26, 2025
b6e43c6
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 26, 2025
9643953
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 26, 2025
66808fb
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 26, 2025
afeb185
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 26, 2025
eb3da14
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 26, 2025
8b9cc4a
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 26, 2025
b27c77f
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 26, 2025
94a0afc
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 26, 2025
0d720c5
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 26, 2025
be1839f
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 26, 2025
4e7e158
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 26, 2025
c394513
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
fe6a780
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
498c199
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
c4d6d7d
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
414257d
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
5b7d789
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
742b685
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
e50dadc
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
838cd70
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
7338e2c
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
e99a548
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
93fede0
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
b2bfe84
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
5cdc785
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
a80d753
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
2056cf3
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
1fb809c
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
d30dcb5
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
98b3e18
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jun 27, 2025
29f10d9
Merge remote-tracking branch 'origin' into users/DilmiWickramanayake/…
Jul 8, 2025
62b1bbc
Merge remote-tracking branch 'origin' into users/DilmiWickramanayake/…
Jul 8, 2025
1403c96
Merge branch 'users/DilmiWickramanayake/niscope_ex_fetch_forever' of …
Jul 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion examples/nidaqmx/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ This is a nipanel example that displays an interactive Streamlit app and updates

### Usage

Run `poetry run examples/nidaqmx_continuous_analog_input/nidaqmx_continuous_analog_input.py`
Run `poetry run examples/nidaqmx/nidaqmx_continuous_analog_input.py`

5 changes: 3 additions & 2 deletions examples/nidaqmx/nidaqmx_continuous_analog_input_panel.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,11 @@
thermocouple_data = panel.get_value("thermocouple_data", [0.0])
voltage_data = panel.get_value("voltage_data", [0.0])

sample_rate = panel.get_value("sample_rate", 0)
sample_rate = panel.get_value("sample_rate", 0.0)

st.header("Voltage & Thermocouple")
voltage_therm_graph = {
"animation": False,
"tooltip": {"trigger": "axis"},
"legend": {"data": ["Voltage (V)", "Temperature (C)"]},
"xAxis": {
Expand Down Expand Up @@ -64,7 +65,7 @@
},
],
}
st_echarts(options=voltage_therm_graph, height="400px")
st_echarts(options=voltage_therm_graph, height="400px", key="graph")

voltage_tab.header("Voltage")
with voltage_tab:
Expand Down
20 changes: 20 additions & 0 deletions examples/niscope/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Prerequisites
===============
Requires a Physical or Simulated Device : https://github.com/ni/nidaqmx-python/blob/master/README.rst (Getting Started Section)

## Sample

This is a nipanel example that displays an interactive Streamlit app and updates and fetches data from device.

### Feature

- Supports various data types

### Required Software

- Python 3.9 or later

### Usage

Run `poetry run examples/niscope/niscope_ex_fetch_forever.py`

61 changes: 61 additions & 0 deletions examples/niscope/niscope_ex_fetch_forever.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
"""Continuously acquires waveforms from NI-SCOPE, processes/scales them."""

import time
from pathlib import Path
from typing import Any

import hightime
import niscope
import numpy as np

import nipanel

panel_script_path = Path(__file__).with_name("niscope_ex_fetch_forever_panel.py")
panel = nipanel.create_panel(panel_script_path)

print(f"Panel URL: {panel.panel_url}")

resource_name = "Dev1"
channels = 0
options = ""
length = 1000
samples_per_fetch = 1000

"""Example fetch data from device (Dev1)."""
with niscope.Session(resource_name=resource_name, options=options) as session:
session.configure_vertical(range=2, coupling=niscope.VerticalCoupling.DC, enabled=True)
session.configure_horizontal_timing(
min_sample_rate=100000000,
min_num_pts=1000,
ref_position=50.0,
num_records=1000,
enforce_realtime=True,
)
session.configure_trigger_software()

with session.initiate():
wfm: np.ndarray[Any, np.dtype[np.int8]] = np.ndarray(
length * samples_per_fetch, dtype=np.int8
)
waveforms = session.channels[channels].fetch_into(
relative_to=niscope.FetchRelativeTo.READ_POINTER,
offset=0,
timeout=hightime.timedelta(seconds=5.0),
waveform=wfm,
)
try:
print(f"Press Ctrl + C to stop")
while True:
offset = session._fetch_offset
gain = session.meas_array_gain
for i in range(len(waveforms)):
time.sleep(0.2)
amplitude_list = []
total_data = waveforms[i].samples.tolist()
for amplitude in total_data:
amplitude = (amplitude * 10) * gain + offset
amplitude_list.append(amplitude)
panel.set_value("Waveform", amplitude_list)

except KeyboardInterrupt:
pass
44 changes: 44 additions & 0 deletions examples/niscope/niscope_ex_fetch_forever_panel.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
"""Streamlit dashboard for visualizing NI-SCOPE waveform data in real time."""

import streamlit as st
from streamlit_echarts import st_echarts

import nipanel

st.set_page_config(page_title="NI-SCOPE Example", page_icon="📈", layout="wide")
st.title("NIScope EX Fetch Forever")

panel = nipanel.get_panel_accessor()

waveform = panel.get_value("Waveform", [0])

graph = {
"animation": False,
"tooltip": {"trigger": "axis"},
"legend": {"data": ["Amplitude (V)"]},
"xAxis": {
"type": "category",
"data": list(range(len(waveform))),
"name": "Samples",
"nameLocation": "center",
"nameGap": 40,
},
"yAxis": {
"type": "value",
"name": "Amplitude(V)",
"nameRotate": 90,
"nameLocation": "center",
"nameGap": 40,
},
"series": [
{
"name": "niscope data",
"type": "line",
"data": waveform,
"emphasis": {"focus": "series"},
"smooth": True,
"seriesLayoutBy": "row",
},
],
}
st_echarts(options=graph, height="400px", width="75%", key="graph")
Loading
Loading