diff --git a/doc/javascripts/serial.js b/doc/javascripts/serial.js index 7f7f283..9640771 100644 --- a/doc/javascripts/serial.js +++ b/doc/javascripts/serial.js @@ -1,65 +1,34 @@ -// serial.js let port; -async function connect() { +async function getPort() { + if (port) return port; try { - port = await navigator.serial.requestPort(); + [port] = await navigator.serial.getPorts(); await port.open({ baudRate: 115200 }); console.log('Connected to serial device:', port); + return port; } catch (error) { console.error('Error connecting to serial device:', error); } } -async function write(addr, data) { - try { - if (!port) { - console.error('Serial port not connected'); - return; - } - - // Format the data to be sent - const sendData = `W${addr.toString(16).padStart(4, '0')}${data.toString(16).padStart(4, '0')}\r\n`; - - // Example: Sending data to the device - const writer = port.writable.getWriter(); - await writer.write(new TextEncoder().encode(sendData)); - await writer.releaseLock(); - console.log('Sent:', sendData); - } catch (error) { - console.error('Error sending data:', error); - } +async function write(data) { + const port = await getPort(); + const writer = port.writable.getWriter(); + await writer.write(new TextEncoder().encode(data)); + await writer.releaseLock(); + console.log('Sent:', data); } -async function read(addr) { - try { - if (!port) { - console.error('Serial port not connected'); - return; - } +async function read() { + const port = await getPort(); + const reader = port.readable.getReader(); + const {value, done} = await reader.read(); + reader.releaseLock(); - // Format the read command - const readCmd = `R${addr.toString(16).padStart(4, '0')}\r\n`; - - // Send the read command to the device - const writer = port.writable.getWriter(); - await writer.write(new TextEncoder().encode(readCmd)); - await writer.releaseLock(); - console.log('Sent:', readCmd); - - // Read back the response - const reader = port.readable.getReader(); // Create a new reader - const { value, done } = await reader.read(); // Read from the stream - reader.releaseLock(); // Release the reader's lock - - if (!done) { - const responseData = new TextDecoder().decode(value); - console.log('Received:', responseData); - return responseData; - } - } catch (error) { - console.error('Error reading data:', error); + if (!done) { + const data = new TextDecoder().decode(value); + console.log('Received:', data); + return data; } } - -document.getElementById('connectButton').addEventListener('click', connect); \ No newline at end of file diff --git a/doc/javascripts/upload.js b/doc/javascripts/upload.js index f075e9e..8f6cba2 100644 --- a/doc/javascripts/upload.js +++ b/doc/javascripts/upload.js @@ -18,7 +18,7 @@ function runAfterUpload() { } // Your additional JavaScript code to run after file upload - web_terminal(data); + WebTerminal(data); } runAfterUpload(); // Start checking for file upload completion \ No newline at end of file diff --git a/doc/javascripts/web_terminal.js b/doc/javascripts/webTerminal.js similarity index 87% rename from doc/javascripts/web_terminal.js rename to doc/javascripts/webTerminal.js index 3bd91a6..b59edcd 100644 --- a/doc/javascripts/web_terminal.js +++ b/doc/javascripts/webTerminal.js @@ -1,4 +1,10 @@ -async function web_terminal(data){ +document.getElementById('connectButton').addEventListener('click', selectPort); + +async function selectPort(){ + await navigator.serial.requestPort(); +} + +async function WebTerminal(data){ let pyodide = await loadPyodide(); // Load Manta.yaml into pyodide's file system @@ -45,8 +51,9 @@ async function web_terminal(data){ async def barfoo(): print("entering barfoo") - print(await read(m.my_io_core._base_addr)) - print(await read(m.my_io_core._base_addr + 1)) + await write("R0000\\r\\n") + print(await read()) + loop = asyncio.get_event_loop() loop.run_until_complete(barfoo()) @@ -54,4 +61,4 @@ async function web_terminal(data){ #await foobar() # doesn't work either! await outside function #await barfoo() # doesn't work either! await outside function `); -} \ No newline at end of file +} diff --git a/doc/web_terminal.md b/doc/web_terminal.md index 7bb3285..dd6a9eb 100644 --- a/doc/web_terminal.md +++ b/doc/web_terminal.md @@ -10,7 +10,7 @@ - +