-
Notifications
You must be signed in to change notification settings - Fork 38
/
Copy pathindex.html
364 lines (337 loc) · 19.5 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Web Serial Debug-浏览器串口调试工具</title>
<link href="https://cdn.bootcdn.net/ajax/libs/codemirror/5.65.16/codemirror.css" rel="stylesheet">
<link href="https://cdn.bootcdn.net/ajax/libs/codemirror/5.65.16/theme/idea.min.css" rel="stylesheet">
<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.2.3/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.bootcdn.net/ajax/libs/bootstrap-icons/1.11.0/font/bootstrap-icons.css" rel="stylesheet">
<script src="https://cdn.bootcdn.net/ajax/libs/codemirror/5.65.16/codemirror.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/codemirror/5.65.16/addon/selection/active-line.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/codemirror/5.65.16/addon/edit/matchbrackets.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/codemirror/5.65.16/mode/javascript/javascript.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.2.3/js/bootstrap.bundle.min.js"></script>
<link rel="stylesheet" href="css/style.css">
<link rel="icon" href="imgs/logo.svg" type="image/svg+xml">
<script>
hideTop = function () {
var header = document.querySelector('.bd-header');
header.remove();
document.documentElement.style.setProperty('--top-height', '0px');
}
</script>
<script>
!function (p) { "use strict"; !function (t) { var s = window, e = document, i = p, c = "".concat("https:" === e.location.protocol ? "https://" : "http://", "sdk.51.la/js-sdk-pro.min.js"), n = e.createElement("script"), r = e.getElementsByTagName("script")[0]; n.type = "text/javascript", n.setAttribute("charset", "UTF-8"), n.async = !0, n.src = c, n.id = "LA_COLLECT", i.d = n; var o = function () { s.LA.ids.push(i) }; s.LA ? s.LA.ids && o() : (s.LA = p, s.LA.ids = [], o()), r.parentNode.insertBefore(n, r) }() }({ id: "JuSxXIvOMGPBMkpo", ck: "JuSxXIvOMGPBMkpo" });
</script>
</head>
<body>
<header class="bd-header bg-dark py-3 d-flex align-items-stretch border-bottom border-dark">
<div class="container-fluid d-flex align-items-center">
<h1 class="d-flex align-items-center fs-4 text-white mb-0">
<img src="imgs/logo.svg" width="38" height="30" class="me-3" alt="Web Serial">
Web Serial Debug
</h1>
<span class="ms-auto">
<span class="link-light">代码已开源:</span>
<a href="https://github.com/itldg/web-serial-debug" target="_blank" class="link-light">Github</a>
<a href="https://gitee.com/itldg/web-serial-debug" target="_blank" class="link-light">Gitee</a>
<a href="javascript:hideTop()" class="link-light ml-2">隐藏头部</a>
</span>
</div>
</header>
<div id="main" class="d-flex">
<!--左侧串口配置-->
<div id="serial-options" class="col-auto m-0 bg-light sidebar">
<div class="collapse show p-2 float-start">
<div class="input-group mb-3">
<span class="input-group-text">波特率</span>
<input type="number" id="serial-baud" class="form-control" placeholder="选择波特率" value="115200"
list="baud-list">
<datalist id="baud-list">
<option>110</option>
<option>300</option>
<option>600</option>
<option>1200</option>
<option>2400</option>
<option>4800</option>
<option>7200</option>
<option>9600</option>
<option>14400</option>
<option>19200</option>
<option>28800</option>
<option>38400</option>
<option>56000</option>
<option>57600</option>
<option>76800</option>
<option>115200</option>
<option>230400</option>
<option>460800</option>
</datalist>
</div>
<div class="input-group mb-3">
<span class="input-group-text">数据位</span>
<select class="form-select" id="serial-data-bits">
<option>8</option>
<option>7</option>
</select>
</div>
<div class="input-group mb-3">
<span class="input-group-text">停止位</span>
<select class="form-select" id="serial-stop-bits">
<option>1</option>
<option>2</option>
</select>
</div>
<div class="input-group mb-3">
<span class="input-group-text">校验位</span>
<select class="form-select" id="serial-parity">
<Option value="none">None</Option>
<Option value="even">Even</Option>
<Option value="odd">Odd</Option>
</select>
</div>
<div class="input-group mb-3">
<span class="input-group-text">缓冲区</span>
<input type="number" id="serial-buffer-size" class="form-control" placeholder="缓冲区大小"
list="buffer-size-list" max="1677216" value="1024">
<datalist id="buffer-size-list">
<option>255</option>
<option>512</option>
<option>1024</option>
<option>2048</option>
<option>4096</option>
<option>8192</option>
</datalist>
</div>
<div class="input-group mb-3">
<span class="input-group-text">流控制</span>
<select class="form-select" id="serial-flow-control">
<Option value="none">None</Option>
<Option value="hardware">HardWare</Option>
</select>
</div>
<div class="d-flex mt-2">
<button class="btn btn-secondary me-3" id="serial-select-port">选择串口</button>
<button class="btn btn-primary flex-grow-1" id="serial-open-or-close">打开串口</button>
</div>
<div id="serial-status" class="mt-2">
<div class="alert alert-info" role="alert">
未选择串口
</div>
</div>
</div>
<button class="toggle-button float-end" title="隐藏/打开边栏">
<i class="bi bi-chevron-compact-left"></i>
</button>
</div>
<div class="clear"></div>
<!--中间串口日志-->
<div id="log-main" class="flex-fill px-md-2">
<div
class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-1 pb-1 mb-1 flex-shrink-0">
<h1 class="h3">串口日志</h1>
<div class="btn-toolbar">
<div class="input-group input-group-sm me-2">
<span class="input-group-text">分包超时</span>
<input type="number" id="serial-timer-out" class="form-control" placeholder="0不分包" value="50"
style="width: 100px;" />
</div>
<div class="input-group input-group-sm me-2">
<span class="input-group-text">日志类型</span>
<select class="form-select" id="serial-log-type" style="width: 120px;">
<Option value="hex&text">Hex和Text</Option>
<Option value="hex">Hex</Option>
<Option value="text">Text</Option>
<Option value="ansi">彩色Ansi</Option>
</select>
</div>
<div class="btn-group">
<button class="btn btn-sm btn-outline-secondary" id="serial-auto-scroll">自动滚动</button>
<button class="btn btn-sm btn-outline-secondary" id="serial-clear">清空</button>
<button class="btn btn-sm btn-outline-secondary" id="serial-copy">复制</button>
<button class="btn btn-sm btn-outline-secondary" id="serial-save">导出</button>
</div>
</div>
</div>
<div id="serial-logs" class="flex-grow-1 border border-2 rounded mb-2"></div>
<div class="flex-shrink-0 mb-2">
<textarea class="form-control" rows="3" id="serial-send-content" style="resize: none;"
placeholder="在此输入要发送的内容,可以是字符串(如:你好,世界!),也可以是HEX(如:49544c4447)"></textarea>
<div
class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-1 pb-1 mb-1 flex-shrink-0">
<div class="btn-toolbar">
<div class="form-check align-self-center me-2">
<input class="form-check-input" type="checkbox" id="serial-add-crlf">
<label class="form-check-label" for="serial-add-crlf">
末尾加回车换行
</label>
</div>
<div class="form-check align-self-center me-2">
<input class="form-check-input" type="checkbox" id="serial-hex-send">
<label class="form-check-label" for="serial-hex-send">
HEX发送
</label>
</div>
<div class="form-check align-self-center me-2">
<input class="form-check-input" type="checkbox" id="serial-loop-send">
<label class="form-check-label" for="serial-loop-send">
循环发送
</label>
</div>
<div class="input-group input-group-sm">
<span class="input-group-text">发送间隔(MS)</span>
<input type="number" id="serial-loop-send-time" class="form-control" placeholder="" min="1"
value="1000" style="width: 100px;" />
</div>
</div>
<button id="serial-send" class="btn btn-primary h-10 px-5"><i class="bi bi-send"></i>
发送</button>
</div>
</div>
</div>
<div class="clear"></div>
<!--右侧串口工具-->
<div id="serial-tools" class="col-auto m-0 bg-light sidebar">
<button class="toggle-button float-start" title="隐藏/打开边栏">
<i class="bi bi-chevron-compact-right"></i>
</button>
<div class="collapse show p-1 float-start overflow-hidden" style="width:428px">
<nav>
<div class="nav nav-tabs" id="nav-tab" role="tablist">
<button class="nav-link active" id="nav-quick-send-tab" data-bs-toggle="tab"
data-bs-target="#nav-quick-send" type="button" role="tab" aria-controls="nav-quick-send"
aria-selected="true">快捷发送</button>
<button class="nav-link" id="nav-options-tab" data-bs-toggle="tab" data-bs-target="#nav-options"
type="button" role="tab" aria-controls="nav-options" aria-selected="false">系统选项</button>
<button class="nav-link" id="nav-code-tab" data-bs-toggle="tab" data-bs-target="#nav-code"
type="button" role="tab" aria-controls="nav-code" aria-selected="false">代码脚本</button>
</div>
</nav>
<div class="tab-content pt-2 flex-fill" id="nav-tabContent">
<div class="tab-pane fade show active" id="nav-quick-send" role="tabpanel"
aria-labelledby="nav-quick-send-tab">
<div class="btn-toolbar">
<div class="flex-grow-1 input-group input-group-sm me-2">
<span class="input-group-text">选择分组</span>
<select class="form-select" id="serial-quick-send">
</select>
</div>
<div class="btn-group">
<button class="btn btn-sm btn-outline-secondary"
id="serial-quick-send-add-group">新增</button>
<button class="btn btn-sm btn-outline-secondary"
id="serial-quick-send-rename-group">改名</button>
<button class="btn btn-sm btn-outline-secondary"
id="serial-quick-send-remove-group">删除</button>
<!-- <button class="btn btn-sm btn-outline-secondary">云端</button> -->
</div>
</div>
<div class="d-flex mt-2">
<button id="serial-quick-send-add" class="btn btn-sm btn-outline-secondary me-5"><i
class="bi bi-plus-square"></i> 增加一条</button>
<button class="btn btn-sm btn-outline-secondary me-2 flex-grow-1"
id="serial-quick-send-import-btn"><i class="bi bi-folder-plus"></i>
导入</button>
<input type="file" id="serial-quick-send-import" style="display: none;"
accept="application/json" />
<button class="btn btn-sm btn-outline-secondary flex-grow-1"
id="serial-quick-send-export"><i class="bi bi-folder-symlink"></i>
导出</button>
</div>
<div class="mt-2">
<div class="d-flex">
<span class="me-2 ms-3">移除</span>
<span class="flex-grow-1 me-1">发送内容,点击修改,双击改名</span>
<span class="flex-shrink-0 me-3">显示名称</span>
<span class="flex-shrink-0 me-2">HEX</span>
</div>
</div>
<div id="serial-quick-send-content"
class="flex-grow-1 border border-2 p-2 rounded overflow-auto">
</div>
</div>
<div class="tab-pane fade" id="nav-options" role="tabpanel" aria-labelledby="nav-options-tab">
<h5>系统配置</h5>
<button class="btn btn-sm btn-outline-secondary me-2" id="serial-reset"><i
class="bi bi-arrow-repeat"></i> 重置参数</button>
<button class="btn btn-sm btn-outline-secondary me-2" id="serial-export"><i
class="bi bi-folder-symlink"></i> 导出配置</button>
<button class="btn btn-sm btn-outline-secondary me-2" id="serial-import"><i
class="bi bi-folder-plus"></i> 导入配置</button>
<input type="file" id="serial-import-file" style="display: none;" accept="application/json" />
</div>
<div class="tab-pane d-flex flex-column fade" id="nav-code" role="tabpanel"
aria-labelledby="nav-code-tab">
<div class="flex-grow-1 overflow-hidden" id="serial-code-editor">
<textarea class="form-control" rows="3" id="serial-code-content" style="resize: none;"
placeholder="在此输入要执行的代码脚本">
addEventListener('message', function ({data}) {
if(data.type=='uart_receive')
{
postMessage({type:'log',data:'消息长度:'+data.data.length});
//原文答复
postMessage({type:'uart_send',data:data.data});
}
})
setInterval(function(){
//定时发送
postMessage({type:'uart_send_txt',data:'hello world'});
},1000);</textarea>
</div>
<div class="mt-2">
<input id='serial-code-select' type='file' class="d-none">
<button class="btn btn-sm btn-outline-secondary me-2" id="serial-code-load"><i
class="bi bi-folder2-open"></i> 打开文件</button>
<button id="serial-code-run" class="btn btn-primary btn-sm float-end"><i
class="bi bi-play"></i>
运行</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="model-tip" aria-hidden="true" tabindex="-1">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="modal-title"></h1>
<button class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body" id="modal-message">
</div>
<div class="modal-footer">
<button class="btn btn-primary" data-bs-dismiss="modal">好的</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="model-change-name" tabindex="-1" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5">名称</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<form>
<div class="mb-3">
<label for="model-new-name" class="col-form-label">请输入新的名字:</label>
<input type="text" class="form-control" id="model-new-name">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">取消</button>
<button type="button" class="btn btn-primary" id="model-save-name">保存</button>
</div>
</div>
</div>
</div>
<script src="js/ansi_up.min.js"></script>
<script src="js/common.js"></script>
</body>
</html>