3

私は、ECG 読み取り値のグラフを描画することを目的として、MAC 用の Xcode 4 でアプリケーションを作成しています。読み取り値は、USB/シリアル経由で受信されるはずです。したがって、USB ポートに文字を読み書きできるアプリケーションのコードを記述する必要があります。

これを行う最も簡単な方法は、IO Kit と POSIX を使用することだと思います...

正直なところ、開発者の Web サイトで見つけた IOKit に関するドキュメントは、かなりわかりにくかったです。

IOKit を使用してハードウェア デバイスと通信し、情報を取得するための基本的なチュートリアルはありますか?

それができない場合、OSX アーキテクチャの基本概念に関する基本的なチュートリアルはありますか? 彼らがマッハ タスクとカーニングの結果について話し始めると、私は完全に途方に暮れてしまいます。

前もって感謝します

4

1 に答える 1

3

デバイスが基本的に、標準の USB/シリアル アダプタに接続された単なるシリアル デバイスである場合は、IOKit レベルに落とす必要はありません。シリアル ポート用の UNIX キャラクター デバイスを見つけて、バッファなしのファイル I/O 用に開きます。ポートを列挙するためだけに I/O キット レジストリをトラバースすることもできますが、実際の I/O には必要ありません。

それを始めるには、次のように一致する辞書を作成する必要があります。

IOServiceMatching(kIOSerialBSDServiceValue);

プロパティを介して、返されたデバイスのファイル パスを取得しkIOCalloutDeviceKeyます。

標準の USB/シリアル アダプタでない場合は、IOKit を使用する必要があります。残念ながら、USB とドライバーに関する Apple の Web リソースより優れた Web リソースを知りませんが、以下の本があります。

  • OS X および iOS カーネル プログラミングは、特に (意欲的な) ドライバー プログラマーを対象としています。USB に関する 2 つの章があり、1 つは USB の基礎とカーネル空間ドライバー、もう 1 つはユーザー空間の USB ドライバーです。うまくいけば、それらを起動して実行できるはずです。(免責事項:私はこの本の技術評論家の 1 人でした。ただし、私はこの本を宣伝するために報酬を受け取っておらず、印税も受け取っていません)

  • Mac OS X Internalsは古さを見せ始めており (OS X 10.4 の時点で最新です)、特にドライバ開発の本ではありません。ただし、OS X とそのカーネルの多くの部分について非常に詳細に説明しています。私の記憶が正しければ、USBではそれほど多くはありません。

USB の場合、ユーザー空間ドライバーとケネル空間ドライバーの 2 つのオプションがあります。カーネルで行う正当な理由がない限り、ユーザー空間で行うことをお勧めします。API は大きく異なります。カーネル API は C++ で、ユーザー空間は C です (いいえ、私はそれらを混同していません)。ドキュメントを見るときは、2 つのうちの正しいものを見ていることを確認してください - それらは両方です。 I/Oキット!

于 2012-01-07T10:50:42.900 に答える