Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Socketcan+;Express.js+;Node.js获取/发送Can总线消息_Node.js_Express_Can Bus_Socketcan - Fatal编程技术网

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

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

我安装了socketcan和

    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的版本彼此不兼容。我将在下周考试后公布我的答案。祝你玩得开心,谢谢你的帮助。