@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.
Files changed (31) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -1
  3. package/src/entries.ts +4 -1
  4. package/src/index.ts +1 -0
  5. package/src/tests/locale_completeness.test.ts +1 -1
  6. package/src/tests/tool_validation.test.ts +1 -1
  7. package/src/tool/webUsbSerialMonitor/bibliography.astro +15 -0
  8. package/src/tool/webUsbSerialMonitor/bibliography.ts +18 -0
  9. package/src/tool/webUsbSerialMonitor/component.astro +356 -0
  10. package/src/tool/webUsbSerialMonitor/entry.ts +30 -0
  11. package/src/tool/webUsbSerialMonitor/i18n/de.ts +241 -0
  12. package/src/tool/webUsbSerialMonitor/i18n/en.ts +241 -0
  13. package/src/tool/webUsbSerialMonitor/i18n/es.ts +241 -0
  14. package/src/tool/webUsbSerialMonitor/i18n/fr.ts +241 -0
  15. package/src/tool/webUsbSerialMonitor/i18n/id.ts +241 -0
  16. package/src/tool/webUsbSerialMonitor/i18n/it.ts +241 -0
  17. package/src/tool/webUsbSerialMonitor/i18n/ja.ts +241 -0
  18. package/src/tool/webUsbSerialMonitor/i18n/ko.ts +241 -0
  19. package/src/tool/webUsbSerialMonitor/i18n/nl.ts +241 -0
  20. package/src/tool/webUsbSerialMonitor/i18n/pl.ts +241 -0
  21. package/src/tool/webUsbSerialMonitor/i18n/pt.ts +241 -0
  22. package/src/tool/webUsbSerialMonitor/i18n/ru.ts +241 -0
  23. package/src/tool/webUsbSerialMonitor/i18n/sv.ts +241 -0
  24. package/src/tool/webUsbSerialMonitor/i18n/tr.ts +241 -0
  25. package/src/tool/webUsbSerialMonitor/i18n/zh.ts +241 -0
  26. package/src/tool/webUsbSerialMonitor/index.ts +12 -0
  27. package/src/tool/webUsbSerialMonitor/logic.ts +44 -0
  28. package/src/tool/webUsbSerialMonitor/seo.astro +16 -0
  29. package/src/tool/webUsbSerialMonitor/ui.ts +51 -0
  30. package/src/tool/webUsbSerialMonitor/web-usb-serial-monitor.css +415 -0
  31. 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 = 'monitor-serial-web-usb';
7
+ const title = 'Monitor Série WebUSB';
8
+ const description = 'Conecte-se ao hardware série USB pelo navegador, leia a saída do terminal ao vivo, envie comandos e depure placas Arduino, ESP32, RP2040 e maker sem instalar um terminal de computador.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Este monitor série funciona com placas Arduino, ESP32 e Raspberry Pi Pico?',
13
+ answer: 'Sim, quando a placa expõe uma interface série USB suportada pelo Web Serial e o navegador é baseado em Chromium. Adaptadores comuns Arduino, ESP32, RP2040, CH340, CP210x e FTDI geralmente funcionam após o utilizador conceder permissão.',
14
+ },
15
+ {
16
+ question: 'Por que se chama WebUSB se usa Web Serial?',
17
+ answer: 'A maioria das placas maker conectam-se via USB, mas o acesso ao terminal do navegador é fornecido pela API Web Serial. O WebUSB é de nível mais baixo e não é a abstração correta para um terminal simples estilo UART.',
18
+ },
19
+ {
20
+ question: 'Um site pode aceder aos meus dispositivos série sem permissão?',
21
+ answer: 'Não. O navegador exige um clique do utilizador e um seletor nativo de dispositivos antes que um site possa abrir uma porta série. Esta ferramenta não armazena registos do terminal nem identificadores de dispositivos.',
22
+ },
23
+ {
24
+ question: 'Qual navegador devo usar para um terminal série web?',
25
+ answer: 'Use Chrome, Edge ou outro navegador baseado em Chromium via HTTPS ou localhost. Firefox, Safari e muitos navegadores iOS não expõem a API Web Serial.',
26
+ },
27
+ {
28
+ question: 'Qual taxa de transmissão devo escolher?',
29
+ answer: 'Escolha a taxa de transmissão configurada no seu firmware. Exemplos Arduino costumam usar 9600 ou 115200, enquanto registos mais rápidos, bootloaders e fluxos de sensores de alta velocidade podem usar 230400, 460800 ou 921600.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Conecte o dispositivo série USB',
36
+ text: 'Ligue a placa ou adaptador e feche qualquer outro terminal série que possa já ter a porta aberta.',
37
+ },
38
+ {
39
+ name: 'Selecione a taxa de transmissão',
40
+ text: 'Escolha a mesma taxa de transmissão usada pelo firmware, como 115200 para muitos sketches Arduino, ESP32 e RP2040.',
41
+ },
42
+ {
43
+ name: 'Conceda permissão ao navegador',
44
+ text: 'Pressione Conectar, escolha o dispositivo série no seletor do navegador e permita que a página abra a porta.',
45
+ },
46
+ {
47
+ name: 'Leia e envie dados do terminal',
48
+ text: 'Observe os registos recebidos no terminal, envie comandos com terminações de linha CRLF opcionais e limpe ou pause a saída ao vivo quando necessário.',
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: 'pt',
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: 'Monitor Série Online para Hardware USB Maker',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: 'Este monitor série do navegador abre uma porta série USB diretamente do Chrome ou Edge e transmite texto de microcontroladores, pontes USB UART, placas de desenvolvimento, bootloaders, dispositivos de teste, sensores e hardware de laboratório. Projetado para diagnósticos rápidos quando precisa de uma consola série mas não quer instalar um IDE de computador ou aplicação de terminal.',
103
+ },
104
+ {
105
+ type: 'message',
106
+ title: 'Limite de permissão do navegador',
107
+ html: 'A página não pode enumerar ou abrir silenciosamente os seus dispositivos série. O acesso só começa após pressionar Conectar e escolher uma porta no seletor do navegador. Os dados do terminal permanecem na aba atual, a menos que você mesmo os copie.',
108
+ },
109
+ {
110
+ type: 'stats',
111
+ items: [
112
+ { value: '9600-921600', label: 'predefinições de baud comuns' },
113
+ { value: 'CRLF', label: 'terminação de comando opcional' },
114
+ { value: 'local', label: 'sessão de terminal' },
115
+ ],
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: 'Quando um Terminal Série Web é Útil',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'list',
124
+ items: [
125
+ 'Verificar mensagens de inicialização do Arduino, ESP32, ESP8266, RP2040, STM32 ou firmware personalizado.',
126
+ 'Enviar comandos AT para modem, GPS, LoRa, Wi-Fi, Bluetooth ou módulos celulares através de um adaptador USB UART.',
127
+ 'Ler a saída de sensores de um gabarito de teste de fábrica, laboratório de sala de aula, controlador robótico ou protótipo de bancada.',
128
+ 'Verificar se um controlador de ponte série USB, cabo, alimentação da placa e taxa de transmissão do firmware estão todos a funcionar juntos.',
129
+ 'Coletar um registo de erros rápido antes de relatar um bug ou solicitar suporte de hardware.',
130
+ ],
131
+ },
132
+ {
133
+ type: 'comparative',
134
+ items: [
135
+ {
136
+ title: 'Monitor série web',
137
+ description: 'Melhor para suporte rápido, instruções em sala de aula, diagnósticos de campo e fluxos de trabalho maker onde abrir um URL é mais rápido do que instalar um IDE.',
138
+ },
139
+ {
140
+ title: 'Terminal de computador',
141
+ description: 'Melhor para protocolos binários, sessões longas de captura, scripts, controle de fluxo por hardware, macros e ambientes onde as APIs do navegador estão bloqueadas.',
142
+ },
143
+ ],
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Lista de Verificação de Taxa de Transmissão e Terminação de Linha',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'table',
152
+ headers: ['Configuração', 'Escolha típica', 'O que corre mal quando está incorreto'],
153
+ rows: [
154
+ ['Taxa de transmissão', '115200 para muitas placas modernas, 9600 para exemplos antigos.', 'Texto legível transforma-se em símbolos aleatórios ou nenhum registo útil aparece.'],
155
+ ['Terminação de linha', 'CRLF para muitos analisadores de comando, sem terminação para protocolos de caracteres brutos.', 'Comandos são ignorados porque o firmware está à espera de um terminador.'],
156
+ ['Acesso exclusivo à porta', 'Feche o Arduino Serial Monitor, PuTTY, screen, minicom ou ferramentas do fornecedor.', 'O seletor do navegador abre a porta, mas a leitura ou escrita falha.'],
157
+ ['Contexto seguro', 'HTTPS ou localhost.', 'A API Serial está ausente mesmo num navegador compatível.'],
158
+ ],
159
+ },
160
+ {
161
+ type: 'diagnostic',
162
+ variant: 'warning',
163
+ title: 'Sem saída série?',
164
+ html: 'Confirme se a placa está alimentada e o cabo USB suporta dados, não apenas carregamento. Tente 9600, 57600 e 115200 se não souber a taxa de transmissão do firmware. Pressione reset após conectar, pois muitas placas imprimem registos de inicialização apenas durante o arranque. Feche outros softwares que ainda possam estar com a porta série e instale o controlador do sistema operacional para CH340, CP210x, FTDI ou o fornecedor da placa se o dispositivo nunca aparecer.',
165
+ },
166
+ {
167
+ type: 'title',
168
+ text: 'Privacidade, Segurança e Limitações',
169
+ level: 3,
170
+ },
171
+ {
172
+ type: 'proscons',
173
+ title: 'Pontos fortes e limitações do Web Serial',
174
+ items: [
175
+ {
176
+ pro: 'Sem instalação no computador para diagnósticos básicos de texto série.',
177
+ con: 'Requer um navegador baseado em Chromium e um contexto seguro.',
178
+ },
179
+ {
180
+ pro: 'O seletor do navegador limita o acesso à porta específica que escolhe.',
181
+ con: 'Não destinado a analisadores de protocolo binário ou capturas longas sem supervisão.',
182
+ },
183
+ {
184
+ pro: 'Funciona bem para registos de texto, linha de comandos e verificações rápidas de hardware.',
185
+ con: 'Algumas políticas corporativas, navegadores móveis e sistemas operacionais bloqueiam o Web Serial.',
186
+ },
187
+ ],
188
+ },
189
+ ],
190
+ ui: {
191
+ unsupportedTitle: 'Web Serial não está disponível',
192
+ unsupportedBody: 'Use Chrome ou Edge via HTTPS ou localhost e certifique-se de que o seu dispositivo expõe uma interface série USB.',
193
+ secureContext: 'O Web Serial requer HTTPS ou localhost. Recarregue esta página de uma origem segura e tente novamente.',
194
+ statusIdle: 'Escolha uma taxa de transmissão e conecte um dispositivo série USB',
195
+ statusPermission: 'A aguardar o seletor de porta série do navegador',
196
+ statusOpening: 'A abrir porta série',
197
+ statusConnected: 'Porta série conectada',
198
+ statusDisconnected: 'Porta série desligada',
199
+ statusError: 'Falha na conexão série',
200
+ connect: 'Conectar Série',
201
+ disconnect: 'Desligar',
202
+ send: 'Enviar',
203
+ clear: 'Limpar',
204
+ pause: 'Pausar',
205
+ resume: 'Retomar',
206
+ baudRate: 'Taxa de transmissão',
207
+ newline: 'Anexar CRLF',
208
+ inputPlaceholder: 'Digite um comando e pressione Enter',
209
+ portFallback: 'Nenhuma porta selecionada',
210
+ portLabel: 'Identidade da porta',
211
+ connectedDeviceLabel: 'Dispositivo conectado',
212
+ deviceNameFallback: 'Dispositivo série USB',
213
+ transportLabel: 'Ligação Web Serial',
214
+ bytesLabel: 'Bytes',
215
+ linesLabel: 'Linhas',
216
+ privacyTitle: 'Acesso controlado',
217
+ privacyBody: 'O navegador expõe apenas o dispositivo série que seleciona. Os registos permanecem nesta aba, a menos que os copie.',
218
+ emptyLog: 'A saída do terminal aparecerá aqui após conectar um dispositivo série.',
219
+ copied: 'Copiado',
220
+ copyLog: 'Copiar',
221
+ presetSlow: '9600',
222
+ presetArduino: '115200',
223
+ presetFast: '921600',
224
+ terminalLabel: 'Terminal ao vivo',
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 = 'monitor-posledovatelnyj-webusb';
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: 'Да, когда плата предоставляет интерфейс последовательного USB, поддерживаемый Web Serial, а браузер основан на Chromium. Распространённые адаптеры Arduino, ESP32, RP2040, CH340, CP210x и FTDI обычно работают после того, как пользователь предоставит разрешение.',
14
+ },
15
+ {
16
+ question: 'Почему это называется WebUSB, если используется Web Serial?',
17
+ answer: 'Большинство мейкерских плат подключаются через USB, но доступ к терминалу в браузере обеспечивается Web Serial API. WebUSB находится на более низком уровне и не является правильной абстракцией для простого терминала в стиле UART.',
18
+ },
19
+ {
20
+ question: 'Может ли веб-сайт получить доступ к моим последовательным устройствам без разрешения?',
21
+ answer: 'Нет. Браузер требует щелчка пользователя и выбора устройства через родной диалог, прежде чем сайт сможет открыть последовательный порт. Этот инструмент не хранит журналы терминала и идентификаторы устройств.',
22
+ },
23
+ {
24
+ question: 'Какой браузер использовать для веб-терминала последовательного порта?',
25
+ answer: 'Используйте Chrome, Edge или другой браузер на основе Chromium через HTTPS или localhost. 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: 'Выберите ту же скорость передачи, что используется в прошивке, например 115200 для многих скетчей Arduino, ESP32 и RP2040.',
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: 'ru',
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: 'Этот браузерный монитор последовательного порта открывает USB COM-порт прямо из Chrome или Edge и передаёт потоком текст от микроконтроллеров, мостов 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
+ 'Отправка AT-команд на модем, GPS, LoRa, Wi-Fi, Bluetooth или сотовые модули через адаптер USB UART.',
127
+ 'Чтение выхода датчиков с заводского испытательного стенда, учебной лаборатории, робототехнического контроллера или настольного прототипа.',
128
+ 'Проверка того, что драйвер моста USB Serial, кабель, питание платы и скорость передачи прошивки работают вместе.',
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: 'Используйте Chrome или Edge через HTTPS или localhost и убедитесь, что устройство предоставляет интерфейс последовательного 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: ' бод',
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
+ };