Skip to content

Commit 15f935c

Browse files
committed
update serial
更新串口数据
1 parent 3210ff5 commit 15f935c

File tree

5 files changed

+134
-123
lines changed

5 files changed

+134
-123
lines changed

icon.png

-11.6 KB
Binary file not shown.

index.html

Lines changed: 13 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,44 +3,20 @@
33
<head>
44
<meta charset="UTF-8" />
55
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6-
7-
<link rel="manifest" href="manifest.json">
8-
<script type="text/javascript" src="service-worker.js"></script>
9-
<title>WebSocket Example</title>
10-
<link rel="stylesheet" href="css/styles.css" />
11-
<!-- <link rel="stylesheet" href="css/styles.css"> -->
12-
<!-- <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script> -->
13-
<!-- <script type="text/javascript" src="service-worker.js"></script> -->
14-
<script type="text/javascript" src="js/echarts.min.js"></script>
15-
<script type="text/javascript" src="js/smoothie.js"></script>
6+
<title>Web Serial Example</title>
167
</head>
178
<body>
18-
<!-- <script src="js/echarts.min.js"></script> -->
19-
<h1>UNITO智能家居水系统测试</h1>
20-
<!-- <div id="randomNumber"></div> -->
21-
<div id="gaugeChart"></div>
22-
<div id="timeChart"></div>
23-
<canvas id="mycanvas" width="800" height="200"></canvas>
24-
<p>
25-
<a href="download/unito_hub_idf.bin" download="unito_hub_idf.bin"
26-
>unito_hub_idf</a
27-
>
28-
<a
29-
href="download/unito_hub_idf20240318.bin"
30-
download="unito_hub_idf20240318.bin"
31-
>unito_hub_idf20240318</a
32-
>
33-
<a
34-
href="download/UNITO_Infinity_NO_BL_HW30_20230804_1.hex"
35-
download="UNITO_Infinity.hex"
36-
>UNITO_InfinityFW</a
37-
>
38-
<a href="download/Orbit_CK.hex" download="Orbit_CK.hex">UNITO_OrbitFW</a>
39-
<a href="download/unito_esp32.bin" download="unito_esp32.bin"
40-
>unito_esp32</a
41-
>
42-
</p>
43-
<script type="text/javascript" src="js/script.js"></script>
44-
<!-- <script src="script.js"></script> -->
9+
<h1>串口终端测试!!!</h1>
10+
<br /><br />
11+
<textarea id="receivedText" rows="10" cols="50"></textarea>
12+
<br /><br />
13+
<textarea id="sendText" rows="3" cols="50">Hello from Web Serial!</textarea>
14+
<br /><br />
15+
<button id="connectButton">连接串口</button>
16+
<button id="disconnectButton" disabled>退出串口</button>
17+
<br /><br />
18+
<button id="sendButton">发送数据</button>
19+
20+
<script src="script.js"></script>
4521
</body>
4622
</html>

manifest.json

Lines changed: 0 additions & 26 deletions
This file was deleted.

script.js

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
// 获取页面元素
2+
const connectButton = document.getElementById("connectButton");
3+
const disconnectButton = document.getElementById("disconnectButton");
4+
const receivedText = document.getElementById("receivedText");
5+
const sendText = document.getElementById("sendText");
6+
const sendButton = document.getElementById("sendButton");
7+
8+
let port;
9+
let reader;
10+
// 循环读取串口数据
11+
async function readLoop(reader) {
12+
try {
13+
while (true && port.open) {
14+
const { value, done } = await reader.read();
15+
if (done) {
16+
console.log("Read operation done");
17+
reader.releaseLock();
18+
break;
19+
}
20+
if (value) {
21+
const decoder = new TextDecoder();
22+
console.log("Received data:", decoder.decode(value));
23+
receivedText.value += decoder.decode(value);
24+
}
25+
}
26+
} catch (err) {
27+
console.log("Error reading from serial port:", err);
28+
// port.onFail();
29+
} finally {
30+
reader.releaseLock();
31+
// return;
32+
}
33+
console.log("这里是不是又退出了一次");
34+
// port.close();
35+
}
36+
37+
// 连接到串口设备
38+
connectButton.addEventListener("click", async () => {
39+
try {
40+
port = await navigator.serial.requestPort();
41+
await port.open({ baudRate: 9600 }); // 设置波特率
42+
43+
connectButton.disabled = true;
44+
disconnectButton.disabled = false;
45+
// port.onSuccess();
46+
// 监听串口数据
47+
reader = port.readable.getReader();
48+
readLoop(reader);
49+
} catch (err) {
50+
console.error("没有选择打开串口号:", err);
51+
} finally {
52+
console.log("串口打开成功");
53+
}
54+
});
55+
56+
// 停止读取操作
57+
async function stopReading() {
58+
try {
59+
if (port && port.readable) {
60+
if (reader) {
61+
reader.releaseLock();
62+
reader = null;
63+
}
64+
await port.readableStreamClosed;
65+
await port.readable.cancel();
66+
67+
console.log("Read operation cancelled successfully.");
68+
}
69+
} catch (error) {
70+
console.error("Error stopping reading:", error);
71+
}
72+
}
73+
// 关闭串口连接
74+
async function closePort() {
75+
if (port && port.readable) {
76+
await stopReading(); // 停止读取操作
77+
if (port && port.readable) {
78+
try {
79+
// 检查读取器和写入器是否已关闭
80+
// if (
81+
// port.readable.getReader().closed &&
82+
// port.writable.getWriter().closed
83+
// ) {
84+
// console.log("Reader and writer are both closed");
85+
// }
86+
await port.close();
87+
console.log("Port closed successfully!");
88+
// 清除事件监听器
89+
port.onReceive = null;
90+
port.onDataReceived = null;
91+
port.onError = null;
92+
connectButton.disabled = false;
93+
disconnectButton.disabled = true;
94+
} catch (error) {
95+
console.error("Error closing port:", error);
96+
}
97+
}
98+
} else {
99+
console.warn("Port is not open or not readable.");
100+
}
101+
}
102+
disconnectButton.addEventListener("click", closePort);
103+
104+
// 发送数据到串口
105+
sendButton.addEventListener("click", async () => {
106+
if (port && port.writable) {
107+
const writer = port.writable.getWriter();
108+
const encoder = new TextEncoder();
109+
const data = encoder.encode(sendText.value + "\n");
110+
try {
111+
// 使用 writer 的 write 方法发送数据
112+
await writer.write(data);
113+
console.log("Data sent successfully");
114+
} catch (error) {
115+
console.error("Error sending data:", error);
116+
} finally {
117+
// 发送完成后,你可能需要释放 writer
118+
writer.releaseLock();
119+
}
120+
}
121+
});

service-worker.js

Lines changed: 0 additions & 60 deletions
This file was deleted.

0 commit comments

Comments
 (0)