Table

De tabel-sink toont waarden in een tabelvorm. Er kunnen zowel numerieke als alfanumerieke waarden getoond worden. De waarden in de data van de bron worden in een of meer kolommen getoond. Kolommen kunnen verborgen of getoond worden met behulp van de speciale knop of via het popupmenu dat getoond wordt als met de rechter muisknop op de kolomtitel geklikt wordt. De waarden in de tabel kunnen gesorteerd worden op de waarden in een specifieke kolom door op de kolomtitel van die kolom te klikken. De inhoud van de tabel kan in diverse gangbare bestandsformaten opgeslagen worden.

Tabelvoorbeeld

Tabel met gedecodeerde data van een UART / Serieel-decoder.

Een bron kan op twee manieren verbonden worden met een tabel:

  • sleep de bron op de tabel in het objectscherm
  • sleep de bron op het venster van het tabel.

Om de data die op een bepaalde regel in de tabel wordt getoond in de grafiek te vinden die dezelfde data weergeeft, moet die grafiek eerst de actieve grafiek worden. Dubbelklik dan de gewenste rij in de tabel. De actieve grafiek zal nu horizontaal inzoomen op de data die is weergegeven in de tabelrij.

Wanneer de tabel is ingesteld op "Verzamelen" en data bevat van meer metingen, kan het zijn dat de rij waar op gedubbelklikt is bij een vorige meting hoort. In dat geval kan de actieve grafiek niet inzoomen op de overeenkomstige data en wordt een melding getoond:

Invalid range

Filteren van de tabelinhoud

Wanneer bijvoorbeeld seriële communicatie is gedecodeerd en de gedecodeerde data wordt getoond in een tabel, kan de tabel met een grote hoeveelheid data gevuld zijn, terwijl slechts enkele rijen interessant zijn. Gebruiken van de Filter-optie opent de Filterbalk.

Filter toolbar

De Filterbalk biedt diverse mogelijkheden voor het filteren van de data in de tabel:

  • Een Filtertekstveld, waarin de tekst waarop gefilterd moet worden kan worden ingevuld
  • Een kolomselectie, om aan te geven welke kolom(men) op gefilterd moet worden
  • Filterhistorie
  • Filter-reset
  • Filter met gebruik van expressies
  • Filter met gebruik van reguliere expressies

Filtering op de weergegeven tekst

Wanneer gefilterd wordt gebaseerd op de weergegeven tekst, kan de tekst die gevonden moet worden ingevuld worden in het Filtertekst-veld. Tekst zoeken wordt hoofdletter-ongevoelig gedaan. Alle rijen waarin de gezochte tekst is gevonden worden getoond in de tabel, alle rijen waarin de tekst niet voorkomt, worden verborgen.

Afhankelijk van de instelling van de kolomselectie, wordt gezocht In alle kolommen of alleen in de geselecteerde kolom. Wanneer In alle kolommen is geselecteerd, worden de teksten van de verschillende kolommen samen geplakt met '|'-tekens tussen de afzonderlijke teksten. Daardoor kan gezocht worden op specifieke tekst in aangrenzende kolommen van de tabel. Hier en voorbeeld van I2C-communicatie, voor filteren.

Before filtering

Wanneer bijvoorbeeld alle berichten in een I2C-communicatie waar adres 0x26 wordt benaderd uitgefilterd moeten worden, en alleen Lees-instructies getoond moeten worden, kan de filtertekst 0x26|R gebruikt worden. Dit combineert de waarden in de adreskolom en de R/W-kolom, samengevoegd met een '|'.

After filtering

Bepaalde kolommen die boolean waarden bevatten, zoals bijvoorbeeld "Geldig" of "Ack", kunnen speciale tekens als ✓ en ✕ bevatten. Om deze te vinden is het mogelijk v en x te gebruiken.

Om het filter te resetten en de volledige tabelinhoud weer te tonen kan de knop Filter reset gebruikt worden.

Filtergeschiedenis

De knop Filtergeschiedenis geeft toegang tot een lijst met eerder gebruikte filters en filtergeschiedenis-opties.

Gebruikte filters worden opgeslagen in de tabel-instantie, elke tabel heeft zijn eigen filtergeschiedenis. Wanneer filters zijn gebruikt in een tabel en de setup wordt op schijf opgeslagen in een .TPS-bestand, worden de filters met de tabel opgeslagen. Weer inlezen van de opgeslagen setup haalt ook de eerder in die tabel gebruikte filters weer op.

Beheren

Wanneer een filter actief is, geeft de keuze Beheren in de filtergeschiedenis de mogelijkheid bepaalde extra acties op het actieve filter uit te voeren.

  • Prik vast Dit prikt het actieve filter vast in de geschiedenis, in een aparte sectie. Wanneer de meet-setup wordt opgeslagen in een .TPS-bestand or .TPO-bestand, wordt het filter er bij opgeslagen.
  • Prik vast aan instellingen Dit prikt het filter vast in de programma-instelllingen van de Multi Channel oscilloscoop-software. Iedere nieuwe tabel-sink die gemaakt wordt heeft dit filter in zijn geschiedenis, opgenomen in een aparte sectie.
  • Verwijder Dit verwijdert het actieve filter uit de geschiedenis en ook uit de instellingen van de Multi Channel oscilloscoop-software.

Reguliere expressie

Door Reguliere expressie aan te zetten, zal het filter Perl reguliere expressies gebruikten om de tabeldata te filteren. Dit maakt het mogelijk uitgebreidere filtering te gebruiken, bijvoorbeeld filteren op de inhoud van twee kolommen die niet direct naast elkaar liggen. Hieronder een voorbeeld van een I2C-communicatie, voor filteren.

Voor filtering

Wederom moeten alle lees-berichten in de I2C-communicatie van adres 0x26 worden getoond, alleen zijn de betreffende kolommen dit keer niet direct naast elkaar. Door Reguliere expressie in te schakelen en als filtertekst 0x26.*R in te stellen, zoekt de reguliere expressie naar iedere keer dat "0x26" voorkomt, gevolgd door een willekeurig aantal van willekeurige karakters en dan een "R".

Na filtering

Filteren met gebruik van expressies

Nog meer filteropties komen beschikbaar als Expressie wordt ingeschakeld, wat toegang geeft tot een Lua-scripting-engine waarmee veel krachtigere filterexpressies gemaakt kunnen worden.

Filterbalk met Lua-expressies

Expressies die een syntax-fout bevatten worden rood weergegeven. Expressies die bij de evaluatie een fout opleveren worden oranje weergegeven. Wanneer de muis boven de gekeurde expressie wordt gehouden, zal een hint de fout weergeven.

Filter-expressies worden gemaakt van een of meer variabelen, expressies, instructies en functies, gescheiden door operatoren. De belangrijkste operatoren zijn:

  • and
  • or
  • not
  • == ( is gelijk aan )
  • ~= ( is ongelijk aan )

Getallen in hexadecimaal formaat worden weergegeven als bijvoorbeeld 0x123.
Om een tekst-string weer te geven wordt ' ' of " " om de tekst gezet, bijvoorbeeld 'tekst' of "tekst".

De -knop opent een Expressieknipsels-venster, waarin diverse verschillende delen voor een filter-espressie gekozen kunnen worden.

Filter toolbar with Lua expressions

Om een expressieknipsel in de filter-expressie te gebruiken, moet deze gedubbelklikt worden in het selectiescherm om deze naar de expressie te verplaatsen.

De variabelen waarop gefilterd moet worden kunnen geselecteerd worden in het Expressieknipsels-venster, onder Variabelen. Alleen variabelen aanwezig in de actieve rij van de tabel worden getoond. Wanneer aanvullende informatie beschikbaar is over een "knipsel", wordt een klein pijltje getoond op die regel; dat pijltje klikken opent een pagina met de aanvullende informatie.

Variabelen kunnen verschillende typen hebben:

  • boolean: True of False, in de Tabel weergegeven als ✓ of ✕
  • getal: een geheel getal of een gebriken getal, weergegeven in decimale of hexadecimale notatie.
  • string: enige tekst, bijvoorbeeld 'R' or 'W' of ' 1.234 ms'
  • byte string: een array van bytes, bijvoorbeeld '0 0 76 101 67 114 111 121 32'

Variabelen van type 'byte string' kunnen geïndexeerd worden. De eerste byte heeft index 1. Voorbeeld:

Row.Sources["I²C decoder1"].I2C.Data[3] == 0x4C

Variabelen van type 'string' kunnen niet worden geïndexeerd.

Variabelen kunnen leeg zijn of niet-bestaand voor een bepaalde rij. In dat geval geven deze variabelen nil or een tabel met lege velden terug, Waardoor expressies voor alle rijen geëvalueerd kunnen worden, zonder dat fouten optreden. Of een tabel geldig of leeg is kan worden gecontroleerd met ._Valid.

Voor omzetten van bytes/bits naar getallen zijn speciale unpack-functies beschikbaar, onder Bibliotheken→ multichannel in het Expressieknipsels-venster.

Twee andere nuttige functies voor filteren zijn:

  in_array( waarde , waarden ) controleer of 'waarde' aanwezig is in tabel 'waarden', een tabel wordt aangegeven met {}.
Voorbeeld:
in_array( Row.Sources["I²C decoder1"].I2C.Data[3],{0x4C , 0x65})
toont alle rijen waar de kolom Data de waarde 0x4C of de waarde 0x65 heeft op index 3.
last( .... ) Geeft altijd true terug, maar verbergt alle voorgaande rijen met dezelfde argumenten.
Example:
last(Row.Sources["I²C decoder1"].I2C.Address, Row.Sources["I²C decoder1"].I2C.Flags.Read)
toont de laatste rij voor ieder verschillende adres dat was gelezen en de laatste rij voor ieder verschillend adres dat was geschreven.

Wanneer filter-expressies bedoeld zijn om in .TPS setfiles op te slaan, kan het beste iedere tabelbron een alias gegeven worden. Daarmee blijven referenties intact wanneer de setfile weer ingelezen wordt, omdat objecten dan hernummerd kunnen worden.

Het is vaak mogelijk kortere variabelenamen te gebruiken. In plaats van bijvoorbeeld de variabele Row.Sources["decoder"].I2C.Address, is het ook mogelijk een van de volgende te gebruiken:

  • Row.Sources.decoder.I2C.Address
  • decoder.I2C.Address
  • I2C.Address

Uitgebreide filteropties

Naast expressies is het ook mogelijk stukjes Lua-script te gebruiken. Het script wordt voor iedere tabelrij uitgevoerd. scripts moeten een boolean resultaat teruggeven met 'return <result>'. Dit resultaat moet True zijn om een rij te tonen, False om een rij te verbergen. Wanneer niets wordt teruggegeven, wordt dit beschouwd als een False. Bij expressies wordt onder water een 'return' voor de tekst geplaatst. Als dit een syntax-fout oplevert, wordt getest of de syntax zonder de toegevoegde 'return' correct is.

Iedere tabel-sink krijgt een eigen Lua-omgeving die blijft bestaan tot de tabel wordt gesloten. Deze omgeving wordt geïnitialiseerd door het script TiePie.lua uit te voeren. Gebruikersfuncties kunnen worden geplaatst in het bestand UserCode.lua. In de omgeving wordt een tabel SANDBOX gemaakt, met een subset van de Lua-omgeving. Het filter ziet alleen deze omgeving, om te voorkomen dat een setfile (.TPS) kwaadaardige code kan uitvoeren.

Wanneer een filter wordt uitgevoerd wanneer data wordt toegevoegd aan de tabel, wordt het script per rij uitgevoerd, op volgorde van aankomst van de rijen. Wanneer het filter nogmaals wordt uitgevoerd met de Play-knop of door op Enter te drukken, wordt het script aangeroepen per rij in de volgorde van de tabel. Om de tabelstatus bij te houden tussen opvolgende aanroepen, is er een speciale tabel 'Filter_state'. Deze tabel wordt gewist wanneer en filter opnieuw wordt uitgevoerd.

De huidige rij wordt in het filter gerepresenteerd door de tabel 'Row', deze heeft een aantal speciale velden:

  Row.RowId Dit is de handle van een rij en deze kan gebruikt worden om bijvoorbeeld een rij te verbergen met de functie 'set_row_visible'. Deze handle kan bewaard worden en later weer gebruikt worden.
Row.IsFirst Geeft 'True' terug voor eerste rij in de tabel.
Row.IsLast Geeft 'True' terug voor laatste rij in de tabel.

Speciale functies:

  set_row_visible( rowid, visible ) Hiermee kan een rij verborgen of getoond worden. De functie 'last' maakt hiervan gebruik en houdt een state bij in 'filter_state.last_state'.

Tekst weergeven

Behalve True of False teruggeven, kan het script ook tekst weergeven.

Strings in Lua zijn in bytes, wanneer een string wordt weergegeven wordt aangenomen dat de bytes een utf-8-string zijn.

  print Voor standaard Lua afdrukken, iedere waarde op een nieuwe regel.
write_output Als tekst, maar niet op een nieuwe regel.
set_output_font Om het huidige lettertype in te stellen.
Voorbeeld: om een niet-proportioneel type in te stellen: set_output_font ('Cascadia Mono')
set_output_color Om de huidige tekstkleur met een RGB-waarde in te stellen.
0xFF0000 = blauw, 0x00FF00 = groen, 0x0000FF = rood.
Het is mogelijk de bronkleur te gebruiken.
set_output_bold Om vetgedrukte tekst aan of uit te zetten.
clear_output Om een tekstveld te wissen. De tabel wordt gewist als een filter opnieuw wordt uitgevoerd.

Getallen worden weergegeven als getallen, om een getal naar tekst om te zetten kunnen de volgende functies worden gebruikt.

  char getallen van 0 .. 255 naar bytes die worden gezien als utf-8-string.
Voorbeeld: printchar(230,161,129)) geeft 桁
utf8.char Een getal dat een een Unicode-karacter weergeeft naar utf-8.
Voorbeeld: print(utf8.char( 0x6841)) geeft 桁
bytes_to_utf8(bytes, to_text_options, windows_code_page) Wanneer een Lua-string gezien moet worden als bytes en een andere encoding dan utf-8 wordt gebruikt, kan deze functie worden gebruikt om het nar utf8 om te zetten en optionele extra conversie(s). De opties zijn:

  to_text_options.control_skip char(27)''
to_text_options.control_remap char(27)?
to_text_options.control_brackets_unicode char(27)'[u+001b]'
to_text_options.control_brackets_dec char(27)'[27]'
to_text_options.control_brackets_hex char(27)'[0x1b]'
to_text_options.control_brackets_mnemonic char(27)'[ESC]'
to_text_options.control_print_cariage_return Wanneer control-karakters omgezet worden, toch op een nieuwe regel beginnen
to_text_options.control_print_newline Wanneer control-karakters omgezet worden, toch op een nieuwe regel beginnen
to_text_options.control_print_tab Wanneer control-karakters omgezet worden, toch een gewone tab afdrukken

Deze opties kunnen met '|' ge-OR'd worden.

De windows_code_page is een getal, zie hiervoor Windows code page.

Instellingen en acties

Om het gedrag van een tabel-sink aan te passen zijn diverse instellingen en acties beschikbaar. Deze zijn beschikbaar via een popupmenu dat getoond wordt als met rechts op de sink geklikt wordt in het objectscherm.

Reset

De Reset-actie () reset de tabel, wist de tabel inclusief de kolomtitels. De Reset-actie is beschikbaar als knop op de knoppenbalk en in het popupmenu.

Layout

Wanneer een tabel meer bronnen heeft, bepaalt de Layout-instelling wat er gebeurt met data van verschillende bronnen met dezelfde tijdstempel of die dezelfde kolommen gebruikt.

  • Wanneer ingesteld op Gemeenschappelijke kolommen , wordt data van verschillende bronnen die een gemeenschappelijke waarde hebben in verschillende rijen getoond, maar delen die kolom.
  • Wanneer ingesteld op Gemeenschappelijke rijen , wordt data van verschillende bronnen die een gemeenschappelijke waarde hebben in dezelfde rij getoond, waarbij een extra kolom wordt gemaakt.
  • Wanneer ingesteld op Niet gemeenschappelijk , wordt data van verschillende bronnen in verschillende rijen getoond en iedere waarde voor iedere bron krijgt een eigen kolom.

De layout van een tabel kan alleen worden ingesteld voor de bronnen worden aangesloten.

Exporteer data

De actie Exporteer data () slaat de inhoud van de tabel op in een bestand. Wanneer regels in de tabel zijn geselecteerd, worden alleen de geselecteerde regels geëxporteerd. Wanneer geen regels zijn geselecteerd, wordt de gehele tabel geëxporteerd.

Diverse bestandstypen om de gegevens in op te slaan zijn beschikbaar:

  • HTML-formaat (*.html)
  • Rich Text-Formaat (*.rtf)
  • CSV (*.csv)
  • Unicode tekst (*.txt)
  • Plain tekst (*.txt)

De actie Exporteer data is beschikbaar als knop op de knoppenbalk en in het popupmenu.

Kopieer naar klembord

De actie Kopieer naar klembord () kopieert de inhoud van de tabel naar het Windows klembord, waarvandaan het in verscheidene andere toepassingen geplakt kan worden. De actie Kopieer naar klembord is beschikbaar als sneltoets Ctrl + C, als knop op de knoppenbalk en in het popupmenu.

Wissen

De Wissen-actie () wist de tabel maar laat de kolomtitels intact. De Wissen-actie is beschikbaar als knop op de knoppenbalk en in het popupmenu.

Verzamel data

De instelling verzamel data ) bepaalt of de tabel alle data verzamelt of alleen de laatste data weergeeft. Wanneer ingeschakeld wordt nieuwe data toegevoegd aan de tabel, waarbij de tabel langer wordt. Wanneer uitgeschakeld wordt de tabel eerst gewist and de nieuwe data getoond wordt.

Stel kruisdraden grafiek in

Wanneer een rij in de tabel dubbel geklikt wordt, zoomt de actieve grafiek horizontaal in op het deel van het signaal dat overeenkomt met de tabelrij. Wanneer de instelling Stel kruisdraden grafiek in( ) ingeschakeld is, worden verticale kruisdraden in de grafiek geplaatst, die de start- en eindmomenten markeren van het deel van het signaal dat overeenkomt met de tabelrij.

Scroll automatisch naar beneden

De instelling Scroll automatisch naar beneden () zorgt er voor dat de tabel iedere keer dat nieuwe data ontvangen is naar beneden gescrold wordt, zodat de nieuwste data zichtbaar is. De actie Scroll automatisch naar beneden is beschikbaar als knop op de knoppenbalk.

Kolommen automatisch schalen

De actie Kolommen automatisch schalen () stelt de breedte van alle zichtbare kolommen zo in dat alle data en de titel in de kolom passen. De actie Kolommen automatisch schalen is beschikbaar als knop op de knoppenbalk.

Selecteer kolommen

Met de knop Selecteer kolommen () wordt bepaald welke kolommen worden getoond en verborgen. De knop opent een selectiescherm met de beschikbare kolommen.

Toon instellingenscherm bron

De knop Toon instellingenscherm bron () opent het instellingenscherm van de bron die met de tabel is verbonden. Als meer bronnen zijn verbonden met de tabel wordt een selectiemenu getoond waarin de gewenste bron kan worden gekozen.

Altijd op voorgrond

Als de instelling Altijd op voorgrond () is ingeschakeld, zal het venster van de tabel niet verborgen worden onder een ander venster van de Multi Channel oscilloscoop-software. De instelling Altijd op voorgrond is beschikbaar als knop op de knoppenbalk en in het popupmenu.

Naar voorgrond

Wanneer het tabelscherm verborgen is achter een ander venster van de Multi Channel oscilloscoop-software, maakt de actie Naar voorgrond het weer zichtbaar. De actie is beschikbaar in het popupmenu.

Algemene instellingen en acties

Gerelateerde informatie

Puls-decoder

De Pulsdecoder I/O decodeert twee signalen van een kwadratuurencoder naar een pulsaantal/positie.

I2C-decoder

De I2C-decoder-I/O converteert analoge data op een I2C-bus naar I2C-data.

UART / Serieel-decoder

De UART / Serieel-decoder-I/O decodeert analoge data op een UART, RS232, RS458, MIDI, DMX, LIN en andere gelijkaardige seriële bus naar seriële data.

CAN-decoder

De CAN-decoder I/O decodeert analoge data op een CAN-bus tot CAN-data.

J1939-decoder

De J1939-decoder-I/O haalt SAE J1939 SPN-waarden uit CAN-berichten.

SPI-decoder

De SPI-decoder-I/O converteert analoge data op een SPI-bus naar SPI-data.

LIN-decoder

De LIN-decoder-I/O decodeert analoge data op een Local Interconnect Network bus naar LIN-berichten.

SENT-decoder

De SENT-decoder-I/O decodeert analoge data op een SENT bus naar SAE J2716 SENT-berichten.

DMX512-decoder

De DMX512-decoder-I/O decodeert analoge data op een DMX512bus naar DMX512-berichten.

Waarde-extractor

De Waarde-extractor-I/O haalt een specifieke waarde uit een gedecodeerde seriële communicatie en maakt deze beschikbaar voor grafieken, meters en tabellen.