@jjlmoya/utils-hardware 1.24.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 (79) hide show
  1. package/package.json +2 -1
  2. package/src/category/index.ts +4 -1
  3. package/src/entries.ts +10 -1
  4. package/src/index.ts +3 -0
  5. package/src/tests/locale_completeness.test.ts +2 -2
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/keyboardChatterTest/bibliography.astro +15 -0
  8. package/src/tool/keyboardChatterTest/bibliography.ts +20 -0
  9. package/src/tool/keyboardChatterTest/component.astro +353 -0
  10. package/src/tool/keyboardChatterTest/entry.ts +30 -0
  11. package/src/tool/keyboardChatterTest/i18n/de.ts +232 -0
  12. package/src/tool/keyboardChatterTest/i18n/en.ts +232 -0
  13. package/src/tool/keyboardChatterTest/i18n/es.ts +232 -0
  14. package/src/tool/keyboardChatterTest/i18n/fr.ts +232 -0
  15. package/src/tool/keyboardChatterTest/i18n/id.ts +232 -0
  16. package/src/tool/keyboardChatterTest/i18n/it.ts +232 -0
  17. package/src/tool/keyboardChatterTest/i18n/ja.ts +232 -0
  18. package/src/tool/keyboardChatterTest/i18n/ko.ts +232 -0
  19. package/src/tool/keyboardChatterTest/i18n/nl.ts +232 -0
  20. package/src/tool/keyboardChatterTest/i18n/pl.ts +232 -0
  21. package/src/tool/keyboardChatterTest/i18n/pt.ts +232 -0
  22. package/src/tool/keyboardChatterTest/i18n/ru.ts +232 -0
  23. package/src/tool/keyboardChatterTest/i18n/sv.ts +232 -0
  24. package/src/tool/keyboardChatterTest/i18n/tr.ts +232 -0
  25. package/src/tool/keyboardChatterTest/i18n/zh.ts +232 -0
  26. package/src/tool/keyboardChatterTest/index.ts +12 -0
  27. package/src/tool/keyboardChatterTest/keyboard-chatter-test.css +512 -0
  28. package/src/tool/keyboardChatterTest/logic.ts +23 -0
  29. package/src/tool/keyboardChatterTest/seo.astro +16 -0
  30. package/src/tool/keyboardChatterTest/ui.ts +34 -0
  31. package/src/tool/webBluetoothBleScanner/bibliography.astro +14 -0
  32. package/src/tool/webBluetoothBleScanner/bibliography.ts +16 -0
  33. package/src/tool/webBluetoothBleScanner/component.astro +339 -0
  34. package/src/tool/webBluetoothBleScanner/entry.ts +29 -0
  35. package/src/tool/webBluetoothBleScanner/i18n/de.ts +233 -0
  36. package/src/tool/webBluetoothBleScanner/i18n/en.ts +233 -0
  37. package/src/tool/webBluetoothBleScanner/i18n/es.ts +233 -0
  38. package/src/tool/webBluetoothBleScanner/i18n/fr.ts +233 -0
  39. package/src/tool/webBluetoothBleScanner/i18n/id.ts +233 -0
  40. package/src/tool/webBluetoothBleScanner/i18n/it.ts +233 -0
  41. package/src/tool/webBluetoothBleScanner/i18n/ja.ts +233 -0
  42. package/src/tool/webBluetoothBleScanner/i18n/ko.ts +233 -0
  43. package/src/tool/webBluetoothBleScanner/i18n/nl.ts +233 -0
  44. package/src/tool/webBluetoothBleScanner/i18n/pl.ts +233 -0
  45. package/src/tool/webBluetoothBleScanner/i18n/pt.ts +233 -0
  46. package/src/tool/webBluetoothBleScanner/i18n/ru.ts +233 -0
  47. package/src/tool/webBluetoothBleScanner/i18n/sv.ts +233 -0
  48. package/src/tool/webBluetoothBleScanner/i18n/tr.ts +233 -0
  49. package/src/tool/webBluetoothBleScanner/i18n/zh.ts +233 -0
  50. package/src/tool/webBluetoothBleScanner/index.ts +11 -0
  51. package/src/tool/webBluetoothBleScanner/logic.ts +79 -0
  52. package/src/tool/webBluetoothBleScanner/seo.astro +15 -0
  53. package/src/tool/webBluetoothBleScanner/ui.ts +41 -0
  54. package/src/tool/webBluetoothBleScanner/web-bluetooth-ble-scanner.css +406 -0
  55. package/src/tool/webUsbSerialMonitor/bibliography.astro +15 -0
  56. package/src/tool/webUsbSerialMonitor/bibliography.ts +18 -0
  57. package/src/tool/webUsbSerialMonitor/component.astro +356 -0
  58. package/src/tool/webUsbSerialMonitor/entry.ts +30 -0
  59. package/src/tool/webUsbSerialMonitor/i18n/de.ts +241 -0
  60. package/src/tool/webUsbSerialMonitor/i18n/en.ts +241 -0
  61. package/src/tool/webUsbSerialMonitor/i18n/es.ts +241 -0
  62. package/src/tool/webUsbSerialMonitor/i18n/fr.ts +241 -0
  63. package/src/tool/webUsbSerialMonitor/i18n/id.ts +241 -0
  64. package/src/tool/webUsbSerialMonitor/i18n/it.ts +241 -0
  65. package/src/tool/webUsbSerialMonitor/i18n/ja.ts +241 -0
  66. package/src/tool/webUsbSerialMonitor/i18n/ko.ts +241 -0
  67. package/src/tool/webUsbSerialMonitor/i18n/nl.ts +241 -0
  68. package/src/tool/webUsbSerialMonitor/i18n/pl.ts +241 -0
  69. package/src/tool/webUsbSerialMonitor/i18n/pt.ts +241 -0
  70. package/src/tool/webUsbSerialMonitor/i18n/ru.ts +241 -0
  71. package/src/tool/webUsbSerialMonitor/i18n/sv.ts +241 -0
  72. package/src/tool/webUsbSerialMonitor/i18n/tr.ts +241 -0
  73. package/src/tool/webUsbSerialMonitor/i18n/zh.ts +241 -0
  74. package/src/tool/webUsbSerialMonitor/index.ts +12 -0
  75. package/src/tool/webUsbSerialMonitor/logic.ts +44 -0
  76. package/src/tool/webUsbSerialMonitor/seo.astro +16 -0
  77. package/src/tool/webUsbSerialMonitor/ui.ts +51 -0
  78. package/src/tool/webUsbSerialMonitor/web-usb-serial-monitor.css +415 -0
  79. package/src/tools.ts +4 -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-szeregowy-webusb';
7
+ const title = 'Monitor Szeregowy WebUSB';
8
+ const description = 'Polacz sie ze sprzetem szeregowym USB z przegladarki, odczytuj wyjscie terminala na zywo, wysylaj polecenia i debuguj plytki Arduino, ESP32, RP2040 oraz makerskie bez instalowania terminala desktopowego.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Czy ten monitor szeregowy dziala z plytkami Arduino, ESP32 i Raspberry Pi Pico?',
13
+ answer: 'Tak, gdy plytka udostepnia interfejs szeregowy USB obslugiwany przez Web Serial, a przegladarka jest oparta na Chromium. Typowe adaptery Arduino, ESP32, RP2040, CH340, CP210x i FTDI zwykle dzialaja po udzieleniu uprawnien przez uzytkownika.',
14
+ },
15
+ {
16
+ question: 'Dlaczego nazywa sie to WebUSB, skoro korzysta z Web Serial?',
17
+ answer: 'Wiekszosc plytek makerskich laczy sie przez USB, ale dostep do terminala w przegladarce zapewnia Web Serial API. WebUSB jest nizszego poziomu i nie jest wlasciwa abstrakcja dla prostego terminala w stylu UART.',
18
+ },
19
+ {
20
+ question: 'Czy strona internetowa moze uzyskac dostep do moich urzadzen szeregowych bez pozwolenia?',
21
+ answer: 'Nie. Przegladarka wymaga klikniecia uzytkownika i natywnego selektora urzadzen, zanim strona bedzie mogla otworzyc port szeregowy. To narzedzie nie przechowuje logow terminala ani identyfikatorow urzadzen.',
22
+ },
23
+ {
24
+ question: 'Ktorej przegladarki powinienem uzyc do webowego terminala szeregowego?',
25
+ answer: 'Uzywaj Chrome, Edge lub innej przegladarki opartej na Chromium przez HTTPS lub localhost. Firefox, Safari i wiele przegladarek iOS nie udostepnia Web Serial API.',
26
+ },
27
+ {
28
+ question: 'Jaka predkosc transmisji powinienem wybrac?',
29
+ answer: 'Wybierz predkosc transmisji skonfigurowana w oprogramowaniu firmware. Przyklady Arduino czesto uzywaja 9600 lub 115200, podczas gdy szybsze logi, bootloadery i szybkie strumienie czujnikow moga uzywac 230400, 460800 lub 921600.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Podlacz urzadzenie szeregowe USB',
36
+ text: 'Podlacz plytke lub adapter i zamknij wszystkie inne terminale szeregowe, ktore moga miec juz otwarty port.',
37
+ },
38
+ {
39
+ name: 'Wybierz predkosc transmisji',
40
+ text: 'Wybierz ta sama predkosc transmisji, ktorej uzywa firmware, np. 115200 dla wielu szkicow Arduino, ESP32 i RP2040.',
41
+ },
42
+ {
43
+ name: 'Udziel uprawnien przegladarce',
44
+ text: 'Nacisnij Polacz, wybierz urzadzenie szeregowe w selektorze przegladarki i zezwol stronie na otwarcie portu.',
45
+ },
46
+ {
47
+ name: 'Odczytuj i wysylaj dane terminala',
48
+ text: 'Obserwuj przychodzace logi w terminalu, wysylaj polecenia z opcjonalnymi zakonczeniami linii CRLF oraz czysc lub wstrzymuj wyjscie na zywo, gdy to konieczne.',
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: 'pl',
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: 'Internetowy Monitor Szeregowy dla Sprzetu USB Maker',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: 'Ten przegladarkowy monitor szeregowy otwiera port szeregowy USB bezposrednio z Chrome lub Edge, a nastepnie przesyła strumieniowo tekst z mikrokontrolerow, mostkow USB UART, plytek rozwojowych, bootloaderow, przyrzadow testowych, czujnikow i sprzetu laboratoryjnego. Jest przeznaczony do szybkiej diagnostyki, gdy potrzebujesz konsoli szeregowej, ale nie chcesz instalowac desktopowego IDE ani aplikacji terminalowej.',
103
+ },
104
+ {
105
+ type: 'message',
106
+ title: 'Granica uprawnien przegladarki',
107
+ html: 'Strona nie moze po cichu wyliczac ani otwierac twoich urzadzen szeregowych. Dostep rozpoczyna sie dopiero po nacisnieciu Polacz i wybraniu portu w selektorze przegladarki. Dane terminala pozostaja w biezacej karcie, chyba ze sam je skopiujesz.',
108
+ },
109
+ {
110
+ type: 'stats',
111
+ items: [
112
+ { value: '9600-921600', label: 'typowe ustawienia predkosci' },
113
+ { value: 'CRLF', label: 'opcjonalne zakonczenie polecenia' },
114
+ { value: 'lokalna', label: 'sesja terminala' },
115
+ ],
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: 'Kiedy Webowy Terminal Szeregowy Jest Przydatny',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'list',
124
+ items: [
125
+ 'Sprawdzanie komunikatow startowych z Arduino, ESP32, ESP8266, RP2040, STM32 lub niestandardowego oprogramowania.',
126
+ 'Wysylanie polecen AT do modemu, GPS, LoRa, Wi-Fi, Bluetooth lub modulow komorkowych przez adapter USB UART.',
127
+ 'Odczytywanie wyjscia czujnikow ze stanowiska testowego, laboratorium szkolnego, kontrolera robotyki lub prototypu warsztatowego.',
128
+ 'Weryfikacja, czy sterownik mostka szeregowego USB, kabel, zasilanie plytki i predkosc transmisji firmware dzialaja razem.',
129
+ 'Zbieranie szybkiego dziennika bledow przed zgloszeniem bledu lub poproszeniem o wsparcie sprzetowe.',
130
+ ],
131
+ },
132
+ {
133
+ type: 'comparative',
134
+ items: [
135
+ {
136
+ title: 'Monitor szeregowy web',
137
+ description: 'Najlepszy do szybkiego wsparcia, instrukcji klasowych, diagnostyki terenowej i przeplywow pracy makerow, gdzie otwarcie URL jest szybsze niz instalacja IDE.',
138
+ },
139
+ {
140
+ title: 'Terminal desktopowy',
141
+ description: 'Lepszy do protokolow binarnych, dlugich sesji przechwytywania, skryptow, sprzetowej kontroli przeplywu, makr i srodowisk, w ktorych API przegladarek sa blokowane.',
142
+ },
143
+ ],
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Lista Kontrolna Predkosci Transmisji i Zakonczen Linii',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'table',
152
+ headers: ['Ustawienie', 'Typowy wybor', 'Co idzie nie tak, gdy jest zle'],
153
+ rows: [
154
+ ['Predkosc transmisji', '115200 dla wielu nowoczesnych plytek, 9600 dla starszych przykladow.', 'Czytelny tekst zamienia sie w losowe symbole lub nie pojawia sie zaden uzyteczny dziennik.'],
155
+ ['Zakonczenie linii', 'CRLF dla wielu parserow polecen, bez zakonczenia dla surowych protokolow znakowych.', 'Polecenia sa ignorowane, poniewaz firmware czeka na terminator.'],
156
+ ['Wylaczny dostep do portu', 'Zamknij Arduino Serial Monitor, PuTTY, screen, minicom lub narzedzia producenta.', 'Selektor przegladarki otwiera port, ale odczyt lub zapis nie powodzi sie.'],
157
+ ['Bezpieczny kontekst', 'HTTPS lub localhost.', 'Brak Serial API nawet w obslugiwanej przegladarce.'],
158
+ ],
159
+ },
160
+ {
161
+ type: 'diagnostic',
162
+ variant: 'warning',
163
+ title: 'Brak wyjscia szeregowego?',
164
+ html: 'Upewnij sie, ze plytka jest zasilana, a kabel USB obsluguje dane, nie tylko ladowanie. Sprobuj 9600, 57600 i 115200, jesli nie znasz predkosci transmisji firmware. Nacisnij reset po polaczeniu, poniewaz wiele plytek drukuje logi startowe tylko podczas uruchamiania. Zamknij inne oprogramowanie, ktore moze nadal posiadac port szeregowy, i zainstaluj sterownik systemu operacyjnego dla CH340, CP210x, FTDI lub producenta plytki, jesli urzadzenie nigdy sie nie pojawia.',
165
+ },
166
+ {
167
+ type: 'title',
168
+ text: 'Prywatnosc, Bezpieczenstwo i Ograniczenia',
169
+ level: 3,
170
+ },
171
+ {
172
+ type: 'proscons',
173
+ title: 'Mocne strony i ograniczenia Web Serial',
174
+ items: [
175
+ {
176
+ pro: 'Brak instalacji desktopowej dla podstawowej diagnostyki tekstu szeregowego.',
177
+ con: 'Wymaga przegladarki opartej na Chromium i bezpiecznego kontekstu.',
178
+ },
179
+ {
180
+ pro: 'Selektor przegladarki ogranicza dostep do konkretnego wybranego portu.',
181
+ con: 'Nieprzeznaczony do analizatorow protokolow binarnych ani dlugich nienadzorowanych przechwycen.',
182
+ },
183
+ {
184
+ pro: 'Dobrze dziala dla dziennikow tekstowych, wierszy polecen i szybkich kontroli sprzetu.',
185
+ con: 'Niektore zasady korporacyjne, przegladarki mobilne i systemy operacyjne blokuja Web Serial.',
186
+ },
187
+ ],
188
+ },
189
+ ],
190
+ ui: {
191
+ unsupportedTitle: 'Web Serial nie jest dostepny',
192
+ unsupportedBody: 'Uzyj Chrome lub Edge przez HTTPS lub localhost i upewnij sie, ze twoje urzadzenie udostepnia interfejs szeregowy USB.',
193
+ secureContext: 'Web Serial wymaga HTTPS lub localhost. Zaladuj te strone ponownie z bezpiecznego pochodzenia i sprobuj ponownie.',
194
+ statusIdle: 'Wybierz predkosc transmisji, a nastepnie podlacz urzadzenie szeregowe USB',
195
+ statusPermission: 'Oczekiwanie na selektor portu szeregowego przegladarki',
196
+ statusOpening: 'Otwieranie portu szeregowego',
197
+ statusConnected: 'Port szeregowy polaczony',
198
+ statusDisconnected: 'Port szeregowy rozlaczony',
199
+ statusError: 'Polaczenie szeregowe nie powiodlo sie',
200
+ connect: 'Polacz szeregowo',
201
+ disconnect: 'Rozlacz',
202
+ send: 'Wyslij',
203
+ clear: 'Wyczysc',
204
+ pause: 'Pauza',
205
+ resume: 'Wznow',
206
+ baudRate: 'Predkosc transmisji',
207
+ newline: 'Dolacz CRLF',
208
+ inputPlaceholder: 'Wpisz polecenie, a nastepnie nacisnij Enter',
209
+ portFallback: 'Nie wybrano portu',
210
+ portLabel: 'Tozsamosc portu',
211
+ connectedDeviceLabel: 'Podlaczone urzadzenie',
212
+ deviceNameFallback: 'Urzadzenie szeregowe USB',
213
+ transportLabel: 'Lacze Web Serial',
214
+ bytesLabel: 'Bajty',
215
+ linesLabel: 'Linie',
216
+ privacyTitle: 'Dostep kontrolowany',
217
+ privacyBody: 'Przegladarka udostepnia tylko wybrane przez ciebie urzadzenie szeregowe. Logi pozostaja w tej karcie, chyba ze je skopiujesz.',
218
+ emptyLog: 'Wyjscie terminala pojawi sie tutaj po podlaczeniu urzadzenia szeregowego.',
219
+ copied: 'Skopiowano',
220
+ copyLog: 'Kopiuj',
221
+ presetSlow: '9600',
222
+ presetArduino: '115200',
223
+ presetFast: '921600',
224
+ terminalLabel: 'Terminal na zywo',
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-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
+ };