Files
mixly3-server/mixly/boards/default_src/python_mixpy/converters/serial.js

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"
})];
};