mirror of
https://github.com/ocogeclub/ocoge.git
synced 2024-11-21 23:29:48 +00:00
[fix] 体験版モードが動作しなくなっていたのを修正
This commit is contained in:
parent
034ba61198
commit
7c248d9481
@ -1,6 +1,6 @@
|
||||
# ocoge
|
||||
"大岩産 Code Generator" は、Google Blockly ライブラリを使用した、Raspberry Pi 上で動作するブロックプログラム開発・実行環境です。
|
||||
インストール方法・操作・サンプルなどは、今後『[おこげ倶楽部](https://ocoge.club)』([ミラー](http://ocogeclub.starfree.jp/))にて公開予定です。
|
||||
インストール方法・操作・サンプルなどは、今後『[おこげ倶楽部](https://ocoge.club)』にて公開予定です。
|
||||
|
||||
### 免責
|
||||
このアプリケーションは特定の環境下で使用する目的で、専門知識を持たない日曜プログラマによって無計画に開発されています。アドバイス・ご意見・ご要望は有難く承りますが、対応の保証はいたしかねます。
|
||||
|
4
index.js
4
index.js
@ -183,8 +183,6 @@ Blockly.Msg["UGJ_DECTOHEX_TOOLTIP"] = "10進数を16進数に変換します。"
|
||||
|
||||
Blockly.Msg["UGJ_CANVAS_INIT_TITLE"] = "キャンバスを表示";
|
||||
Blockly.Msg["UGJ_CANVAS_INIT_TOOLTIP"] = "キャンバスを表示し、使用できるようにします。";
|
||||
Blockly.Msg["UGJ_FACEAPI_TITLE"] = "TensorFlowによる顔検出: %1 ランドマークを検出 %2 %3";
|
||||
Blockly.Msg["UGJ_FACEAPI_TOOLTIP"] = "TensorFlow とFaceAPI をロードし、顔検出をできるようにします。";
|
||||
Blockly.Msg["UGJ_SLEEP_TITLE"] = "%1 秒待つ";
|
||||
Blockly.Msg["UGJ_SLEEP_TOOLTIP"] = "指定した秒数だけ処理を中断します。";
|
||||
|
||||
@ -409,7 +407,7 @@ const ugj_runCode = async () => {
|
||||
// await eval(code).catch(e => { alert(e); });
|
||||
let AsyncFunction = Object.getPrototypeOf(async function () { }).constructor
|
||||
let ocogeFunc = new AsyncFunction(ugj_createCode({}));
|
||||
await ocogeFunc();
|
||||
await ocogeFunc().catch(e => { alert(e); });
|
||||
console.log('Code Execution done.');
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
// 定数
|
||||
const ugj_const = {
|
||||
doc_root: process.env["HOME"] + '/Documents',
|
||||
// doc_root: process.env["HOME"] + '/Documents',
|
||||
app_name: 'ocoge',
|
||||
mascot_path: './img/',
|
||||
mascot_defname: 'tamachee.png',
|
||||
@ -32,7 +32,7 @@ class elUtil {
|
||||
this.children = [];
|
||||
this.gpio_backend = ugj_const.pig;
|
||||
this.i2c_bus = ugj_const.i2c_defbus;
|
||||
this.doc_current = ugj_const.doc_root;
|
||||
this.doc_current = process.env["HOME"] + '/Documents';
|
||||
}
|
||||
// 0で数値の桁合わせ : NUM=値 LEN=桁数
|
||||
zeroPadding(NUM, LEN) {
|
||||
@ -255,6 +255,11 @@ class elUtil {
|
||||
}
|
||||
// ブラウザ動作用
|
||||
class brUtil {
|
||||
constructor() {
|
||||
// GPIOブロックは使えません
|
||||
this.gpio_backend = ugj_const.pig;
|
||||
}
|
||||
|
||||
// マスコット
|
||||
getMascotFilePath() { return `./img/${ugj_const.mascot_defname}`; }
|
||||
//ワークスペースのダウンロード
|
||||
@ -326,18 +331,24 @@ if (!is_el) {
|
||||
case 'nodemailer':
|
||||
block = 'メール送信';
|
||||
break;
|
||||
case '@ocogeclub/gpio':
|
||||
case '@ocogeclub/pigpio':
|
||||
block = 'GPIO';
|
||||
break;
|
||||
case '@ocogeclub/bme280':
|
||||
block = 'BME280';
|
||||
break;
|
||||
case '@ocogeclub/amg8833':
|
||||
block = '赤外線アレイセンサ';
|
||||
break;
|
||||
case 'fs':
|
||||
block = 'ファイル';
|
||||
break;
|
||||
case 'path':
|
||||
block = 'キャンバス保存';
|
||||
break;
|
||||
case 'child_process':
|
||||
block = '外部プログラム実行';
|
||||
break;
|
||||
default:
|
||||
throw new Error(ugj_const.error_ja_all);
|
||||
}
|
||||
|
2
main.js
2
main.js
@ -29,7 +29,7 @@ function createWindow() {
|
||||
win.loadFile('index.html')
|
||||
|
||||
// Open the DevTools.
|
||||
win.webContents.openDevTools()
|
||||
// win.webContents.openDevTools()
|
||||
|
||||
// Emitted when the window is closed.
|
||||
// win.on('closed', () => {
|
||||
|
@ -1364,39 +1364,29 @@ Blockly.Python['ugj_grideye_stop'] = function (block) {
|
||||
/** Face Detection ** */
|
||||
/******************** */
|
||||
var with_landmark;
|
||||
var ugjFaceapiDefinition = {
|
||||
"type": "ugj_faceapi",
|
||||
"message0": "%{BKY_UGJ_FACEAPI_TITLE}",
|
||||
"args0": [
|
||||
{
|
||||
"type": "field_checkbox",
|
||||
"name": "with_landmark",
|
||||
"checked": false
|
||||
},
|
||||
{
|
||||
"type": "input_dummy"
|
||||
},
|
||||
{
|
||||
"type": "input_statement",
|
||||
"name": "do"
|
||||
}
|
||||
],
|
||||
"inputsInline": true,
|
||||
"tooltip": "%{BKY_UGJ_FACEAPI_TOOLTIP}",
|
||||
"helpUrl": "",
|
||||
"style": "multimedia_blocks"
|
||||
};
|
||||
Blockly.Blocks['ugj_faceapi'] = {
|
||||
init: function () {
|
||||
this.jsonInit(ugjFaceapiDefinition);
|
||||
this.appendDummyInput()
|
||||
.appendField("TensorFlowによる顔検出を1秒に")
|
||||
.appendField(new Blockly.FieldDropdown([["1", "1000"], ["2", "500"], ["5", "200"], ["10", "100"]]), "interval_sec")
|
||||
.appendField("回実行:")
|
||||
.appendField(new Blockly.FieldCheckbox("TRUE"), "with_landmark")
|
||||
.appendField("ランドマークを検出");
|
||||
this.appendStatementInput("do")
|
||||
.setCheck(null);
|
||||
this.setTooltip("TensorFlow とFaceAPI をロードし、顔検出をできるようにします。");
|
||||
this.setHelpUrl("");
|
||||
this.setStyle('multimedia_blocks');
|
||||
}
|
||||
};
|
||||
Blockly.JavaScript['ugj_faceapi'] = function (block) {
|
||||
var dropdown_interval_sec = block.getFieldValue('interval_sec');
|
||||
with_landmark = block.getFieldValue('with_landmark') == 'TRUE';
|
||||
var statements_do = Blockly.JavaScript.statementToCode(block, 'do');
|
||||
var code = [
|
||||
`require('@tensorflow/tfjs-node');`,
|
||||
`const faceapi = require('@vladmandic/face-api/dist/face-api.node.js');`,
|
||||
`const detect_intvl = ${dropdown_interval_sec};`,
|
||||
statements_do,
|
||||
''
|
||||
].join('\n');
|
||||
@ -1409,7 +1399,7 @@ Blockly.Blocks['ugj_face_init'] = {
|
||||
this.setInputsInline(true);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setStyle('multimedia_blocks')
|
||||
this.setStyle('multimedia_blocks');
|
||||
this.setTooltip("顔検出のためのビデオストリームを開始します。");
|
||||
this.setHelpUrl("");
|
||||
}
|
||||
@ -1496,17 +1486,18 @@ Blockly.JavaScript['ugj_face_detect'] = function (block) {
|
||||
var code = [
|
||||
code_model,
|
||||
"const options = new faceapi.TinyFaceDetectorOptions({ inputSize: 128, scoreThreshold : 0.3 });",
|
||||
`const onPlay = async () => {`,
|
||||
// ` const detectInterval = setInterval(async () => {`,
|
||||
// `const onPlay = async () => {`,
|
||||
// `console.log('onplay');`,
|
||||
` const detectInterval = setInterval(async () => {`,
|
||||
code_detect_face,
|
||||
" if (result) {",
|
||||
code_rect,
|
||||
statements_do,
|
||||
" }",
|
||||
// ` }, 500);`,
|
||||
" setTimeout(() => onPlay())",
|
||||
"}",
|
||||
"videoEl.onplay = onPlay;",
|
||||
` }, detect_intvl);`,
|
||||
// " setTimeout(() => onPlay())",
|
||||
// "}",
|
||||
// "videoEl.onplay = onPlay;",
|
||||
""
|
||||
].join('\n');
|
||||
return code;
|
||||
@ -1850,6 +1841,7 @@ _grideye_canvas.setAttribute('height', 8);
|
||||
_grideye_canvas.className = 'subdisplay';
|
||||
_grideye_canvas.style.width = '160px';
|
||||
_grideye_canvas.style.height = '160px';
|
||||
_grideye_canvas.id = 'subcanvas';
|
||||
document.getElementById('display_area').appendChild(_grideye_canvas);
|
||||
_grideye_ctx = _grideye_canvas.getContext('2d');
|
||||
_grideye_imgData = _grideye_ctx.createImageData(8, 8);
|
||||
|
Loading…
Reference in New Issue
Block a user