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写像を描いてみる。 | トップページ | え!キリンのスゴ泡グラスってちゃんと流体力学計算して作ってたの?! »
「パソコン・インターネット」カテゴリの記事
- Pythonでマイクロストリップパッチアンテナの設計ツールを作る(5) これまでをまとめてクラス化・モジュール化した。パッチサイズ、入力インピーダンス、指向性、効率、利得が計算できる。使い方まとめ。(2024.11.05)
- Pythonでマイクロストリップパッチアンテナの設計ツールを作る(4) アンテナ効率(efficiency)を計算する。放射Q(Qr)、誘電体Q(Qd)、導体Q(Qc)から計算できるが今回は”小型・平面アンテナ(電気情報通信学会)"の式を基にした。(2024.10.31)
- 今夜の選挙結果発表に備えて、出口調査の結果から母比率の95%信頼区間を各候補者についてプロットするものをPythonとSciPyのbinomtest、Matplotlibのerrorbarを使って作る。毎年勝手に予想(カシオの高精度計算サイトの自作式とExcel)していたのがとても楽に。(2024.10.27)
« Scratch(プログラム言語)でGumowski-Mira写像を描いてみる。 | トップページ | え!キリンのスゴ泡グラスってちゃんと流体力学計算して作ってたの?! »
コメント