diff options
| author | raldone01 <[email protected]> | 2025-07-29 15:51:54 +0200 |
|---|---|---|
| committer | raldone01 <[email protected]> | 2025-07-29 16:22:02 +0200 |
| commit | 9c1115e066f70ca72895bfd9bc4b06a113d32651 (patch) | |
| tree | 926975e6be4856bead29aa937b9434784e49197e /examples/device/webusb_serial/website/application.js | |
| parent | f36f97c45a58857ca3eb0a2f98f77f5931e72dae (diff) | |
Add reconnect m
Diffstat (limited to 'examples/device/webusb_serial/website/application.js')
| -rw-r--r-- | examples/device/webusb_serial/website/application.js | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/examples/device/webusb_serial/website/application.js b/examples/device/webusb_serial/website/application.js index 090ab5748..376faec44 100644 --- a/examples/device/webusb_serial/website/application.js +++ b/examples/device/webusb_serial/website/application.js @@ -369,7 +369,7 @@ } setStatus(msg, level = 'info') { - console.log(msg); + console.error(msg); uiStatusSpan.textContent = msg; uiStatusSpan.className = 'status status-' + level; } @@ -596,24 +596,33 @@ } } - tryAutoReconnect() { - this.updateUIConnectionState(); - if (!uiAutoReconnectCheckbox.checked) return; - if (this.reconnectTimeoutId !== null) return; // already trying - this.setStatus('Attempting to auto-reconnect...', 'info'); - this.reconnectTimeoutId = setTimeout(async () => { + async autoReconnectTimeout() { this.reconnectTimeoutId = null; if (!uiAutoReconnectCheckbox.checked) { this.setStatus('Auto-reconnect stopped.', 'info'); return; } - if (this.currentPort) { + if (this.currentPort && !this.currentPort.isConnected) { try { await this.currentPort.connect(); + this.setStatus('Reconnected successfully', 'info'); + } catch (error) { + this.setStatus(`Reconnect failed: ${error.message}`, 'error'); + // Try again after a delay + this.tryAutoReconnect(); } finally { this.updateUIConnectionState(); } } + } + + tryAutoReconnect() { + this.updateUIConnectionState(); + if (!uiAutoReconnectCheckbox.checked) return; + if (this.reconnectTimeoutId !== null) return; // already trying + this.setStatus('Attempting to auto-reconnect...', 'info'); + this.reconnectTimeoutId = setTimeout(async () => { + await this.autoReconnectTimeout(); }, 1000); } @@ -762,14 +771,15 @@ // save <iso_date_time>,<received_line> let csvContent = 'data:text/csv;charset=utf-8,'; for (const entry of this.receivedData) { - let line = new Date(entry.time).toISOString() + ',"' + entry.text.replace(/[\r\n]+$/, '') + '"'; + let sanitizedText = entry.text.replace(/"/g, '""').replace(/[\r\n]+$/, ''); + let line = new Date(entry.time).toISOString() + ',"' + sanitizedText + '"'; csvContent += line + '\n'; } const encodedUri = encodeURI(csvContent); const link = document.createElement('a'); link.setAttribute('href', encodedUri); - const filename = new Date().toISOString() + '_tinyusb_received_serial_data.csv'; + const filename = new Date().toISOString().replace(/:/g, '-') + '_tinyusb_received_serial_data.csv'; link.setAttribute('download', filename); document.body.appendChild(link); link.click(); |
