« Scratch(プログラム言語)でGumowski-Mira写像を描いてみる。 | トップページ | え!キリンのスゴ泡グラスってちゃんと流体力学計算して作ってたの?! »

2013年7月17日 (水)

Mac OS X (Xcode, cocoa)でFTDIのICおよびD2XXを使う(備忘録というか、、、)

仕事は全くプログラムとは関係ないが、ちょっとした制御や計算プログラムは皆が忙しいときにサービスで作ったりする。たまにはマネージメントだけじゃないぞ!と見せておかないと・・・

で、制御にFTDIの製品http://www.ftdichip.com/のBitbangモードを使うことがある。

Windowsで動かす時はD2XX Direct Driverをダウンロードして何も考えずに動かせるのだが、、、

http://www.ftdichip.com/Drivers/D2XX.htm

最近、Macで動くものを作ってほしいという話が出た。(こんな要求を出す会社はもちろんあれですが)

私もMacbookをサブマシンで使いだしてから日が浅いが、FTDIはちゃんとMac OS X用のドライバーを用意してくれていたので、とりあえずそのサンプルプログラムにあった動作をコピペして、コマンドラインでC言語で動くやつはすぐにできた。

・・・ところが、ちゃんとXcode使ってCocoaアプリを作ってボタンとかいろいろ並べよう、、、と思ったら全く最初動かなかった。

その時に陥った罠をいろいろ書いていく。おそらく、もっと詳しい人はいるはずだが、ちょっとググっただけではコマンドラインで動かすのは皆やってるけれど、cocoaで動かしたという話が少ない。というか↓これしか参考にならなかった、、、https://discussions.apple.com/thread/1448258?start=0&tstart=0

私がXcodeわかってないだけだと思うが、、、

その1.ftd2xx.hとWinTypes.hが置いてある場所!

 これは罠でも何でもなくて私がうっかりしていただけ。ドライバを解凍して、トップにあるものを使ったらとんでもない数のエラーが、、、これはWindows用だった。本物は、Samplesの下にあるやつ。なんでこんなところに置いてるんだ、、、

その2.Boolの定義が引っかかる!

  FTDIはWinTypes.hで typedef unsigned int BOOL; として定義されているが

  Objective-Cではsigned char.

まずはFTDIの方をコメントアウトしたら動いた。

でもちょっと気持ち悪いので、、、次にFTDIの方の定義を、BOOLftdiとか名前変えて、BOOLが出てくるものを全部置換した。

が、最初は/usr/local/includeから探すようにしていたが、C言語でコマンドラインでは使えてるから書き変えたくないなあ、と思ってプロジェクトにコピーして書き変えた。

その3.ライブラリはどこから探してリンクするのか?

 これも私が知らないだけと思うが、buildのオプションでサーチパスを/usr/local/lib

としてから、リンクのオプションで 直接-lftd2xxとやってみたらとりあえず動いた。

もっと普通にリンクできないのか、と思ったら別のオプションでリンクするライブラリを指定するところがあったので、libftd2xx.dylibを入力しても動いた。

---というのをWindows7で思い出しながら書いているという不自然さ…

« Scratch(プログラム言語)でGumowski-Mira写像を描いてみる。 | トップページ | え!キリンのスゴ泡グラスってちゃんと流体力学計算して作ってたの?! »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

« Scratch(プログラム言語)でGumowski-Mira写像を描いてみる。 | トップページ | え!キリンのスゴ泡グラスってちゃんと流体力学計算して作ってたの?! »

最近の記事

最近のコメント

2024年11月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
フォト
無料ブログはココログ