我用socketcan安装了
npm install socketcan
link在我的树莓派2B上没有任何错误。我可以在终端上使用Pican适配器和candump/cansend。所以这很好用。但我不懂如何使用Socketcan。我想使用can0。
这是来自Socketcan的帮助:
var can = require('socketcan');
var channel = can.createRawChannel("vcan0", true);
// Log any message
channel.addListener("onMessage", function(msg) { console.log(msg); } );
// Reply any message
channel.addListener("onMessage", channel.send, channel);
channel.start();
使用消息和信号:
var can = require('socketcan');
var fs = require('fs');
// Parse database
var network = can.parseNetworkDescription("samples/can_definition_sample.kcd");
var channel = can.createRawChannel("vcan0");
var db = new can.DatabaseService(channel, network.buses["Motor"]);
channel.start();
// Register a listener to get any value changes
db.messages["CruiseControlStatus"].signals["SpeedKm"].onChange(function(s) {
console.log("SpeedKm " + s.value);
});
// Update tank temperature
db.messages["TankController"].signals["TankTemperature"].update(80);
// Trigger sending this message
db.send("TankController");
但是我应该将这些命令放在哪个文件中,app.js
、index.html
还是bin/www
文件?我试过的东西都不起作用。如何设置波特率/比特率?或者有没有其他方法,我可以用它来记录/发送一些消息?
我刚刚开始使用JavaScript / HTML5 / CSS。
发布于 2016-10-13 23:21:27
您可以使用ip命令设置can0和比特率。
从命令行执行以下操作:
ip link set can0 type can bitrate 100000 up
要使设置持久化,可以在/etc/network/ interface文件中配置接口。
allow-hotplug can0
iface can0 inet manual
pre-up /sbin/ip link set $IFACE type can txqlen 512 bitrate 100000 sample-point 0.75
up /sbin/ifconfig $IFACE up
down /sbin/ifconfig $IFACE down
发布于 2015-12-18 04:29:40
有几件事:这些命令希望存在于.js文件中
你必须设置波特率与ip,类似于: ip链接设置can0类型可以比特率1000000三倍采样
我发现这个站点对让接口工作非常有帮助,你需要编辑你的/etc/network/ http://www.embeddedhobbyist.com/2015/09/linux-can-development/文件来使它持久化
最初,让我来到这个页面的原因被证明是如此棘手,以至于我在这里创建了这个帐户,只是为了在这里解释一下: TankController消息不在公交车中,请检查samples/can_definition_sample.kcd以了解我的意思。https://github.com/sebi2k1/node-can
另外,当我用require(' socketcan ')测试socketcan时,它总是返回undefined,这显然是可以的。
祝大家好运
发布于 2017-02-09 20:22:45
您还可以从Node.js使用child_process设置can接口:
const exec = require('child_process').execSync;
// ...
function initializeCAN(device, bitrate) {
let result;
// Turn off CAN bus if it is alive
exec('sudo ip link set ' + device + ' down type can');
// Turn on CAN bus
result = exec('sudo ip link set ' + device + ' up type can bitrate ' + bitrate);
if (result.toString()) {
throw Error('CAN bus can\'t be initialized');
}
}
// ...
initializeCAN('can0', 12500);
https://stackoverflow.com/questions/33634767
复制相似问题