一直線カレンダー

« 2010年2月 »
12345678910111213141516171819202122232425262728

REALBasicで制御ソフトウェアを開発する(第二回)

20100216.jpg
前回はREALBasicのインストール・起動までをおこないました。
今回から制御ソフトウェアを開発して行きたいと思います。制御される機器はFolsom社のImagePro HDとFSR社のINDIE400-HDです。この製品はFolsom社のOEM製品としてFSR社が販売していますので基本的に同じものと考えていいでしょう。
Sony DSC-1024シリーズが長い間、映像機器レンタルの世界でスタンダードな汎用コンバーターとしての役割をはたしてきましたが、ImagePro HD/INDIE400-HDはそのあとを継ぐスタンダードな製品として人気があります。
発売から数年が立ちますがファームウェアをアップデートすることで機能を増やし安定性を高めている良い製品です。これからも数年間は業界標準として使われ続けることでしょう


20100216A.png
REALBasicを起動しますと「名称未設定」という四角いウインドウが開きます。REALBasicではこのウインドウの上に、画面左側にあるコントロールパーツを載せてソフトウェアを開発していきます。REALBasicでは各コントロールパーツに名前が付いています。名前も自分でわかり易い名前に変えていくことが出来ます。この四角いウインドウにも「Window1」という名前が付いています。
今回ウインドウは2つ使用します。Window1はターゲットとなるImagePro HD/INDIE400-HDのIP Addressを指定するウインドウとして、Window2には実際のコマンド送信をするためのウインドウとします。

20100216B.png
では、はじめにWindow1の設定をします。各コントロールパーツの設定は画面右側のプロパティで設定をしていきます。プロパティは現在選ばれているコントロールパーツに応じて設定項目が変化します。
まずWindow1を選択した状態でプロパティの「Title:名称未設定」を「Title:IP Address Setting」と書き換えます。キーボードのEnterを押すと書き換えが確定されWindow1のタイトル欄が「IP Address Setting」となります。

20100216C.png
つぎにコントロールパーツから「TextField」をWindow1の上にドラッグ&ドロップで配置します。このパーツはプロパティで「TextField1」から「IPField」へ名前を変更します。このパーツはImagePro HD/INDIE400-HDのIP Addressを設定することになります。
初期値としてプロパティのText欄には、192.168.0.200を設定しておきます。



20100216D.png
続いてコントロールパーツの「BevelButton」をWindow1に配置します。名前はそのまま「BevelButton1」でかまいません。プロパティのCaption欄には「接続する」と設定します。このボタンを押すことでWindow2に切り替わるようにプログラムを書きます。
Window1上に配置した「BevelButton1」をダブルクリックします。画面が切り替わり、そのボタンを押したときに動作するプログラムを 書くことが出来ます。
ここで書くプログラムは

Dim theW As Window2

Self.hide
theW = New Window2


の3行のプログラムです。
20100216F.pngこのプログラムの意味はまず一行目で"theW"という名前の変数をWindow2に対して宣言しています。"theW"は特に決まりがあるわけではなく他のものでも問題ありません。変数は固定の数値ではない時に使う入れ物のようなものです。変数を宣言すると内部で一時的に記憶され、その変数を自由に使うことができます。
二行目の"Self.hide"はWindow1に対して見えなくなるように命令しています。
三行目の"theW = New Window2"でWindow2が表示される命令をしています。これで見かけ上は「BevelButton1」をクリックするとWindow1が消えWindow2に切り替わったように見えるのです。"Self.hide"は画面上からは消えて見えなくなりますが、実際には裏に隠れています。これは「IPField」で設定したIP AddressをWindow2に渡す役目があるので隠しているのです。

20100216E.pngWindow1の最後のプログラムです。画面上には「Window1」と書かれたタブが2つあるはずです。ウインドウ1枚に対してレイアウトをするタブとプログラムを書くタブの2つのタブが出来ます。ここでは一度レイアウトに戻るようにタブと選らんでください。
レイアウトに戻ったらWindow1上のパーツが載っていない、何もないところでダブルクリックをします。するとこのWindow1自体に対してプログラムが書けます。
通常はOpenという項目が選ばれています。これはこのウインドウが現れた時に実行するプログラムを書く場所です。
ここで書くプログラムは

if System.NetworkinterfaceCount <= 0 then
msgbox "LANポートが見つかりません"
Quit
End if


の4行のプログラムです。
これはPCにLANポートがあるのかをOSに問合せをするためのプログラムです。
LANポートが無いという状況は現在のPCではあまり見かけませんが、認識していないなどのトラブルもあるかと思われますので、そういう状況を踏まえて記述します。
上記のプログラムでは、プログラムに起動時にLANポートの有無をチェックして、もし無い場合は「LANポートが見つかりません」というメッセージダイアログを出してプログラムが終了します。
LANポートがない場合(無線LANもふくみます)このプログラムは実行されない仕様になっています。

これでWindow1のプログラミングが終了しました。
次回は実際にImagePro HD/INDIE400-HDのコマンドを送信するためのWindow2のプログラミングに続きます。