デジタル鉄道模型フォーラムDCC・メルクリン等のデジタル鉄道模型の話題でコミュニケーションできる場です。登録・利用は無料です。
デスクトップステーション(DesktopStation)のページはこちら
・無料の日本型超高品質DCCサウンドデータをWebで配布中!
・鉄道模型をスマホで簡単制御!国産で革新的なコマンドステーション DSair2はこちらから。

2016年03月05日

NMRA DCCライブラリ最新版の注意事項

すっかり気付かずに、2時間も無駄な時間を過ごしてしまったので、皆様にご連絡も兼ねて掲載いたします。

スマイルデコーダで使用しているDCCのパケットをデコードして速度やファンクション情報を取得するArduino用のNMRA DCCライブラリですが、ソースの管理サイトがSourceforgeからGithubに変更されると同時に最新版が2015年10月にリリースされています。主な変更は、速度ステップに14が加わった(今ではほとんど使いませんが・・・)ことです。

この他に使用する側のスケッチの変更が必要になっています。タチが悪いのが、元のスケッチままでもエラーが全く出ないことです。そして、まったくDCCパケットを受信しないので、ハードの不具合と勘違いしてしまうことです。

変更箇所は、速度やファンクションを受信するために宣言をしておく関数の引数が増えていることです。AddrTypeが追加になっています。

変更となる関数:
・速度受信関数 notifyDccSpeed
・ファンクション受信関数 notifyDccFunc


旧:
void notifyDccSpeed( uint16_t Addr, uint8_t Speed, uint8_t ForwardDir, uint8_t MaxSpeed )
新:
void notifyDccSpeed( uint16_t Addr, DCC_ADDR_TYPE AddrType, uint8_t Speed, DCC_DIRECTION Dir, DCC_SPEED_STEPS SpeedSteps )



旧:
void notifyDccFunc( uint16_t Addr, FN_GROUP FuncGrp, uint8_t FuncState)
新:
void notifyDccFunc(uint16_t Addr, DCC_ADDR_TYPE AddrType, FN_GROUP FuncGrp, uint8_t FuncState)



※アクセサリの受信関数に変更はありません。

DCC_ADDR_TYPE AddrTypeとは何なんだと思って確認したところ、DCC_ADDR_LONGかDCC_ADDR_SHORTが入るだけのようです。CV29でLongAddressを選択した状態で動いていることを示すためのものということでしょう。
アドレス値見ればわかるだろ・・・と思いますが、欧米やメーカーで100〜127の扱いがバラバラだったりするので、その解釈を明確にするためだろうと思われますが、こういう大幅変更は影響がでかすぎるのでやめて欲しいところです。

もし、最新版のNMRA DCCライブラリを使う場合には、上記の2つの関数の引数を新の方に合わせてDCC_ADDR_TYPE AddrTypeを同じ並びになるように追加する必要があります。修正後、以前のライブラリと同じようにDCCパケットを受信することも確認ください。

最新版NmraDccに移行される方は、くれぐれもご注意ください。なお、当サイトでも転載しておりますが、2014年の旧版なので互換性的にはフジガヤさんやその他の方と相性が良いはずなので、そのままお使いいただくことをおすすめします。
posted by yaasan at 16:27 | Comment(1) | 鉄道模型
この記事へのコメント
 情報ありがとうございます。ArudinoのIDEや各種ライブラリがアップデートされると、警告が出たり、動かなくなったりしますよね(VVVFスケッチはそれ以外にもPWMDAC_SYNTHを新しくするとギルドできません)。と言って、他人のライブラリのコピーを自分のところにすべて置くのがいいかと少々悩みますし。
Posted by フジガヤ2 at 2016年03月06日 20:16
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。