KylixはBorland社が開発したビジュアル開発環境です。本書で紹介する言語はPascalです。この
章ではKylixを使ったGUIアプリケーションの作成法を説明します。
Kylix の基本的な使い方
図6-1 Kylixの画面※11
(1)メインウィンドウ:メニュー、ツールバー、コンポーネントパレットがある。
(2)オブジェクトインスペクタ:オブジェクトのプロパティ、イベントを設定する
(3)コードエクスプローラ:ユニット内のクラス、変数、ルーチンを表示する
(4)コードエディタ:コードを編集する
(5)フォームデザイナ:アプリケーションのユーザインタフェースを設計する
コードエクスプローラ、一部のコンポーネントパレットはKylixのエディション※12によっては表 示されない場合があります。
(1)
(2) (3)
(4)
(5)
第六章 Kylixを使ったGUIアプリケーションの作成
基本的にはパレットでオブジェクトを選択し、フォームの上にのせていくことでユーザインタフ ェース(画面)を設計していきます。各オブジェクトについての設定は、オブジェクトインスペ クタの「プロパティ」タグで設定し、イベント処理を設定したい場合は同じくオブジェクトイン スペクタの「イベント」タグで任意のイベントに対する関数名を入力するとコードエディタに反 映されます。
設定例
(1)フォームの上にボタンButton1を置く
(2)オブジェクトインスペクトの「イベント」タグ でボタンをクリックされたときに呼び出される 関数を設定する。
(3)イベントハンドラの 雛形がコードエデ ィタに生成する。
※begin〜end;の間に任意 の処理を記述します。
注意:Kylixで開発したアプリケーションを実行形式で配布する場合、Kylix専用のライブラリも 一緒に添付しないと動作しない、という問題があります。ただしこの問題は将来的にはディスト リビューションにKylix専用ライブラリが添付されることで解決されるかもしれません。
第六章 Kylixを使ったGUIアプリケーションの作成
共有ライブラリのインポート
Kylixで共有ライブラリの関数を使えるようにするためには、関数をインポートするための記述
が必要です。
雛形は次のようになります。
たとえば、共有ライブラリのファイル名が「libgpg2000.so」で、そのライブラリに含まれるDioOpen 関数を利用する場合、次のように記述します。
参考までにC言語の場合、DioOpen関数のプロトタイプは次の通りです。
DioOpen関数
int DioOpen ( int nDevice, unsigend long reserved );
nDevice デバイス番号
reserved 予約:0を指定してください
戻り値 エラー識別子
実際にDioOpen関数を実行するには以下のように記述します。
使用例 Button1がクリックされたらDioOpen関数を実行する
procedure TForm1.on̲Button1̲Clicked(Sender: TObject);
var
nRet: Integer;
begin
nRet := DioOpen( 1, 0 );
end;
function DioOpen ( nDevice: Integer; reserved: DWORD) : Integer; cdecl; external 'libgpg2000.so';
function 関数名 ( 引数名: 引数の型)
: 戻り値の型; cdecl; external '共有ライブラリ名';
第六章 Kylixを使ったGUIアプリケーションの作成
応用編
ユニットファイルの追加
弊社Linux汎用入出力ライブラリBPL-0804とメモリンクボード用Linux対応ソフトウェア
GPG-4910では各製品の共有ライブラリをインポートするためのユニットファイルがそれぞれ用
意されています(このほかの製品も順次提供する予定です)。
このユニットファイルを利用するためには、ファイルをプロジェクトに追加する必要があります。
プロジェクトへの追加は、メニューの「プロジェクト」-「プロジェクトに追加」を選び、現れた ダイアログボックスの中でプロジェクトに追加したいファイルを選択し、「開く」ボタンを押し ます。
図6-2 プロジェクトに追加
メインとなるユニットの「uses」にユニットを加えると、追加したユニットの中で宣言された関 数が使えるようになります。
使用例 FbiMl.pasで宣言された関数を使いたい場合
1 2 3 4 5 6 7 8
unit Unit1;
interface uses
SysUtils, Types, Classes, (中略), FbiMl;
type
第六章 Kylixを使ったGUIアプリケーションの作成
Kylix で作成したデジタル入力ボード用サンプルプログラム
フォームにテキストエントリとボタンを用意し、ボタンがクリックされたときにでキスとエント リに入っている文字列を取得し、その文字列を入力接点番号として、該当接点の状態をデジタル 入力し、結果をダイアログに表示するプログラムです。
DIOボード用ライブラリ関数を使えるようにするユニットファイルfbidio.pasを前提にしていま す。
サンプルプログラム 1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
unit InBox;
interface uses
SysUtils, Types, Classes, Variants, QGraphics, QControls, QForms, QDialogs, QStdCtrls, fbidio;
type
TForm1 = class(TForm) Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private { Private } public
{ Public } end;
19 20 21
var
Form1: TForm1;
ユニットファイルの追加
図6-3 実行画面のイメージ
ボタンを押すと、テキスト エントリの接点番号の入 力状態を表示
第六章 Kylixを使ったGUIアプリケーションの作成 33
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
begin
dwStartNum := StrToInt(Edit1.Text);
nRet := DioOpen(1,0);
IF nRet<>0 Then begin
Application.MessageBox('Opening the board failed','InPoint', [smbOK]);
Exit;
end;
nRet := DioInputPoint(1,nBuffer,dwStartNum,1);
IF nRet<>0 Then begin
Application.MessageBox('Input the data failed','InPoint',[smbOK]);
DioClose(1);
Exit;
end;
pStr := PChar('Input data = '+IntToStr(nBuffer));
Application.MessageBox(pStr,'InPoint',[smbOK]);
nRet:=DioClose(1);
IF nRet<>0 Then begin
Application.MessageBox('Closing the board failed','InPoint', [smbOK]);
Exit;
end;
end;
end.
(行数の太字箇所が追加、または修正した行)
解説:
(1)DIOボード用のライブラリ関数をインポートするためのユニットファイルFbiDio.pasを追加
(7行)
(2)変数の宣言(28-32行)
TForm1.Button1Click(27-61行)は、Button1をクリックすると呼び出される関数です。
(3)テキストエントリの文字列(ここでは入力状態を調べる接点番号)を取得(34行)
(4)DioOpen関数を実行し、デバイス番号1のDIOボードを使用可能にします。
関数の実行に失敗した場合は、メッセージボックスで表示します(35-41行)。
(5)DioInputPoint関数を実行し、指定した接点の入力状態を取得しています(43-49行)。この 場合、接点番号dwStartNumから1点の入力状態を取得し、結果をnBufferに格納していま
指定した接点の デジタル入力状態を ダイアログに表示
Linux対応ソフトウェア製品の紹介
Linux 対応ソフトウェア製品の紹介
最後に弊社Linux対応ソフトウェア製品を紹介します。Linux対応ソフトウェア製品の最新情報 は、以下の弊社Web siteにてご確認ください。
http://www.interface.co.jp/catalog/soft/linux_info.asp
◆ Topic 1 PCIボード、Compact PCIボード、CardBusカードの全カテゴリをサポート。
関数体系はWindows版と高い互換性
弊社はPCIボード,CompactPCIボード,CardBusカードの全カテゴリにLinux対応します。関数体
系はWindows版と高い互換性を維持しており、Windows版からの移行も容易です。
◆Topic 2 カーネル2.4対応
LinuxのカーネルVer.2.4に対応しています。※
◆Topic 3 Kylix対応
Kylix上でライブラリ関数をインポートするためのユニットファイルとサンプルプログラムを用
意しています。※
◆Topic 4 サンプルプログラム、ユーティリティプログラムが付属
Linux対応ソフトウェアには、Kylix以外にもC言語用のサンプルプログラム、ユーティリティプ
ログラムなどが付属し、ハードウェア制御のためのプログラミングをバックアップします。
◆Topic 5 CompactPCIボードへの対応
弊社CompactPCIボードにも対応しています。Compact PCIボードは、PCIボードと互換性が維持
されており、PCIボードと同様に制御することが可能です。
◆Topic 6 CardBusカード、CardBusバスブリッジへの対応
弊社CardBus製品もLinuxに対応しています。
※いずれも一部製品を除きます。
Linux対応ソフトウェア製品の紹介
主なLinux対応ソフトウェア製品
カテゴリ ソフトウェア
製品型式
Linux 対応
RTLinux 対応 フラッシュメモリ GPG-1604 ○ ○ メモリ
ディスク PCカード GPG-1609 ○ ○
RAS GPG-1900 ○ ○
DIO GPG-2000 ○ ○
バスマスタ GPG-2x72C ○ ○
ロジックアナライザ GPG-2910C ○ ○ デジタル
入出力
PPI GPG-2746C ○ ○
アナログ入力 GPG-3100 ○ ○
アナログ出力 GPG-3300 ○ ○
アナログ 入出力
アナログ入出力 GPG-3500 ○ ○
キャラクタ同期 GPG-4101 ○ ○
LAP-B GPG-4115 ○ ○
HDLC GPG-4116 ○ ○
シリアル 通信
標準COM GPG-4141 ○ ○
バスマスタ GPG-4301 ○ ○
GP-IB
FIFO GPG-4304 ○ ○
CAN GPG-4851 ○ ○
メモリンク GPG-4910 ○ ○
画像 GPG-5520 ○ −
GPG-6204 ○ ○
エンコーダ
GPG-6201 ○ ○
GPG-6202 ○ ○
ユニバーサル
GPG-6320 ○ ○
パルスカウンタ GPG-6106 ○ ○
カウンタ
パルス出力 GPG-6105 ○ ○
GPG-7400 ○ ○
GPG-7204 ○ ○
モータ
GPG-7302 ○ ○
GPG-8208 ○ ○
プリンタ
GPG-8210 ○ ○
GPG-SH02 ○ −
SH搭載CPUボード
GPG-SH02R − ○
GPG-SH02RU − ○
SH搭載CPUボード/USB接続
GPG-SH02U ○ −
GPG-SH03 ○ −
SH-4搭載CF型CPUボード
GPG-SH03R − ○
汎用入出力ライブラリ BPL-0804 ○ −
CardBusバスブリッジ GBG-8521 ○ −
※ 記載内容は2005年3月現在のものです。表に記載されていないハードウェア型式もLinux対応
技術資料紹介
技術資料紹介
弊社では下記の技術資料を提供しております。
詳しくは、弊社Web site(www.interface.co.jp)、または弊社窓口までお問い合わせ下さい。
カタログ
PRM-0058 インタフェース総合カタログ
チュートリアル
TUT-0014 Microsoft Visual Studio .NET移行ガイド
TUT-0006 C(98)/ISA製品からPCI/CompactPCI製品への移行チュートリアル(DOS編)
TUT-0007 拡張ユニット チュートリアル(入門編)
TUT-0008 拡張ユニット チュートリアル(問題解決編)
TUT-0009 システムユニット チュートリアル
TUT-0025 Visual Basic による DIO 入門書 TUT-0016 Visual Basic による PPI 入門書 TUT-0021 Visual Basic による AD 入門書 TUT-0023 Visual Basic による DA 入門書 TUT-0029 Visual Basic による HDLC 入門書 TUT-0027 Visual Basic による GP-IB 入門書 TUT-0033 Visual Basic による メモリンク 入門書 TUT-0031 Visual Basic による エンコーダカウンタ 入門書 TUT-0019 Visual Basic による モータコントローラ 入門書 TUT-0024 Visual C++ による DIO 入門書
TUT-0034 Visual C++ による PPI 入門書 TUT-0020 Visual C++ による AD 入門書 TUT-0022 Visual C++ による DA 入門書 TUT-0028 Visual C++ による HDLC 入門書 TUT-0026 Visual C++ による GP-IB 入門書 TUT-0032 Visual C++ による メモリンク 入門書 TUT-0030 Visual C++ による エンコーダカウンタ 入門書 TUT-0018 Visual C++ による モータコントローラ 入門書
TUT-0015 モーションコントロール チュートリアル
TUT-0053 モーションコントロール チュートリアル(PCI/CompactPCI)
TUT-0001 弊社バスブリッジを使用したPCIバスによる Cバスボード制御 手順書
TUT-0002 弊社バスブリッジを使用したPCIバスによる ISAバスボード制御 手順書
TUT-0003 LinuxによるPCI/CompactPCI/CardBus制御 入門書
TUT-0017 システム事例 メモリンクを使用した負荷分散システム チュートリアル
TUT-0036 RTLinuxによるPCI/CompactPCI/CardBus制御入門書(導入編)
TUT-0037 RTLinuxによるHDLCボード制御プログラミング チュートリアル
TUT-0038 RTLinuxによるDIOボード制御プログラミング チュートリアル
TUT-0039 RTLinuxによるADボード制御プログラミング チュートリアル
TUT-0043 RTLinuxによる調歩同期シリアル通信ボード制御プログラミング チュートリアル
TUT-0040 RTLinuxによるDAボード制御プログラミング チュートリアル
TUT-0041 RTLinuxによるGP-IBボード制御プログラミング チュートリアル
TUT-0044 RTLinuxによるメモリ共有インタフェースボード制御プログラミング チュートリアル
TUT-0048 RTLinuxによるカウンタボード制御プログラミング チュートリアル
TUT-0050 RTLinuxによるモーションコントローラボード制御プログラミング チュートリアル
TUT-0054 CAN チュートリアル