要实现一个串口通信的demo,可以使用Web Serial API来连接和通信。

首先,需要在HTML文件中添加一个按钮和一些文本框,用于输入和显示数据。然后,可以使用以下JavaScript代码来连接和通信串口。

// 获取页面元素
const connectButton = document.getElementById('connectButton');
const disconnectButton = document.getElementById('disconnectButton');
const sendButton = document.getElementById('sendButton');
const receivedData = document.getElementById('receivedData');
const inputData = document.getElementById('inputData');

// 串口对象
let serialPort;

// 连接串口
connectButton.addEventListener('click', async () => {
  try {
    // 请求用户授权
    const port = await navigator.serial.requestPort();

    // 打开串口
    await port.open({ baudRate: 9600 });

    // 设置串口对象
    serialPort = port;

    // 监听数据接收事件
    const reader = port.readable.getReader();
    while (true) {
      const { value, done } = await reader.read();
      if (done) {
        break;
      }
      receivedData.textContent += new TextDecoder().decode(value);
    }

    // 禁用连接按钮,启用发送和断开按钮
    connectButton.disabled = true;
    sendButton.disabled = false;
    disconnectButton.disabled = false;
  } catch (error) {
    console.error(error);
  }
});

// 断开连接
disconnectButton.addEventListener('click', async () => {
  try {
    // 关闭串口
    await serialPort.close();

    // 清空接收数据
    receivedData.textContent = '';

    // 启用连接按钮,禁用发送和断开按钮
    connectButton.disabled = false;
    sendButton.disabled = true;
    disconnectButton.disabled = true;
  } catch (error) {
    console.error(error);
  }
});

// 发送数据
sendButton.addEventListener('click', async () => {
  try {
    const data = inputData.value;

    // 发送数据
    await serialPort.write(new TextEncoder().encode(data));

    // 清空输入框
    inputData.value = '';
  } catch (error) {
    console.error(error);
  }
});

在HTML文件中,需要添加以下内容:

<button id="connectButton">连接</button>
<button id="disconnectButton" disabled>断开</button>
<input type="text" id="inputData" />
<button id="sendButton" disabled>发送</button>
<div id="receivedData"></div>

这样就可以通过Web Serial API实现一个简单的串口通信demo了

通过Web Serial API编写一个实现串口通信demo

原文地址: http://www.cveoy.top/t/topic/hU4E 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录