mirror of
https://github.com/ocogeclub/ocoge.git
synced 2024-11-21 23:29:48 +00:00
[update] i2cの新しいブロック
This commit is contained in:
parent
28bdb59693
commit
f511aba1f7
29
index.html
29
index.html
@ -186,6 +186,20 @@
|
|||||||
</value>
|
</value>
|
||||||
</block>
|
</block>
|
||||||
<block type="math_random_float"></block>
|
<block type="math_random_float"></block>
|
||||||
|
<block type="ugj_hextodec">
|
||||||
|
<value name="hex">
|
||||||
|
<shadow type="text">
|
||||||
|
<field name="TEXT">ff</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
|
<block type="ugj_dectohex">
|
||||||
|
<value name="dec">
|
||||||
|
<shadow type="math_number">
|
||||||
|
<field name="NUM">255</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
</category>
|
</category>
|
||||||
<category name="文字列" css-icon="customIcon fas fa-font" categorystyle="text_category">
|
<category name="文字列" css-icon="customIcon fas fa-font" categorystyle="text_category">
|
||||||
<block type="text">
|
<block type="text">
|
||||||
@ -234,6 +248,13 @@
|
|||||||
</block>
|
</block>
|
||||||
</value>
|
</value>
|
||||||
</block>
|
</block>
|
||||||
|
<block type="ugj_charcode">
|
||||||
|
<value name="char">
|
||||||
|
<shadow type="text">
|
||||||
|
<field name="TEXT">a</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
</category>
|
</category>
|
||||||
<category name="リスト" css-icon="customIcon fas fa-list-ol" categorystyle="list_category">
|
<category name="リスト" css-icon="customIcon fas fa-list-ol" categorystyle="list_category">
|
||||||
<block type="lists_create_with">
|
<block type="lists_create_with">
|
||||||
@ -393,6 +414,14 @@
|
|||||||
</value>
|
</value>
|
||||||
</block>
|
</block>
|
||||||
<block type="ugj_i2c_close"></block>
|
<block type="ugj_i2c_close"></block>
|
||||||
|
<block type="ugj_i2c_write_byte">
|
||||||
|
<value name="byte_val">
|
||||||
|
<shadow type="math_number">
|
||||||
|
<field name="NUM">0</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
|
<block type="ugj_i2c_read_byte"></block>
|
||||||
<block type="ugj_i2c_write_byte_data">
|
<block type="ugj_i2c_write_byte_data">
|
||||||
<value name="reg">
|
<value name="reg">
|
||||||
<shadow type="math_number">
|
<shadow type="math_number">
|
||||||
|
@ -349,6 +349,53 @@ Value i2cClose(const CallbackInfo& info)
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// デバイスに1バイトを送る
|
||||||
|
Value i2cWriteByte(const CallbackInfo& info)
|
||||||
|
{
|
||||||
|
Env env = info.Env();
|
||||||
|
if (info.Length() < 2)
|
||||||
|
{
|
||||||
|
TypeError::New(env, "Wrong number of arguments")
|
||||||
|
.ThrowAsJavaScriptException();
|
||||||
|
return env.Null();
|
||||||
|
}
|
||||||
|
if (!info[0].IsNumber() || !info[1].IsNumber())
|
||||||
|
{
|
||||||
|
TypeError::New(env, "Wrong arguments").ThrowAsJavaScriptException();
|
||||||
|
return env.Null();
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int handle = info[0].As<Number>().DoubleValue();
|
||||||
|
unsigned int byteVal = info[1].As<Number>().DoubleValue();
|
||||||
|
|
||||||
|
return Number::New(env,
|
||||||
|
lgI2cWriteByte(handle, byteVal)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// デバイスから1バイトを受け取る
|
||||||
|
Value i2cReadByte(const CallbackInfo& info)
|
||||||
|
{
|
||||||
|
Env env = info.Env();
|
||||||
|
if (info.Length() < 1)
|
||||||
|
{
|
||||||
|
TypeError::New(env, "Wrong number of arguments")
|
||||||
|
.ThrowAsJavaScriptException();
|
||||||
|
return env.Null();
|
||||||
|
}
|
||||||
|
if (!info[0].IsNumber())
|
||||||
|
{
|
||||||
|
TypeError::New(env, "Wrong arguments").ThrowAsJavaScriptException();
|
||||||
|
return env.Null();
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int handle = info[0].As<Number>().DoubleValue();
|
||||||
|
|
||||||
|
return Number::New(env,
|
||||||
|
lgI2cReadByte(handle)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// I2Cハンドルに関連付けられているデバイスの指定されたレジスタに1バイトを書き込む
|
// I2Cハンドルに関連付けられているデバイスの指定されたレジスタに1バイトを書き込む
|
||||||
Value i2cWriteByteData(const CallbackInfo& info)
|
Value i2cWriteByteData(const CallbackInfo& info)
|
||||||
{
|
{
|
||||||
@ -439,6 +486,8 @@ Init(Env env, Object exports)
|
|||||||
exports.Set(String::New(env, "serial_write"), Function::New(env, serialWrite));
|
exports.Set(String::New(env, "serial_write"), Function::New(env, serialWrite));
|
||||||
exports.Set(String::New(env, "i2c_open"), Function::New(env, i2cOpen));
|
exports.Set(String::New(env, "i2c_open"), Function::New(env, i2cOpen));
|
||||||
exports.Set(String::New(env, "i2c_close"), Function::New(env, i2cClose));
|
exports.Set(String::New(env, "i2c_close"), Function::New(env, i2cClose));
|
||||||
|
exports.Set(String::New(env, "i2c_write_byte"), Function::New(env, i2cWriteByte));
|
||||||
|
exports.Set(String::New(env, "i2c_read_byte"), Function::New(env, i2cReadByte));
|
||||||
exports.Set(String::New(env, "i2c_write_byte_data"), Function::New(env, i2cWriteByteData));
|
exports.Set(String::New(env, "i2c_write_byte_data"), Function::New(env, i2cWriteByteData));
|
||||||
exports.Set(String::New(env, "i2c_read_byte_data"), Function::New(env, i2cReadByteData));
|
exports.Set(String::New(env, "i2c_read_byte_data"), Function::New(env, i2cReadByteData));
|
||||||
|
|
||||||
|
@ -144,6 +144,103 @@ Blockly.Python['ugj_controls_forEach'] = function (block) {
|
|||||||
return code;
|
return code;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Additional Basic Blocks********************************************************************************* */
|
||||||
|
var ugjCharcodeDefinition = {
|
||||||
|
"type": "ugj_charcode",
|
||||||
|
"message0": "%{BKY_UGJ_CHARCODE_TITLE}",
|
||||||
|
"args0": [
|
||||||
|
{
|
||||||
|
"type": "input_value",
|
||||||
|
"name": "char",
|
||||||
|
"check": "String"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"inputsInline": true,
|
||||||
|
"output": "Number",
|
||||||
|
"tooltip": "%{BKY_UGJ_CHARCODE_TOOLTIP}",
|
||||||
|
"helpUrl": "",
|
||||||
|
"style": "text_blocks"
|
||||||
|
};
|
||||||
|
Blockly.Blocks['ugj_charcode'] = {
|
||||||
|
init: function () {
|
||||||
|
this.jsonInit(ugjCharcodeDefinition);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Blockly.JavaScript['ugj_charcode'] = function(block) {
|
||||||
|
var value_char = Blockly.JavaScript.valueToCode(block, 'char', Blockly.JavaScript.ORDER_ATOMIC);
|
||||||
|
var code = `${value_char}.charCodeAt(0)`;
|
||||||
|
return [code, Blockly.JavaScript.ORDER_NONE];
|
||||||
|
};
|
||||||
|
Blockly.Python['ugj_charcode'] = function(block) {
|
||||||
|
var value_char = Blockly.Python.valueToCode(block, 'char', Blockly.Python.ORDER_ATOMIC);
|
||||||
|
var code = `ord(${value_char})`;
|
||||||
|
return [code, Blockly.Python.ORDER_NONE];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
var ugjHextodecDefinition = {
|
||||||
|
"type": "ugj_hextodec",
|
||||||
|
"message0": "%{BKY_UGJ_HEXTODEC_TITLE}",
|
||||||
|
"args0": [
|
||||||
|
{
|
||||||
|
"type": "input_value",
|
||||||
|
"name": "hex",
|
||||||
|
"check": "String"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"inputsInline": true,
|
||||||
|
"output": "Number",
|
||||||
|
"tooltip": "%{BKY_UGJ_HEXTODEC_TOOLTIP}",
|
||||||
|
"helpUrl": "",
|
||||||
|
"style": "math_blocks"
|
||||||
|
};
|
||||||
|
Blockly.Blocks['ugj_hextodec'] = {
|
||||||
|
init: function () {
|
||||||
|
this.jsonInit(ugjHextodecDefinition);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Blockly.JavaScript['ugj_hextodec'] = function (block) {
|
||||||
|
var value_hex = Blockly.JavaScript.valueToCode(block, 'hex', Blockly.JavaScript.ORDER_ATOMIC);
|
||||||
|
var code = `parseInt (${value_hex}, 16)`;
|
||||||
|
return [code, Blockly.JavaScript.ORDER_ATOMIC];
|
||||||
|
};
|
||||||
|
Blockly.Python['ugj_hextodec'] = function(block) {
|
||||||
|
var value_hex = Blockly.Python.valueToCode(block, 'hex', Blockly.Python.ORDER_ATOMIC);
|
||||||
|
var code = `int(${value_hex}, 16)`;
|
||||||
|
return [code, Blockly.Python.ORDER_NONE];
|
||||||
|
};
|
||||||
|
|
||||||
|
var ugjDectohexDefinition = {
|
||||||
|
"type": "ugj_dectohex",
|
||||||
|
"message0": "%{BKY_UGJ_DECTOHEX_TITLE}",
|
||||||
|
"args0": [
|
||||||
|
{
|
||||||
|
"type": "input_value",
|
||||||
|
"name": "dec",
|
||||||
|
"check": "Number"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"inputsInline": true,
|
||||||
|
"output": "String",
|
||||||
|
"tooltip": "%{BKY_UGJ_DECTOHEX_TOOLTIP}",
|
||||||
|
"helpUrl": "",
|
||||||
|
"style": "math_blocks"
|
||||||
|
};
|
||||||
|
Blockly.Blocks['ugj_dectohex'] = {
|
||||||
|
init: function () {
|
||||||
|
this.jsonInit(ugjDectohexDefinition);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Blockly.JavaScript['ugj_dectohex'] = function(block) {
|
||||||
|
var value_dec = Blockly.JavaScript.valueToCode(block, 'dec', Blockly.JavaScript.ORDER_ATOMIC);
|
||||||
|
var code = `'0x' + (${value_dec}).toString(16).toUpperCase()`;
|
||||||
|
return [code, Blockly.JavaScript.ORDER_NONE];
|
||||||
|
};
|
||||||
|
Blockly.Python['ugj_dectohex'] = function(block) {
|
||||||
|
var value_dec = Blockly.Python.valueToCode(block, 'dec', Blockly.Python.ORDER_ATOMIC);
|
||||||
|
var code = `'0x' + format(${value_dec}, 'X')`;
|
||||||
|
return [code, Blockly.Python.ORDER_NONE];
|
||||||
|
};
|
||||||
/** GPIO *****************************************************************************************************/
|
/** GPIO *****************************************************************************************************/
|
||||||
|
|
||||||
/************ */
|
/************ */
|
||||||
@ -690,6 +787,68 @@ Blockly.Python['ugj_i2c_close'] = function (block) {
|
|||||||
return code;
|
return code;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**************************************** */
|
||||||
|
/** Sends a single byte to the device. ** */
|
||||||
|
/**************************************** */
|
||||||
|
var ugjI2cWriteByteDefinition = {
|
||||||
|
"type": "ugj_i2c_write_byte",
|
||||||
|
"message0": "%{BKY_I2C_WRITE_BYTE_TITLE}",
|
||||||
|
"args0": [
|
||||||
|
{
|
||||||
|
"type": "input_value",
|
||||||
|
"name": "byte_val",
|
||||||
|
"check": "Number"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"previousStatement": null,
|
||||||
|
"nextStatement": null,
|
||||||
|
"tooltip": "%{BKY_I2C_WRITE_BYTE_TOOLTIP}",
|
||||||
|
"helpUrl": "",
|
||||||
|
"style": "gpio_blocks"
|
||||||
|
};
|
||||||
|
Blockly.Blocks['ugj_i2c_write_byte'] = {
|
||||||
|
init: function () {
|
||||||
|
this.jsonInit(ugjI2cWriteByteDefinition);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Blockly.JavaScript['ugj_i2c_write_byte'] = function(block) {
|
||||||
|
var value_byte_val = Blockly.JavaScript.valueToCode(block, 'byte_val', Blockly.JavaScript.ORDER_ATOMIC);
|
||||||
|
var code = `i2c_write_byte(i2c_hand);\n`;
|
||||||
|
return code;
|
||||||
|
};
|
||||||
|
Blockly.Python['ugj_i2c_write_byte'] = function(block) {
|
||||||
|
var value_byte_val = Blockly.Python.valueToCode(block, 'byte_val', Blockly.Python.ORDER_ATOMIC);
|
||||||
|
var code = `i2c_write_byte(i2c_hand);\n`;
|
||||||
|
return code;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*************************************** */
|
||||||
|
/** Reads a single byte from the device. */
|
||||||
|
/*************************************** */
|
||||||
|
var ugjI2cReadByteDefinition = {
|
||||||
|
"type": "ugj_i2c_read_byte",
|
||||||
|
"message0": "%{BKY_I2C_READ_BYTE_TITLE}",
|
||||||
|
"inputsInline": true,
|
||||||
|
"output": "Number",
|
||||||
|
"tooltip": "%{BKY_I2C_READ_BYTE_TOOLTIP}",
|
||||||
|
"helpUrl": "",
|
||||||
|
"style": "gpio_blocks"
|
||||||
|
};
|
||||||
|
Blockly.Blocks['ugj_i2c_read_byte'] = {
|
||||||
|
init: function () {
|
||||||
|
this.jsonInit(ugjI2cReadByteDefinition);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Blockly.JavaScript['ugj_i2c_read_byte'] = function(block) {
|
||||||
|
var code = `i2c_read_byte(i2c_hand)`;
|
||||||
|
return [code, Blockly.JavaScript.ORDER_NONE];
|
||||||
|
};
|
||||||
|
Blockly.Python['ugj_i2c_read_byte'] = function(block) {
|
||||||
|
var code = `i2c_read_byte(i2c_hand)`;
|
||||||
|
return [code, Blockly.Python.ORDER_NONE];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************** */
|
/****************************************************************** */
|
||||||
/** Writes a single byte to the specified register of the device ** */
|
/** Writes a single byte to the specified register of the device ** */
|
||||||
/****************************************************************** */
|
/****************************************************************** */
|
||||||
|
@ -105,11 +105,22 @@ Blockly.Msg["SERIAL_READ_TITLE"] = "シリアルポートから %1 文字読み
|
|||||||
Blockly.Msg["SERIAL_READ_TOOLTIP"] = "オープン済みシリアルポートから、指定のバイト数だけデータを読み込みます。";
|
Blockly.Msg["SERIAL_READ_TOOLTIP"] = "オープン済みシリアルポートから、指定のバイト数だけデータを読み込みます。";
|
||||||
Blockly.Msg["I2C_CLOSE_TITLE"] = "I2C デバイスを閉じる";
|
Blockly.Msg["I2C_CLOSE_TITLE"] = "I2C デバイスを閉じる";
|
||||||
Blockly.Msg["I2C_CLOSE_TOOLTIP"] = "I2C接続されたデバイスと通信を切断します。";
|
Blockly.Msg["I2C_CLOSE_TOOLTIP"] = "I2C接続されたデバイスと通信を切断します。";
|
||||||
|
Blockly.Msg["I2C_WRITE_BYTE_TITLE"] = "デバイスに1バイトデータ %1 を送信";
|
||||||
|
Blockly.Msg["I2C_WRITE_BYTE_TOOLTIP"] = "i2cデバイスに1バイトデータを送信します。0-0xFFの範囲の数字で入力してください。";
|
||||||
|
Blockly.Msg["I2C_READ_BYTE_TITLE"] = "I2C デバイスから 1 バイト受け取る";
|
||||||
|
Blockly.Msg["I2C_READ_BYTE_TOOLTIP"] = "オープン済み I2C デバイスからデータを 1 バイト受け取ります。";
|
||||||
Blockly.Msg["I2C_WRITE_BYTE_DATA_TITLE"] = "レジスタ %1 に %2 を書き込む";
|
Blockly.Msg["I2C_WRITE_BYTE_DATA_TITLE"] = "レジスタ %1 に %2 を書き込む";
|
||||||
Blockly.Msg["I2C_WRITE_BYTE_DATA_TOOLTIP"] = "デバイスの指定されたレジスタに1バイトを書き込みます。";
|
Blockly.Msg["I2C_WRITE_BYTE_DATA_TOOLTIP"] = "デバイスの指定されたレジスタに1バイトを書き込みます。";
|
||||||
Blockly.Msg["I2C_READ_BYTE_DATA_TITLE"] = "レジスタ %1 の値";
|
Blockly.Msg["I2C_READ_BYTE_DATA_TITLE"] = "レジスタ %1 の値";
|
||||||
Blockly.Msg["I2C_READ_BYTE_DATA_TOOLTIP"] = "デバイスの指定されたレジスタから1バイトを読み込みます。";
|
Blockly.Msg["I2C_READ_BYTE_DATA_TOOLTIP"] = "デバイスの指定されたレジスタから1バイトを読み込みます。";
|
||||||
|
|
||||||
|
Blockly.Msg["UGJ_CHARCODE_TITLE"] = "%1 の文字コード";
|
||||||
|
Blockly.Msg["UGJ_CHARCODE_TOOLTIP"] = "入力テキストの1文字目の文字コードを返します。";
|
||||||
|
Blockly.Msg["UGJ_HEXTODEC_TITLE"] = "0x %1";
|
||||||
|
Blockly.Msg["UGJ_HEXTODEC_TOOLTIP"] = "16進数を10進数に変換します。";
|
||||||
|
Blockly.Msg["UGJ_DECTOHEX_TITLE"] = "%1 を16進数に変換";
|
||||||
|
Blockly.Msg["UGJ_DECTOHEX_TOOLTIP"] = "10進数を16進数に変換します。";
|
||||||
|
|
||||||
Blockly.Msg["UGJ_CANVAS_INIT_TITLE"] = "キャンバスを表示";
|
Blockly.Msg["UGJ_CANVAS_INIT_TITLE"] = "キャンバスを表示";
|
||||||
Blockly.Msg["UGJ_CANVAS_INIT_TOOLTIP"] = "キャンバスを表示し、使用できるようにします。";
|
Blockly.Msg["UGJ_CANVAS_INIT_TOOLTIP"] = "キャンバスを表示し、使用できるようにします。";
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user