首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Socketcan+ Express.js +Node.js获取/发送Can总线消息

Socketcan+ Express.js +Node.js获取/发送Can总线消息
EN

Stack Overflow用户
提问于 2015-11-11 00:25:35
回答 3查看 3.4K关注 0票数 2

我用socketcan安装了

代码语言:javascript
运行
复制
    npm install socketcan

link在我的树莓派2B上没有任何错误。我可以在终端上使用Pican适配器和candump/cansend。所以这很好用。但我不懂如何使用Socketcan。我想使用can0。

这是来自Socketcan的帮助:

代码语言:javascript
运行
复制
    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();

使用消息和信号:

代码语言:javascript
运行
复制
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.jsindex.html还是bin/www文件?我试过的东西都不起作用。如何设置波特率/比特率?或者有没有其他方法,我可以用它来记录/发送一些消息?

我刚刚开始使用JavaScript / HTML5 / CSS。

EN

回答 3

Stack Overflow用户

发布于 2016-10-13 23:21:27

您可以使用ip命令设置can0和比特率。

从命令行执行以下操作:

代码语言:javascript
运行
复制
ip link set can0 type can bitrate 100000 up

要使设置持久化,可以在/etc/network/ interface文件中配置接口。

代码语言:javascript
运行
复制
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

完整的文档在这里:http://elinux.org/Bringing_CAN_interface_up

票数 4
EN

Stack Overflow用户

发布于 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,这显然是可以的。

祝大家好运

票数 2
EN

Stack Overflow用户

发布于 2017-02-09 20:22:45

您还可以从Node.js使用child_process设置can接口:

代码语言:javascript
运行
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33634767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档