# Kst-utökningar

&kst;-utökningar är ett kraftfullt sätt att lägga till funktioner i &kst;. De kan till exempel lägga till element i &kst;s användargränssnitt. De konstrueras oftast för att åstadkomma särskilda uppgifter som inte är av allmänt intresse för alla användare av &kst;.

Välj Inställningar Utökningar... för att ladda eller ta bort utökningar i &kst;. En dialogruta visas som låter dig ladda eller ta bort installerade insticksprogram.

Utökningsdialogrutan

## Elog-utökningen

Elog-utökningen tillåter att händelsebevakning skapar poster i en loggbok på en server som kör pogrammet Electronic Logbook (Elog). Posterna i loggboken kan till exempel användas för att bevaka &kst;-händelser från en annan dator, eller skapa periodiska datarapporter. För information om att ställa in och underhålla en Elog-server, se den officiella hemsidan för Elog. Välj Inställningar Utökningar... och försäkra dig om att Elog-utökning är markerad, för att aktivera Elog-utökningen i &kst;.

### Server- och logginställningar

Server- och logginställningar måste ställas in innan en post läggs till i loggboken. För att anpassa logginställningar, välj Inställningar Elog... eller klicka på knappen Inställning... i dialogrutan Elog-post som antingen kan kommas åt från Arkiv Lägg till Elog-post... eller dialogrutan Händelsebevakning om Elog-funktionen är aktiverad för ett händelsebevakningsobjekt. Följande dialogruta ska visas:

Serverinställningar för händelsebevakning
Serverinställningar för händelsebevakning

Beskrivningar av inställningarna i den här dialogrutan följer.

Anpassa, Spara och Ladda

  Kombinationsrutan Inställning innehåller en lista med sparade Elog-serverinställningar. För att ladda en uppsättning inställningsalternativ, välj ett objekt i listan och klicka på knappen Ladda. För att spara nuvarande inställningsalternativ på en plats, välj önskad plats och klicka på knappen Spara.

  Att spara inställningar på en plats skriver över alla befintliga inställningar på den platsen.

IP-adress och Portnummer

  Skriv in IP-adressen för datorn som kör Elog-serverprogrammet. Portnumret som Elog-servern lyssnar på kan ställas in via servern, men standardvärdet är 8080, så om du är osäker skriv in 8080 som portnummer.

Loggbok

  Varje Elog-server kan innehålla en eller flera loggböcker, så namnet på loggboken där poster ska skrivas måste anges. Försäkra dig om att stavningen av loggbokens namn är riktigt.

Användarnamn, Användarlösenord och Skriv lösenord

  Beroende på hur Elog-serverprogrammet är inställt, kan dessa inställningar vara nödvändiga eller inte. Om de är det, skriv in riktig inloggningsinformation i de lämpliga textrutorna.

Dumpstorlek

  Använd den här listrutan för att välja storleken, i bildpunkter, av &kst;s skärmdump som ska bifogas (om den anges).

Skicka in som HTML-text

  Om den här kryssrutan är markerad, kan HTML-taggar användas i loggbokens indata.

Undertryck e-postbekräftelse

  Om loggboken är inställd att skicka e-postbekräftelser för nya objekt, inaktiveras bekräftelserna genom att markera kryssrutan. Observera att det här alternativet inte hör ihop med &kst;s egna inställningar av e-postbekräftelser för händelsebevakning.

Verkställ

  Klicka på Verkställ för att verkställa de inskrivna inställningarna.

Uppdatera

  Klicka på Uppdatera för att uppdatera dialogrutan Inmatning av Elog-händelse.

Stäng

  Klicka på Stäng för att avsluta dialogrutan.

### Lägg till en Elog-post

Välj Arkiv Lägg till Elog-post... för att lägga till en post i loggboken. Det visar en dialogruta som låter användaren ange information för egenskaper, samt skriva loggmeddelandets innehåll. Egenskapernas typ beror på loggbok som anges. Skärmbilden nedan visar ett exempel på möjliga egenskaper som krävs.

Att lägga till en post
Att lägga till en post

Lagrad information

  Använd de tre kryssrutorna längst ner för att välja vilken typ av information som ska loggas.

  - Inkludera Kst-skärmbild anger att en skärmbild av fönstret som för närvarande är aktivt ska ingå i posten.

  - Inkludera Kst-inställningsfil anger att `*.kst` sparade filer ska biläggas posten.

  - Om Inkludera Kst-felsökningsinformation är markerat, biläggs dessutom en kopia av felsökningsloggen till posten.

Inställning...

  Genom att klicka på Inställning... visas dialogrutan Elog-inställning. Se avsnittet Inställning av server och loggning för detaljinformation.

Skicka

  Klicka på Skicka för att skicka in loggposten.

Avbryt

  Klicka på Avbryt för att stänga dialogrutan utan att skicka in loggposten.

När Elog-funktionen är aktiverad för ett händelsebevakningsobjekt, gör ett klick på knappen Inställning... i dialogrutan Ny händelsebevakning att dialogrutan Elog händelseinmatning visas. I denna dialogruta kan användaren mata in information för loggbokens egenskaper. Återigen beror typ av egenskaper på loggboken som är inställd i Elog-inställningsdialogrutan.

Loggningsinställningar för händelsebevakning
Loggningsinställningar för händelsebevakning

Lagrad information

  Se förklaring ovan.

Inställning...

  Se förklaring ovan.

Test

  Knappen används för att prova Elog-inställningen. Om den användarspecificerade loggboken är rätt inställd, skickas ett provmeddelande till loggboken genom att klicka på Test: Test av Elog-händelsepost.

Stäng

  Klicka på Stäng för att stänga dialogrutan.

### Elog-bläddrare

Välj Arkiv Starta Elog-bläddrare... för att visa befintliga loggböcker via Kst.

Starta Elog-bläddrare
Elog-bläddrare

För att snabbt visa Elog-bläddraren och lägga till en post i en loggbok, klicka bara på Elog-bläddrare i verktygsraden för att starta Elog-bläddraren och Postikon för att lägga till en Elog-post.

### Använda klassen ELOG i Kst-skript

Som ett alternativ kan användare också använda klassen ELOG som tillhandahålls i Kst-skript för att skriva och skicka in meddelanden i loggboken, samt ändra server- och logginställningar. Se information i Dokumentation av klassen ELOG.

#### Lägga till en Elog-post via Kst-skript

    elog = new ELOG();                         // skapa ett nytt ELOG-objekt
    elog.port = 8080;                         // ange porten
    elog.hostname = "localhost";                 // ange värddatornamnet
    elog.logbook = "demo";                         // ange loggboken
    elog.text = "meddelande";         // skriv meddelandet
    elog.addAttribute("Author", "Kst");
    elog.addAttribute("Type", "Routine");

    elog.submit();

## Kst-skript

Kst-skript är en anpassning av Javaskript till &kst;. Dess mål är att erbjuda fullständiga möjligheter att styra alla aspekter av &kst;. Välj Inställningar Utökningar... och försäkra dig om att Javaskript-utökning är markerad, för att aktivera Kst-skript.

### Att köra ett Kst-skript

Det finns tre sätt att köra ett Kst-skript.

- Från kommandoraden när &kst; startas:

      kst -E js:"loadScript('mitt_skript.js')"

- Genom att använda kstcmd, vilket är en Javaskript-tolk som ansluter till en &kst;-session. Den kan köras från en extern terminal, eller inifrån &kst; själv, genom att välja Verktyg Visa Javaskript-terminal.

      kstcmd
      Attached to Kst session kst-17704
      kst
      > loadScript(mitt_skript.js)

- Från menyn när &kst; väl har startats: Arkiv Ladda Javaskript

Observera att med de första två sätten kan vilket Kst-skript-kommando som helst, eller vilken samling av Kst-skript-kommandon som helst, ersätta kommandot loadscript.

### Exempel på Kst-skript

Kst-skript ger &kst; ett kraftfullt programmeringsgränssnitt. I huvudsak kan det användas för att skapa smarta makrofunktioner för vanliga uppgifter. Vi tar först en titt på ett grundläggande exempel, som åskådliggör hur &kst; styrs via Kst-skript, och därefter tar vi en titt på ett exempel med en makrofunktion.

#### Ett enkelt Kst-skript

Här har vi det enklast möjliga Kst-skriptet: rita upp en kurva från slumptal.

    // enkel.js: Ett enkelt exempel på ett Kst-skript.
    // Skapar ett nytt diagram med en kurva av slumptal.

    // Lagra fönstret
    var w = Kst.windows[0];

    // Lägg till ett diagram i fönstret
    var p = new Plot(w);

    // Skapa nya (redigeringsbara) vektorer.
    // De skulle också kunna ha laddats från filer.
    var xv = new Vector(); var yv = new Vector();

    xv.tagName = "time"; yv.tagName = "signal";

    // Gör deras längd till 100.
    xv.resize(100); yv.resize(100);

    // Fyll i deras värden.
    for (var i = 0; i < 100; i++) {
            xv[i] = i; //index
            yv[i] = Math.random(); // Likformigt distribuerat mellan 0 och 1.
    }

    // Skapa en kurva från X och Y
    var c = new Curve(xv,yv);
    c.tagName = "signalvstime";

    // Lägg till kurvan i det nya diagrammet
    p.curves.append(c);

    // Namnge X-axeln i vårt diagram
    p.xAxis.label = "Tid (s)"

Skriptet kan köras med vilken som helst av metoderna i . Här är en skärmbild av &kst; efter att kommandona har matats in via metoden med inbäddad terminal.

Enkel utmatning

I &kst;s grafiska gränssnitt betecknas inte objekt med de variabelnamn som vi använder i vårt Kst-skript, utan hänvisas till med sina taggnamn (eller "unika namn"). Om du inte anger taggnamnet för nya objekt manuellt, hittar du kryptiska namn som anonym vektor 1, eller . Det är orsaken till att vi tar emot flera meddelanden med odefinierad ovan. Om du någonsin avser att använda det grafiska gränssnittet för att arbeta med objekt du har skapat med Kst-skript, bör du ange egenskapen taggnamn för dem. Du kan också använda taggnamn i Kst-skript själv. Efter att ha angett taggnamnet på den nya kurvan, skulle vi kunna ha anropat:

    p.curves.append("signalvstime");

#### Skriva, inkludera och anropa funktioner

Som med alla Javaskript-miljöer, kan du skriva och anropa funktioner med Kst-skript. Dessutom äger Kst-skript ett sätt att ladda funktioner från disk ifrån ett Kst-skript. Betrakta följande exempel:

    // subrutiner.js

    function takeSpectraOfTimePlots() {
    // Tar alla diagram i det första fönstret som har X-axeln "Tid (s)"
    // och skapar effektspektra för deras kurvor, som läggs i ett enda nytt
    // diagram.
            var w = Kst.windows[0];
            var p = new Plot(w);
            p.xAxis.label = "Frekvens (Hz)"

            for (var ip = 0; ip < w.plots.length; ip++ ) {
                    cp = w.plots[ip]; // aktuellt diagram
                    if (cp.xAxis.label == "Tid (s)") {
                            for (ic = 0; ip < cp.curves.length; ic++) {
                                    plotSpectrum(p,cp.curves[ic].yVector)
                            }
                    }
            }
    }

    function plotSpectrum(p,v) {
    // Skapar ett effektspektrum för vektorn v och visar det i diagrammet p. Antar
    // att vektorn är data som samplas med 1 Hz.
            ps = new PowerSpectrum(v, 1);
            ps.tagName = v.tagName + "-PS";
            c = new Curve(ps.xVector,ps.yVector);
            c.tagName = ps.tagName + "-C";
            p.curves.append(c);
    }

Exemplet innehåller två funktioner: `takeSpectraOfTimePlots()` och `plotSpectrum(p,v)`. takeSpectraOfTimePlots() är en makrofunktion som skapar spektra för alla diagram i det första fönstret som har "Tid (s)" som X-axel. I exemplet kan vi se hur kraftfullt Kst-skript är för sådana uppgifter.

Följande skript laddar rutinerna från `subrutiner.js`. Det använder `enkel.js` från föregående avsnitt för att skapa ett brusdiagram med en tidsaxel, och därefter anropa takeSpectraOfTimePlots() för att hitta dess spektrum. Observera att `subrutiner.js` laddas med `loadScript()`, samma anrop som användes på kommandoraden i .

    // anropasubs.js
    // Demonstrera anrop av subrutiner

    loadScript('subrutiner.js');
    loadScript('enkel.js');

    takeSpectraOfTimePlots();

En skärmbild av &kst; efter att dessa kommandon har utförts visas nedan.

Utmatning från anropasubs

### Ytterligare dokumentation av Kst-skript

Fullständig dokumentation om klasser i Kst-skript finns i Appendix D.