# Display high sampling rate waveform from another system

**URL:** <https://forum.inductiveautomation.com/t/display-high-sampling-rate-waveform-from-another-system/116510>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [July 23, 2026, 1:52pm UTC](https://forum.inductiveautomation.com/t/display-high-sampling-rate-waveform-from-another-system/116510 "2026-07-23T13:52:36Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Eugene49](https://avatars.discourse-cdn.com/v4/letter/e/c6cbf5/32.png) [@Eugene49](https://forum.inductiveautomation.com/u/Eugene49)\
**Post date:** [July 23, 2026, 1:52pm UTC](https://forum.inductiveautomation.com/t/display-high-sampling-rate-waveform-from-another-system/116510/1 "2026-07-23T13:52:36Z")

</div>

Hi everyone,

I'm looking for recommendations on the best way to display a live waveform in Ignition Perspective.

Say I have a separate data acquisition/logger application (National Instrument) that is collecting high-speed waveform data and continuously writing it to either a database or a file.

I'd like Ignition Perspective to display that waveform as close to real time as possible, with minimal lag.

What are the different ways for Ignition Perspective to display a live waveform from an external data acquisition system?

Would you recommend having Ignition read directly from a database or file, exposing the live waveform through a REST API or WebSocket, or is there another approach that would be better?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [July 23, 2026, 3:16pm UTC](https://forum.inductiveautomation.com/t/display-high-sampling-rate-waveform-from-another-system/116510/2 "2026-07-23T15:16:09Z")

</div>

The bottleneck will be converting the data to json for display, not getting it into the gateway. (I'd retrieve from the DB, if it is going to be stored there anyways.)

You probably should use Embr charts and push just new data to the browsers using Embr's scripting options.

---

<div class="post-metadata">

**Author:** ![Eugene49](https://avatars.discourse-cdn.com/v4/letter/e/c6cbf5/32.png) [@Eugene49](https://forum.inductiveautomation.com/u/Eugene49)\
**Post date:** [July 23, 2026, 3:57pm UTC](https://forum.inductiveautomation.com/t/display-high-sampling-rate-waveform-from-another-system/116510/3 "2026-07-23T15:57:29Z")

</div>

Thanks for the valuable input, specially on Embr scripting option..

Are you referring to updating the chart incrementally, where only the new samples are pushed to the browser instead of sending the entire waveform each time?

If so, could you elaborate a bit on how you envision the overall flow? For example, where would the scripting typically live, and how would the browser receive the incremental updates?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [July 23, 2026, 4:10pm UTC](https://forum.inductiveautomation.com/t/display-high-sampling-rate-waveform-from-another-system/116510/4 "2026-07-23T16:10:19Z")

</div>

> [@Eugene49](#):
>
> incrementally

Yes.

> [@Eugene49](#):
>
> envision the overall flow?

Named query binding on a **private** view custom prop that brings in data with a WHERE clause that:

- targets the waveform(s) of interest,
- Limits the timestamp range to after the later of the last sample timestamp delivered to the browser, or the beginning of the chart range.

Toolkit iterator expression binding on **private** view custom prop that converts the raw dataset return from the NQ into the "shape" required by Embr's incremental update methods. A change script on this prop would call the chart update, and on success, update the "delivered" timestamp (retriggering the NQ).

---

<div class="post-metadata">

**Author:** ![Eugene49](https://avatars.discourse-cdn.com/v4/letter/e/c6cbf5/32.png) [@Eugene49](https://forum.inductiveautomation.com/u/Eugene49)\
**Post date:** [July 23, 2026, 4:19pm UTC](https://forum.inductiveautomation.com/t/display-high-sampling-rate-waveform-from-another-system/116510/5 "2026-07-23T16:19:01Z")

</div>

Thank you. Your input will save me time a lot.  
I will explore this implementation, and report back.

---

<div class="post-metadata">

**Author:** ![msteele](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/msteele/32/77889_2.png) [@msteele](https://forum.inductiveautomation.com/u/msteele)\
**Post date:** [July 23, 2026, 9:29pm UTC](https://forum.inductiveautomation.com/t/display-high-sampling-rate-waveform-from-another-system/116510/6 "2026-07-23T21:29:17Z")

</div>

You might also want to check out the COMTRADE viewer in the Data Center and Solar demo project downloads.

---

<div class="post-metadata">

**Author:** ![Eugene49](https://avatars.discourse-cdn.com/v4/letter/e/c6cbf5/32.png) [@Eugene49](https://forum.inductiveautomation.com/u/Eugene49)\
**Post date:** [August 31, 2026, 12:33am UTC](https://forum.inductiveautomation.com/t/display-high-sampling-rate-waveform-from-another-system/116510/7 "2026-08-31T00:33:23Z")

</div>

I use embr. Thank you.  
Just playing around, nothing official.  
 ![java_oA5UDHgyt4](https://us1.discourse-cdn.com/inductiveautomation/original/3X/6/5/65d8fa6d62e83dfd1a331823a215055c7cbd6a45.gif)

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [August 31, 2026, 3:38am UTC](https://forum.inductiveautomation.com/t/display-high-sampling-rate-waveform-from-another-system/116510/8 "2026-08-31T03:38:06Z")

</div>

That ui looks very Claude-y. Curious if you used it to gen that view?

---

<div class="post-metadata">

**Author:** ![Eugene49](https://avatars.discourse-cdn.com/v4/letter/e/c6cbf5/32.png) [@Eugene49](https://forum.inductiveautomation.com/u/Eugene49)\
**Post date:** [September 2, 2026, 10:09pm UTC](https://forum.inductiveautomation.com/t/display-high-sampling-rate-waveform-from-another-system/116510/9 "2026-09-02T22:09:08Z")

</div>

Nowadays, one should not ask if ai was involved. I bet even those task that AI must be use least, ai was use.

---

<div class="post-metadata">

**Author:** ![bmusson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bmusson/32/87530_2.png) [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Post date:** [September 2, 2026, 11:10pm UTC](https://forum.inductiveautomation.com/t/display-high-sampling-rate-waveform-from-another-system/116510/10 "2026-09-02T23:10:41Z")

</div>

If you want to go crazy fast/low latency, you can use Embr's SSE module to stream tag changes directly to Perspective sessions.

> <https://github.com/mussonindustrial/embr/blob/8.1/main/modules/sse/README.md>

It’s pretty experimental, but I’m still interested in developing it/pushing it further.
