22得票2回答
如何在Linux上创建虚拟CAN端口?(C++)

我想创建一个程序,用于模拟CAN端口以进行另一个大型应用程序的测试。该程序应通过虚拟CAN发送先前记录的数据。有人有这样的经验吗? 我正在考虑建立虚拟COM,并通过它发送CAN帧中打包的数据。这可行吗?如何在Linux上建立虚拟串口?找到了这个讨论线程Virtual Serial Port ...

21得票7回答
如何编写简单的CANopen层?

我们有一个机器人项目,其中电机控制器使用CANopen进行通信。我需要使用主微控制器与这些电机控制器进行通信。问题是,我需要在这个微控制器中开发一个CANopen层,但我只知道如何在低级别(CAN)发送和接收。 我不太了解CANopen(PDO、SDO、Heartbeat、对象字典等)。我尝...

15得票1回答
LPC2292和LPC1758板之间的CAN通信出现“帧起始”错误。

我正在尝试在几个LPC设备节点之间设置CAN通信。我的设置包括写入CAN总线的几个CAN节点。例如,LPC 2292 CAN控制器可以写入CAN总线,而LPC1758可以接收数据。这很好地运行。现在,LPC1758有两个CAN控制器,我已将一个设置为接收数据,另一个设置为在总线上作为响应传输数...

13得票2回答
boost::asio在SocketCAN上的应用

我在考虑使用Boost Asio从Socket CAN中读取数据。 在linux/can.h中没有什么花哨的东西,设备应该像环回接口一样运行,并使用原始套接字。 看着basic_raw_socket接口,似乎我可以利用basic_raw_socket::assign来分配使用原生套接字创建的...

13得票1回答
Java和CANopen

背景 我需要在笔记本电脑上创建一个Java程序来接收/发送CANopen消息。 选择RJ45作为网络物理介质。我对CANopen和Java通信编程都很新。 如果我看起来是个门外汉,请原谅我。事实是,我已经阅读了很多资料,但我还不知道如何开始。 问题 除了将PC连接到CAN总线网络之...

12得票1回答
写入:无可用缓冲区 socket-can/linux-can

我正在运行一个带有两个CAN通道的程序(使用TowerTech CAN Cape TT3201)。 这两个通道是can0(500k)和can1(125k)。can0通道正常工作,但can1会出现写入“无可用缓冲区”的错误。 我正在使用ValueCAN3/VehicleSpy检查消息。 这...

11得票2回答
candump(SocketCAN)ID过滤功能让我非常困惑

简而言之,我希望candump仅显示ID为0x00200200或0x255的报文。 因此我这样做:candump can0,00200200:0,255:0 但这会返回所有的帧,而且每个帧都会显示两次。也就是说,下面代码的输出:cansend can0 256#112233 将会是这样的:c...

9得票3回答
与Docker容器共享虚拟网络

我正在进行一个项目,需要在我的主机上创建一个虚拟CAN网络。 $ sudo modprobe vcan $ sudo ip link add dev vcan0 type vcan $ sudo ip link set up vcan0 我的ifconfig: 我的问题是如何与我的...

8得票2回答
其他节点如何在CAN总线上确认传输的CAN消息?

我知道一个占优应答位是由消息的接收者发送的,该消息是由另一个节点传输的。 我无法理解的是,接收方是否在接收到整个消息后发送了单个占优位,还是以占优位字段的形式发送相同的消息? 或者是接收器在发射器传输数据帧时将 ACK 字段驱动到不同的电压水平? 另外,两个 CAN 节点能否确认同一条消...

8得票8回答
在C++中将结构体转换为整数

我有一个结构体来表示29位CAN标识符,其位域如下。 struct canId { u8 priority :3; u8 reserved :1; u8 dataPage :1; u8 pduFor...