@jjlmoya/utils-hardware 1.25.0 → 1.27.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 (55) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +3 -1
  3. package/src/entries.ts +7 -1
  4. package/src/index.ts +2 -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/usbPowerBudgetCalculator/bibliography.astro +14 -0
  8. package/src/tool/usbPowerBudgetCalculator/bibliography.ts +16 -0
  9. package/src/tool/usbPowerBudgetCalculator/component.astro +266 -0
  10. package/src/tool/usbPowerBudgetCalculator/entry.ts +29 -0
  11. package/src/tool/usbPowerBudgetCalculator/i18n/de.ts +169 -0
  12. package/src/tool/usbPowerBudgetCalculator/i18n/en.ts +169 -0
  13. package/src/tool/usbPowerBudgetCalculator/i18n/es.ts +169 -0
  14. package/src/tool/usbPowerBudgetCalculator/i18n/fr.ts +169 -0
  15. package/src/tool/usbPowerBudgetCalculator/i18n/id.ts +169 -0
  16. package/src/tool/usbPowerBudgetCalculator/i18n/it.ts +169 -0
  17. package/src/tool/usbPowerBudgetCalculator/i18n/ja.ts +169 -0
  18. package/src/tool/usbPowerBudgetCalculator/i18n/ko.ts +169 -0
  19. package/src/tool/usbPowerBudgetCalculator/i18n/nl.ts +169 -0
  20. package/src/tool/usbPowerBudgetCalculator/i18n/pl.ts +169 -0
  21. package/src/tool/usbPowerBudgetCalculator/i18n/pt.ts +169 -0
  22. package/src/tool/usbPowerBudgetCalculator/i18n/ru.ts +169 -0
  23. package/src/tool/usbPowerBudgetCalculator/i18n/sv.ts +169 -0
  24. package/src/tool/usbPowerBudgetCalculator/i18n/tr.ts +169 -0
  25. package/src/tool/usbPowerBudgetCalculator/i18n/zh.ts +169 -0
  26. package/src/tool/usbPowerBudgetCalculator/index.ts +11 -0
  27. package/src/tool/usbPowerBudgetCalculator/logic.ts +81 -0
  28. package/src/tool/usbPowerBudgetCalculator/seo.astro +15 -0
  29. package/src/tool/usbPowerBudgetCalculator/ui.ts +32 -0
  30. package/src/tool/usbPowerBudgetCalculator/usb-power-budget-calculator.css +484 -0
  31. package/src/tool/webUsbSerialMonitor/bibliography.astro +15 -0
  32. package/src/tool/webUsbSerialMonitor/bibliography.ts +18 -0
  33. package/src/tool/webUsbSerialMonitor/component.astro +356 -0
  34. package/src/tool/webUsbSerialMonitor/entry.ts +30 -0
  35. package/src/tool/webUsbSerialMonitor/i18n/de.ts +241 -0
  36. package/src/tool/webUsbSerialMonitor/i18n/en.ts +241 -0
  37. package/src/tool/webUsbSerialMonitor/i18n/es.ts +241 -0
  38. package/src/tool/webUsbSerialMonitor/i18n/fr.ts +241 -0
  39. package/src/tool/webUsbSerialMonitor/i18n/id.ts +241 -0
  40. package/src/tool/webUsbSerialMonitor/i18n/it.ts +241 -0
  41. package/src/tool/webUsbSerialMonitor/i18n/ja.ts +241 -0
  42. package/src/tool/webUsbSerialMonitor/i18n/ko.ts +241 -0
  43. package/src/tool/webUsbSerialMonitor/i18n/nl.ts +241 -0
  44. package/src/tool/webUsbSerialMonitor/i18n/pl.ts +241 -0
  45. package/src/tool/webUsbSerialMonitor/i18n/pt.ts +241 -0
  46. package/src/tool/webUsbSerialMonitor/i18n/ru.ts +241 -0
  47. package/src/tool/webUsbSerialMonitor/i18n/sv.ts +241 -0
  48. package/src/tool/webUsbSerialMonitor/i18n/tr.ts +241 -0
  49. package/src/tool/webUsbSerialMonitor/i18n/zh.ts +241 -0
  50. package/src/tool/webUsbSerialMonitor/index.ts +12 -0
  51. package/src/tool/webUsbSerialMonitor/logic.ts +44 -0
  52. package/src/tool/webUsbSerialMonitor/seo.astro +16 -0
  53. package/src/tool/webUsbSerialMonitor/ui.ts +51 -0
  54. package/src/tool/webUsbSerialMonitor/web-usb-serial-monitor.css +415 -0
  55. package/src/tools.ts +3 -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-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
+ };
@@ -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-seriell-monitor';
7
+ const title = 'WebUSB Seriell Monitor';
8
+ const description = 'Anslut till USB-seriehårdvara från webbläsaren, läs live-terminalutdata, skicka kommandon och felsök Arduino, ESP32, RP2040 och maker-kort utan att installera en skrivbordsterminal.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Fungerar denna seriella monitor med Arduino, ESP32 och Raspberry Pi Pico-kort?',
13
+ answer: 'Ja, när kortet exponerar ett USB-seriellt gränssnitt som stöds av Web Serial och webbläsaren är Chromium-baserad. Vanliga Arduino, ESP32, RP2040, CH340, CP210x och FTDI-adaptrar fungerar vanligtvis efter att användaren har gett tillstånd.',
14
+ },
15
+ {
16
+ question: 'Varför kallas detta WebUSB om det använder Web Serial?',
17
+ answer: 'De flesta maker-kort ansluter via USB, men webbläsarterminalåtkomst tillhandahålls av Web Serial API. WebUSB är på lägre nivå och är inte rätt abstraktion för en enkel UART-terminal.',
18
+ },
19
+ {
20
+ question: 'Kan en webbplats komma åt mina seriella enheter utan tillstånd?',
21
+ answer: 'Nej. Webbläsaren kräver ett användarklick och en inbyggd enhetsväljare innan en webbplats kan öppna en serieport. Detta verktyg lagrar inte terminalloggar eller enhetsidentifierare.',
22
+ },
23
+ {
24
+ question: 'Vilken webbläsare ska jag använda för en webbseriell terminal?',
25
+ answer: 'Använd Chrome, Edge eller en annan Chromium-baserad webbläsare via HTTPS eller localhost. Firefox, Safari och många iOS-webbläsare exponerar inte Web Serial API.',
26
+ },
27
+ {
28
+ question: 'Vilken baudhastighet ska jag välja?',
29
+ answer: 'Välj den baudhastighet som är konfigurerad i din firmware. Arduino-exempel använder ofta 9600 eller 115200, medan snabbare loggar, bootloaders och höghastighetssensorflöden kan använda 230400, 460800 eller 921600.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Anslut USB-serieenheten',
36
+ text: 'Anslut kortet eller adaptern och stäng alla andra seriella terminaler som redan kan ha porten öppen.',
37
+ },
38
+ {
39
+ name: 'Välj baudhastighet',
40
+ text: 'Välj samma baudhastighet som används av firmware, till exempel 115200 för många Arduino, ESP32 och RP2040-sketcher.',
41
+ },
42
+ {
43
+ name: 'Ge webbläsartillstånd',
44
+ text: 'Tryck på Anslut, välj serieenheten i webbläsarens väljare och tillåt sidan att öppna porten.',
45
+ },
46
+ {
47
+ name: 'Läs och skicka terminaldata',
48
+ text: 'Se inkommande loggar i terminalen, skicka kommandon med valfria CRLF-radslut och rensa eller pausa liveutmatningen vid behov.',
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: 'sv',
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: 'Online Seriell Monitor för USB Maker-hårdvara',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: 'Denna webbläsarseriemonitor öppnar en USB-serieport direkt från Chrome eller Edge och strömmar sedan text från mikrokontroller, USB UART-bryggor, utvecklingskort, bootloaders, testfixturer, sensorer och labbhårdvara. Den är utformad för snabb diagnostik när du behöver en seriekonsol men inte vill installera en skrivbords-IDE eller terminalapplikation.',
103
+ },
104
+ {
105
+ type: 'message',
106
+ title: 'Webbläsarens tillståndsgräns',
107
+ html: 'Sidan kan inte tyst räkna upp eller öppna dina seriella enheter. Åtkomst börjar först efter att du har tryckt på Anslut och valt en port i webbläsarens väljare. Terminaldata stannar i den aktuella fliken om du inte kopierar dem själv.',
108
+ },
109
+ {
110
+ type: 'stats',
111
+ items: [
112
+ { value: '9600-921600', label: 'vanliga baud-förinställningar' },
113
+ { value: 'CRLF', label: 'valfritt kommandoavslut' },
114
+ { value: 'lokal', label: 'terminalsession' },
115
+ ],
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: 'När en Webbseriell Terminal är Användbar',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'list',
124
+ items: [
125
+ 'Kontrollera startmeddelanden från Arduino, ESP32, ESP8266, RP2040, STM32 eller anpassad firmware.',
126
+ 'Skicka AT-kommandon till modem, GPS, LoRa, Wi-Fi, Bluetooth eller cellulära moduler via en USB UART-adapter.',
127
+ 'Läsa sensorutdata från fabrikstestfixtur, klassrumslabb, robotkontroller eller bänkprototyp.',
128
+ 'Verifiera att en USB-seriebryggdrivrutin, kabel, kortström och firmware-baudhastighet alla fungerar tillsammans.',
129
+ 'Samla en snabb fellogg innan du rapporterar en bugg eller begär hårdvarusupport.',
130
+ ],
131
+ },
132
+ {
133
+ type: 'comparative',
134
+ items: [
135
+ {
136
+ title: 'Webbseriell monitor',
137
+ description: 'Bäst för snabb support, klassrumsinstruktioner, fältdiagnostik och maker-arbetsflöden där det går snabbare att öppna en URL än att installera en IDE.',
138
+ },
139
+ {
140
+ title: 'Skrivbordsterminal',
141
+ description: 'Bättre för binära protokoll, långa inspelningssessioner, skriptning, hårdvaruflödeskontroll, makron och miljöer där webbläsar-API:er är blockerade.',
142
+ },
143
+ ],
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Checklista för Baudhastighet och Radslut',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'table',
152
+ headers: ['Inställning', 'Typiskt val', 'Vad som går fel när det är fel'],
153
+ rows: [
154
+ ['Baudhastighet', '115200 för många moderna kort, 9600 för äldre exempel.', 'Läsbar text blir slumpmässiga symboler eller ingen användbar logg visas.'],
155
+ ['Radslut', 'CRLF för många kommandotolkar, inget slut för råa teckenprotokoll.', 'Kommandon ignoreras eftersom firmware väntar på en terminator.'],
156
+ ['Exklusiv portåtkomst', 'Stäng Arduino Serial Monitor, PuTTY, screen, minicom eller leverantörsverktyg.', 'Webbläsarens väljare öppnar porten men läsning eller skrivning misslyckas.'],
157
+ ['Säker kontext', 'HTTPS eller localhost.', 'Serial API saknas även i en webbläsare som stöds.'],
158
+ ],
159
+ },
160
+ {
161
+ type: 'diagnostic',
162
+ variant: 'warning',
163
+ title: 'Ingen seriell utdata?',
164
+ html: 'Bekräfta att kortet är strömsatt och att USB-kabeln stöder data, inte bara laddning. Prova 9600, 57600 och 115200 om du inte känner till firmware-baudhastigheten. Tryck på reset efter anslutning eftersom många kort skriver ut startloggar endast vid uppstart. Stäng annan programvara som fortfarande kan äga serieporten och installera operativsystemets drivrutin för CH340, CP210x, FTDI eller kortleverantören om enheten aldrig visas.',
165
+ },
166
+ {
167
+ type: 'title',
168
+ text: 'Integritet, Säkerhet och Begränsningar',
169
+ level: 3,
170
+ },
171
+ {
172
+ type: 'proscons',
173
+ title: 'Web Serials styrkor och begränsningar',
174
+ items: [
175
+ {
176
+ pro: 'Ingen skrivbordsinstallation för grundläggande seriell textdiagnostik.',
177
+ con: 'Kräver en Chromium-baserad webbläsare och en säker kontext.',
178
+ },
179
+ {
180
+ pro: 'Webbläsarens väljare begränsar åtkomsten till den specifika port du väljer.',
181
+ con: 'Inte avsett för binära protokollanalysatorer eller långa obevakade inspelningar.',
182
+ },
183
+ {
184
+ pro: 'Fungerar bra för textloggar, kommandotolkar och snabba hårdvarukontroller.',
185
+ con: 'Vissa företagspolicyer, mobila webbläsare och operativsystem blockerar Web Serial.',
186
+ },
187
+ ],
188
+ },
189
+ ],
190
+ ui: {
191
+ unsupportedTitle: 'Web Serial är inte tillgängligt',
192
+ unsupportedBody: 'Använd Chrome eller Edge via HTTPS eller localhost och se till att din enhet exponerar ett USB-seriellt gränssnitt.',
193
+ secureContext: 'Web Serial kräver HTTPS eller localhost. Ladda om denna sida från en säker källa och försök igen.',
194
+ statusIdle: 'Välj en baudhastighet och anslut sedan en USB-serieenhet',
195
+ statusPermission: 'Väntar på webbläsarens serieportväljare',
196
+ statusOpening: 'Öppnar serieport',
197
+ statusConnected: 'Serieport ansluten',
198
+ statusDisconnected: 'Serieport frånkopplad',
199
+ statusError: 'Serieanslutning misslyckades',
200
+ connect: 'Anslut Serial',
201
+ disconnect: 'Koppla från',
202
+ send: 'Skicka',
203
+ clear: 'Rensa',
204
+ pause: 'Paus',
205
+ resume: 'Återuppta',
206
+ baudRate: 'Baudhastighet',
207
+ newline: 'Lägg till CRLF',
208
+ inputPlaceholder: 'Skriv ett kommando och tryck sedan på Enter',
209
+ portFallback: 'Ingen port vald',
210
+ portLabel: 'Portidentitet',
211
+ connectedDeviceLabel: 'Ansluten enhet',
212
+ deviceNameFallback: 'USB-serieenhet',
213
+ transportLabel: 'Web Serial-länk',
214
+ bytesLabel: 'Byte',
215
+ linesLabel: 'Rader',
216
+ privacyTitle: 'Behörighetsstyrd',
217
+ privacyBody: 'Webbläsaren exponerar endast den seriella enhet du väljer. Loggar stannar i denna flik om du inte kopierar dem.',
218
+ emptyLog: 'Terminalutdata visas här efter att du har anslutit en seriell enhet.',
219
+ copied: 'Kopierat',
220
+ copyLog: 'Kopiera',
221
+ presetSlow: '9600',
222
+ presetArduino: '115200',
223
+ presetFast: '921600',
224
+ terminalLabel: 'Live-terminal',
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
+ };