2017-05-15 19 views
0

私はCanFestivalに基づいてCANバスクライアントアプリケーションを呼び出そうとしています。CanFestival readNetworkDict()が失敗する

私は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 */ 
}; 

私はいくつかの基本的な質問があります。

SDO_CLTとは何ですか?

辞書生成に問題があることを示しているか、実行時に初期化する必要がありますか?

+0

を...?このエラーは、ネットワーク上の他のノードのオブジェクト辞書にpingを実行するために使用するSDOを理解していないクライアントに関係していると思います。設定されていない可能性があります。ご使用のノードまたは通信しようとしているノードのエラーが報告されていますか?この特定のCANopenスタックの経験はありません。 – Lundin

+0

SDOクライアントは、SDO操作の実行に使用される「コンテキスト」です。通常、オブジェクト辞書(@JMA answerで示すように)で静的に定義したり、writeLocalDict()で同じ情報を書き込んで動的に定義します。 – ntd

答えて

1

あなたは、このような辞書にSDOパラメータを定義する必要があります:あなたは、その後のCANopenアプリケーションを作成するのに十分な能力があると思いますどのような「CANバスの経験の日の夫婦のみを有する」 enter image description here

関連する問題