• 検索結果がありません。

光学工房

N/A
N/A
Protected

Academic year: 2021

シェア "光学工房"

Copied!
4
0
0

読み込み中.... (全文を見る)

全文

(1)

研究には,さまざまな機器を駆 して実験を行う 必要に迫られる場合があります.さまざまな機器の さまざまなパラメーターを制御しながら計測するた めには,それらの設定を手作業で操作を行うのでは なく,機器を PC(personal computer)に繫げて 実 験 を 行 い ま す.一 昔 前 な ら,RS-232(Recom-mended Standard 232) や GP-IB (General Pur-pose Interface Bus, IEEE 488)での制御で事足り ていました.しかし,USB (universal serial bus) が PC にほぼ標準的に搭載されるようになってか ら,USB をインターフェースにもつ機器が増えて きて,USB による機器制御が必要になってきまし た.今回,USB をインターフェースにもつ 光器 (Ocean Optics社:HR2000)からのスペクトル取 得に迫られましたので,USB によるデータ取得プ ログラミングについて紹介したいと思います.な お,確認はしていませんが,同社の USB2000とコ ードは互換性があります.また,少し拡張すれば簡 単に最近の USB 光器からのデータ取得も可能に なると思います. さて,Windows以前のプログラミングは非常に 簡単でした.例えば,各ポートに対する命令さえわ かれば,直接 I/Oポートに命令を送ることで制御 ができたからです.しかしながら,Windowsプロ グラムでは直接ハードウェアを制御することはでき ず,かならずデバイスドライバーを通して制御を行 わなければなりません.デバイスドライバーの作成 も可能ですが,敷居が高くそう安々とは行えませ ん.もちろん,機器メーカーは,デバイスドライバ ーを用意し,これを うためのライブラリーを提供 していますが,これらが非常に高価である場合があ ります.そこで,メーカー提供のライブラリーを わない, 開されている通信コマンドを用いたプロ グラミングを紹介します. 1. デバイスドライバー UUSBD Windowsのプログラミングですので,USB 機器 を制御するためにはデバイスドライバーが必要とな ります.ここでは,柏野政弘氏が 開 (http://www. otto.to/kasiwano/newpage17.htm)している汎用 USB デバイスドライバー uusbd.sysとダイナミッ クリンクライブラリー uusbd.dllを用いて制御して みました. UUSBD は ユ ー ザ ー プ ロ グ ラ ム か ら の read/ writeをそのままデバイスへの USB の送受信コマ ンドとして通信します.したがって,ユーザープロ グラムは UUSBD を通じて直接 USB 機器とデータ をやり取りするようにプログラミングできます. さて,UUSBD でプログラミングする際に必要な情 報は, 1. Vendor ID 2. Product ID 3. データ転送のためのパイプ番号 4. USB コマンド です.これらの情報は,Ocean Optics社の場合で はホームページの Engineering docs (http://www. oceanoptics.com/technical/engineeringdocs.asp) で 開されています. UUSBD のインストールに関しては,柏野政弘氏 のホームページ等を参 にしてください.インスト ール後,uusbd.infファイルの VID (vendor ID)と PID(product ID)を 3か所ずつ設定する必要があ ります.Ocean Optics社の Vendor IDは 2457,HR2000 (USB2000)の Product ID は 100A (1002)なので,

これらを書き換えます(いずれも 16進数表記です). なお,VID,PID 等を複数記述することも可能です.

2. プログラミング

実際のプログラミングでは,USB デバイスのオ ープン (Uusbd Open,または Uusbd open mask),

37巻 3号(2 08) 199 59( )

光科学及び光技術調査委員会

(2)

USB デバイスのパイプハンドルの取得 (Uusbd OpenPipe),データの送受信(ReadFile,WriteFile: いずれも Windowsのファイル操作 API 関数),パ イプのクローズ(CloseHandle:Windowsの API 関数),デバイスのクローズ(Uusbd Close)を順 に行います. USB は複数の機器を数珠つなぎで接続すること ができます.したがって,どの USB デバイスに通 信を行うのか,指定する必要があります.Uusbd Open 関 数 は uusbd.infに 書 か れ た VID と PID に 合致する USB デバイスをオープンします.したが って,合致するものが複数ある場合は,そのうちの 1つが選択されます(どのデバイスが選択されるか は,繫ぎかたに依存します).もし PID 等で選択し たい場合は,Uusbd open mask 関数を って選択 します. USB はシリアル通信ですが,通信データを時 割して送受信し,USB デバイスの複数の FIFOメ モリーと PC の複数のバッファー間でデータをやり 取りすることができます.この USB デバイスの FIFOメモリーを,ハードウェアレベルではエンド ポイントとよびます.ユーザープログラムでは,エ ンドポイントと直接やり取りするのではなく,パイ プとよばれる仮想的な通信経路を ってデータを送 受信します.したがって,ユーザーとしては,何番 パイプで,どのようなデータをやり取りすればよい かがわかれば,プログラミングが可能となります. HR2000では,EP2(エンドポイント 2)がコマン ドの送信とスペクトル情報の受信,EP7(エンドポ イント 7)が 光器情報の受信のために用いられま す.なお,HR2000のデータシートにはエンドポイ ントとパイプの関係が示されていませんでしたが, 他の 光器のデータシートからの類推と Try & Errorから,パ イ プ 1が EP2の 送 信,パ イ プ 2が EP7の受信,パイプ 4が EP2の受信であることが わかりました. 光器との通信は,パイプ 1に命令(先頭バイト がコマンドを表し,その後に情報を付加する)を送 ることで行います.リスト 1(以下,C 言語のソー スの一部.簡単のためエラー処理はない)に, 光 ( 0) リ 200 6 ト 1 ス 光 学

(3)

器の積算時間の設定関数を示します.積算時間の設 定を表すコマンドが 0x02で,これを先頭バイトと し,続いて積算時間を表す情報を付加して,パイプ 1から送信しています. 光器からデータを受け取るには,パイプ 4を用 います.リスト 2は, 光器の各種設定情報を取得 する関数です.まず,パイプ 1の先頭バイトに 光 器の設定情報の受信を表すコマンド 0x05と,それ に続いてどのような設定の返信を要求するか表すコ マンドを加えて送信します.例えば,0x00はシリ アルナンバー返信要求を表します.そして,引き続 いてパイプ 4を通して情報を受信します. 同様に,スペクトルも取得することができます. このときのコマンドは 0x09 で,パイプ 1でこれを 送信します.スペクトルの取得はパイプ 2を通じて 行います.HR2000の場合,1つのスペクトルは 16 ビット 2048個のデータからなりますが,各データ は上位ビット,下位ビットに けて,さらに 64個 ずつに 割されて送られてきます.なお最後にデー タが終わったことを表す,0x69 の値が 1バイト付 加されています(リスト 3). 以上のように,汎用デバイスドライバー UUSBD を用いると,簡単に USB 機器を制御することがで きます.もちろん,機器の USB コマンドが 開さ れている場合に限られますが.

さて,筆 者 の グ ル ー プ で は,Igor Pro (wave-metrics社,http://www.wavemetrics.com)という データ処理ソフトウェアを,機器制御にも用いてい ます.今回,HR2000と通信するプラグイン (Igor リスト 2

37巻 3号(2 08) 201 61( )

(4)

Pro では XOP とよばれています)も作成しました. 用してみたい方,ソースファイルが必要な方は, 筆者(mamoru@me.es.osaka-u.ac.jp)まで直接お 問い合わせください. なお,例に掲げたプログラムの一部,ならびに XOP は,ユーザーの自己責任の範囲内で 用して ください.これらの 用によって生じた不具合や不 利益などについて,その妥当性を問わず日本光学会 ならびに著者は一切責任を負いませんので,ご了承 ください. (大阪大学 橋本 守) リスト 3 ( 2) 2 20 6 光 学

参照

関連したドキュメント

定理 ( 長谷川 ) 直積を持つ圏と、トレース付きモノイダル圏の間のモ ノイダル随伴関手から、 dinaturality

パスワード 設定変更時にパスワードを要求するよう設定する 設定なし 電波時計 電波受信ユニットを取り外したときの動作を設定する 通常

、肩 かた 深 ふかさ を掛け合わせて、ある定数で 割り、積石数を算出する近似計算法が 使われるようになりました。この定数は船

Windows Mobile デバイスセンターまたは ActiveSync をインストールすることで、パソコ ンと FC-250 との間でパートナーシップの設定や、Microsoft Outlook

・カメラには、日付 / 時刻などの設定を保持するためのリチ ウム充電池が内蔵されています。カメラにバッテリーを入

現状では、3次元CAD等を利用して機器配置設計・配 管設計を行い、床面のコンクリート打設時期までにファ

「Long Interval Time」には、ロングインターバル時間(0~355)(単位: ms)を指定し、GUI 上で算出したロング インターバルベース時間(Measurement Mode

を基に設定するが,敷地で最大層厚 35cm が確認されていることも踏まえ,堆積量評価結果