Test and measurement
Digital Waveform <smart-digital-waveform>
DigitalWaveform displays digital lines against time, one row per line, with lines grouped into buses whose words are written in hex, binary or decimal: the view of a logic analyser.
Getting Started with Digital Waveform in Blazor
Smart.Blazor.Industrial targets .NET 6 and later, for Blazor Server and Blazor WebAssembly.
The Digital Waveform component is part of the Smart.Blazor.Industrial NuGet package, which contains all 54 Industrial components as Razor components. The package includes the Smart.Industrial runtime in its wwwroot and does not depend on Smart.Blazor.
Quick start
- Install the package:
dotnet add package Smart.Blazor.Industrial
- Add the styles and the runtime to the application page (
App.razor,_Host.cshtmlorindex.html):
<link rel="stylesheet" href="_content/Smart.Blazor.Industrial/css/smart.default.css" /> <link rel="stylesheet" href="_content/Smart.Blazor.Industrial/css/smart.industrial-elements.css" /> <link rel="stylesheet" href="_content/Smart.Blazor.Industrial/css/smart.industrial.css" /> <script src="_content/Smart.Blazor.Industrial/js/smart.blazor.js"></script> <script src="_content/Smart.Blazor.Industrial/js/smart.industrial.js"></script>
- Register the services in
Program.csand add the namespace to_Imports.razor:
using Smart.Blazor.Industrial; builder.Services.AddSmartIndustrial();
@using Smart.Blazor.Industrial
- Use the component in a page. In a Blazor Web App (.NET 8 and later) the page needs an interactive render mode:
@rendermode InteractiveServeras below,InteractiveWebAssemblyorInteractiveAuto, or one render mode for the whole app on<Routes @rendermode="InteractiveServer" />inApp.razor. Without it the component renders as an empty box and its parameters and events do not arrive. On .NET 6 and 7 leave the@rendermodeline out. The parameters are the component's properties in PascalCase; the events areEventCallbacks namedOn<EventName>. This is the first element of the demo:
@page "/" @* .NET 8 and later: an interactive render mode, on the page or for the whole app *@ @rendermode InteractiveServer <DigitalWaveform Label="SPI capture, 100 MS/s" XLabel="Time" OnCursorChange="OnCursorChange" /> @code { void OnCursorChange(Event ev) { // Event is a Dictionary<string, dynamic>; "Detail" is the typed detail of the event. DigitalWaveformCursorChangeEventDetail detail = ev["Detail"]; // React to the change here. } } - The component raises
OnCursorChangeto report what the operator did. The typed detail classDigitalWaveformCursorChangeEventDetailcarries the event data. - Set the license key once, in
Program.cs:Smart.Blazor.Industrial.License.Key = "YOUR-KEY";
Parameters
The most used parameters of <DigitalWaveform>; the API page lists them all.
| Parameter | Type |
|---|---|
Signals | IEnumerable<object> |
Buses | IEnumerable<object> |
XLabel | string |
XUnit | string |
XMin | double |
XMax | double |
Cursors | IEnumerable<object> |
RowHeight | int |
LabelWidth | int |
ShowGrid | bool |
ShowCursorLegend | bool |
ShowLines | bool |
Events
OnCursorChange, OnZoom, OnRowClick
The frameworks guide describes the parameter types, the naming rules and the request/confirm round trip in C#.