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

Kylix を使った GUI アプリケーションの作成

ドキュメント内 LinuxによるPCI/CompactPCI/CardBus制御 入門編 (ページ 61-72)

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搭載CFCPUボード

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 チュートリアル

ドキュメント内 LinuxによるPCI/CompactPCI/CardBus制御 入門編 (ページ 61-72)

関連したドキュメント