vue 使用 Web Serial API 控制串口

https://web.dev/serial/

const arr = ref([]);//用来存储串口返回的数据
const lianjie = async () => {
  let port = await navigator.serial.requestPort();//用户选择串口设备
  await port.open({ baudRate: 9600 });//打开
  console.log(port, "port");
  let reader = port.readable.getReader();

  while (true) {
    let { value, done } = await reader.read();
    SetObj(JSON.parse(JSON.stringify(value)));//返回的数据
  }
};
const SetObj = (val) => {
  for (let i in val) {//循环放入准备好的数组
    arr.value.push(val[i]);
  }
  if (arr.value.length > 14) {//判断多少为为正确解析数量
    let str = arr.value.slice(0, 14);//如果满足解析数量,裁剪掉
    console.log(bin2String(str), "bin2String");//调用解析方法
  }
};
const bin2String = (arrBytes) => {
  // 字节数组转16进制
  var str = "";
  for (var i = 0; i < arrBytes.length; i++) {
    var tmp;
    var num = arrBytes[i];
    if (num < 0) {
      // 此处填坑,当byte因为符合位导致数值为负时候,需要对数据进行处理
      tmp = (255 + num + 1).toString(16);
    } else {
      tmp = num.toString(16);
    }
    if (tmp.length === 1) {
      tmp = "0" + tmp;
    }
    str += tmp;
  }
  return str;
};


reader.cancel();//断开链接

 

posted @ 2022-06-02 14:33  小万子呀  阅读(3580)  评论(0)    收藏  举报