Skip to main content

System

Sisältää käyttöjärjestelmään ja laitteistoon liittyviä funktioita. 

System.base64encode (strTxt)
System.base64decode (strTxt)
strTxt        Tulostettava teksti

Koodaa ja dekoodaa tekstiä tai binääridataa base64 -muotoon. Kyseistä koodaustapaa käytetään usein binäärimuotoisen datan siirtämiseksi vain tekstimuotoa tukevan linjan ylitse – usein ascii 7-bit.

Paluuarvot
          Palauttaa koodatun tai dekoodatun datan.

Esimerkki:
-- Lue binääri dataa tiedostosta ja koodaa se 
local bin = file:read (”*a”)
local coded = System.base64encode(bin)

System.shell (strCmd)
strCmd        Suoritettava komento

Suorittaa komennon järjestelmän shellissä (synkronisesti, eli kutsuva käyttöjärjestemän prosessi odottaa että komento on suoritettu kokonaan) ja palauttaa komennon stdout:iin tulostaman tekstin riveittäin taulukossa. Palautettu taulukko on numeraalisesti indeksoitu 1 eteenpäin, ja yksi tulosteen rivi vastaa yhtä taulukon riviä.

Palauttaa nil jos komentoa ei voitu suorittaa, ja tyhjän taulukon jos komento ei tulosta mitään std out:iin.

Komento palauttaa toisena paluuarvona suoritetun komennon paluuarvon, eli n.s. exit code:n. 

Esimerkki:
-- hakemiston tiedostot
-- huom! että kaksi ensimmmäistä aina . Ja ..
-- ne pitää ohittaa

local dir, ec = System.shell (”ls /tmp/*”)
if #dir > 2 and ec == ”0” then
    for i = 3, #dir do 
        print (dir[i])
    end
end

System.log (prio, strCmd)

prio              Loki merkinnän kiireellisyys. Kokonaisluku välillä 0 .. 7 jossa 0 vähiten kiireellinen (debug).
strCmd        Tulostettava teksti

Kirjoittaa merkinnän järjestelmä lokiin. 

Paluuarvot
          true mikäli onnistuu, muuten nil.

Esimerkki:
Slc.log(0, ”This is my system log info”)


System.nanosleep (intDly)
intDly        Viive nanosekunteina

Vastaa POSIX kutsua nanosleep(). Asettaa kutsuvan säikeen uneen (minimissään) annetuksi ajaksi.

Esimerkki:
-- Plc ohjelma odottaa 1 millisekunnin
Slc.nanosleep (1000000)


System.nanotimer ()
Ei argumentteja

Palauttaa järjestelmän tarkkuusajastimen nykyisen arvon. Ajastin on laskuri (uint64), joka alkaa juosta 0:sta kun käyttöjärjestelmä käynnistyy. Sen laskee nanosekuntteja, ja sen todellinen tarkkuus on usein noin 40 nanosekunnin luokkaa (ARM cortex A8).

Esimerkki:
print (”Current hires timer value: ”.. System.nanotimer () )


System.parseUrl (strUrl)
strUrl        Url teksti

Parsii URL merkkijonon, ja palauttaa URL eri kentät talukossa. 

Esimerkkinä:
URL:  https://areena.yle.fi/tv/ohjelmat/sarjat?t=uusimmat

Parsittu taulukko: 
URL_taulukko = {
    protocol = ”https”,
    user = ””,
    pass = ””, 
    address=”areena.yle.fi”,
    port=””,
    fullpath=”/tv/ohjelmat/sarjat”,
    path={”tv”, ”ohjelmat”, ”sarjat”},
    paramstring=”t=uusimmat”,
    params={t=”uusimmat”}
}

Toinen esimerkki:

URL: 
http://name:secret@www.google.com:8080/this/is/path/file.xml?param1=1&meaning=42

Parsittu taulukko: 
{
    protocol = "http",
          user = "name",
            pass = "secret",
            address = "www.google.com",
            port = "8080",
            fullpath = "/this/is/path/file.xml",
            path = {"this", "is", "path", "file.xml" },
            paramstring = "param1=1&meaning=42",
            params = {
                param1 = "1",
                meaning = "42"
            }
}


Virhetilanteessa funktio voi palauttaa arvon nil.

Esimerkki:

local parsed = System.parseUrl ( urlString )
if parsed.protocol == ”http” then
    -- Handle http request
end


System.encodeUrl (strData)
System.decodeUrl (strData)
strData        Tulostettava teksti

Kun käsitellään URL tekstejä, on itse lokaattorin lopussa annettavien parametrien arvot koodattava niin sanotulla prosentti koodauksella. Näillä funktioilla voidaan tehdä parametrien arvojen prosenttikoodaus, ja dekoodaus.

Paluuarvot
          koodattu tai purettu teksti.

Esimerkki:
-- Palauttaa meik%C3%A4%0A
local encoded = System.encodeUrl (”meikä”)


System.serialize (data)
data        Serialisoitava data (merkkijono, luku, taulukko)

Tekee lua objekteille niin sanotus sarjoituksen, eli serialisoinnin. 

Täma muunnos tarkoittaa että objekti muutetaan takaisin lähdekoodi -muotoon. Tätä muunnosta tarvitaan esimerkiksi silloin kun lua taulukko halutaan siirtää tcp yhteyden ylitse toiseen laitteeseen, tai vain IPC-kanavan lävitse laitteen muistissa toiseen prosessiin, tai tallentaa tiedostoon.

Serialisoitu objekti on helppoa palauttaa takaisin ohjelmassa käsiteltäväksi, koska se voidaan ”ajaa” normaalissa lua tulkissa.

Vastaa suurinpiirtein javascriptin JSON.stringify() kutsua.

Tämä funktio on käyttökelpoinen paitsi tiedonsiirrossa ja tallentamisessa, myös ohjelmien debuggauksessa, koska miltei mikä tahansa objekti voidaan tulostaa tekstimuodossa vaikkapa konsoliin ohjelmoijan tarkasteltavaksi.

Paluuarvot
          Annettu objekti tekstimuodossaan merkkijonona, tai nil mikäli kutsuttiin virheellisillä arvoilla.


System.importCSV (strCsv [, strDlm] )

strCsv         Tab eroteltu data
strDlm        Sarakeet erottava merkki, oletus on \t eli tabulaattori

Tämä funktio luo CSV muotoisesta – tai oletusarvoisesti TAB-erotellusta tekstistä – taulukon ja palauttaa sen. 

Nimestään huolimatta oletus sarake-erottimelle on ’\t’. 

Luotavan rivin nimen oletetaan löytyvän sarakkeesta, jonka nimi on  ”dataname”, ”pointname”, ”rowname”, ”datapoint” tai ”keyname”  – kaikki edellämainitut ovat synonyymejä.

Esimerkki:
csv = [[name    description        pv
data1        tunnit        7.0
data2        minuutit        15.0
data3        sekunnit        23.0
data4        paivat        1.0
]]

local d = System.importCSV (csv)

>> taulukon d sisältö:
d = {
    data1 = {description = ”tunnit”, pv = 7},
    data2 = {description = ”minuutit”, pv = 15},
    data3 = {description = ”sekunnit”, pv = 23},
    data4 = {description = ”paivat”, pv = 1}
}

System.archInfo ()

Funktio palauttaa taulukossa laitteiston käyttöjärjestelmän ja prosessoriarkkitehtuurin. 

Palauttaa taulukon, jossa rivit
    os         Käyttöjärjestelmän nimi.  Joitakin tavallisia arvoja ovat mm. 
                 Ubuntu, Builtroot, Debian.

    arch     Prosessoriarkkitehtuuri. Tyypillisiä arvoja ovat 
                armv7l (beagle bone) ja x86_64


Esimerkki:
local d = System.archInfo (csv)
print (”Käyttöjärjestelmä: ”.. d.os)


System.getNetworkInterfaces ()

Funktio palauttaa taulukossa järjestelmän verkkosovittimet ja niiden asetukset.


System.pid ()

Funktio palauttaa kutsuvan prosessin (yleensä slc engine) process ID (eli pid) numeron. Tämä on se tekninen tunnus, jolla käyttöjärjestelmä tunnistaa prosessit, ja jonka avulla voi lähettää mm. signaaleita prosessien välillä.


System.sendSig (pid, signal)
pid    (int) prosessin ID numero
signal     (int) signaali joka lähetetään (kts. posix singals)

Funktion avulla voi lähettää signaalin käyttöjärjestelmäprosessien välillä.  Palauttaa true onnistuessaan, ja nil mikäli kutsussa ilmeni virhe.