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写像を描いてみる。 | トップページ | え!キリンのスゴ泡グラスってちゃんと流体力学計算して作ってたの?! »
「パソコン・インターネット」カテゴリの記事
- Wordleを100回やってみて正解率の分布を見た。1回目で当たる確率をpとして、2回目からはk倍ずつ確率が上がっていく(kp,k²p,k³p…)とすると、私の結果はp=0.0089, k=2.4になった。(2022.05.27)
- 高周波回路シミュレータQucsStudioを使ってみる(その5)マルチポート(4ポートだとs4pみたいな)のSパラメータデータをTouchstoneファイルに出力しようとするとExport to SnPでは2ポートになってしまう。Project→Import Dataからポート数を手で入れないと。(2022.05.24)
- LTspiceで高周波解析(2)伝送線路のマイクロストリップライン素子を作ったのでそれをスタブとして使ってスタブBPF(バンドパスフィルタ)のSパラメータを計算してみる。QucsStudioのツールを使ってフィルタ合成したもの。(2022.05.09)
- LTspiceで高周波解析(1)伝送線路のマイクロストリップライン素子(Microstrip LineのWheelerやHammaerstadモデル)をサブサーキットとして作ってみて、かつSパラメータ解析まで.net文をつけてやってみる。線幅、基板厚、比誘電率などをパラメータで計算できる。(2022.05.06)
- ExcelでLAMBDA関数が使えるようになった(17) Sパラメータの標準フォーマットTouchstoneが3ポート以上で並びが変なので、LAMBDA,LET,SEQUENCE,IFS,INDEXなどを組み合わせてフラットにするTouchstoneFlatten(s,n)を作った。ただし今はs3p, s4p(3ポート,4ポート)のみ。(2022.04.22)
« Scratch(プログラム言語)でGumowski-Mira写像を描いてみる。 | トップページ | え!キリンのスゴ泡グラスってちゃんと流体力学計算して作ってたの?! »
コメント