Socketcan+;Express.js+;Node.js获取/发送Can总线消息
我安装了socketcan和Socketcan+;Express.js+;Node.js获取/发送Can总线消息,node.js,express,can-bus,socketcan,Node.js,Express,Can Bus,Socketcan,我安装了socketcan和 npm install socketcan 我的Raspberry Pi 2 B没有任何错误。我可以在终端上使用带有candump/cansend的Pican适配器。这样就行了。 但我不懂怎么用袜子罐。我想使用can0 这是Socketcan提供的帮助: var can = require('socketcan'); var channel = can.createRawChannel("vcan0", true); // Log
npm install socketcan
我的Raspberry Pi 2 B没有任何错误。我可以在终端上使用带有candump/cansend的Pican适配器。这样就行了。
但我不懂怎么用袜子罐。我想使用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。一些东西:
这些命令希望存在于.js文件中
必须使用ip设置波特率,例如:
ip链路集can0类型可在上进行比特率1000000三次采样
我发现这个网站非常有助于让界面正常工作,你需要编辑你的/etc/networks/interfaces文件以使其持久化
一开始是什么让我来到这一页被证明是非常棘手的,所以我做了这个账户只是为了回到这里解释:
TankController消息不在电机总线中,请检查samples/can_definition_sample.kcd以了解我的意思
另外,当我使用require('socketcan')测试socketcan时,它总是返回undefined,这显然是正常的
祝大家好运您可以使用ip命令设置can0和比特率 从命令行:
ip link set can0 type can bitrate 100000 up
要使设置保持不变,可以在/etc/network/interfaces文件中配置接口
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
完整文档如下:您也可以使用Node.js设置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);
请在你的答案中填入基本信息。链接可能有一天会过时。我想我做出了正确的决定,应该链接什么,包括什么。我直接回答了直接的问题。我相信Annabana和我是在同一个教程中学习的,所以我给她指了指帮助我通过它的地方。从嵌入式爱好者那里窃取内容是不公平的,因为他们刚刚看到了answear。我让它运行。这不完全是我想要的,但它现在起作用了。一个问题是我不知道我需要socket.io,另一个问题是Node和socketcan的版本彼此不兼容。我将在下周考试后公布我的答案。祝你玩得开心,谢谢你的帮助。