Добавление блоков расширения к нулю для аппаратного контроля - PullRequest
0 голосов
/ 23 мая 2018

Недавно я разрабатывал пользовательские блоки для MIT's Scratch для управления оборудованием на основе Arduino.MIT's Scratch также основан на JavaScript.Поэтому, чтобы создать свой собственный блок, вам нужно написать внутренний файл пользовательского блока в JavaScript.

Пакет, который я использую для управления Arduino, называется Johnny-Five, и пока я могу запуститьуправляющий JS-файл Arduino через CommandWindow (cmd).Но я не могу добавить тот же JS-код управления Arduino в конец внутреннего кода JS моего Scratch-блока.Для этого я использовал пример кода расширения Scratch из GitHub здесь и упомянул имя пакета "Johnny-Five" в начале.(Если это не правильно, это потому, что я новичок в JavaScript) Позже в коде функции ext.wait_random = function(callback) { я разместил свой собственный код вместо кода random wait.Но, в конце концов, это, похоже, не работает.

Любая помощь будет очень признательна.

Опять же, цель этой работы - управлять пользовательским оборудованием на базе Arduino с помощью Scratch.блоки.

Вот мой код.Вы можете проверить код расширения в ScratchX.Описание упоминается в ссылке GitHub, которую я упоминал ранее.

tension demonstrating a blocking command block */
/* Sayamindu Dasgupta <sayamindu@media.mit.edu>, May 2014 */

var five = require("johnny-five");

new (function() {
    var ext = this;

    // Cleanup function when the extension is unloaded
    ext._shutdown = function() {};

    // Status reporting code
    // Use this to report missing hardware, plugin or unsupported browser
    ext._getStatus = function() {
        return {status: 2, msg: 'Ready'};
    };

    // Functions for block with type 'w' will get a callback function as the 
    // final argument. This should be called to indicate that the block can
    // stop waiting.
    ext.wait_random = function(callback) {
        var board = new five.Board();
        board.on("ready", function() {
            console.log("Ready!");
            var led = new five.Led(13);
            led.blink(500);
        });
    };

    // Block and block menu descriptions
    var descriptor = {
        blocks: [
            ['w', 'wait for random time', 'wait_random'],
        ]
    };

    // Register the extension
    ScratchExtensions.register('Random wait extension', descriptor, ext);
})();
...