Ich benutze Meteor mit 'socketcan' npm-Paket auf einem RaspberryPi. Um mein CAN-Netzwerk zu definieren, verwende ich eine Kajak-Datei 'canDefinition.kcd'. Dies ist, was meine Startup-JavaScript-Datei in den Server-Ordnern wie folgt aussieht:Socketcan registrieren Listener heißt nicht
// This code is running OUTSIDE of Meteor.startup loop
"use strict";
var can = Meteor.npmRequire('socketcan');
var fs = Meteor.npmRequire('fs');
// Parse database
var network = can.parseNetworkDescription("/home/MyMeteorProject/public/canDefinition.kcd");
var channel = can.createRawChannel("can0");
var db = new can.DatabaseService(channel, network.buses["Private"]);
channel.start();
db.messages["x192_speed"].signals["motor"].onChange(function(s) {
var newValue = s.value[1] * 256 + s.value[0];
console.log("onChange successful" + newValue);
});
ich die Anweisungen von sebi2k1/node-can gefolgt.
Das Problem ist jetzt, dass der Listener 'onChange' nicht aufgerufen wird, wenn die ausgewählte CAN-Nachricht ankommt.
Was ist schon arbeiten/was ich bereits geprüft:
- eine bestimmte CAN-Nachricht empfangen, indem die ID-Filterung (siehe Code unten)
- Aufrufen/Lesen der canDefiniton.kcd Datenbank
// This code is running in Meteor.startup loop
var old_value = 0;
//CAN bus test:
var boundFunction = Meteor.bindEnvironment(function (msg) {
if (msg.id == 0x192)
{
console.log(msg.data);
var Value = msg.data[0];
mCollection.update({Name: 'motor'}, {$set: {Value: Value}});
}
old_value = Value;
});
// Log any message
channel.addListener("onMessage", boundFunction);
Jemand hilft? Vielen Dank!