【问题标题】:How would I send a file with Web Serial API?如何使用 Web Serial API 发送文件?
【发布时间】:2022-06-13 16:32:27
【问题描述】:

我是个新手,我今天才开始研究这个。我有一个运行 chrome 版本 96.0.4664.111(官方构建)(64 位)的 chromebook,以及一个我已经加载了 python 引导加载程序(拖放)的树莓派 pico。我试图从我的浏览器串行访问 pico 以加载我的源代码,因为我无法在我的 chromebook 上安装 thawny。我已经拼凑了这个使用 web 串行 api 连接到 pico 的 javascript 函数。

const filters = [
  { usbVendorId: 0x2E8A, usbProductId: 0x0003 },
  { usbVendorId: 0x2E8A, usbProductId: 0x0005 }
];

// Prompt user to select an Arduino Uno device.
const port = await navigator.serial.requestPort({ filters });

const { usbProductId, usbVendorId } = port.getInfo();

// Wait for the serial port to open.
await port.open({ baudRate: 9600 });

const textDecoder = new TextDecoderStream();
const readableStreamClosed = port.readable.pipeTo(textDecoder.writable);
const reader = textDecoder.readable.getReader();

// Listen to data coming from the serial device.
while (true) {
  const { value, done } = await reader.read();
  if (done) {
    // Allow the serial port to be closed later.
    reader.releaseLock();
    break;
  }
  // value is a Uint8Array.
  console.log(value);
}

// Listen to data coming from the serial device.
while (true) {
  const { value, done } = await reader.read();
  if (done) {
    // Allow the serial port to be closed later.
    reader.releaseLock();
    break;
  }
  // value is a string.
  console.log(value);
}

const textEncoder = new TextEncoderStream();
const writableStreamClosed = textEncoder.readable.pipeTo(port.writable);

const writer = textEncoder.writable.getWriter();

await writer.write("hi");

// Allow the serial port to be closed later.
writer.releaseLock();

我找不到让这个程序上传文件的方法,如果有人能帮助我,我将不胜感激。 如果我不清楚或非常愚蠢,请原谅,我对此完全陌生,昨晚过年我真的很累。谢谢!

【问题讨论】:

  • 哦,嘿,我只是在考虑这个完全相同的项目!不过很好奇……我的 Pico 想要显示为虚拟大容量存储设备,然后我向它写入了一个文件。你使用什么协议?
  • 我只是用glitch.com做一个串行文件传输网站。我将我的 pico 引导到 UF2 引导加载模式并将 micropython 引导加载程序拖放到它上面。我的 chromebook 不再将其视为惰性 USB 大容量存储设备,而是将其视为串行 USB 设备。我需要以该状态将我的代码发送给它以使其运行。任何普通人都会获得与 pico 进行串行通信的解冻 ide,但我的 chromebook 是学校发行的,我无法在上面安装任何东西。所以,我只需要在我的浏览器中从 web 串行 api 发送 main.py。
  • 仅供参考,上面的代码允许我连接到板并将小字符串发送到 pico。只需转到任何网站,按 f12,然后单击控制台选项卡。然后将上述代码复制粘贴到控制台(是的,全部),一个对话框应该要求您连接到串行设备,通过 USB 过滤,该设备只能看到 pi pico 板。 (当然在串行模式下)。这就是它所做的一切,然后向 pico 发送“hi”,它什么都不做。

标签: javascript serial-port web-serial-api


【解决方案1】:

我目前正在搜索如何像您一样使用 Web Serial API 发送文件,但我无法获得您的解决方案。你能发布你的解决方案吗?

【讨论】:

    【解决方案2】:

    我找到了适合我的问题的解决方案,tinkerdoodle.cc.

    【讨论】:

      猜你喜欢
      • 2016-07-23
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-18
      相关资源
      最近更新 更多