@jjlmoya/utils-hardware 1.25.0 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/category/index.ts +2 -1
- package/src/entries.ts +4 -1
- package/src/index.ts +1 -0
- package/src/tests/locale_completeness.test.ts +1 -1
- package/src/tests/tool_validation.test.ts +1 -1
- package/src/tool/webUsbSerialMonitor/bibliography.astro +15 -0
- package/src/tool/webUsbSerialMonitor/bibliography.ts +18 -0
- package/src/tool/webUsbSerialMonitor/component.astro +356 -0
- package/src/tool/webUsbSerialMonitor/entry.ts +30 -0
- package/src/tool/webUsbSerialMonitor/i18n/de.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/en.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/es.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/fr.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/id.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/it.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/ja.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/ko.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/nl.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/pl.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/pt.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/ru.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/sv.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/tr.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/zh.ts +241 -0
- package/src/tool/webUsbSerialMonitor/index.ts +12 -0
- package/src/tool/webUsbSerialMonitor/logic.ts +44 -0
- package/src/tool/webUsbSerialMonitor/seo.astro +16 -0
- package/src/tool/webUsbSerialMonitor/ui.ts +51 -0
- package/src/tool/webUsbSerialMonitor/web-usb-serial-monitor.css +415 -0
- package/src/tools.ts +2 -1
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { WebUsbSerialMonitorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'web-usb-serial-monitor';
|
|
7
|
+
const title = 'WebUSB シリアルモニター';
|
|
8
|
+
const description = 'ブラウザからUSBシリアルハードウェアに接続し、ライブ端末出力を読み取り、コマンドを送信し、Arduino、ESP32、RP2040、メーカーボードをデスクトップ端末をインストールせずにデバッグします。';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'このシリアルモニターはArduino、ESP32、Raspberry Pi Picoボードで動作しますか?',
|
|
13
|
+
answer: 'はい、ボードがWeb SerialでサポートされているUSBシリアルインターフェースを提供し、ブラウザがChromiumベースの場合です。一般的なArduino、ESP32、RP2040、CH340、CP210x、FTDIアダプターは、ユーザーが許可を与えた後に通常動作します。',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
question: 'Web Serialを使用するのになぜWebUSBと呼ばれるのですか?',
|
|
17
|
+
answer: 'ほとんどのメーカーボードはUSB経由で接続しますが、ブラウザ端末アクセスはWeb Serial APIによって提供されます。WebUSBはより低レベルであり、シンプルなUARTスタイルの端末には適切な抽象化ではありません。',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
question: 'ウェブサイトは許可なく私のシリアルデバイスにアクセスできますか?',
|
|
21
|
+
answer: 'いいえ。ブラウザはサイトがシリアルポートを開く前にユーザーのクリックとネイティブデバイスピッカーを要求します。このツールは端末ログやデバイス識別子を保存しません。',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
question: 'Webシリアル端末にはどのブラウザを使うべきですか?',
|
|
25
|
+
answer: 'HTTPSまたはlocalhostでChrome、Edge、または他のChromiumベースのブラウザを使用してください。Firefox、Safari、および多くのiOSブラウザはWeb Serial APIを公開していません。',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'どのボーレートを選択すべきですか?',
|
|
29
|
+
answer: 'ファームウェアで設定されたボーレートを選択してください。Arduinoの例では9600または115200がよく使われ、より高速なログ、ブートローダー、高速センサーストリームでは230400、460800、または921600が使用されることがあります。',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'USBシリアルデバイスを接続する',
|
|
36
|
+
text: 'ボードまたはアダプターを接続し、すでにポートを開いている可能性のある他のシリアル端末を閉じます。',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'ボーレートを選択する',
|
|
40
|
+
text: '多くのArduino、ESP32、RP2040スケッチ用の115200など、ファームウェアで使用されているのと同じボーレートを選択します。',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'ブラウザの許可を与える',
|
|
44
|
+
text: '接続を押し、ブラウザピッカーでシリアルデバイスを選択し、ページがポートを開くことを許可します。',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: '端末データの読み取りと送信',
|
|
48
|
+
text: '端末で受信ログを監視し、オプションのCRLF行末でコマンドを送信し、必要に応じてライブ出力をクリアまたは一時停止します。',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowTo> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step, i) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
position: i + 1,
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'DeveloperApplication',
|
|
81
|
+
operatingSystem: 'All',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
|
|
83
|
+
inLanguage: 'ja',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export const content: ToolLocaleContent<WebUsbSerialMonitorUI> = {
|
|
87
|
+
slug,
|
|
88
|
+
title,
|
|
89
|
+
description,
|
|
90
|
+
faq: faqData,
|
|
91
|
+
bibliography,
|
|
92
|
+
howTo: howToData,
|
|
93
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
94
|
+
seo: [
|
|
95
|
+
{
|
|
96
|
+
type: 'title',
|
|
97
|
+
text: 'USBメーカーハードウェア向けオンラインシリアルモニター',
|
|
98
|
+
level: 2,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
type: 'paragraph',
|
|
102
|
+
html: 'このブラウザシリアルモニターは、ChromeまたはEdgeから直接USBシリアルポートを開き、マイクロコントローラー、USB UARTブリッジ、開発ボード、ブートローダー、テスト治具、センサー、実験装置からテキストをストリーミングします。シリアルコンソールが必要だがデスクトップIDEや端末アプリケーションをインストールしたくない場合の迅速な診断用に設計されています。',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'message',
|
|
106
|
+
title: 'ブラウザ許可の境界',
|
|
107
|
+
html: 'ページはお客様のシリアルデバイスを黙って列挙したり開いたりすることはできません。アクセスは、接続を押してブラウザピッカーでポートを選択した後にのみ開始されます。端末データは、お客様自身がコピーしない限り、現在のタブに留まります。',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
type: 'stats',
|
|
111
|
+
items: [
|
|
112
|
+
{ value: '9600-921600', label: '一般的なボーレートプリセット' },
|
|
113
|
+
{ value: 'CRLF', label: 'オプションのコマンド終端' },
|
|
114
|
+
{ value: 'ローカル', label: '端末セッション' },
|
|
115
|
+
],
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'title',
|
|
119
|
+
text: 'Webシリアル端末が役立つ場面',
|
|
120
|
+
level: 3,
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'list',
|
|
124
|
+
items: [
|
|
125
|
+
'Arduino、ESP32、ESP8266、RP2040、STM32、またはカスタムファームウェアからのブートメッセージの確認。',
|
|
126
|
+
'USB UARTアダプターを介したモデム、GPS、LoRa、Wi-Fi、Bluetooth、またはセルラーモジュールへのATコマンドの送信。',
|
|
127
|
+
'工場のテスト治具、教室のラボ、ロボットコントローラー、またはベンチプロトタイプからのセンサー出力の読み取り。',
|
|
128
|
+
'USBシリアルブリッジドライバー、ケーブル、ボード電源、およびファームウェアのボーレートがすべて連携して動作していることの確認。',
|
|
129
|
+
'バグを報告したりハードウェアサポートを依頼する前の迅速なエラーログの収集。',
|
|
130
|
+
],
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
type: 'comparative',
|
|
134
|
+
items: [
|
|
135
|
+
{
|
|
136
|
+
title: 'Webシリアルモニター',
|
|
137
|
+
description: 'クイックサポート、教室での指示、フィールド診断、およびURLを開く方がIDEをインストールするより速いメーカーワークフローに最適です。',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
title: 'デスクトップ端末',
|
|
141
|
+
description: 'バイナリプロトコル、長時間のキャプチャセッション、スクリプト作成、ハードウェアフロー制御、マクロ、およびブラウザAPIがブロックされている環境に適しています。',
|
|
142
|
+
},
|
|
143
|
+
],
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'title',
|
|
147
|
+
text: 'ボーレートと行末チェックリスト',
|
|
148
|
+
level: 3,
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
type: 'table',
|
|
152
|
+
headers: ['設定', '一般的な選択', '間違っている場合の不具合'],
|
|
153
|
+
rows: [
|
|
154
|
+
['ボーレート', '多くの最新ボードでは115200、古い例では9600。', '読み取り可能なテキストがランダムな記号に変わるか、有用なログが表示されない。'],
|
|
155
|
+
['行末', '多くのコマンドパーサーではCRLF、生の文字プロトコルでは終端なし。', 'ファームウェアが終端文字を待っているため、コマンドが無視される。'],
|
|
156
|
+
['排他的ポートアクセス', 'Arduinoシリアルモニター、PuTTY、screen、minicom、またはベンダーツールを閉じる。', 'ブラウザピッカーはポートを開くが、読み取りまたは書き込みが失敗する。'],
|
|
157
|
+
['安全なコンテキスト', 'HTTPSまたはlocalhost。', 'サポートされているブラウザでもシリアルAPIが欠落している。'],
|
|
158
|
+
],
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
type: 'diagnostic',
|
|
162
|
+
variant: 'warning',
|
|
163
|
+
title: 'シリアル出力がない場合',
|
|
164
|
+
html: 'ボードに電源が供給され、USBケーブルが充電のみでなくデータをサポートしていることを確認してください。ファームウェアのボーレートがわからない場合は、9600、57600、115200を試してください。多くのボードは起動時のみブートログを出力するため、接続後にリセットを押してください。まだシリアルポートを所有している可能性のある他のソフトウェアを閉じ、デバイスが表示されない場合はCH340、CP210x、FTDI、またはボードベンダーのオペレーティングシステムドライバーをインストールしてください。',
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'title',
|
|
168
|
+
text: 'プライバシー、セキュリティ、および制限',
|
|
169
|
+
level: 3,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'proscons',
|
|
173
|
+
title: 'Web Serialの長所と制限',
|
|
174
|
+
items: [
|
|
175
|
+
{
|
|
176
|
+
pro: '基本的なシリアルテキスト診断にデスクトップインストール不要。',
|
|
177
|
+
con: 'Chromiumベースのブラウザと安全なコンテキストが必要。',
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
pro: 'ブラウザピッカーが選択した特定のポートへのアクセスを制限。',
|
|
181
|
+
con: 'バイナリプロトコルアナライザや長時間の無人キャプチャには向かない。',
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
pro: 'テキストログ、コマンドプロンプト、迅速なハードウェアチェックに適している。',
|
|
185
|
+
con: '一部の企業ポリシー、モバイルブラウザ、オペレーティングシステムがWeb Serialをブロック。',
|
|
186
|
+
},
|
|
187
|
+
],
|
|
188
|
+
},
|
|
189
|
+
],
|
|
190
|
+
ui: {
|
|
191
|
+
unsupportedTitle: 'Web Serialは利用できません',
|
|
192
|
+
unsupportedBody: 'HTTPSまたはlocalhostでChromeまたはEdgeを使用し、デバイスがUSBシリアルインターフェースを提供していることを確認してください。',
|
|
193
|
+
secureContext: 'Web SerialにはHTTPSまたはlocalhostが必要です。安全なオリジンからこのページを再読み込みして再試行してください。',
|
|
194
|
+
statusIdle: 'ボーレートを選択し、USBシリアルデバイスを接続してください',
|
|
195
|
+
statusPermission: 'ブラウザのシリアルポートピッカーを待機中',
|
|
196
|
+
statusOpening: 'シリアルポートを開いています',
|
|
197
|
+
statusConnected: 'シリアルポート接続済み',
|
|
198
|
+
statusDisconnected: 'シリアルポート切断済み',
|
|
199
|
+
statusError: 'シリアル接続に失敗しました',
|
|
200
|
+
connect: 'シリアル接続',
|
|
201
|
+
disconnect: '切断',
|
|
202
|
+
send: '送信',
|
|
203
|
+
clear: 'クリア',
|
|
204
|
+
pause: '一時停止',
|
|
205
|
+
resume: '再開',
|
|
206
|
+
baudRate: 'ボーレート',
|
|
207
|
+
newline: 'CRLFを追加',
|
|
208
|
+
inputPlaceholder: 'コマンドを入力し、Enterを押してください',
|
|
209
|
+
portFallback: 'ポートが選択されていません',
|
|
210
|
+
portLabel: 'ポートID',
|
|
211
|
+
connectedDeviceLabel: '接続中のデバイス',
|
|
212
|
+
deviceNameFallback: 'USBシリアルデバイス',
|
|
213
|
+
transportLabel: 'Web Serialリンク',
|
|
214
|
+
bytesLabel: 'バイト',
|
|
215
|
+
linesLabel: '行',
|
|
216
|
+
privacyTitle: '許可制',
|
|
217
|
+
privacyBody: 'ブラウザは選択したシリアルデバイスのみを公開します。ログはコピーしない限りこのタブに留まります。',
|
|
218
|
+
emptyLog: 'シリアルデバイスを接続すると、ここに端末出力が表示されます。',
|
|
219
|
+
copied: 'コピーしました',
|
|
220
|
+
copyLog: 'コピー',
|
|
221
|
+
presetSlow: '9600',
|
|
222
|
+
presetArduino: '115200',
|
|
223
|
+
presetFast: '921600',
|
|
224
|
+
terminalLabel: 'ライブ端末',
|
|
225
|
+
unknownUsbId: 'N/A',
|
|
226
|
+
logDirectionRx: 'rx',
|
|
227
|
+
logDirectionTx: 'tx',
|
|
228
|
+
logDirectionSys: 'sys',
|
|
229
|
+
vidPrefix: 'VID ',
|
|
230
|
+
pidSeparator: ' / PID ',
|
|
231
|
+
baudUnit: ' baud',
|
|
232
|
+
vendorFtdi: 'FTDI USB Serial',
|
|
233
|
+
vendorSilabs: 'Silicon Labs CP210x',
|
|
234
|
+
vendorCh340: 'CH340 USB Serial',
|
|
235
|
+
vendorArduinoUsb: 'Arduino USB Serial',
|
|
236
|
+
vendorAdafruit: 'Adafruit USB Serial',
|
|
237
|
+
vendorRp2040: 'Raspberry Pi RP2040',
|
|
238
|
+
vendorEspressif: 'Espressif USB Serial',
|
|
239
|
+
vendorOpenSource: 'Open Source USB Serial',
|
|
240
|
+
},
|
|
241
|
+
};
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { WebUsbSerialMonitorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'web-usb-serial-monitor';
|
|
7
|
+
const title = 'WebUSB 시리얼 모니터';
|
|
8
|
+
const description = '브라우저에서 USB 시리얼 하드웨어에 연결하고, 실시간 터미널 출력을 읽고, 명령을 보내고, Arduino, ESP32, RP2040 및 메이커 보드를 데스크톱 터미널 설치 없이 디버깅하세요.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: '이 시리얼 모니터는 Arduino, ESP32, Raspberry Pi Pico 보드에서 작동하나요?',
|
|
13
|
+
answer: '네, 보드가 Web Serial에서 지원하는 USB 시리얼 인터페이스를 제공하고 브라우저가 Chromium 기반인 경우에 작동합니다. 일반적인 Arduino, ESP32, RP2040, CH340, CP210x 및 FTDI 어댑터는 사용자가 권한을 부여한 후에 보통 작동합니다.',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
question: 'Web Serial을 사용하는데 왜 WebUSB라고 부르나요?',
|
|
17
|
+
answer: '대부분의 메이커 보드는 USB를 통해 연결되지만, 브라우저 터미널 접근은 Web Serial API에 의해 제공됩니다. WebUSB는 더 낮은 수준이며 간단한 UART 스타일 터미널에 적합한 추상화가 아닙니다.',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
question: '웹사이트가 허가 없이 내 시리얼 장치에 접근할 수 있나요?',
|
|
21
|
+
answer: '아니요. 브라우저는 사이트가 시리얼 포트를 열기 전에 사용자 클릭과 네이티브 장치 선택기를 요구합니다. 이 도구는 터미널 로그나 장치 식별자를 저장하지 않습니다.',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
question: '웹 시리얼 터미널에 어떤 브라우저를 사용해야 하나요?',
|
|
25
|
+
answer: 'HTTPS 또는 localhost에서 Chrome, Edge 또는 다른 Chromium 기반 브라우저를 사용하세요. Firefox, Safari 및 많은 iOS 브라우저는 Web Serial API를 제공하지 않습니다.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: '어떤 보레이트를 선택해야 하나요?',
|
|
29
|
+
answer: '펌웨어에 설정된 보레이트를 선택하세요. Arduino 예제는 종종 9600 또는 115200을 사용하며, 더 빠른 로그, 부트로더 및 고속 센서 스트림은 230400, 460800 또는 921600을 사용할 수 있습니다.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'USB 시리얼 장치 연결하기',
|
|
36
|
+
text: '보드 또는 어댑터를 연결하고 이미 포트를 열고 있을 수 있는 다른 시리얼 터미널을 닫으세요.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: '보레이트 선택하기',
|
|
40
|
+
text: '많은 Arduino, ESP32 및 RP2040 스케치용 115200과 같이 펌웨어에서 사용하는 것과 동일한 보레이트를 선택하세요.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: '브라우저 권한 부여하기',
|
|
44
|
+
text: '연결을 누르고 브라우저 선택기에서 시리얼 장치를 선택한 다음 페이지가 포트를 열 수 있도록 허용하세요.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: '터미널 데이터 읽기 및 보내기',
|
|
48
|
+
text: '터미널에서 들어오는 로그를 관찰하고, 선택적 CRLF 줄 끝으로 명령을 보내고, 필요할 때 실시간 출력을 지우거나 일시 중지하세요.',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowTo> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step, i) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
position: i + 1,
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'DeveloperApplication',
|
|
81
|
+
operatingSystem: 'All',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
|
|
83
|
+
inLanguage: 'ko',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export const content: ToolLocaleContent<WebUsbSerialMonitorUI> = {
|
|
87
|
+
slug,
|
|
88
|
+
title,
|
|
89
|
+
description,
|
|
90
|
+
faq: faqData,
|
|
91
|
+
bibliography,
|
|
92
|
+
howTo: howToData,
|
|
93
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
94
|
+
seo: [
|
|
95
|
+
{
|
|
96
|
+
type: 'title',
|
|
97
|
+
text: 'USB 메이커 하드웨어용 온라인 시리얼 모니터',
|
|
98
|
+
level: 2,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
type: 'paragraph',
|
|
102
|
+
html: '이 브라우저 시리얼 모니터는 Chrome 또는 Edge에서 직접 USB 시리얼 포트를 열고 마이크로컨트롤러, USB UART 브릿지, 개발 보드, 부트로더, 테스트 장비, 센서 및 실험실 하드웨어에서 텍스트를 스트리밍합니다. 시리얼 콘솔이 필요하지만 데스크톱 IDE나 터미널 애플리케이션을 설치하고 싶지 않을 때 빠른 진단을 위해 설계되었습니다.',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'message',
|
|
106
|
+
title: '브라우저 권한 경계',
|
|
107
|
+
html: '페이지는 사용자의 시리얼 장치를 조용히 열거하거나 열 수 없습니다. 연결을 누르고 브라우저 선택기에서 포트를 선택한 후에만 접근이 시작됩니다. 터미널 데이터는 직접 복사하지 않는 한 현재 탭에 머무릅니다.',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
type: 'stats',
|
|
111
|
+
items: [
|
|
112
|
+
{ value: '9600-921600', label: '일반 보레이트 프리셋' },
|
|
113
|
+
{ value: 'CRLF', label: '선택적 명령 종료' },
|
|
114
|
+
{ value: '로컬', label: '터미널 세션' },
|
|
115
|
+
],
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'title',
|
|
119
|
+
text: '웹 시리얼 터미널이 유용한 경우',
|
|
120
|
+
level: 3,
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'list',
|
|
124
|
+
items: [
|
|
125
|
+
'Arduino, ESP32, ESP8266, RP2040, STM32 또는 사용자 정의 펌웨어에서 부트 메시지 확인하기.',
|
|
126
|
+
'USB UART 어댑터를 통해 모뎀, GPS, LoRa, Wi-Fi, Bluetooth 또는 셀룰러 모듈로 AT 명령 보내기.',
|
|
127
|
+
'공장 테스트 지그, 교실 실험실, 로봇 컨트롤러 또는 벤치 프로토타입에서 센서 출력 읽기.',
|
|
128
|
+
'USB 시리얼 브릿지 드라이버, 케이블, 보드 전원 및 펌웨어 보레이트가 모두 함께 작동하는지 확인하기.',
|
|
129
|
+
'버그를 보고하거나 하드웨어 지원을 요청하기 전에 빠른 오류 로그 수집하기.',
|
|
130
|
+
],
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
type: 'comparative',
|
|
134
|
+
items: [
|
|
135
|
+
{
|
|
136
|
+
title: '웹 시리얼 모니터',
|
|
137
|
+
description: '빠른 지원, 강의실 교육, 현장 진단 및 URL을 여는 것이 IDE를 설치하는 것보다 빠른 메이커 워크플로우에 가장 적합합니다.',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
title: '데스크톱 터미널',
|
|
141
|
+
description: '바이너리 프로토콜, 긴 캡처 세션, 스크립팅, 하드웨어 흐름 제어, 매크로 및 브라우저 API가 차단된 환경에 더 적합합니다.',
|
|
142
|
+
},
|
|
143
|
+
],
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'title',
|
|
147
|
+
text: '보레이트 및 줄 끝 체크리스트',
|
|
148
|
+
level: 3,
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
type: 'table',
|
|
152
|
+
headers: ['설정', '일반적인 선택', '잘못되었을 때 발생하는 문제'],
|
|
153
|
+
rows: [
|
|
154
|
+
['보레이트', '많은 최신 보드는 115200, 오래된 예제는 9600.', '읽을 수 있는 텍스트가 임의의 기호로 바뀌거나 유용한 로그가 나타나지 않음.'],
|
|
155
|
+
['줄 끝', '많은 명령 파서는 CRLF, 원시 문자 프로토콜은 종료 없음.', '펌웨어가 종료 문자를 기다리고 있어 명령이 무시됨.'],
|
|
156
|
+
['배타적 포트 접근', 'Arduino Serial Monitor, PuTTY, screen, minicom 또는 벤더 도구 닫기.', '브라우저 선택기가 포트를 열지만 읽기 또는 쓰기가 실패함.'],
|
|
157
|
+
['보안 컨텍스트', 'HTTPS 또는 localhost.', '지원되는 브라우저에서도 Serial API가 누락됨.'],
|
|
158
|
+
],
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
type: 'diagnostic',
|
|
162
|
+
variant: 'warning',
|
|
163
|
+
title: '시리얼 출력이 없나요?',
|
|
164
|
+
html: '보드에 전원이 공급되고 USB 케이블이 충전만이 아닌 데이터를 지원하는지 확인하세요. 펌웨어 보레이트를 모르는 경우 9600, 57600, 115200을 시도하세요. 많은 보드가 시작 시에만 부트 로그를 출력하므로 연결 후 리셋을 누르세요. 여전히 시리얼 포트를 소유하고 있을 수 있는 다른 소프트웨어를 닫고, 장치가 나타나지 않으면 CH340, CP210x, FTDI 또는 보드 벤더용 운영 체제 드라이버를 설치하세요.',
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'title',
|
|
168
|
+
text: '개인정보 보호, 보안 및 제한 사항',
|
|
169
|
+
level: 3,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'proscons',
|
|
173
|
+
title: 'Web Serial의 강점과 제한 사항',
|
|
174
|
+
items: [
|
|
175
|
+
{
|
|
176
|
+
pro: '기본적인 시리얼 텍스트 진단을 위해 데스크톱 설치가 필요 없음.',
|
|
177
|
+
con: 'Chromium 기반 브라우저와 보안 컨텍스트가 필요함.',
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
pro: '브라우저 선택기가 선택한 특정 포트로의 접근을 제한함.',
|
|
181
|
+
con: '바이너리 프로토콜 분석기나 장시간 무인 캡처용으로 설계되지 않음.',
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
pro: '텍스트 로그, 명령 프롬프트 및 빠른 하드웨어 점검에 잘 작동함.',
|
|
185
|
+
con: '일부 기업 정책, 모바일 브라우저 및 운영 체제가 Web Serial을 차단함.',
|
|
186
|
+
},
|
|
187
|
+
],
|
|
188
|
+
},
|
|
189
|
+
],
|
|
190
|
+
ui: {
|
|
191
|
+
unsupportedTitle: 'Web Serial을 사용할 수 없습니다',
|
|
192
|
+
unsupportedBody: 'HTTPS 또는 localhost에서 Chrome 또는 Edge를 사용하고 장치가 USB 시리얼 인터페이스를 제공하는지 확인하세요.',
|
|
193
|
+
secureContext: 'Web Serial에는 HTTPS 또는 localhost가 필요합니다. 보안 출처에서 이 페이지를 다시 로드하고 다시 시도하세요.',
|
|
194
|
+
statusIdle: '보레이트를 선택한 다음 USB 시리얼 장치를 연결하세요',
|
|
195
|
+
statusPermission: '브라우저 시리얼 포트 선택기 대기 중',
|
|
196
|
+
statusOpening: '시리얼 포트 여는 중',
|
|
197
|
+
statusConnected: '시리얼 포트 연결됨',
|
|
198
|
+
statusDisconnected: '시리얼 포트 연결 해제됨',
|
|
199
|
+
statusError: '시리얼 연결 실패',
|
|
200
|
+
connect: '시리얼 연결',
|
|
201
|
+
disconnect: '연결 해제',
|
|
202
|
+
send: '보내기',
|
|
203
|
+
clear: '지우기',
|
|
204
|
+
pause: '일시 중지',
|
|
205
|
+
resume: '재개',
|
|
206
|
+
baudRate: '보레이트',
|
|
207
|
+
newline: 'CRLF 추가',
|
|
208
|
+
inputPlaceholder: '명령을 입력하고 Enter를 누르세요',
|
|
209
|
+
portFallback: '선택된 포트 없음',
|
|
210
|
+
portLabel: '포트 식별',
|
|
211
|
+
connectedDeviceLabel: '연결된 장치',
|
|
212
|
+
deviceNameFallback: 'USB 시리얼 장치',
|
|
213
|
+
transportLabel: 'Web Serial 링크',
|
|
214
|
+
bytesLabel: '바이트',
|
|
215
|
+
linesLabel: '줄',
|
|
216
|
+
privacyTitle: '권한 제어',
|
|
217
|
+
privacyBody: '브라우저는 선택한 시리얼 장치만 노출합니다. 로그는 복사하지 않는 한 이 탭에 머무릅니다.',
|
|
218
|
+
emptyLog: '시리얼 장치를 연결하면 여기에 터미널 출력이 표시됩니다.',
|
|
219
|
+
copied: '복사됨',
|
|
220
|
+
copyLog: '복사',
|
|
221
|
+
presetSlow: '9600',
|
|
222
|
+
presetArduino: '115200',
|
|
223
|
+
presetFast: '921600',
|
|
224
|
+
terminalLabel: '실시간 터미널',
|
|
225
|
+
unknownUsbId: 'N/A',
|
|
226
|
+
logDirectionRx: 'rx',
|
|
227
|
+
logDirectionTx: 'tx',
|
|
228
|
+
logDirectionSys: 'sys',
|
|
229
|
+
vidPrefix: 'VID ',
|
|
230
|
+
pidSeparator: ' / PID ',
|
|
231
|
+
baudUnit: ' baud',
|
|
232
|
+
vendorFtdi: 'FTDI USB Serial',
|
|
233
|
+
vendorSilabs: 'Silicon Labs CP210x',
|
|
234
|
+
vendorCh340: 'CH340 USB Serial',
|
|
235
|
+
vendorArduinoUsb: 'Arduino USB Serial',
|
|
236
|
+
vendorAdafruit: 'Adafruit USB Serial',
|
|
237
|
+
vendorRp2040: 'Raspberry Pi RP2040',
|
|
238
|
+
vendorEspressif: 'Espressif USB Serial',
|
|
239
|
+
vendorOpenSource: 'Open Source USB Serial',
|
|
240
|
+
},
|
|
241
|
+
};
|