我在 RaspberryPi 上使用 Meteor 和 'socketcan' npm 包。为了定义我的 CAN 网络,我使用了一个皮划艇文件“canDefinition.kcd”。这是我在服务器文件夹中的启动 javascript 文件的样子:
// 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);
});
我按照sebi2k1/node-can的说明进行操作。
现在的问题是,当所选的可以消息到达时,侦听器“ on Change”未调用。
什么已经在工作/我已经检查过:
- 通过过滤 id 接收特定的 CAN 消息(见下面的代码)
- 访问/读取 canDefiniton.kcd 数据库
// 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 );
有人帮忙吗?谢谢!