Web Serial API
Khả dụng hạn chế
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Note: This feature is available in Dedicated Web Workers.
Web Serial API cung cấp cách cho các trang web đọc từ và ghi vào các thiết bị serial. Các thiết bị này có thể được kết nối qua cổng serial, hoặc là thiết bị USB hoặc Bluetooth giả lập cổng serial.
Khái niệm và cách sử dụng
Web Serial API là một trong một tập API cho phép các trang web giao tiếp với các thiết bị ngoại vi được kết nối với máy tính của người dùng. Nó cung cấp khả năng kết nối với các thiết bị yêu cầu hệ điều hành giao tiếp qua serial API, thay vì USB có thể được truy cập qua WebUSB API, hoặc thiết bị đầu vào có thể được truy cập qua WebHID API.
Ví dụ về thiết bị serial bao gồm máy in 3D và vi điều khiển như BBC micro:bit board.
Giao diện
SerialThử nghiệm-
Cung cấp các thuộc tính và phương thức để tìm và kết nối với các cổng serial từ trang web.
SerialPortThử nghiệm-
Cung cấp quyền truy cập vào cổng serial trên thiết bị host.
Mở rộng cho các giao diện khác
Tiêu đề HTTP
Permissions-Policychỉ thịserial-
Kiểm soát liệu tài liệu hiện tại có được phép dùng Web Serial API để giao tiếp với thiết bị serial hay không.
Ví dụ
>Kiểm tra các cổng có sẵn
Ví dụ sau cho thấy cách kiểm tra các cổng có sẵn và cho phép người dùng cấp quyền truy cập vào các cổng bổ sung.
navigator.serial.addEventListener("connect", (e) => {
// Kết nối với `e.target` hoặc thêm nó vào danh sách cổng có sẵn.
});
navigator.serial.addEventListener("disconnect", (e) => {
// Xóa `e.target` khỏi danh sách cổng có sẵn.
});
navigator.serial.getPorts().then((ports) => {
// Khởi tạo danh sách cổng có sẵn với `ports` khi tải trang.
});
button.addEventListener("click", () => {
const usbVendorId = 0xabcd;
navigator.serial
.requestPort({ filters: [{ usbVendorId }] })
.then((port) => {
// Kết nối với `port` hoặc thêm nó vào danh sách cổng có sẵn.
})
.catch((e) => {
// Người dùng không chọn cổng.
});
});
Đọc dữ liệu từ cổng
Ví dụ sau cho thấy cách đọc dữ liệu từ cổng.
while (port.readable) {
const reader = port.readable.getReader();
try {
while (true) {
const { value, done } = await reader.read();
if (done) {
// |reader| đã bị hủy.
break;
}
// Làm gì đó với |value|...
}
} catch (error) {
// Xử lý |error|...
} finally {
reader.releaseLock();
}
}
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| Web Serial API> # serial-interface> |