以编程方式设置SocketCan比特率



我在系统上使用socketcan。有没有办法以编程方式设置CAN接口比特率,而不是从命令行中设置。一个例子将有用。

谢谢。

是的。使用NetLink插座,这是ip使用的。

不幸的是,我不知道有任何可行的示例,但是您可以检查ip的源代码。

另外,您可以使用libocketcan,这是can Netlink插座的不错的包装器。

QT(C )的一个小示例。通过QPROCESS设置比特率。必须停止使用罐服务,然后可以配置比特率,而can-service必须启动agein:

#include <QProcess>
#include <QString>
CO_set_bitrate(char const *can_device) //can_device for example "can0"
{
  QProcess set_bitrate;
  QStringList bitrate_args;
  QStringList stop_args;
  QStringList start_args;
  char const *can_bitrate = "500000"; //Set Bitrate
  stop_args.clear();
  stop_args<<"stop"<<can_device<<".service";
  start_args.clear();
  start_args<<"start"<<can_device<<".service";
  bitrate_args.clear();
  bitrate_args<<"link"<<"set"<<can_device<<"up"<<"type"<<"can"<<"bitrate"<<can_bitrate;
//Stop the CAN-Service
  set_bitrate.start("systemctl", stop_args, QIODevice::WriteOnly);
  set_bitrate.waitForFinished(-1);
//Set Bitrate
  set_bitrate.start( "ip", bitrate_args, QIODevice::WriteOnly); //Starts execution of command
  set_bitrate.waitForFinished(-1);
//Restart CAN-Service
  set_bitrate.start("systemctl", start_args, QIODevice::WriteOnly);
  set_bitrate.waitForFinished(-1);
  }

最新更新