Google chrome chrome navigator.serial的初学者问题

Google chrome chrome navigator.serial的初学者问题,google-chrome,navigator,Google Chrome,Navigator,我正在使用“navigator.serial”在chrome浏览器上使用串口访问 我最初的实验基于stackoverflow之前的一次过账: 我复制了上面提到的代码示例,并进行了必要的配置更改#启用实验性web平台功能,同样如上所述 我在Ubuntu 18.04上做这些。有两个USB串行端口连接到机器上,我已经使用gtkterm验证了我可以在两个端口之间发送和接收数据 从给出的示例(下面重复的代码)中,我发现我可以打开串行端口并建立一个“读取器”,步骤wait reader.read()会一直

我正在使用“navigator.serial”在chrome浏览器上使用串口访问

我最初的实验基于stackoverflow之前的一次过账:

我复制了上面提到的代码示例,并进行了必要的配置更改#启用实验性web平台功能,同样如上所述

我在Ubuntu 18.04上做这些。有两个USB串行端口连接到机器上,我已经使用gtkterm验证了我可以在两个端口之间发送和接收数据

从给出的示例(下面重复的代码)中,我发现我可以打开串行端口并建立一个“读取器”,步骤wait reader.read()会一直等到串行端口上出现一个传入字符,但此时变量器/对象“data”仍然未定义。 两个问题:

  • 我做错了什么,没有定义“数据”?我添加了一个alert()对话框,在
    const{done,data}=wait reader.read()时弹出继续,但是对话框显示“数据”在该点未定义。数据是我未能等待兑现的承诺吗

  • 我还没有找到有关所涉及的类的方法和成员(即reader.read()和reader.write()是我的对象“readeer”可用的方法)的(希望是自包含的)引用;在哪里可以找到可用方法的列表以及这些方法的属性

  • 以下是一份从去年发布的上述信息中获得的代码副本(小网页):

    <html>
    <script>
    var port;
    var buffy = new ArrayBuffer(1);
    var writer;
    buffy[0]=10;
    const test = async function () {
        const requestOptions = {
          // Filter on devices with the Arduino USB vendor ID.
          //filters: [{ vendorId: 0x2341 }],
        };
    
        // Request an Arduino from the user.
        port = await navigator.serial.requestPort(requestOptions);
    
        // Open and begin reading.
        await port.open({ baudrate: 115200 });
        //const reader = port.in.getReader();
        const reader = port.readable.getReader();
        writer = port.writable.getWriter();
        //const writer = port.writable.getWriter();
        //writer.write(buffy);
        while (true) {
          const {done, data} = await reader.read();
          if (done) break;
          console.log(data);
        }
    } // end of function
    </script>
    <button onclick="test()">Click It</button>
    </html>
    
    
    var端口;
    var buffy=新阵列缓冲(1);
    var编写器;
    巴菲[0]=10;
    常量测试=异步函数(){
    常量请求选项={
    //在具有Arduino USB供应商ID的设备上进行筛选。
    //筛选器:[{vendorId:0x2341}],
    };
    //向用户请求Arduino。
    port=wait navigator.serial.requestPort(requestOptions);
    //打开并开始阅读。
    等待端口打开({波特率:115200});
    //const reader=port.in.getReader();
    const reader=port.readable.getReader();
    writer=port.writable.getWriter();
    //常量writer=port.writeable.getWriter();
    //作家,作家(巴菲);
    while(true){
    const{done,data}=wait reader.read();
    如果(完成)中断;
    控制台日志(数据);
    }
    }//函数结束
    点击它
    

    谢谢您的帮助!

    我遇到了完全相同的问题,并设法解决了它

    改变

    const {done, data} = await reader.read();
    

    你从(和其他一些人)那里得到这个的例子是错误的,参数是错误的。 还有,不太清楚为什么,但我用

    const {data, done} = await reader.read();
    
    它也不起作用,它不喜欢var数据

    关于navigator.serial的文档不是很好。下面是一些帮助链接

    API(注意这是草稿,与Chrome实现不完全匹配)

    port.readable.getReader()是一个ReadableStream

    使用ReadableStreamDefaultReader的,其定义为

    dictionary ReadableStreamDefaultReadResult {
        any value;
        boolean done;
    };
    

    解释者

    教程

    铬跟踪器

    Web串行API工作项
    我遇到了完全相同的问题,并设法解决了它

    改变

    const {done, data} = await reader.read();
    

    你从(和其他一些人)那里得到这个的例子是错误的,参数是错误的。 还有,不太清楚为什么,但我用

    const {data, done} = await reader.read();
    
    它也不起作用,它不喜欢var数据

    关于navigator.serial的文档不是很好。下面是一些帮助链接

    API(注意这是草稿,与Chrome实现不完全匹配)

    port.readable.getReader()是一个ReadableStream

    使用ReadableStreamDefaultReader的,其定义为

    dictionary ReadableStreamDefaultReadResult {
        any value;
        boolean done;
    };
    

    解释者

    教程

    铬跟踪器

    Web串行API工作项