75 lines
2.4 KiB
JavaScript
75 lines
2.4 KiB
JavaScript
'use strict';
|
|
|
|
var serialClass = 'serial.Serial';
|
|
pbc.assignD.get('Serial')['check_assign'] = function (py2block, node, targets, value) {
|
|
if(value.func._astname != "Attribute" || value.func.value._astname != "Name"){
|
|
return false;
|
|
}
|
|
var moduleName = py2block.Name_str(value.func.value);
|
|
var funcName = py2block.identifier(value.func.attr);
|
|
if (value._astname === "Call" && moduleName === "serial"
|
|
&& funcName === "Serial" && value.args.length === 2 && value.keywords.length === 1)
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
pbc.assignD.get('Serial')['create_block'] = function (py2block, node, targets, value) {
|
|
var ser = py2block.Name_str(node.targets[0]);
|
|
if(value.keywords[0].arg.v == 'timeout')
|
|
{return block('serial_open', node.lineno, {
|
|
'SER': ser,
|
|
'BPS':value.args[1].n.v.toString()
|
|
}, {
|
|
"VAR":py2block.convert(value.keywords[0].value)
|
|
});}
|
|
}
|
|
|
|
pbc.objectFunctionD.get('close')[serialClass] = function(py2block, func, args, keywords, starargs, kwargs, node){
|
|
if (args.length !== 0) {
|
|
throw new Error("Incorrect number of arguments");
|
|
}
|
|
var fileblock = py2block.convert(func.value);
|
|
return [block("serial_close", func.lineno, {}, {
|
|
"SER" : fileblock
|
|
}, {
|
|
"inline": "true"
|
|
})];
|
|
}
|
|
|
|
pbc.objectFunctionD.get('write')[serialClass] = function(py2block, func, args, keywords, starargs, kwargs, node){
|
|
if (args.length !== 1) {
|
|
throw new Error("Incorrect number of arguments");
|
|
}
|
|
var fileblock = py2block.convert(func.value);
|
|
return [block("serial_write", func.lineno, {}, {
|
|
"SER" : fileblock,
|
|
'VAR' : py2block.convert(args[0])
|
|
}, {
|
|
"inline": "true"
|
|
})];
|
|
}
|
|
|
|
pbc.objectFunctionD.get('read')[serialClass] = function(py2block, func, args, keywords, starargs, kwargs, node){
|
|
if (args.length !== 1) {
|
|
throw new Error("Incorrect number of arguments");
|
|
}
|
|
var fileblock = py2block.convert(func.value);
|
|
return block("serial_read_b", func.lineno, {}, {
|
|
"SER" : fileblock,
|
|
'VAR' : py2block.convert(args[0])
|
|
}, {
|
|
"inline": "true"
|
|
});
|
|
}
|
|
|
|
pbc.objectFunctionD.get('decode')['List'] = function(py2block, func, args, keywords, starargs, kwargs, node){
|
|
if (args.length !== 0) {
|
|
throw new Error("Incorrect number of arguments");
|
|
}
|
|
|
|
return [block("lists_insert_value", func.lineno, {}, {
|
|
|
|
}, {
|
|
"inline": "true"
|
|
})];
|
|
}; |