Ich versuche, CAN-Bus-Client-Anwendung basierend auf CanFestival zu öffnen.CanFestival readNetworkDict() schlägt fehl
Wenn ich versuche, aus dem CAN-Server readNetworkDict() nicht in dem folgenden Code
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;
}
und das ist SDO_CLT in meinem Wörterbuch zu lesen.
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 */
};
Nach nur ein paar Tagen CAN-Bus-Erfahrung habe ich ein paar grundlegende Fragen.
Was ist SDO_CLT?
Bedeutet Null Null das Problem bei der Wörterbuchgenerierung oder muss ich es während der Laufzeit initialisieren?
„nur ein paar Tage von CAN-Bus-Erfahrung zu haben:“ Was macht Sie denken, dass Sie kompetent genug sind, um eine CANopen-Anwendung schreiben dann ...? Ich würde vermuten, dass dieser Fehler damit zusammenhängt, dass Ihr Client nicht versteht, welches SDO verwendet werden soll, um das Objektverzeichnis anderer Knoten im Netzwerk zu pingen. Möglicherweise wurde es nicht konfiguriert. Wird der Fehler für Ihren Knoten oder den Knoten gemeldet, mit dem Sie kommunizieren möchten? Ich habe keine Erfahrung mit diesem bestimmten CANopen-Stack. – Lundin
SDO-Clients sind "Kontexte", die zum Ausführen von SDO-Operationen verwendet werden. Normalerweise definieren Sie sie statisch im Objektverzeichnis (wie in der @ JMA-Antwort gezeigt) oder dynamisch, indem Sie dieselbe Information mit 'writeLocalDict()' schreiben. – ntd