Я играл с емкостным сенсорным датчиком MPR121 от Adafruit. В IDE Arduino есть пример кода, который вы можете просто загрузить и запустить, и он отлично работает: когда я касаюсь, например, контакта 11, он возвращает «11 касался», а когда я отпускаю его, он возвращает '11 нажата ''. Отлично!
Теперь проблема возникает, когда я пытаюсь передать эти данные в NW. js. Используя последовательный порт Chrome в NW. js, я могу подключиться к порту, к которому подключен мой Arduino, и попытаться прочитать любые данные, которые посылает Arduino. Однако, когда я пытаюсь прочитать данные, единственное, что я получаю, это ArrayBuffer, заполненный байтами 0. Я действительно не уверен, что здесь происходит, так как оба устройства работают отлично, когда я запускаю его в IDE Arduino, но он возвращает в основном ничего с chrome .serialport.
У кого-нибудь есть совет или представление о том, что здесь происходит? Если я делаю console.log (info.data), я получаю ArrayBuffer только с пустыми прикусами.
Спасибо
Вот мой код:
const ab2str = require('arraybuffer-to-string');
nw.Window.get().showDevTools();
let buffer = "";
chrome.serial.getDevices(devices => {
devices.forEach(device => console.log(device));
});
// let port = "COM3";
let port = "/dev/cu.usbmodem142401";
chrome.serial.connect(port, {bitrate: 1000000}, () => {
console.log("Serialport connected:" + port);
chrome.serial.onReceive.addListener(onDataReceived);
});
function onDataReceived(info) {
let lines = ab2str(info.data).split("\n");
lines[0] = buffer + lines[0];
buffer = lines.pop();
lines.forEach(line => {
const [type, value] = line.split("=");
console.log(type, value);
});
}