Javascript 串行API中navigator.serial和SerialPort上的函数是否未实现?

Javascript 串行API中navigator.serial和SerialPort上的函数是否未实现?,javascript,google-chrome,webusb,Javascript,Google Chrome,Webusb,我正在尝试从网页连接到串行端口。我找到了支持这一点的方法 var Serial={}; (功能(){ "严格使用",; /* * */ Serial.debug=true; /* * */ //串行设备; /* * */ Serial.log=函数(消息){ if(Serial.debug) { 让我们先来; 如果(!document.querySelector('pre')) { pre=document.createElement('pre'); 文件.正文.附件(pre); } pre=

我正在尝试从网页连接到串行端口。我找到了支持这一点的方法

var Serial={};
(功能(){
"严格使用",;
/*
*
*/
Serial.debug=true;
/*
*
*/
//串行设备;
/*
*
*/
Serial.log=函数(消息){
if(Serial.debug)
{
让我们先来;
如果(!document.querySelector('pre'))
{
pre=document.createElement('pre');
文件.正文.附件(pre);
}
pre=document.querySelector('pre');
pre.innerHTML+=`\n${message}`;
}
}
/*
*
*/
Serial.request=函数(){
常量请求选项={
//在具有Arduino USB供应商ID的设备上进行筛选。
筛选器:[{vendorId:0x0403}],
};
//向用户请求Arduino。
console.log(导航器);
console.log(navigator.serial);
const-port=navigator.serial.requestPort(requestOptions);
//打开并开始阅读。
开放端口({波特率:19200});
const reader=port.in.getReader();
while(true){
const{done,data}=reader.read();
如果(完成)中断;
控制台日志(数据);
}
}
/*
*
*/
串行端口={
/*
*
*/
设备:{},
/*
*
*/
connect:function()
{
让循环=()=>{
this.device.transferIn(5,64)。然后(result=>{
串行日志(结果);
loop();
},错误=>{
WebUSB.log(错误);
});
}
console.log(这个设备);
返回this.device.open({baudrate:19200})
.然后(()=>此.device.selectConfiguration(1))
.然后(()=>此.device.claimiInterface(1))
.then(()=>this.device.controlTransferOut({requestType:'class',recipient:'interface',request:0x22,value:0x01,index:0x02}))
.然后(()=>{loop})
.那么(
结果=>{
Serial.log('successfull');
}
)
.接住(
错误=>{
串行日志(错误);
}
);
},
/*
*
*/
发送:函数()
{
设d=新日期();
设h=d.getHours();
设m=d.getMinutes();
设s=d.getSeconds();
如果(h<10){h=`0${h}`};
如果(m<10){m=`0${m}`};
如果(s<10){s=`0${s}`;
让数据=`show time${h}${s%2==1?':':'''}${m}${s%2==0?':':'''}${s}';
控制台日志(数据);
设textcoder=newtextcoder();
WebUSB.port.device.transferOut(4,textcoder.encode(数据));
},
/*
*
*/
断开连接:函数()
{
console.log(串行端口设备)
Serial.port.device.close()
.那么(
结果=>{
Serial.log('closed');
document.querySelectorAll('button')[1].parentNode.removeChild(document.querySelectorAll('button')[1]);
}
)
.接住(
错误=>{
串行日志(错误);
}
);;
}
}
})();
/*
*
*/
addEventListener('DOMContentLoaded',connect=>{
let button=document.createElement('button');
button.innerHTML='连接USB设备';
按钮.addEventListener('click',Serial.request);
document.body.appendChild(按钮);

},对)串行API尚未在Chrome中完全实现。我看到您已经在Chromium bug跟踪器中找到了实现。有关实施进度的最新信息将发布在那里。它目前处于“已启动”状态,而不是“已修复”。

为了清晰起见,发布@Benjamin的答案。串口连接仍然是Chrome 2020年初的“实验性”功能。您必须启用以下选项:

chrome://flags/#enable-experimental-web-platform-features

只需在Chrome地址栏中复制粘贴该行并启用它。

现在可在Chrome 77 beta版的
chrome://flags/#enable-实验性web平台功能
。这有助于与Chr一起使用omechrome://flags/#enable-串行api中的蓝牙spp-现在不可用?