Arduino Create Agent JS CLIENT使用方法
Arduino Create Agent JS CLIENT how to use
欢迎光临,
目前,我想使用 JavaScript (NodeJS) 将代码上传到 Arduino,
我讨厌使用 FIRMATA 上传代码,
我想用官方的Arduino create agent
和Arduino create agent js client
https://github.com/arduino/arduino-create-agent-js-client
我只是 downloaded arduino 创建代理,
我运行以下在空目录
git clone https://github.com/arduino/arduino-create-agent-js-client.git
我在 COM7 中插入了 arduino nano(旧的引导加载程序),
因此我将文件.\demo\app.jsx
第189-205行更改(编辑)为
handleUpload() {
const target = {
board: 'arduino:avr:nano',
port: 'COM7',
network: false
};
this.setState({ uploadingPort: target.port });
daemon.boardPortAfterUpload.subscribe(portStatus => {
if (portStatus.hasChanged) {
this.setState({ uploadingPort: portStatus.newPort });
}
});
// Upload a compiled sketch.
daemon.uploadSerial(target, 'serial_mirror', { bin: HEX });
}
然后我运行
npm run dev
因为本地主机 运行s 在 http://localhost:8000/
我编辑了配置文件
C:\Users\USER\AppData\Roaming\ArduinoCreateAgent\config.ini
并设置
origins = http://localhost:8000
即
gc = std # Type of garbage collection. std = Normal garbage collection allowing system to decide (this has been known to cause a stop the world in the middle of a CNC job which can cause lost responses from the CNC controller and thus stalled jobs. use max instead to solve.), off = let memory grow unbounded (you have to send in the gc command manually to garbage collect or you will run out of RAM eventually), max = Force garbage collection on each recv or send on a serial port (this minimizes stop the world events and thus lost serial responses, but increases CPU usage)
hostname = unknown-hostname # Override the hostname we get from the OS
regex = usb|acm|com # Regular expression to filter serial port list
v = true # show debug logging
appName = CreateAgent/Stable
updateUrl = https://downloads.arduino.cc/
origins = http://localhost:8000 #this is where I have setted
#httpProxy = http://your.proxy:port # Proxy server for HTTP requests
crashreport = false # enable crashreport logging
如上图继续上传
请帮忙
有几个步骤可以让这个工作:
- 安装 Arduino Create Agent
- 修改
config.ini
文件设置origins = http://localhost:8000
- 在
demo\app.jsx
中更新目标板和端口
- 在
demo\serial_mirror.js
替换草图下载到板子
- 通过在您的浏览器中禁用 CORS,允许演示应用到达
builder.arduino.cc
您已经完成了前两个、第三个的一部分和最后两个的 none。
确定目标板
完全合格的电路板名称 (FQBN) 需要在 demo\app.jsx
中更新。 FQBN 可以从 Arduino 应用程序的编译输出 window 中获取。当您构建草图时,Arduino 应用程序中的输出 window 将包含一个 -fqbn
参数。例如-fqbn=arduino:avr:nano:cpu=atmega328
在 =
之后复制此 FQBN 并更新目标对象的板 属性 以及您的板的端口。
例如
const target = {
board: 'arduino:avr:nano:cpu=atmega328',
port: 'COM7',
network: false
};
替换草图
演示应用程序硬编码要在 serial_mirror.js
中下载的草图
这可以通过从 Arduino 应用程序导出编译后的二进制文件来替换为所需的草图。请参见下面的屏幕截图。导出的二进制文件保存到sketch文件夹(“Sketch”菜单上的“Show Sketch folder”会显示这个文件夹)。请注意,草图必须是可写的(例如,示例草图不会在此草图文件夹中生成二进制文件)。
导出的二进制文件需要进行 base 64 编码。导出的二进制文件将具有您正在使用的 hex
或 bin
扩展名 depending on the type of board。例如对于 avr 板,转换 sketch 文件夹中名为 <sketch>.ino.with_bootloader.standard.hex
的文件。
您可以在 WSL(Windows Linux 的子系统)中使用以下命令转换二进制文件:
base64 -w 0 sketch.ino.with_bootloader.standard.hex > exported.sketch.b64
或者,使用 powershell:
[System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes("c:\<path to sketch.ino.with_bootloader.standard.hex>")) | Set-Content -Path "C:\<path to exported.sketch.b64>"
demo\serial_mirror.js
中的字符串需要替换为新草图的 base 64 字符串。即
export const HEX = '<string from exported.sketch.b64>';
在浏览器中禁用 CORS
浏览器中的开发人员控制台在尝试上传草图时显示 CORS 错误。
您可以通过启动浏览器的单独实例来暂时禁用此安全检查。例如使用 --disable-web-security
标志开始 Chrome:
"c:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir=c:\windows\temp
演示应用随后可以上传草图而不会出现任何 CORS 错误。
请参阅此 other SO answer 以了解失败原因的概述。
应用程序需要对 builder.arduino.cc
的请求失败,以确定在对板进行编程时要使用的命令行和工具签名。
陷阱
您将需要关闭任何其他使用 COM 端口的应用程序并强制您的 Arduino 进入编程模式(如有必要,按下开发板上的编程按钮)。
欢迎光临,
目前,我想使用 JavaScript (NodeJS) 将代码上传到 Arduino,
我讨厌使用 FIRMATA 上传代码,
我想用官方的Arduino create agent
和Arduino create agent js client
https://github.com/arduino/arduino-create-agent-js-client
我只是 downloaded arduino 创建代理, 我运行以下在空目录
git clone https://github.com/arduino/arduino-create-agent-js-client.git
我在 COM7 中插入了 arduino nano(旧的引导加载程序),
因此我将文件.\demo\app.jsx
第189-205行更改(编辑)为
handleUpload() {
const target = {
board: 'arduino:avr:nano',
port: 'COM7',
network: false
};
this.setState({ uploadingPort: target.port });
daemon.boardPortAfterUpload.subscribe(portStatus => {
if (portStatus.hasChanged) {
this.setState({ uploadingPort: portStatus.newPort });
}
});
// Upload a compiled sketch.
daemon.uploadSerial(target, 'serial_mirror', { bin: HEX });
}
然后我运行
npm run dev
因为本地主机 运行s 在 http://localhost:8000/
我编辑了配置文件
C:\Users\USER\AppData\Roaming\ArduinoCreateAgent\config.ini
并设置
origins = http://localhost:8000
即
gc = std # Type of garbage collection. std = Normal garbage collection allowing system to decide (this has been known to cause a stop the world in the middle of a CNC job which can cause lost responses from the CNC controller and thus stalled jobs. use max instead to solve.), off = let memory grow unbounded (you have to send in the gc command manually to garbage collect or you will run out of RAM eventually), max = Force garbage collection on each recv or send on a serial port (this minimizes stop the world events and thus lost serial responses, but increases CPU usage)
hostname = unknown-hostname # Override the hostname we get from the OS
regex = usb|acm|com # Regular expression to filter serial port list
v = true # show debug logging
appName = CreateAgent/Stable
updateUrl = https://downloads.arduino.cc/
origins = http://localhost:8000 #this is where I have setted
#httpProxy = http://your.proxy:port # Proxy server for HTTP requests
crashreport = false # enable crashreport logging
如上图继续上传
请帮忙
有几个步骤可以让这个工作:
- 安装 Arduino Create Agent
- 修改
config.ini
文件设置origins = http://localhost:8000
- 在
demo\app.jsx
中更新目标板和端口
- 在
demo\serial_mirror.js
替换草图下载到板子
- 通过在您的浏览器中禁用 CORS,允许演示应用到达
builder.arduino.cc
您已经完成了前两个、第三个的一部分和最后两个的 none。
确定目标板
完全合格的电路板名称 (FQBN) 需要在 demo\app.jsx
中更新。 FQBN 可以从 Arduino 应用程序的编译输出 window 中获取。当您构建草图时,Arduino 应用程序中的输出 window 将包含一个 -fqbn
参数。例如-fqbn=arduino:avr:nano:cpu=atmega328
在 =
之后复制此 FQBN 并更新目标对象的板 属性 以及您的板的端口。
例如
const target = {
board: 'arduino:avr:nano:cpu=atmega328',
port: 'COM7',
network: false
};
替换草图
演示应用程序硬编码要在 serial_mirror.js
这可以通过从 Arduino 应用程序导出编译后的二进制文件来替换为所需的草图。请参见下面的屏幕截图。导出的二进制文件保存到sketch文件夹(“Sketch”菜单上的“Show Sketch folder”会显示这个文件夹)。请注意,草图必须是可写的(例如,示例草图不会在此草图文件夹中生成二进制文件)。
导出的二进制文件需要进行 base 64 编码。导出的二进制文件将具有您正在使用的 hex
或 bin
扩展名 depending on the type of board。例如对于 avr 板,转换 sketch 文件夹中名为 <sketch>.ino.with_bootloader.standard.hex
的文件。
您可以在 WSL(Windows Linux 的子系统)中使用以下命令转换二进制文件:
base64 -w 0 sketch.ino.with_bootloader.standard.hex > exported.sketch.b64
或者,使用 powershell:
[System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes("c:\<path to sketch.ino.with_bootloader.standard.hex>")) | Set-Content -Path "C:\<path to exported.sketch.b64>"
demo\serial_mirror.js
中的字符串需要替换为新草图的 base 64 字符串。即
export const HEX = '<string from exported.sketch.b64>';
在浏览器中禁用 CORS
浏览器中的开发人员控制台在尝试上传草图时显示 CORS 错误。
您可以通过启动浏览器的单独实例来暂时禁用此安全检查。例如使用 --disable-web-security
标志开始 Chrome:
"c:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir=c:\windows\temp
演示应用随后可以上传草图而不会出现任何 CORS 错误。
请参阅此 other SO answer 以了解失败原因的概述。
应用程序需要对 builder.arduino.cc
的请求失败,以确定在对板进行编程时要使用的命令行和工具签名。
陷阱
您将需要关闭任何其他使用 COM 端口的应用程序并强制您的 Arduino 进入编程模式(如有必要,按下开发板上的编程按钮)。