Embedded CanFestival readNetworkDict()失败

Embedded CanFestival readNetworkDict()失败,embedded,canopen,Embedded,Canopen,我正在尝试提出基于CanFestival的CAN总线客户端应用程序 当我尝试从CAN服务器读取时,readNetworkDict在以下代码中失败 offset = d->firstIndex->SDO_CLT; lastIndex = d->lastIndex->SDO_CLT; if (offset == 0) { MSG_ERR(0x1AC6, "No SDO client index found for nodeId ", n

我正在尝试提出基于CanFestival的CAN总线客户端应用程序

当我尝试从CAN服务器读取时,readNetworkDict在以下代码中失败

    offset = d->firstIndex->SDO_CLT;
    lastIndex = d->lastIndex->SDO_CLT;
    if (offset == 0) {
        MSG_ERR(0x1AC6, "No SDO client index found for nodeId ", nodeId);
        return 0xFF;
    }
这是我字典里的SDO_CLT

const quick_index GoldTwitter_firstIndex = {
  3, /* SDO_SVR */
  0, /* SDO_CLT */
  4, /* PDO_RCV */
  5, /* PDO_RCV_MAP */
  6, /* PDO_TRS */
  7 /* PDO_TRS_MAP */
};

由于只有几天的CAN总线经验,我有一些基本问题

什么是SDO_CLT


它是零表示字典生成有问题,还是我必须在运行时对其进行初始化?

必须在字典中定义SDO参数,如下所示:

只有几天的CAN总线经验,是什么让你认为自己有能力编写CANopen应用程序呢。。。?我猜这个错误与您的客户端不了解使用哪个SDO ping网络中其他节点的对象字典有关。可能还没有配置。是否为您的节点或您尝试与之通信的节点报告了错误?我没有这方面的经验。SDO客户端是用于执行SDO操作的上下文。您通常在对象字典中静态地定义它们,如@JMA answer所示,或者通过使用writeLocalDict写入相同的信息来动态地定义它们。