Im pretty much using the Nintendo Switch Joy-Con controllers demo which I've modified a little to make it work with my barcode scanner. And it just wont work and if it does work it works once in 100 site refreshes.
console.log = text => {
log.textContent += `${text}\r\n`;
};
let device;
if (!("hid" in navigator)) {
console.log("WebHID is not available yet.");
}
navigator.hid.getDevices().then(devices => {
if (devices.length == 0) {
console.log(`No HID devices selected. Press the "request device" button.`);
return;
}
device = devices[0];
console.log(`User previously selected "${device.productName}" HID device.`);
console.log(`Now press "open device" button to receive input reports.`);
});
requestDeviceButton.onclick = async event => {
document.body.style.display = "none";
try {
const filters = [
{
vendorId: "8792",
productId: "9032"
}
];
[device] = await navigator.hid.requestDevice({ filters });
if (!device) return;
console.log(`User selected "${device.productName}" HID device.`);
console.log(`Now press "open device" button to receive input reports.`);
} finally {
document.body.style.display = "";
}
};
openButton.onclick = async event => {
if (!device) return;
await device.open();
console.log(`Waiting for user to press button...`);
device.addEventListener("inputreport", event => {
const { data, device, reportId } = event;
if (device.productId != "9032") return;
const value = data.getUint8(0);
if (value == 0) return;
console.log(`Data: ${value}.`);
});
};
openButton.onclick event fires everytime i scan something with the barcode scanner. And because of it, it tries to do device.open() again everytime i scan something. And inputreport event wont fire at all.
Does anyone have any idea what causes this?
Hey i switched to WEBUSB api and got it working after reinstalling winusb driver using zadig for the barcode scanner.
Here is the code im using rn. If anyone is interested. RFID function is launched by a button press.