54 lines
1.5 KiB
JavaScript
54 lines
1.5 KiB
JavaScript
document.getElementById('connectButton').addEventListener('click', selectPort);
|
|
document.getElementById('runButton').addEventListener('click', webTerminal);
|
|
|
|
async function selectPort(){
|
|
await navigator.serial.requestPort();
|
|
}
|
|
|
|
// Start Web Worker for Serial API
|
|
globalThis.receiveBuffer = [];
|
|
|
|
const serialWorker = new Worker("../javascripts/serial.js");
|
|
function sendToSerialWorker(data){
|
|
console.log("Main -> Worker: ", data);
|
|
serialWorker.postMessage(data);
|
|
}
|
|
|
|
serialWorker.onmessage = (e) => {
|
|
console.log("Worker -> Main: ", e.data);
|
|
receiveBuffer.push(e.data);
|
|
};
|
|
|
|
// Main function for the Web Terminal
|
|
async function webTerminal(){
|
|
let pyodide = await loadPyodide();
|
|
|
|
// Load Manta.yaml into pyodide's file system
|
|
// pyodide.FS.writeFile("/manta.yaml", data, { encoding: "utf8" });
|
|
|
|
// Load micropip, setuptools, manta
|
|
await pyodide.loadPackage("micropip");
|
|
await pyodide.loadPackage("setuptools");
|
|
const micropip = pyodide.pyimport("micropip");
|
|
await micropip.install('../assets/manta-1.0.0-py3-none-any.whl');
|
|
|
|
pyodide.runPythonAsync(`
|
|
import asyncio
|
|
from js import sendToSerialWorker
|
|
from js import receiveBuffer
|
|
from manta import Manta
|
|
|
|
#m = Manta("/manta.yaml")
|
|
|
|
print("Sending read request")
|
|
sendToSerialWorker("R0000\\r\\n")
|
|
|
|
for _ in range(10):
|
|
print(len(receiveBuffer))
|
|
print(receiveBuffer)
|
|
await asyncio.sleep(0.1)
|
|
|
|
print("Python Complete")
|
|
`);
|
|
}
|