bonescript

csatlakozzon a csevegéshezBuild Statuslefedettség állapota

a BoneScript egy csomópont.js könyvtár fizikai számítástechnikai beágyazott Linux, kezdve támogatja a BeagleBone.

a nyelvre vonatkozó információk ahttps://nodejs.org címen érhetők el.

a verzió ellenőrzéséhez és annak ellenőrzéséhez, hogy a BoneScript az elérési útjában van-e, próbálja meg futtatni:

node -pe "require('bonescript').getPlatform().bonescript"

további dokumentáció érhető el a https://beagleboard.org/bonescript címen.

a koncepció az, hogy használja Arduino-szerű funkciók írt JavaScript tosimplify tanulás, hogyan kell csinálni a fizikai számítási feladatok alatt beágyazott Linuxés további támogatást nyújt a gyors létrehozása GUI a embeddedapplications használatával HTML5/JavaScript weboldalakat.

globális telepítés

a BoneScript telepítve van a BeagleBone-ra. A legújabb verzióra való frissítéshez használja az ‘ npm ‘- t egy nemrégiben BeagleBoard.org Debian kép innen: https://beagleboard.org/latest-imagesand végezze el:

TERM=none sudo npm cache clearTERM=none sudo npm install -g --prefix /usr/local --unsafe-perm bonescriptsudo shutdown -r now

más disztribúciók tesztelése korlátozott.

vannak további telepítési lépések, amelyek végrehajthatók, de jellemzően más mechanizmusok telepítik a BeagleBoard.org Debian képek. Ezek setupbackground szolgáltatások (bone101 webszerver bonescript RPC és bonescript autorunservice), valamint konfigurálja a környezeti változók ezeket a szolgáltatásokat és másglobálisan fut szkriptek.

sudo cp bonescript/etc/default/node /etc/default/nodesudo cp bonescript/etc/profile.d/node.sh /etc/profile.d/node.shsudo cp bonescript/systemd/\* /lib/systemd/systemsudo systemctl enable bonescript.socketsudo systemctl enable bonescript-autorun.service

alkalmazások folyamatos indítása

ahhoz, hogy az alkalmazások indításkor elinduljanak, egyszerűen dobja őket a/var/lib/cloud9/autorun mappába. A mappából való eltávolításuk megöli a folyamatokat. Várhatóan csak a már hibamentes alkalmazásokat dobja be ebbe a mappába, mivel nincs jó módszer a hibakeresés végrehajtására.

megjegyzés a kódállapotról

még mindig sok fejlesztés folyik, ezért feltétlenül nézzen vissza a gyakori alapon. Sok a szakértő perifériák még nem támogatottkivéve teljesítő fájl I / O.

Könyvtár elrendezés

  • index.js: fő BoneScript forráskód
  • autorun.js: csomópont.JS app alkalmazások futtatásához esett az autorun mappa
  • csomagot.JSON: NPM.JS csomag leíró
  • szerver.js: DTS: Devicetree sablonok
  • etc: konfigurációs fájlok a cél disztróban
  • src: könyvtár forráskód
  • systemd: konfigurációs fájlok a systemd számára a szolgáltatások elindításához
  • test: to-be-automated teszt kód

sablon

egy BoneScript alkalmazáshoz manuálisan kell ‘require’ thebonescript könyvtár. A függvényekre ezután az objectprovided-en keresztül hivatkozunk vissza a require-től.

elkezdtem Arduino-szerű beállítási/hurok funkciókat biztosítani, de a Theidea valóban nem felel meg a JavaScript-nek. A JavaScript nativeflow használata a legjobban működik, de az ismerős funkciók elegendőek ahhoz, hogy fellendítsék a fizikai számítási termelékenységet.

íme egy példa:

var b = require('bonescript');b.pinMode('P8_12', b.INPUT);b.pinMode('P8_13', b.OUTPUT);setInterval(copyInputToOutput, 100);function copyInputToOutput() { b.digitalRead('P8_12', writeToOutput); function writeToOutput(x) { b.digitalWrite('P8_13', x.value); }}

a ‘P8_12’ és a ‘P8_13’ pin-nevek a táblán, és a fenti példa átmásolja a p8_12 bemeneti értéket a p8_13 kimenetre minden 100 ms-ban.

API

amikor visszahívás történik, a függvények úgy fognak viselkedni, hogy a aszinkron módon.Visszahívás nélkül a funkciók szinkronizálódnak és befejeződnekvisszatérés előtt.

System

  • getPlatform() -> platform
  • getEeproms() -> eeproms
  • echo(data, ) -> data
  • readTextFile(filename, ) -> data
  • writeTextFile(filename, data, )
  • setDate(date, )

Digital and Analog I/O

  • analogRead(pin, ) -> value
  • analogWrite(pin, value, , )
  • attachInterrupt(pin, handler, mode, )
  • detachInterrupt(pin, )
  • digitalRead(pin, ) -> value
  • digitalWrite(pin, value, )
  • pinMode(pin, direction, , , , )
  • getPinMode(pin, ) -> pinMode
  • shiftOut(dataPin, clockPin, bitOrder, val, )

Serial

Uses https://github.com/voodootikigod/node-serialport

  • serialOpen(port, options, )
  • serialWrite(port, data, )
  • serialParsers is serialport.parsers

I2C

Uses https://github.com/korevec/node-i2c

  • i2cOpen(port, address, options, )
  • i2cScan(port, )
  • i2cWriteByte(port, byte, )
  • i2cWriteBytes(port, command, bytes, )
  • i2cReadByte(port, )
  • i2cReadBytes(port, command, length, )
  • i2cStream(port, command, length, )

Robot Control

new in 0.7.0 Runs on BeagleBone Blue; or BeagleBone Black or BeagleBone Black Wireless with BeagleBoard.org Robotics Cape

  • rcInitialize()
  • rcState(, ) -> állapot
  • rcLED(led, , ) -> érték
  • RCON(esemény, )
  • rcMotor(motor, érték, )
  • /li>

  • rcservo(opció, érték)
  • rcbmp(, ) -> érték
  • rcimu(, ) -> érték
  • rcencoder(encoder, , ) -> érték

bitek/bájtok, matematika, trigonometria és véletlen számok

  • lowbyte(érték)
  • highbyte(érték)
  • bitread(érték, bitnum)
  • bitWrite(érték, bitnum, bitdata)
  • bitSet(érték, bitnum)
  • bittiszta(érték, bitnum)
  • bit(bitnum)
  • min(x, y)
  • max(x, y)
  • abs(x)
  • constrain(x, a, b)
  • map(érték, fromLow, fromhigh, tolow, tohigh)
  • pow(x, y)
  • sqrt(x)
  • sin(radians)
  • cos(radians)
  • tan(radians)
  • randomseed(x)
  • random(, max)

megjegyzés a teljesítményről

Ez a kód teljesen nem optimalizált. A lehetséges optimalizálások listájaa fejemben megdöbbentő. A jó hír az, hogy azt hiszem, ez lehet minden bedone anélkül, hogy befolyásolná az API, elsősorban köszönhetően a introspectioncapabilities JavaScript.

végül, ez a tervek szerint lehetővé teszi a valós idejű használat, közvetlenül fromJavaScript. A terv az, hogy csatolja a képességét, hogy használja ezt a programozási környezet valós időben több fronton:

  • lehetővé teszi a több hurok és elemzi őket, hogy meghatározzák, ha lehet off-loaded egy PRU. Ez lesz az elsődleges mechanizmus a valós idejű szolgáltatáshozaz IOs szolgáltatása.
  • magasabb rendű szolgáltatások nyújtása, amelyek a szokásos perifériákat használják rendeltetésszerű használatukhoz:
    • Soros illesztőprogramok I2C, SPI, UARTs stb.
    • analogWrite a PWM-ekhez hardveres PWM-ek, időzítők, kernel GPIO illesztőprogramok stb.
  • valós idejű javítások hozzáadása a kernelhez

a JavaScript nyelv olyan funkciókat kínál, amelyek szerintem nagyon jók a beágyazott programozás és a node elvégzéséhez.js csinál néhány dolgot, hogy segítsen enablable, hogy. Az elsődleges az, hogy az I/O funkciók mind aszinkron. Forembedded rendszerek, ez különösen hasznos az alacsony késleltetésű feladatok végrehajtásáhozamelyek reagálnak a rendszer eseményeire. Ami a Javascriptet sokkal könnyebbé teszi, mint más nyelveket, az az, hogy a teljes kontextust a kezelő körül tartja, így nem kell aggódnia miatta.

0.7.4 kulcsfrissítések

  • engedélyezett BEAGLEBONE AI GPIO funkciók (digitalRead/digitalWrite/getPinMode)

0.7.3 kulcsfrissítések

nagy gyorsítás a betöltéskor lazy-loading ritkán használt modulok

0.7.2 kulcsfrissítések

  • https://github.com/beagleboard/bonescript/issues/52
  • https://github.com/beagleboard/bonescript/issues/53

0.7.1 kulcsfrissítések

nagyon kis frissítés egy funkció hatókörén

0.7.0 kulcsfrissítések

a legtöbb ilyen javítás a Google Summer of Code 2018 projektből származik

  • javítások a PWM kimeneten az analogWrite frissítések során
  • hozzáadott funkció a Robotvezérlő könyvtár támogatásához a BEAGLEBONE Blue vagy a Robotics Cape készüléken
  • hozzáadott támogatás a csomópont stílusú visszahívásokhoz hibával és adatokkal elválasztva (opcionális)

tervek

  • SPI támogatás
  • Pru támogatás
  • kezelése tömb csapok pinMode és Getpinmode
  • megtakarítás ki létrehozott dtbo és írásban konfiguráció Cape EEPROM

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.