我正在为嵌入式Forth编写VS Code扩展。由于Forth的性质,必须在目标系统上进行任何调试。因此,我需要通过串口与它通信。
我开始使用一个简单的扩展命令,它只列出系统中可用的串行端口。不幸的是,这第一步失败了,因为虽然VS Code扩展类作为节点模块运行,但它们不能使用任何预编译代码(可能是DLL)。
错误消息显示:"激活扩展程序jvavruska.forth-studio
失败:%1不是有效的Win32应用程序。" (当我不导入serialport模块时,这会消失)
有没有办法克服这个限制?
以下是我的extension.js。它使用从NPM安装的serialport@4.0.6。我的本地节点版本是6.9.1 64位。
let vscode = require('vscode');
let serial = require('serialport');
function activate(context) {
console.log('Congratulations, your extension "forth-studio" is now active!');
let disposable = vscode.commands.registerCommand('extension.showCommPorts', function () {
serial.list( onResult );
function onResult( data ) {
if( data.length === 0 ) {
vscode.window.showInformationMessage('NO SERIAL PORTS AVAILABLE');
}
else {
let list = [] ;
for( let port of data ) {
list.push( port.commName );
}
vscode.window.showInformationMessage('Serial ports: ', list.join(', '));
}
}
});
context.subscriptions.push(disposable);
}
exports.activate = activate;
function deactivate() {
}
exports.deactivate = deactivate;
我试图在VS Code文档中找到一些东西,但它主要声明扩展是可能的,除了简短的指令如何创建一个空的存根扩展,它没有解释太多。我迷路了。