xxxxxxxxxx
89
const serial = new p5.WebSerial();
// HTML button object:
let portButton;
let inData; // for incoming serial data
let outByte = 0; // for outgoing data
function setup() {
if (!navigator.serial) {
alert("WebSerial is not supported in this browser. Try Chrome or MS Edge.");
}
navigator.serial.addEventListener("connect", portConnect);
navigator.serial.addEventListener("disconnect", portDisconnect);
serial.getPorts(); // check for any ports that are available
serial.on("noport", makePortButton); // if there's no port chosen, choose one
serial.on("portavailable", openPort); // open whatever port is available
serial.on("requesterror", portError); // handle serial errors
serial.on("data", serialEvent); // handle any incoming serial data
serial.on("close", makePortButton);
createCanvas(400, 400);
}
function draw() {
background(220);
}
// if there's no port selected, make a port select button appear:
function makePortButton() {
print("Making button");
// create and position a port chooser button:
portButton = createButton("choose port");
portButton.position(10, 10);
portButton.mousePressed(choosePort); // button mousepressed handler
}
// make the port selector window appear:
function choosePort() {
print("In choosePort");
if (portButton) portButton.show();
serial.requestPort();
}
// open the selected port, and make the port button invisible:
function openPort() {
// wait for the serial.open promise to return, then call the initiateSerial function
print("Opening port");
serial.open().then(initiateSerial);
// once the port opens, let the user know:
function initiateSerial() {
console.log("port open");
}
// hide the port button once a port is chosen:
if (portButton) {
portButton.hide();
print("Hiding button");
}
}
// pop up an alert if there's a port error:
function portError(err) {
alert("Serial port error: " + err);
}
// read any incoming data as a string
function serialEvent() {
//inData = Number(serial.read());
inData = Number(serial.read());
console.log(inData);
}
// try to connect if a new serial port gets added (i.e. plugged in via USB):
function portConnect() {
console.log("Port connected");
serial.getPorts();
}
// if a port is disconnected:
function portDisconnect() {
serial.close();
console.log("Port disconnected");
}
function closePort() {
serial.close();
}