NI製品ディスカッション

cancel
Showing results for 
Search instead for 
Did you mean: 

USB-8502を使ってCANFrameを送信する時

お世話になります。

 

NI-XNETでCAN通信する際、CANの送信FrameのIDがうまく設定できません。

 

使用機器:CAN HS/FD Interface NI-XNET USB-8502

     UC245(送信相手)

開発環境:Visual Stdio 2010 express Formアプリ

     C APIとして使用

 

サンプルプログラムである

CAN_Frame_Single_Point_Output.cに記述されているように

l_pFrame->Identifier = g_ID;  //g_IDは任意のIDを指定

としているのですが、送信したデータのIDを別の受信機で確認すると

IDが0x42(66)になってしまいます。

 

以下が怪しいと思っているのですが、どう進めればいいかわかりません。

 

*Interface = "CAN1"

*Framelist = "CANEventFrame1"

*Database = "NIXNET_example"

*Cluster = "CAN_Cluster"

として、exampleと同じ参照を使用しています。

 

NIXNET_example.xml内の

<fx:FRAME-TRIGGERING ID="trig5">

 <fx:IDENTIFIER>

  <fx:IDENTIFIER-VALUE>66</fx:IDENTIFIER-VALUE>

を手打ちで変更することでIDを変えることはできるのですが、

C関数内でIDを簡単に変更することはできないでしょうか?

 

知っている方がいれば教えていただきたいです。

よろしくお願いします。

 

0 Kudos
Message 1 of 2
(964 Views)

DatabaseやFramelistがXNETデフォルトのデータベースを参照しているため、データベース内で定義されているIDが出力されてしまう仕様です。

データベースを参照せずプログラム内でCANフレームを作成するには、LabVIEWではこのような関数があります。

http://zone.ni.com/reference/en-XX/help/372841L-01/nixnet/xnetwriteframerawvi/

 

Cでは、nxCreateSessionのDatabaseNameパラメータに「:memory:」を指定すると、任意のフレームをnxWriteFrame関数からRaw Frame Formatで指定されたようにデータを書き込むことが可能です。

http://zone.ni.com/reference/en-XX/help/372841L-01/nixnet/nxcreatesession/

http://zone.ni.com/reference/en-XX/help/372841L-01/nixnet/nxwriteframe/

http://zone.ni.com/reference/en-XX/help/372841L-01/nixnet/rawframeformat/

0 Kudos
Message 2 of 2
(913 Views)