xxxxxxxxxx
73
/*This template is a slightly simplified version from the labs.
Labs make a GUI button that 'magically' appears when needed.
Here I use a keyboard shortcut ('s') to force open the port selector dialog
https://github.com/yoonbuck/p5.WebSerial/wiki/Guide
*/
//Add library reference to index with this line:
//<script src="https://unpkg.com/p5-webserial@0.1.1/build/p5.webserial.js"></script>
//Declare the serial object
const serial = new p5.WebSerial();
function setup() {
createCanvas(400, 400);
//lab version:
if (!navigator.serial) {
//navigator is P5 Navigator?
alert("WebSerial is not supported in this browser. Try Chrome or MS Edge.");
}
//library version:
// if (!p5.WebSerial.checkSupport()) {
// alert("WebSerial is not supported.");
// }
navigator.serial.addEventListener("connect", portConnect);
navigator.serial.addEventListener("disconnect", portDisconnect);
serial.on("noport", function() { print("No ports yet");});
serial.on("portavailable", function () {
print("Port available");
serial.open();
});
serial.on("open", function () { print("Port open"); });
serial.on("requesterror", function () { print("Request error"); });
serial.on("readerror", function () { print("Read error"); });
serial.on("data", serialEvent); //<== This is the main event, see below
serial.on("close", function () { serial.close(); });
serial.getPorts();
}
function draw() {
background(220);
}
function keyPressed() {
//hot ket forces open a serial dialog
if (key == "s") {
serial.requestPort();
}
serial.write(key);
}
function mouseDragged() {
var outByte = byte(map(mouseY, 0, height, 0, 255));
serial.write(outByte);
}
// 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 serialEvent() {
print("Got data!");
//console.log(char(serial.read()));
}