gpg-4115 - interface · 2011-06-09 · lap-b(pci/c-pci)linux/rt gpg-4115 lap-b...

53
LAP-B(PCI/C-PCI)Linux/RT www.interface.co.jp GPG-4115 LAP-B 通信インタフェースモジュール用 Linux/RT ドライバ Help for Linux

Upload: others

Post on 22-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

LAP-B(PCI/C-PCI)Linux/RT

www.interface.co.jp

GPG-4115 LAP-B 通信インタフェースモジュール用 Linux/RT ドライバ

Help for Linux

Page 2: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

2

目 次

第 1 章 はじめに 3

1.1 概要 ...........................................................................3

1.2 特長 ...........................................................................3

第 2 章 製品仕様 4

2.1 動作環境 .......................................................................4

2.2 対象ボード .....................................................................4

2.3 基本仕様 .......................................................................5

第 3 章 実行手順 6

3.1 デバイスを動かすまで ...........................................................6

3.2 制御手順 .......................................................................9

3.3 /procファイルシステム .........................................................14

第 4 章 リファレンス 15

4.1 関数一覧 ......................................................................15

4.2 関数個別説明 ..................................................................16

4.3 戻り値一覧 ....................................................................36

4.4 識別子一覧 ....................................................................37

4.5 構造体 ........................................................................38

4.6 Kylixをお使いの方へ ...........................................................45

4.7 テストドライバ ................................................................48

第 5 章 サンプルプログラム 49

5.1 データ送信サンプルプログラム ..................................................49

5.2 データ受信サンプルプログラム ..................................................49

5.3 通信ヒストリ表示サンプルプログラム ............................................49

5.4 メッセージ送信サンプルプログラム ..............................................49

5.5 メッセージ受信サンプルプログラム ..............................................50

5.6 通信接続サンプルプログラム ....................................................50

第 6 章 ユーティリティ 51

6.1 自己診断プログラム ............................................................51

第 7 章 重要な情報 52

Page 3: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

3

第1章 はじめに

1.1 概要

GPG-4115 は、Linux アプリケーションから、弊社 PCI/CompactPCI LAP-B 通信ボード(μPD72107

搭載ボード)を制御するソフトウェアを含んでいます。

本ドキュメントは、Linux 上で GPG-4115 を使用するための情報を掲載しています。

1.2 特長

●LAP-B 手順のプロトコル制御を全て自動的に実行します。

●フレーム構成、アドレス監視、CRC チェック等を全て自動的に実行します。

●データ再送などの誤り回復手順を全て自動的に実行します。

●一つのIフレームで最大 16383 バイトのデータ送受信が行えます。

●ボード上に送信バッファが用意されているため、連続してデータ送信を行えます。

●ボード上に受信バッファが用意されているため、アプリケーションプログラムが他の処理を実

行している間も、データを取りこぼすことなく受信できます。

Page 4: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

4

第2章 製品仕様

2.1 動作環境 対応機種 弊社製 FA コントローラ

弊社製 Classembly Devices®

PC/AT 互換機、NEC PC/FC-9821

ドライバ種別 キャラクタ型ドライバ

組み込み方式 モジュール(ダイナミックロード/アンロード)

メジャー番号割り当て 自動割り当て

ソースコードの取り扱い ドライバモジュール(ボード制御部)非公開

ドライバモジュール(テンプレート部)公開

共用モジュール公開

ビルドサポート メイクファイル提供

対応カーネルバージョン ・IBM PC/AT 互換機

カーネル 2.2.x

カーネル 2.4.x

カーネル 2.6.x

・弊社 SH-4 CPU ボード

弊社 SH-Linux

※ 詳細は最新情報ドキュメントファイル

readme.txt をご覧ください。

ヘルプファイル PDF 形式

テキスト形式

2.2 対象ボード PCI シリーズ(PCI バス製品)

PCI-4115、PCI-4156、PCI-4157

CTP シリーズ(CompactPCI バス製品)

CTP-4156、CTP-4157

CPZ シリーズ(CompactPCI バス製品)

CPZ-4156、CPZ-4157

Page 5: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

5

2.3 基本仕様

最大ポート数 80 ポート(同一型式ボードは 16 枚まで)

RS-232C 1Mbps(内部クロック),500kbps(外部クロック) 最大ボーレート

RS-485 2Mbps(内部クロック),1Mbps(外部クロック)

誤り検出 CRC-CCITT-16

回線方式 全二重

符号化方式 NRZ/NRZI

最大 I フィールド長

(アドレス、コントロールを含まない):

16383byte

送信バッファ 8 フレーム 送受信バッファ

受信バッファ 32 フレーム

イベント機能 リンク接続状態変化時、フレーム受信時、制御信

号変化時、フレーム送信完了時、ユーザコールバ

ックルーチンを呼び出すことができます

Page 6: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

6

第3章 実行手順

3.1 デバイスを動かすまで

1. インストール

デバイスを拡張スロットに実装しシステムを起動します。

インストーラを起動し、Linux ドライバのインストールを行います。

(※ 詳しいインストール方法は、Readme をご参照ください。) #bash install

2. ドライバモジュールの組み込み

ドライバモジュールを組み込みます。 #modprobe cp4115

3. デバイス名の確認

/proc ファイルシステムを参照することにより、認識されているポートのデバイス名を確認します。

行頭がデバイス名になります。 #cat /proc/tty/driver/cp4115 FBILAPB17: PCI-4156(bid=0h)CH1 [9600bps] tx:0 rx:0 FBILAPB18: PCI-4156(bid=0h)CH2 [9600bps] tx:0 rx:0

書式についての詳細は『3.3 /procファイルシステム』をご参照ください。

Page 7: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

7

4. プログラム作成

プログラムの作成を行います。エディタを起動し、下記のコードを記述します。

#include <time.h>

#include <stdio.h>

#include "fbilapb.h"

int main(void)

{

char szBuf[16*1024];

int hPort, nRet

unsigned long uLen;

unsigned long ulFrameCount;

unsigned long ulLen;

LAPBPORTINITDATA Config;

LAPBPORTSTATUS Status;

hPort = LapbOpen("FBILAPB1", NULL, 0, NULL); /* Open : ボードのオープン */

if(hPort < 0) { /* オープンに失敗 */

return;

}

/* 通信パラメータの格納 */

Config.uFormat = LAPB_FORMAT_NRZ; /* 符号化フォーマット:NRZ */

Config.uMyAddress = 1; /* 自局アドレス:1 */

Config.uYourAddress = 2; /* 相手局アドレス:2 */

Config.uLink = LAPB_LINK_SABM; /* LINK 接続動作:SABM 送信 */

Config.uTxc = LAPB_SCLK_PTC; /* 送信クロック:内部 */

Config.uRxc = LAPB_RCLK_DPLL; /* 受信クロック:DPLL */

Config.uBaudRate = 9600; /* ボーレート:9600bps */

Config.uSourceClock = LAPB_CLOCK_19660800; /* 基準クロック:19.6608MHz */

Config.uInterface = LAPB_INTERFACE_485; /* RS-485 */

Config.uT1 = 5; /* T1 タイマ:5 秒 */

Config.uT2 = 0; /* T2 タイマ:なし */

Config.uT4 = 6; /* T4 タイマ:6 秒 */

Config.uN2 = 3; /* 最大再送回数:3 */

Config.uO = 7; /* アウトスタンディングフレーム:7 */

/* リンクの接続 */

LapbSetLink(hPort, &Config);

do {

nRet = LapbGetStatus(hPort, &Status);

} while (!nRet && Status.uLinkStatus == LAPB_STATUS_LINK) ;

Page 8: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

8

/* データ送信 */

LapbSendFrame(hPort,"1234567890", 10, NULL);

/* 送信バッファが空になるまでループ */

do {

nRet = LapbGetStatus(hPort, &Status);

} while(!nRet && (Status.uSendFrame != 0));

/* リンクの切断 */

LapbCutLink(hPort);

do {

nRet = LapbGetStatus(hPort, &Status);

} while(!nRet && Status.uLinkStatus == LAPB_STATUS_UNLINK ) ;

/* ポートのクローズ */

LapbClose(hPort);

return 0;

}

コードの記述が終われば Lapbtest.c というファイル名で保存しておきます。

5. コンパイル

作成したプログラムをコンパイルします。下記のコマンドを実行してください。 #gcc -o Lapbtest Lapbtest.c -lgpg4115

6. 実行

コンパイルすることで実行ファイル Lapbtest ができていますので、 #./Lapbtest

と入力し、プログラムを実行してください。

Page 9: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

9

3.2 制御手順

1.初期化

LapbOpen 関数を呼び、ポートのオープンを行います。

関数が正常終了すると、戻り値としてデバイスディスクリプタが返されます。複数のポートを使用す

る場合は、各ポートに対して LapbOpen 関数をコールします。初期化したポートに対してはアプリケ

ーション終了の際には必ず終了処理(LapbClose 関数)をコールしてください。

int hPort;

/* ポート初期化 */

hPort = LapbOpen(“FBILAPB1”, NULL, 0, NULL); if(hPort < 0) { /* オープンに失敗 */

return hPort;

}

デバイス名はボード型式、RSW1 設定値により一意に決定されます。新たにボードを追加することな

どによりデバイス番号が変わることはありません。

PCI-4115 PCI-4156

CTP-4156

CPZ-4156

RSW1 CN デバイス名 RSW1 CN デバイス名

CN1 FBILAPB17 0 CN1/CN2 FBILAPB1 0

CN2 FBILAPB18

CN1 FBILAPB19 1 CN1/CN2 FBILAPB2 1

CN2 FBILAPB20

CN1 FBILAPB21 2 CN1/CN2 FBILAPB3 2

CN2 FBILAPB22

: : : : : :

CN1 FBILAPB47 F CN1/CN2 FBILAPB16 F

CN2 FBILAPB48

PCI-4157

CTP-4157

CPZ-4157

RSW1 CN デバイス名

CN1 FBILAPB49 0

CN2 FBILAPB50

CN1 FBILAPB51 1

CN2 FBILAPB52

CN1 FBILAPB53 2

CN2 FBILAPB54

: : :

CN1 FBILAPB79

F

CN2 FBILAPB80

※ 同一型番の PCI と CTP と CPZ は、同一型式として扱われるため、混在させるには、RSW1 の設定値

Page 10: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

10

が重ならないように設定する必要があります。例えば、PCI-4156 と CTP-4156 と CPZ-4156 を混在さ

せる場合、RSW1 の設定値が重ならないように設定する必要があります。

2.通信開始処理(通信相手との接続)

ボードを LapbOpen 関数で初期化しただけでは通信を行うことはできません。

通信を行う相手との接続を行う必要があります。LapbSetLink 関数を使います。

int nRet;

int hPort;

LAPBPORTINITDATA Config;

LAPBPORTSTATUS Status;

/* ポートのオープン */

hPort = LapbOpen("FBILAPB1", NULL, 0, NULL);

/* 通信設定 */

Config.uFormat = LAPB_FORMAT_NRZ; /* 符号化フォーマット:NRZ */

Config.uMyAddress = 1; /* 自局アドレス:1 */

Config.uYourAddress = 2; /* 相手局アドレス:2 */

Config.uLink = LAPB_LINK_SABM; /* LINK 接続動作:SABM 送信 */

Config.uTxc = LAPB_SCLK_PTC; /* 送信クロック:内部 */

Config.uRxc = LAPB_RCLK_DPLL; /* 受信クロック:DPLL */

Config.uBaudRate = 9600; /* ボーレート:9600bps */

Config.uSourceClock = LAPB_CLOCK_19660800; /* 基準クロック:19.6608MHz */

Config.uInterface = LAPB_INTERFACE_485; /* RS-485 */

Config.uT1 = 5; /* T1 タイマ:5 秒 */

Config.uT2 = 0; /* T2 タイマ:なし */

Config.uT4 = 6; /* T4 タイマ:6 秒 */

Config.uN2 = 3; /* 最大再送回数:3 */

Config.uO = 7; /* アウトスタンディングフレーム:7 */

/* リンクの接続 */

LapbSetLink(hPort, &Config);

do {

/* リンク状態が変化するまでループ */

nRet = LapbGetStatus(hPort, &Status);

} while (!nRet && Status.uLinkStatus == LAPB_STATUS_LINK);

LapbOpen 関数でオープンしたデバイスディスクリプタを使用し、通信条件の設定、通信相手との接

続を行います。

関数の実行に成功すると、通信ボードは通信相手との接続を試みます。この間のステータスは

LapbGetStatus 関数で取得できます。

uLinkStatus が LAPB_STATUS_LINKED になれば、接続完了です。データの送受信が行えるようになり

ます。

Page 11: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

11

3.送信

LapbSendFrame 関数を使用してデータの送信を行います。

int send_data(int hPort)

{

int nRet;

unsigned long ulSendLength;

char SendBuffer[64];

/* SendBuffer に、送信データを格納 */

strcpy(SendBuffer, “The quick brown fox jumps over the lazy dog.”); /* データ長の取得 */

ulSendLength = strlen(SendBuffer);

/* データ送信 */

nRet = LapbSendFrame(hPort, SendBuffer, ulSendLength, NULL);

if(nRet) {

printf(“The transmisLapbn failed.”); return nRet;

}

return 0;

}

アプリケーションは送信処理完了まで待たず、関数から即制御が戻ります。データ送信処理の完了は

LapbGetStatus 関数で確認することが可能です。

int send_data(int hPort)

{

int nRet;

LAPBPORTSTATUS Status;

/* データ送信 */

nRet = LapbSendFrame(hPort, “1234567890”, 10, NULL ); if(nRet) {

printf(“The transmission failed.”); return -1;

}

/*送信バッファが空になるまでループ */

do {

nRet = LapbGetStatus(hPort, &Status);

} while (!nRet && (Status.uSendFrame != 0));

return 0;

}

Page 12: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

12

4.受信

LapbReceiveFrame 関数を使用して受信バッファのデータを取り出します。

int receive_data(int hPort)

{

int nRet;

unsigned long ulLength;

unsigned long ulFrameCount;

char szBuf[16*1024];

LAPBPORTSTATUS Status;

do {

/* Check of Receive Status : 受信チェック */

nRet = LapbGetStatus(hPort, &Status);

} while(!nRet && Status.uReceiveFrame == 0);

/* 受信バッファ内のフレームの長さを取得 */

nRet = LapbGetFrameLength(hPort, &ulLength);

if(!nRet) printf("ulLength = %ld\n", ulLength);

/* 受信バッファ内のフレームのカウント数を取得 */

nRet = LapbGetFrameCount(hPort, &ulFrameCount);

if(!nRet) printf("ulFrameCount = %ld\n", ulFrameCount);

do {

/* ReceiveFrame : データ受信 */

nRet = LapbReceiveFrame(hPort, szBuf, &ulLength);

if(!nRet) printf("DATA : %s (ulLength = %ld)\n", szBuf, ulLength);

nRet = LapbGetStatus(hPort, &Status);

} while(!nRet && Status.uReceiveFrame != 0 ) ;

return 0;

}

Page 13: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

13

5.制御信号出力状態の設定と取得

LapbSetControlLine 関数を使用して制御信号の ON/OFF、 LapbGetControlLine 関数を使用して制御

信号状態を取得します。

RS-232C での制御信号操作の例を示します。

int SetControl(int hPort)

{

int nRet;

unsigned long ulControlLine;

unsigned long ulDeltaControlLine;

LapbSetControlLine(hPort, 0x03); /* RS/ER 信号を ON にします */

LapbGetControlLine(hPort, &ulControlLine, &ulDeltaControlLine);

/* 制御ラインの状態取得 */

if(!nRet) {

printf("ulControlLine = %lx ; ulDeltaControlLine = %lx\n",

ulControlLine, ulDeltaControlLine);

}

nRet = LapbSetControlLine(hPort, 0x00); /* RS/ER 信号を OFF にします */

return 0;

}

6.終了処理

LapbClose 関数でポートの終了処理を行います。

void close_port(int hPort)

{

LapbClose(hPort);

}

ポートの使用を終了する際は必ず LapbClose 関数を実行してください。

Page 14: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

14

3.3 /proc ファイルシステム /proc ファイルシステムを参照することで、シリアルポートの認識状況、動作状況を確認することが

できます。

参照できる内容は以下のとおりです。

項目 内容

ポート番号 ポート番号を表示します。

ボード型式 ボード型式を表示します。

括弧内は RSW1 設定値を表します。

ボーレート 現在設定されているボーレートを表示します。

送受信通算バイト数 現在まで送受信したフレームト数です。

tx が送信フレーム数、rx が受信フレーム数です。

現在 ON になっている制御信号を表示します。

RS-232C RS 信号が ON になっています。 RTS

RS-485 C 信号が ON になっています。

ER ER 信号が ON になっています。

RS-232C CS 信号が ON になっています。 CTS

RS-485 I 信号が ON になっています。

DR DR 信号が ON になっています。

CI CI 信号が ON になっています。

制御信号状態

CD CD 信号が ON になっています。

表示例

#cat /proc/tty/driver/cp4115 FBILAPB17: PCI-4156(bid=0h)CH1 [9600bps] tx:812 rx:4312 RTS|CTS FBILAPB18: PCI-4156(bid=0h)CH2 [9600bps] tx:4312 rx:812 RTS|CTS

Page 15: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

15

第4章 リファレンス

4.1 関数一覧

No 関 数 名 機 能

1 LapbOpen ボードのオープンを行い、以後のボードへのアクセスを行える

ようにします。

2 LapbClose ボードのクローズを行い、ボードアクセスのために使用してい

た各種リソースの解放を行い、以後のボードへのアクセスを禁

止します。

3 LapbSetLink LAP-B プロトコルを初期化し、通信可能な状態にします。

4 LapbCutLink LAP-B プロトコルの終了処理を行い、通信を終了します。

5 LapbSetDiscMode リンク未接続状態での SABM フレーム受信時の動作を設定しま

す。

6 LapbSendFrame データの送信を行います。

7 LapbGetFrameCount 受信しているデータの数を取得します。

8 LapbGetFrameLength 受信バッファの先頭のデータの長さを取得します。

9 LapbReceiveFrame 受信バッファの先頭のデータを取得します。

10 LapbGetStatus 受信データの有無、送信中データの有無などを取得します。

11 LapbGetHistory LAP-B ヒストリを取得します。

12 LapbSetControlLine 制御信号の状態を変更します。

13 LapbGetControlLine 制御信号の状態を取得します。

14 LapbClearBuffer 受信バッファをクリアします。

15 LapbSetEventMask 割り込みのマスク/アンマスクの設定を行います。

16 LapbGetEventMask 割り込みマスク状態を取得します。

17 CallbackProc 割り込み発生によってコールされるコールバック関数のプレ

ースホルダです。

Page 16: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

16

4.2 関数個別説明

1.LapbOpen

LAP-B ボードのオープンを行い、以後のボードへのアクセスを行えるようにします。

int LapbOpen(

char *szPort, /* デバイス名 */

void *pReserved, /* 予約:NULL 指定 */

unsigned long ulReserved, /* 予約:0指定 */

void* pCallbackproc /* コールバック関数を指すポインタ */

);

パラメータ

szPort デバイス名を指定します。

pReserved 予約です。NULL を指定してください。

ulReserved 予約です。0を指定してください。

pCallbackproc コールバック関数を指すポインタ。

戻り値

正常に終了した場合には、デバイスディスクリプタ(0以上の整数値)が返されます。

オープンに失敗した場合には、負の値が返されます。

備考

LapbOpen 関数を実行しただけでは通信可能な状態になりません。

通信を開始する前に LapbSetLink 関数を使用し、通信可能な状態にします。

使用例

int hPort;

hPort = LapbOpen(“FBILAPB1”, NULL, 0, NULL);

”FBILAPB1”で指定されるポートをオープンします。

Page 17: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

17

2.LapbClose

ポートのクローズを行います。

int LapbClose(

int hPort /* デバイスディスクリプタ */

);

パラメータ

hPortNo LapbOpen 関数で取得したデバイスディスクリプタを指定してください。

戻り値

正常に終了した場合には、FBILAPB_ERROR_SUCCESS が返されます。

処理に失敗した場合には、FBILAPB_ERROR_SUCCESS 以外の値が返されます。

FBILAPB_ERROR_SUCCESS以外の値が返されたときは、『4.3 戻り値一覧』をご参照ください。

備考

この関数を使用すると、無条件に通信を強制終了します。LapbCutLink 関数で通信処理を終了し

てから LapbClose 関数を使用してください。

通信中に強制終了すると相手先では、通信エラーになります。

使用例

int nRet;

LAPBPORTSTATUS Status;

LapbCutLink(hPort);

do {

nRet = LapbGetStatus(hPort, &Status);

} while(!nRet && Status.uLinkStatus == LAPB_STATUS_UNLINK) ;

LapbClose(hPort);

通信処理を終了し、ポートのクローズを行います。

Page 18: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

18

3.LapbSetLink

LAP-B プロトコルの初期化を行い、通信が行えるようにします。(通信相手と接続を開始します)

int LapbSetLink (

int hPort, /* デバイスディスクリプタ */

PLAPBPORTINITDATA pInitData /* 設定値を格納した構造体へのポインタ */

);

パラメータ

hPort LapbOpen 関数で取得したデバイスディスクリプタを指定してください。

pInitData 設定値を格納した構造体へのポインタです。

戻り値

正常に終了した場合には、FBILAPB_ERROR_SUCCESS が返されます。

処理に失敗した場合には、FBILAPB_ERROR_SUCCESS 以外の値が返されます。

FBILAPB_ERROR_SUCCESS以外の値が返されたときは、『4.3 戻り値一覧』をご参照ください。

備考

本関数呼び出し直後は、通信相手との接続が完了したかどうかがわからないので、別途、接続が

完了したかどうかを調べる必要があります。

LapbGetStatus 関数で、uLinkStatus が LAPB_STATUS_LINKED になった時点で、通信相手との接続

が完了したことになります。

Page 19: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

19

使用例

int nRet;

LAPBPORTINITDATA sInit

LAPBPORTSTATUS Status;

/* 通信設定 */

Config.uFormat = LAPB_FORMAT_NRZ; /* 符号化フォーマット:NRZ */

Config.uMyAddress = 1; /* 自局アドレス:1 */

Config.uYourAddress = 2; /* 相手局アドレス:2 */

Config.uLink = LAPB_LINK_SABM; /* LINK 接続動作:SABM 送信 */

Config.uTxc = LAPB_SCLK_PTC; /* 送信クロック:内部 */

Config.uRxc = LAPB_RCLK_DPLL; /* 受信クロック:DPLL */

Config.uBaudRate = 9600; /* ボーレート:9600bps */

Config.uSourceClock = LAPB_CLOCK_19660800; /* 基準クロック:19.6608MHz */

Config.uInterface = LAPB_INTERFACE_485; /* RS-485 */

Config.uT1 = 5; /* T1 タイマ:5 秒 */

Config.uT2 = 0; /* T2 タイマ:なし */

Config.uT4 = 6; /* T4 タイマ:6 秒 */

Config.uN2 = 3; /* 最大再送回数:3 */

Config.uO = 7; /* アウトスタンディングフレーム:7 */

/* リンクの接続 */

LapbSetLink(hPort, &sInit);

do {

nRet = LapbGetStatus(hPort, &Status);

} while(!nRet && Status.uLinkStatus == LAPB_STATUS_LINK) ;

LAP-B プロトコルの初期化を行い、通信が行えるようにします。

Page 20: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

20

4.LapbCutLink

LAP-B プロトコルの終了処理を行い、通信を終了します。

int LapbCutLink(

int hPort /* デバイスディスクリプタ */

);

パラメータ

hPort LapbOpen 関数で取得したデバイスディスクリプタを指定してください。

戻り値

正常に終了した場合には、FBILAPB_ERROR_SUCCESS が返されます。

処理に失敗した場合には、FBILAPB_ERROR_SUCCESS 以外の値が返されます。

FBILAPB_ERROR_SUCCESS以外の値が返されたときは、『4.3 戻り値一覧』をご参照ください。

備考

通信相手との切断が完了する前に処理が戻ってきます。LapbGetStatus 関数で、接続状態を確認

してください。

切断が完了しますと、構造体 LAPBPORTSTATUSのuLinkStatusがLAPB_STATUS_NOLINKになります。

コールバックで通知することも可能です。

uLinkStatus が LAPB_STATUS_UNLINK の状態は、通信相手との接続を切断中の状態です。

使用例

int nRet;

LAPBPORTSTATUS Status;

LapbCutLink(hPort);

do {

nRet = LapbGetStatus(hPort, &Status);

} while(!nRet && Status.uLinkStatus == LAPB_STATUS_UNLINK);

LapbClose(hPort);

通信処理を終了し、ポートのクローズを行います。

Page 21: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

21

5.LapbSetDiscMode

リンク未接続状態での SABM フレーム受信時の動作を設定します。

int LapbSetDiscMode(

int hPort, /* デバイスディスクリプタ */

unsigned long ulDiscMode /* SABM フレーム受信時の動作を格納した変数 */

);

パラメータ

hPort LapbOpen 関数で取得したデバイスディスクリプタを指定してください。

ulDiscMode リンク未接続状態での SABM フレーム受信時の動作を指定します。

値 内容

0 SABM フレームに対して無応答。(デフォルト)

1 SABM フレームに対して DM フレームを返します。

戻り値

正常に終了した場合には、FBILAPB_ERROR_SUCCESS が返されます。

処理に失敗した場合には、FBILAPB_ERROR_SUCCESS 以外の値が返されます。

FBILAPB_ERROR_SUCCESS以外の値が返されたときは、『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

nRet = LapbSetDiscMode(hPort, 1);

リンク未接続状態で SABM フレーム受信時、DM フレームを返すように設定します。

Page 22: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

22

6.LapbSendFrame

フレームの送信を行います(Iフレームの送信)。

int LapbSendFrame(

int hPort, /* デバイスディスクリプタ */

void *pBuffer, /* 送信データ */

unsigned long ulLength, /* 送信データサイズ */

void* pCallback /* NULL または コールバック関数アドレス */

);

パラメータ

hPort LapbOpen 関数で取得したデバイスディスクリプタを指定してください。

pBuffer 送信データへのポインタを指定します。

ulLength 送信データのサイズ( 1 ~ 16383 )

pCallback フレーム送信後、コールバックする関数を指すポインタを設定してください。

※コールバックしない場合は NULL を指定してください。

戻り値

正常に終了した場合には、FBILAPB_ERROR_SUCCESS が返されます。

処理に失敗した場合には、FBILAPB_ERROR_SUCCESS 以外の値が返されます。

FBILAPB_ERROR_SUCCESS以外の値が返されたときは、『4.3 戻り値一覧』をご参照ください。

備考

バッファにセットされたデータはIフレームの情報部として送信されます。アドレス、制御コー

ドなどをアプリケーション側で作成する必要はありません。

また、FCS 付加も自動的に行われます。純粋に、送りたいデータだけを渡してください。

本関数は フレームの送信完了を待たずに戻ってきます。LapbGetStatus 関数によりデータ送信の

完了を確認できます。送信待ちのバッファ数が 0 になれば全て送信完了です。また、引数で、コ

ールバックアドレスを指定した場合には、そのフレームの送信が完了した時点で コールバック関

数が呼び出されます。

使用例

int nRet;

nRet = LapbSendFrame(hPort, "1234567890", 10, NULL );

データを送信します。

Page 23: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

23

7.LapbGetFrameLength

受信バッファの先頭に格納されているフレームの長さを取得します。(FCS、アドレス、制御部は

含まれません)

int LapbGetFrameLength(

int hPort, /* デバイスディスクリプタ */

unsigned long *pulLength /* 受信フレーム長を返すポインタ */

);

パラメータ

hPort LapbOpen 関数で取得したデバイスディスクリプタを指定してください。

pulLength 受信フレーム長を返す変数へのポインタです。(0~16383 の値が返されます)

戻り値

正常に終了した場合には、FBILAPB_ERROR_SUCCESS が返されます。

処理に失敗した場合には、FBILAPB_ERROR_SUCCESS 以外の値が返されます。

FBILAPB_ERROR_SUCCESS以外の値が返されたときは、『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

unsigned long ulLength;

nRet = LapbGetFrameLength(hPort, &ulLength);

フレーム長を取得します。

Page 24: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

24

8.LapbGetFrameCount

受信バッファ内に格納されているフレームの数を取得します

int LapbGetFrameCount(

int hPort, /* デバイスディスクリプタ */

unsigned long *pulFrameCount /* 受信フレーム数を返す変数へのポインタ */

);

パラメータ

hPort LapbOpen 関数で取得したデバイスディスクリプタを指定してください。

pulPrameCount 受信フレーム数を返す変数へのポインタ。

戻り値

正常に終了した場合には、FBILAPB_ERROR_SUCCESS が返されます。

処理に失敗した場合には、FBILAPB_ERROR_SUCCESS 以外の値が返されます。

FBILAPB_ERROR_SUCCESS以外の値が返されたときは、『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

unsigned long ulFrameCount;

nRet = LapbGetFrameCount(hPort, &ulFrameCount );

受信バッファ内に格納されているフレームの数を取得します。

Page 25: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

25

9.LapbReceiveFrame

受信バッファに蓄えられた受信データを取り出します。

int LapbReceiveFrame(

int hPort, /* デバイスディスクリプタ */

void* pBuffer, /* 受信データを格納する領域へのポインタ */

unsigned long* pulLength /* 取り出したデータの長さを返すポインタ*/

);

パラメータ

hPort LapbOpen 関数で取得したデバイスディスクリプタを指定してください。

pBuffer 受信データを格納する領域へのポインタを指定してください。

LapbGetFrameLength 関数で得られたサイズ以上の領域を確保してください。

pulLength 取り出したデータの長さを返す変数へのポインタ

戻り値

正常に終了した場合には、FBILAPB_ERROR_SUCCESS が返されます。

処理に失敗した場合には、FBILAPB_ERROR_SUCCESS 以外の値が返されます。

FBILAPB_ERROR_SUCCESS以外の値が返されたときは、『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

char szBuf[16*1024];

unsigned long uLen;

nRet = LapbReceiveFrame(hPort, szBuf, &ulLen);

受信データを取り出します。

Page 26: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

26

10.LapbGetStatus

LAP-B ポートの各種ステータスを取得します。

int LapbGetStatus(

int hPort, /* デバイスディスクリプタ */

PLAPBPORTSTATUS pPortStatus /* ポートステータス構造体へのポインタ */

);

パラメータ

hPort LapbOpen 関数で取得したデバイスディスクリプタを指定してください。

pPortStatus ポートステータス構造体へのポインタです。

戻り値

正常に終了した場合には、FBILAPB_ERROR_SUCCESS が返されます。

処理に失敗した場合には、FBILAPB_ERROR_SUCCESS 以外の値が返されます。

FBILAPB_ERROR_SUCCESS以外の値が返されたときは、『4.3 戻り値一覧』をご参照ください。

備考

取得できるステータスは、フレーム受信の有無、受信バッファの残り容量、送信フレームの有無、

送信バッファの残り容量、通信相手との接続状態、BUSY 状態があります。

使用例

int nRet;

LAPBPORTSTATUS Status;

nRet = LapbGetStatus(hPort, &Status);

LAP-B ポートの各種ステータスを取得します。

Page 27: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

27

11.LapbGetHistory

LAP-B プロトコルの通信ヒストリを取得します。

int LapbGetHistory(

int hPort, /* デバイスディスクリプタ */

PLAPBHISTORY pHistory, /* ヒストリ情報構造体へのポインタ */

unsigned long* pulCount /* 取得したヒストリの件数を返す変数 */

);

パラメータ

hPort LapbOpen 関数で取得したデバイスディスクリプタを指定してください。

pHistory ここにヒストリ情報が返されます。有効なヒストリ件数は、pCount に返されます。

pulCount 取得されたヒストリ情報の件数を返す変数へのポインタ。

戻り値

正常に終了した場合には、FBILAPB_ERROR_SUCCESS が返されます。

処理に失敗した場合には、FBILAPB_ERROR_SUCCESS 以外の値が返されます。

FBILAPB_ERROR_SUCCESS以外の値が返されたときは、『4.3 戻り値一覧』をご参照ください。

備考

ヒストリ情報は、LapbOpen 関数、LapbClose 関数、または、LapbGetHistory 関数を実行した時点

でクリアされます。

最大 256 個のヒストリ情報が返されます。

使用例

int nRet;

unsigned long ulHistoryCount;

LAPBHISTORY sHistory[256];

nRet = LapbGetHistory(hPort, sHistory, &ulHistoryCount);

LAP-B プロトコルの通信ヒストリを取得します。

Page 28: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

28

12.LapbSetControlLine

LAP-B ポートの制御信号の出力状態を変更します。使用するインタフェース(RS-232C or RS-485)

により、使用できる信号線が異なります。

int LapbSetControlLine (

int hPort, /* デバイスディスクリプタ */

unsigned long ulControlLine /* 制御信号情報を格納した変数 */

);

パラメータ

hPort LapbOpen 関数で取得したデバイスディスクリプタを指定してください。

ulControlLine 制御信号情報を格納した変数です。

bit31~bit2 bit1 bit0

無効 RS(C) ER

0:OFF 1:ON となっています。

戻り値

正常に終了した場合には、FBILAPB_ERROR_SUCCESS が返されます。

処理に失敗した場合には、FBILAPB_ERROR_SUCCESS 以外の値が返されます。

FBILAPB_ERROR_SUCCESS以外の値が返されたときは、『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

nRet = LapbSetControlLine(hPort, 0x03);

制御ラインを設定します。RS 信号、ER 信号を ON にします。

Page 29: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

29

13.LapbGetControlLine

LAP-B ポートの制御信号の入力状態、出力状態を取得します。使用するインタフェース(RS-232C

or RS-485)により、使用できる信号線が異なります。

int LapbGetControlLine(

int hPort, /* デバイスディスクリプタ */

unsigned long* pulControlLine, /* 制御信号情報を返すポインタ */

unsigned long* pulDeltaControlLine /* 制御信号の変化情報を返すポインタ */

);

パラメータ

hPort LapbOpen 関数で取得したデバイスディスクリプタを指定してください。

pulControlLine 制御信号情報を返す変数へのポインタです。

bit31~

bit8

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

RS-232C 予約 CI CS CD DR 予約 予約 RS ER

RS-485 予約 予約 I 予約 予約 予約 予約 C 予約

0:OFF 1:ON となっています。

pulDeltaControlLinue 制御信号の変化情報を返す変数へのポインタです。

bit31~

bit8

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

RS-232C 予約 CI CS CD DR 予約 予約 予約 予約

RS-485 予約 予約 I 予約 予約 予約 予約 予約 予約

0:変化無し 1:変化あり となっています。

※割り込みがマスクされている場合、その信号の変化情報は無効です。有効な変化情報を取

得したい場合は、LapbSetEvent 関数を使用し、信号の割り込みをアンマスクしてください。

戻り値

正常に終了した場合には、FBILAPB_ERROR_SUCCESS が返されます。

処理に失敗した場合には、FBILAPB_ERROR_SUCCESS 以外の値が返されます。

FBILAPB_ERROR_SUCCESS以外の値が返されたときは、『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

unsigned long ulControlLine;

unsigned long ulDeltaControlLine;

nRet = LapbGetControlLine(hPort, &ulControlLine, &ulDeltaControlLine);

制御ラインの状態を取得します。

Page 30: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

30

14.LapbClearBuffer LAP-B ポートの受信バッファのクリアを行います。なお、送信バッファのクリアはできませんの

でご注意ください。

int LapbClearBuffer(

int hPort, /* デバイスディスクリプタ */

unsigned long ulClearBuff /* 将来拡張用。0を指定します。 */

);

パラメータ

hPort LapbOpen 関数で取得したデバイスディスクリプタを指定してください。

ulClearBuff 将来拡張用です。0を指定してください。

戻り値

正常に終了した場合には、FBILAPB_ERROR_SUCCESS が返されます。

処理に失敗した場合には、FBILAPB_ERROR_SUCCESS 以外の値が返されます。

FBILAPB_ERROR_SUCCESS以外の値が返されたときは、『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

nRet = LapbClearBuffer(hPort, 0 );

受信バッファをクリアします。

Page 31: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

31

15.LapbSetEventMask

LAP-B ポートの、割り込みマスク状態を設定します。

int LapbSetEventMask (

int hPort, /* デバイスディスクリプタ */

unsigned long ulEventMask, /* 割り込みマスク状態格納用変数へのポインタ */

unsigned long ulEventConfig /* 割り込み発生論理格納用変数へのポインタ */

);

パラメータ

hPort LapbOpen 関数で取得したデバイスディスクリプタを指定してください。

ulEventMask 割り込み要因のマスク/アンマスクを設定するデータを指定します。

bit31~bit14 bit13 bit12 bit11 bit10 bit9 bit8

RS-232C 予約 ILLINK ERROR UNLINK LINKED LINK NOLINK

RS-485 予約 ILLINK ERROR UNLINK LINKED LINK NOLINK

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

RS-232C CI CS CD DR 予約 予約 予約 RD

RS-485 予約 I 予約 予約 予約 予約 予約 RD

ILLINK uLinkStatus が LAPB_STATUS_ILLINK に変わったとき

ERROR uLinkStatus が LAPB_STATUS_ERROR に変わったとき

UNLINK uLinkStatus が LAPB_STATUS_UNLINK に変わったとき

LINKED uLinkStatus が LAPB_STATUS_LINKED に変わったとき

LINK uLinkStatus が LAPB_STATUS_LINK に変わったとき

NOLINK uLinkStatus が LAPB_STATUS_NOLINK に変わったとき

CI CI 信号の入力状態に変化があったとき

CS(I) CS(I)信号の入力状態に変化があったとき

CD CD 信号の入力状態に変化があったとき

DR DR 信号の入力状態に変化があったとき

RD データを受信し、受信バッファに格納し終わったとき

0:マスク 1:アンマスク

ボードオープン時はすべてマスク状態(0)です。

uLinkStatus は LAPBPORTSTATUS 構造体のメンバ変数です。

Page 32: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

32

ulEventConfig 割り込み発生論理を指定します。

bit31~bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

RS-232C 予約 CI CS CD DR 予約

RS-485 予約 予約 I 予約 予約 予約

それぞれ

0…制御信号の状態が OFF(0)から ON(1)でイベント発生

1…制御信号の状態が ON(1)から OFF(0)でイベント発生

戻り値

正常に終了した場合には、FBILAPB_ERROR_SUCCESS が返されます。

オープンに失敗した場合には、FBILAPB_ERROR_SUCCESS 以外の値が返されます。

FBILAPB_ERROR_SUCCESS以外の値が返されたときは、『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

nRet = LapbSetEventMask(hPort, 0x00000f01,0);

割り込みマスクの設定を行います。

Page 33: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

33

16.LapbGetEventMask

割り込みイベントマスクを取得します。

int LapbGetEventMask (

int hPort, /* デバイスディスクリプタ */

unsigned long *pulEventMask, /* 割り込みマスク状態格納用変数へのポインタ

*/

unsigned long *pulEventConfig /* 割り込み発生論理の設定データ */

);

パラメータ

hPort LapbOpen 関数で取得したデバイスディスクリプタを指定してください。

pulEventMask 割り込み要因のマスク/アンマスクの状態を格納する変数へのポインタを指定します。

bit31~bit14 bit13 bit12 bit11 bit10 bit9 bit8

RS-232C 予約 ILLINK ERROR UNLINK LINKED LINK NOLINK

RS-485 予約 ILLINK ERROR UNLINK LINKED LINK NOLINK

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

RS-232C CI CS CD DR 予約 予約 予約 RD

RS-485 予約 I 予約 予約 予約 予約 予約 RD

ILLINK uLinkStatus が LAPB_STATUS_ILLINK に変わったとき

ERROR uLinkStatus が LAPB_STATUS_ERROR に変わったとき

UNLINK uLinkStatus が LAPB_STATUS_UNLINK に変わったとき

LINKED uLinkStatus が LAPB_STATUS_LINKED に変わったとき

LINK uLinkStatus が LAPB_STATUS_LINK に変わったとき

NOLINK uLinkStatus が LAPB_STATUS_NOLINK に変わったとき

CI CI 信号の入力状態に変化があったとき

CS(I) CS(I)信号の入力状態に変化があったとき

CD CD 信号の入力状態に変化があったとき

DR DR 信号の入力状態に変化があったとき

RD データを受信し、受信バッファに格納し終わったとき

0:マスク 1:アンマスク

ボードオープン時はすべてマスク状態(0)です。

uLinkStatus は LAPBPORTSTATUS 構造体のメンバ変数です。

Page 34: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

34

pulEventConfig 割り込み発生論理の状態を格納する変数へのポインタを指定します

bit31~bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

RS-232C 予約 CI CS CD DR 予約

RS-485 予約 予約 I 予約 予約 予約

それぞれ

0…制御信号の状態が OFF(0)から ON(1)でイベント発生

1…制御信号の状態が ON(1)から OFF(0)でイベント発生

戻り値

正常に終了した場合には、FBILAPB_ERROR_SUCCESS が返されます。

処理に失敗した場合には、FBILAPB_ERROR_SUCCESS 以外の値が返されます。

FBILAPB_ERROR_SUCCESS以外の値が返されたときは、『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

unsigned long ulEventMask, ulEventConfig;

nRet = LapbGetEventMask(hPort, &ulEventMask, &ulEventConfig);

割り込みイベントマスクを取得します。

Page 35: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

35

17.CallbackProc

割り込み発生によってコールされるコールバック関数のプレースホルダです。

void CallbackProc(

unsigned long ulEventFactor, /* 割り込み要因 */

unsigned long ulPort /* ファイルディスクリプタ */

);

パラメータ

ulEventFactor コールバック関数を呼び出した割り込みイベント要因です。

bit31~bit14 bit13 bit12 bit11 bit10 bit9 bit8

RS-232C 予約 ILLINK ERROR UNLINK LINKED LINK NOLINK

RS-485 予約 ILLINK ERROR UNLINK LINKED LINK NOLINK

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

RS-232C CI CS CD DR 予約 予約 予約 RD

RS-485 予約 I 予約 予約 予約 予約 予約 RD

ILLINK uLinkStatus の値が LAPB_STATUS_ILLINK に変わった

ERROR uLinkStatus の値が LAPB_STATUS_ERROR に変わった

UNLINK uLinkStatus の値が LAPB_STATUS_UNLINK に変わった

LINKED uLinkStatus の値が LAPB_STATUS_LINKED に変わった

LINK uLinkStatus の値が LAPB_STATUS_LINK に変わった

NOLINK uLinkStatus の値が LAPB_STATUS_NOLINK に変わった

CI CI 信号の入力状態に変化があった

CS(I) CS(I)信号の入力状態に変化があった

CD CD 信号の入力状態に変化があった

DR DR 信号の入力状態に変化があった

RD データを受信し、受信バッファに格納し終わった

0:マスク 1:アンマスク

ボードオープン時はすべてマスク状態(0)です。

uLinkStatus は LAPBPORTSTATUS 構造体のメンバ変数です。

ulPort イベントが発生したポートのデバイスディスクリプタです。

Page 36: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

36

4.3 戻り値一覧

エラー識別子 値 意味 対処方法

FBILAPB_ERROR_SUCCESS 0 正常終了 -

FBILAPB_ERROR_NOT_DEVICE C0000001h 指定したポートが見つか

りません。

指定されたポートが見つかりませ

んでした。指定しているポート番号

かどうかを確認してください。

FBILAPB_ERROR_INVALID_HANDLE C0000003h デバイスノードファイル

が正しくありません。

不正なデバイスノードファイルで

呼び出しを行おうとしました。

FBILAPB_ERROR_PORT_ALREADY_OPEN C0001001h 引数パラメータの値が不

正です。

API 関数に指定する値が不正もしく

は範囲外です。

FBILAPB_ERROR_FRAME_SIZE C0002000h 送・受信のサイズが異常

です。

-

FBILAPB_ERROR_BUFFER_FULL C0002001h 送信バッファに空きがあ

りません。

現在送信中のフレームの送信がお

わり、バッファに空きが出るまで待

ってください。

FBILAPB_ERROR_NO_RESPONSE C0002002h 通信コントローラ から

の応答がありません。

-

FBILAPB_ERROR_ALREADY_LINK C0002003h すでに LapbSetLink が実

行されています

-

FBILAPB_ERROR_NOT_LINK C0002004h リンク接続が確立されて

いません

-

FBILAPB_ERROR_CONNECTION C0002005h リンクリセットが発生し

ています。

LapbClose 関数を実行してくださ

い。

FBILAPB_ERROR_ILLEGAL_LINK C0002006h 再リンクが要求されまし

た。

-

Page 37: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

37

4.4 識別子一覧

識別子 意味

LAPB_RECEIVED_FRAME LapbSetEventMask,LapbGetEventMask,LapbEventRequestPending などで使用される。

フレームの受信を表します。

LAPB_CHANGE_OF_CS LapbSetEventMask,LapbGetEventMask,LapbEventRequestPending などで使用される。

制御信号の I 信号(CS 信号)に変化があったことを表します。

LAPB_CHANGE_OF_DR LapbSetEventMask,LapbGetEventMask,LapbEventRequestPending などで使用される。

制御信号の DR 信号に変化があったことを表します。

LAPB_CHANGE_OF_CD LapbSetEventMask,LapbGetEventMask,LapbEventRequestPending などで使用される。

制御信号の CD 信号に変化があったことを表します。

LAPB_CHANGE_OF_CI LapbSetEventMask,LapbGetEventMask,LapbEventRequestPending などで使用される。

制御信号の CI 信号に変化があったことを表します。

LAPB_STATUS_NOLINK 相手局と接続が無い状態を表します。

LAPB_STATUS_LINK 相手局に接続を要求している状態です。LINK 接続は、まだ完了していないので、デ

ータの送受信などは行えません。正常に LINK 接続が完了すると、Link 接続状態は、

LAPB_STATUS_LINKED に変化します。逆に、相手からの応答がない、あるいは、LINK

接続を拒否された等の場合、LAPB_STATUS_NOLINK に変化します。

LAPB_STATUS_LINKED 相手局との接続が完了している状態ですデータの送受信が行えます。LapbCutLink の

実行あるいは、相手側が LINK を切断するまで、この状態は継続します。ただし、デ

ータ送受信中に何らかの異常により LINK が復旧できない場合には、

LAPB_STATUS_NOLINK へ変化します。

LAPB_STATUS_UNLINK 相手局に切断を要求している状態です LINK 切断中の状態です。LapbCutLink 実行が、

相手からの応答を待っている状態です。LINK 切断を開始していますので、データの

送受信は行えません。LINK 切断が完了すると、LAPB_STATUS_NOLINK へ変化します。

LAPB_STATUS_ILLINK リンク接続完了後に、相手局から再び SABM を受信しました。

そのまま継続動作することが可能ですが、リンク接続時の SABM コマンドの競合では

ない場合(既にリンク接続完了してデータ転送が行われている状態)、送受信データ

が失われている可能性があります。、LapbClose によりポートをクローズし、再度リ

ンク接続を行うことをお勧めします。

LAPB_STATUS_ERROR 復旧不可のエラーが発生した状態です。この状態は、何らかの異常が原因で、通信

LSI が継続動作不可能となり、LINK を切断したことを通知してきた場合に発生しま

す。 この状態が発生した場合、一旦 LapbCutLink を実行した後、LapbSetLink によ

る復旧を試みてください。

LAPB_STATUS_BUSY BUSY 状態を表します。

LAPB_STATUS_NOBUSY 非 BUSY 状態を表します。

Page 38: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

38

4.5 構造体

1.LAPBPORTINITDATA 構造体 ポートの初期化情報を設定する構造体です。

typedef struct {

unsigned long uTxc;

unsigned long uRxc;

unsigned long uSourceClock;

unsigned long uBaudRate;

unsigned long uInterface:

unsigned long uFormat;

unsigned long uMyAddress;

unsigned long uYourAddress;

unsigned long uLink;

unsigned long uT1;

unsigned long uT2;

unsigned long uT4;

unsigned long uN2;

unsigned long uO;

} LAPBPORTINITDATA, *PLAPBPORTINITDATA;

メンバ 説明

uTxc 送信クロックの種類

識別子 内容

LAPB_SCLK_PTC 内部クロック

RS-232C 外部クロック(ST2 から入力したクロック)

LAPB_SCLK_ST

RS-485 外部クロック(ST から入力したクロック)

LAPB_SCLK_RT 外部クロック(RT から入力したクロック)

uRxc 受信クロックの種類

識別子 内容

LAPB_RCLK_RT 外部クロック

LAPB_RCLK_DPLL DPLL

uSourceClock ボーレート生成用クロックの種類

識別子 内容

LAPB_CLOCK_19660800 19.6608MHz

LAPB_CLOCK_14745600 14.7456MHz

LAPB_CLOCK_8192000 8.192MHz

LAPB_CLOCK_32000000 32MHz

LAPB_CLOCK_12288000 12.288MHz

※ボード型式により、サポートされてないものがあります。このクロックを使

用する場合は、ボードに添付されているマニュアルの「ハードウェア仕様」を

ご確認下さい

※CompactPCI 製品は、全てこのクロックをサポートしています。

Page 39: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

39

メンバ 説明

uBaudRate 通信速度

RS-232C の場合 ~1000000(1Mbps)

RS-485 の場合 ~2000000(2Mbps)

uInterface 物理インタフェースの種類

識別子 内容

LAPB_INTERFACE_232C RS-232C

LAPB_INTERFACE_485 RS-485

uFormat 符号化フォーマットの種類

識別子 内容

LAPB_FORMAT_NRZI NRZI

LAPB_FORMAT_NRZ NRZ

uMyAddress 自分自身のアドレス

指定できるアドレスは、8ビットアドレスで、01h~FEh の範囲です

※00h、FFh、接続相手と同じアドレス、16 ビットアドレスは指定できません。

uYourAddress 通信相手のアドレス

指定できるアドレスは、8ビットアドレスで、01h~FEh の範囲です。

※00h、FFh、自分自身と同じアドレス、16 ビットアドレスは指定できません。

uLink LINK 接続動作指定

識別子 内容

LAPB_LINK_SABM 相手局に対し SABM コマンドを送信します。相手局から

UA レスポンスを受信したときに LINK 設定が完了しま

す。SABM コマンド送信後、T1 タイマ以内に UA レスポ

ンスを受信しなかったとき、SABM コマンドの再送を行

います。この再送は、最大再送回数(uN2)まで繰り返

されます。最大再送回数(uN2)までの再送後の T1 タ

イムアウトにより LINK 設定は失敗します。

SABM コマンド送信後、SABM コマンドを受信した場合

(SABM コマンドの競合)、UA レスポンスを送信し、LINK

設定が完了します。このとき、送信した SABM コマンド

に対して T1 タイムアウトが発生しても、SABM コマン

ドの再送は行われません。

LAPB_SCLK_DM 相手局に対し DM レスポンスを送信し、SABM コマンド

を勧誘します。相手局から SABM コマンドを受信したと

き、UA レスポンスを送信し、LINK 設定が完了します。

DM レスポンス送信後、DM レスポンスを受信した場合、

SABM コマンドを送信し、相手からの UA レスポンスを

待ちます。DMレスポンス送信後、 T1タイマ以内に SABM

コマンドを受信しなかったとき、DM レスポンスの再送

を行います。この再送は、最大再送回数(uN2)まで繰

り返されます。最大再送回数(uN2)までの再送後の

T1 タイムアウトにより LINK 設定は失敗します。

LAPB_LINK_WAIT_SABM SABM コマンドの受信を待ち、UA レスポンスを返しま

す。

LAPB_LINK_SABM_RUA 一部の動作を除き、LAPB_LINK_SABM と同じです。SABM

コマンド送信後、SABM コマンドを受信した場合、UA レ

Page 40: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

40

メンバ 説明

スポンスを送信しますが、LAPB_LINK_SABM と異なり、

相手局からの UA レスポンスを受信した時に LINK 設定

完了とします。SABM コマンドの競合時、T1 タイムアウ

ト以内に UA レスポンスが受信されない場合、SABM コ

マンドの再送が行われます。

uT1 T1 タイマ指定(T1>T2)

受信確認用タイマ。1 つまたは複数のフレームが相手に受け入れられたことを

確認するためのタイマです。1~25 の範囲で、単位は秒です。

1 秒以下の設定を行うには 設定値に LAPB_T_100MILLI を OR してください。

単位が 100ms 単位になります。

(この場合、設定範囲は 1~255 です)

例)

LapbInitData.uT1 = 4; // T1 タイマの設定 4 秒

LapbInitData.uT1 = 4 | LAPB_T_100MILLI;// T1 タイマの設定 400 ミリ秒

uT2 T2 タイマ指定(T1>T2)

応答送信用タイマ。0または 1~25 の範囲で、単位は秒です(T2=0 のときは、

Iフレーム受信ごとに応答を送信します)。

1 秒以下の設定を行うには 設定値に LAPB_T_100MILLI を OR してください。

単位が 100ms 単位になります。

(この場合、設定範囲は 0~255 です)

例)

LapbInitData.uT2 = 4; // T2 タイマの設定 4 秒

LapbInitData.uT2 = 4 | LAPB_T_100MILLI ;// T2 タイマの設定 400 ミリ秒

uT4 T4 タイマ指定

相手局 BUSY 監視用タイマ。相手局への BUSY 問い合わせを行うためのタイマで

す。0 または 1~25 の範囲で、単位は秒です。0 を指定すると、T4 タイマの起

動を行いません。

1 秒以下の設定を行うには 設定値に LAPB_T_100MILLI を OR してください。

単位が 100ms 単位になります。

(この場合、設定範囲は 0~255 です)

例)

LapbInitData.uT4 = 4; // T4 タイマの設定 4 秒

LapbInitData.uT4 = 4 | LAPB_T_100MILLI ;// T4 タイマの設定 400 ミリ秒

uN2 最大再送回数

LAP-B プロトコルでは、uT1 タイムアウト発生などの異常発生時、フレームの再

送を行って異常からの復旧を試みます。最大再送回数は、この復旧を繰り返す

回数を指定します。最大再送回数で指定された回数の復旧に連続して失敗した

場合、LINK を切断し、通信不可状態へ遷移します。uN2 への設定は、1~255 の

範囲です。

uO アウトスタンディングフレーム数

相手からの応答確認なしに連続して送信できるIフレームの数。uOへの設定は、

1~7の範囲です。

Page 41: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

41

2.LAPBPORTSTATUS 構造体 typedef struct {

unsigned long uSendFrame;

unsigned long uSendFree;

unsigned long uReceiveFrame;

unsigned long uReceiveFree;

unsigned long uLinkStatus;

unsigned long uMyBusyStatus;

unsigned long uYourBusyStatus;

} LAPBPORTSTATUS, *PLAPBPORTSTATUS;

メンバ 説明

uSendFrame 送信待ちのフレーム数(0~8 の値)

uSendFree 空き送信バッファ数(0~8の値)

uReceiveFrame 受信しているフレーム数(0~32 の値)

uReceiveFree 空き受信バッファ(0~32 の値)

uLinkStatus 接続されている相手との現在の LINK 接続状態を示します。

識別子 内容

LAPB_STATUS_NOLINK 相手局と接続が無い状態を表します

LAPB_STATUS_LINK 相手局に接続を要求している状態です。LINK 接続は、ま

だ完了していないので、データの送受信などは行えませ

ん。正常に LINK 接続が完了すると、Link 接続状態は、

LAPB_STATUS_LINKED に変化します。逆に、相手からの応

答がない、あるいは、LINK 接続を拒否された等の場合、

LAPB_STATUS_NOLINK に変化します。

LAPB_STATUS_LINKED 相手局との接続が完了している状態ですデータの送受信

が行えます。LapbCutLink の実行あるいは、相手側が LINK

を切断するまで、この状態は継続します。ただし、デー

タ送受信中に何らかの異常によりLINKが復旧できない場

合には、LAPB_STATUS_NOLINK へ変化します。

LAPB_STATUS_UNLINK 相手局に切断を要求している状態ですLINK切断中の状態

です。LapbCutLink 実行が、相手からの応答を待っている

状態です。LINK 切断を開始していますので、データの送

受 信 は 行 え ま せ ん 。 LINK 切 断 が 完 了 す る と 、

LAPB_STATUS_NOLINK へ変化します。

uMyBusyStatus 自分自身の BUSY 状態を示します。

uMyBusyStatus が LAPB_STATUS_BUSY となっても、すぐに LINK 切断されたり、

相手からのデータを取りこぼしたりするわけではありません。LAP-B プロト

コルでは、相手局が BUSY 状態となっている間に送信したデータは、相手局の

BUSY 状態が解除された時点で再送されます。ただし、長い時間 BUSY 状態が

継続した場合、相手局からの BUSY 問い合わせや、タイムアウトによる再送が

最大再送回数に達したとき、相手側で、LINK 状態を継続できなくなり、異常

が発生します。BUSY 状態となっている時間を短くするために、自局が BUSY

状態となった場合、できるだけ早い機会に LapbReceiveFrame を実行し、受信

バッファに空きを作って BUSY 状態を解除するようにしてください。

Page 42: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

42

識別子 内容

LAPB_STATUS_BUSY BUSY 状態を表します。

LAPB_STATUS_NOBUSY 非 BUSY 状態を表します

uYourBusyStatus 通信相手の BUSY 状態を示します。

uYourBusyStatus が LAPB_STATUS_BUSY となっても、すぐに LINK 切断された

り、自局からの LapbSendFrame が実行でなくなるわけではありません。LAP-B

プロトコルでは、相手局が BUSY 状態となっている間に送信したデータは、相

手局の BUSY 状態が解除された時点で再送されます。また、一度、相手局が

BUSY 状態となったと判断した場合、相手局の BUSY 状態が解除されるまで、

データの送信を待ち合わせます。ただし、長い時間 BUSY 状態が継続した場合、

自局からの T4 タイマのタイムアウトによる BUSY 問い合わせ(T4 タイマ)や、

T1 タイマによるタイムアウトによる再送が最大再送回数に達したとき、自局

側で LINK 状態を継続できなくなり、LINK が切断されます。また、相手局が

BUSY状態となっている間に実行されたLapbnSendFrameによる送信データは、

送信バッファに蓄えられ、相手局の BUSY 状態が解除された時点で、送信され

ます。

識別子 内容

LAPB_STATUS_BUSY BUSY 状態を表します。

LAPB_STATUS_NOBUSY 非 BUSY 状態を表します

Page 43: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

43

3.LAPBHISTORY 構造体

typedef struct {

unsigned long uId;

unsigned long uAField;

unsigned long uCField;

unsigned long uSTS0;

unsigned long uSTS1;

} LAPBHISTORY, *PLAPBHISTORY;

メンバ 説明

uId LAPBHISTORY 構造体の各メンバの有効性を示しています。

LAPBHISTORY 構造体は、最大 256 個の配列となっているため、256 個に満たな

い部分のデータは無効です。

また、情報の種類によってはすべてのメンバが有効であるとは限りません。

そこで、HISTORY 構造体の情報を識別するためには、uId の値によって他のメ

ンバの値の有効/無効を判断する必要があります。

uId の示す値は次の通りです。

値 意味

0 すべてのメンバが有効です

2 uCField の内容は無効です

3 uAField、uCField ともに無効です

上記以外の値の場合、このヒストリ情報は無効です。

uAField 送受信されたフレームの Aフィールドの値が格納されています。uId の値が 0

または 2の場合にのみ uAField の内容は有効です。

uCField 送受信されたフレームの Cフィールドの値が格納されています。uId の値が 0

または 2の場合にのみ uCField の内容は有効です。

uSTS0 送受信されたフレームのステータス情報が格納されています。uSTS0 は、下

位 8bit の各 bit の組み合わせにより情報の内容が構成されています。

また、下表中X(Don't Care)を含む情報は、他の情報との論理和で複数の

情報を持っている場合があります。X:Don't Care

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 内容

1 0 0 0 0 0 0 0 正常フレーム送信

1 1 0 0 0 0 0 0 アボートフレーム送信

1 X 1 0 0 0 0 0 強制アボートフレーム送信

0 0 0 0 X X X 0 C フィールド受信

0 0 0 0 X X 1 X I フィールドを持つフレーム受信

0 0 0 X X 1 X X I フレームの Cフィールド受信

0 0 0 0 1 X X X 自局 BUSY 発生

0 0 0 1 0 1 X X 手順エラーフレーム受信(I フレームの場合の

み)

0 0 1 0 0 0 0 0 受信データなし

0 0 1 0 0 0 0 1 A フィールドのみ受信

0 1 0 0 0 0 X X A フィールド未定義フレーム受信

Page 44: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

44

0 1 1 0 0 0 X X C フィールド未定義フレーム受信

uSTS1 送受信されたフレームのステータス情報が格納されています。uSTS1は、下位8bit

の各 bit の組み合わせにより情報の内容が構成されています。

また、下表中X(Don't Care)を含む情報は、他の情報との論理和で複数の情報

を持っている場合があります。

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 内容

1 1 1 1 1 1 1 1 オーバーランエラー発生

1 1 X X X 0 0 0 ロングフレーム受信

1 0 X X X 0 0 0 N(R)誤りフレーム受信

0 1 X X X 0 0 0 N(S)誤りフレーム受信

X X 1 X X X X X 端数 bit フレーム受信 1

X X X 1 X X X X 端数 bit フレーム受信 2

X X X X 1 X X X 端数 bit フレーム受信 3

X X X X X 1 X X ショートフレーム受信

X X X X X X 1 X アボートフレーム受信

X X X X X X X 1 FCS エラーフレーム受信

Page 45: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

45

4.6 Kylix をお使いの方へ

本ドキュメント内の関数、プログラム例の書式はすべて C言語となっております。Kylix をお使いの

方は下記の書式の違いにご注意してお使いください。

1. 関数

C 言語 Kylix

int LapbReceiveFrame( 1)function AdGetSamplingData(

int hPort, 2)hPort: Integer3);

void* pBuffer,

4)var pBuffer: pointer;

unsigned long* pulLength var pulLength: Cardinal

); ): 5)Integer; 6)cdecl; external ‘gpg4115.so’; 1)Kylix では戻り値を返す場合は function、返さない場合(C 言語の void に相当)は procedure を

関数の先頭につけます。

2)C 言語では”変数の型 変数名”の順で引数を記述するのに対し、Kylix では”変数名:変数の型”の順

で記述します。

3)Kylix では変数の型が C言語と異なります。一部を紹介します。

・int→Integer

・long→Longint

・unsigned long→Cardinal

・void*→pointer

4)参照渡しを記述する際には変数名に var をつけます。

5)C 言語では戻り値の型を先頭に記述するのに対し、Kylix では引数リストの後に戻り値の型を記述

します(戻り値の型が C言語における void 型の場合は、戻り値の型は”:;”と何も記述しません。)

6)ライブラリ関数を呼ぶ際には、関数の最後に cdecl;external ‘ライブラリ名’;を記述します(ただ

しコールバックルーチンは external ‘ライブラリ名’;は必要ありません)。

2. 構造体

C 言語 Kylix

typedef struct{ type

unsigned long uId; 1)LAPBHISTORY = record

unsigned long uAField; 2)uId: Cardinal;

unsigned long uCField; uAField: Cardinal;

unsigned long uSTS0; uCField: Cardinal;

unsigned long uSTS1 uSTS0: Cardinal;

}LAPBHISTORY, *PLAPBHISTORY uSTS1: Cardinal;

3)end;

1)Kylix では構造体のことをレコードと呼び、”構造体名 = record”と記述します。

2)関数名と同じく、変数の型と変数名が C言語と逆になります。

3)Kylix では構造体の最後に”end;”を記述します。

Page 46: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

46

使用例

ボードオープンからリンクの接続までを記述します。

C 言語

int main(void){

int hPort

LAPBPORTINITDATA Config;

hPort = LapbOpen("FBILAPB1", NULL, 0, NULL); /* Open : ボードのオープン */

if(hPort < 0) { /* オープンに失敗 */

return;

}

/* 通信パラメータの格納 */

Config.uFormat = LAPB_FORMAT_NRZ; /* 符号化フォーマット:NRZ */

Config.uMyAddress = 1; /* 自局アドレス:1 */

Config.uYourAddress = 2; /* 相手局アドレス:2 */

Config.uLink = LAPB_LINK_SABM; /* LINK 接続動作:SABM 送信 */

Config.uTxc = LAPB_SCLK_PTC; /* 送信クロック:内部 */

Config.uRxc = LAPB_RCLK_DPLL; /* 受信クロック:DPLL */

Config.uBaudRate = 9600; /* ボーレート:9600bps */

Config.uSourceClock = LAPB_CLOCK_19660800; /* 基準クロック:19.6608MHz */

Config.uInterface = LAPB_INTERFACE_485; /* RS-485 */

Config.uT1 = 5; /* T1 タイマ:5 秒 */

Config.uT2 = 0; /* T2 タイマ:なし */

Config.uT4 = 6; /* T4 タイマ:6 秒 */

Config.uN2 = 3; /* 最大再送回数:3 */

Config.uO = 7; /* アウトスタンディングフレーム:7 */

/* リンクの接続 */

LapbSetLink(hPort, &Config);

:

:

:

}

Page 47: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

47

Kylix

procedure TForm1.FormCreate(Sender:TObject);

var

nPort : integer;

Config : LAPBPORTINITDATA;

1)begin

hPort := LapbOpen("FBILAPB1", NULL, 0, NULL); /* Open : ボードのオープン */

if hPort < 0 then Exit; /* オープンに失敗 */

/* 通信パラメータの格納 */

Config.uFormat := LAPB_FORMAT_NRZ; /* 符号化フォーマット:NRZ */

Config.uMyAddress := 1; /* 自局アドレス:1 */

Config.uYourAddress := 2; /* 相手局アドレス:2 */

Config.uLink := LAPB_LINK_SABM; /* LINK 接続動作:SABM 送信 */

Config.uTxc := LAPB_SCLK_PTC; /* 送信クロック:内部 */

Config.uRxc := LAPB_RCLK_DPLL; /* 受信クロック:DPLL */

Config.uBaudRate := 9600; /* ボーレート:9600bps */

Config.uSourceClock := LAPB_CLOCK_19660800; /* 基準クロック:19.6608MHz */

Config.uInterface := LAPB_INTERFACE_485; /* RS-485 */

Config.uT1 := 5; /* T1 タイマ:5 秒 */

Config.uT2 := 0; /* T2 タイマ:なし */

Config.uT4 := 6; /* T4 タイマ:6 秒 */

Config.uN2 := 3; /* 最大再送回数:3 */

Config.uO := 7; /* アウトスタンディングフレーム:7 */

/* リンクの接続 */

LapbSetLink(hPort, @Config);

:

:

end;

1)関数の処理記述は begin~end;の中に記述します。

2)Kylix では代入には:=を使用します。

3)アドレスを渡す際は、C言語では&であるのに対し、Kylix では@を記述します。

4)C 言語では 0x~が 16 進数を示すのに対し、Kylix では$~が 16 進数を意味します。

Page 48: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

48

4.7 テストドライバ 本ソフトウェアには、ボードがなくてもドライバを動かすことができるテストドライバ機能がついて

おります。

テストドライバを使用する場合は、libgpg4115.so の代わりに libgpg4115t.so をリンクし、コンパ

イルしてください。

テストドライバ機能を使用するプログラム test.c をコンパイルする場合のコンパイル例を示します。 #gcc -o test test.c -lgpg4115t

テストドライバ機能は、ループバックコネクタを接続した場合と同じ動きをします。LapbSendFrame

関数でデータを送信すれば、自身の受信バッファにその送信データが格納されます。

送受信できるフレーム数は1つのみで、送信できるフレーム長は最大 1024byte となっています。そ

れ以上のデータを送信した場合は、切り捨てられます。

各関数は下記のように動作します。

No 関数名 機能

1 LapbOpen 引数が正常であれば、FBILAPB_ERROR_SUCCESS を返します。

2 LapbClose 引数が正常であれば、FBILAPB_ERROR_SUCCESS を返します。

3 LapbSetLink 引数が正常であれば、FBILAPB_ERROR_SUCCESS を返します。

4 LapbCutLink 引数が正常であれば、FBILAPB_ERROR_SUCCESS を返します。

5 LapbSetDiscMode 引数が正常であれば、FBILAPB_ERROR_SUCCESS を返します。

6 LapbSendFrame 引数が正常であれば、送信データをドライバの受信バッファに格納し

リターンします。送信完了コールバック関数を指定した場合、本関数

リターン時にコールバック関数が呼ばれます。

7 LapbGetFrameLength 引数が正常であれば、FBILAPB_ERROR_SUCCESS を返します。

8 LapbGetFrameCount 引数が正常であれば、FBILAPB_ERROR_SUCCESS を返します。

9 LapbReceiveFrame 引数が正常であれば、受信バッファのデータを取得します。

10 LapbClearBuffer 引数が正常であれば、受信バッファをクリアします。

11 LapbGetStatus 引数が正常であれば、FBILAPB_ERROR_SUCCESS を返します。

12 LapbSetControlLine RS-232C の場合、ER 信号と RS 信号をセットできます。

RS-485 の場合、C信号をセットできます。

13 LapbGetControlLine 引数が正常であれば、制御信号状態が取得できます。

14 LapbGetHistory 常にヒストリ情報なしでリターンします。

15 LapbSetEventMask フレーム受信イベントのみ指定できます。

16 LapbGetEventMask 引数が正常であれば、設定しているイベントマスク値を取得できます。

Page 49: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

49

第5章 サンプルプログラム

サンプルプログラムは「/usr/src/interface/gpg4115/アーキテクチャ名/linux/samples」にソース

コード、Makefile を用意しています。サンプルプログラムには実行形式ファイルが付属していませ

んので、make を実行して、実行形式のファイルを作成してからご使用ください。

※アーキテクチャ名には、PC/AT 互換機の場合 i386、SH-CPU ボードの場合 sh4 になります。

5.1 データ送信サンプルプログラム データ送信を行うサンプルプログラムです。

RSW1 設定値が 0の PCI/CTP/CPZ-4156 のチャンネル 1から、キーボードから入力した文字列データを

送信します。「CTRL + \」キーが押されたらプログラムを終了します。

#cd /usr/src/interface/gpg4115/アーキテクチャ名/linux/samples/c/terminal #make #./term_send

5.2 データ受信サンプルプログラム データ受信を行うサンプルプログラムです。

RSW1 設定値が 0の PCI/CTP/CPZ-4156 のチャンネル 2で、受信したデータを表示します。「CTRL + \」

キーが押されたらプログラムを終了します。

#cd /usr/src/interface/gpg4115/アーキテクチャ名/linux/samples/c/terminal #make #./term_receive

5.3 通信ヒストリ表示サンプルプログラム LAP-B プロトコルの通信ヒストリを取得するサンプルプログラムです。 ボードをオープンした後、

リンク接続、切断を行い、そのヒストリを関数 LapbGetHistory で取得します。

#cd /usr/src/interface/gpg4115/i386/アーキテクチャ名/samples/c/terminal #make #./history

5.4 メッセージ送信サンプルプログラム メッセージの送信を行うサンプルプログラムです。

RSW1 設定値が 0 の PCI-4156 の CN 1 から、” The quick brown fox jumps over the lazy dog.”というメッセージを送信します。

SendMessage ディレクトリでコンパイルを行い、SendMessage を実行してください。

#cd /usr/src/interface/gpg4115/アーキテクチャ名/linux/samples/c #cd SendMessage #make #./SendMessage

Page 50: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

50

5.5 メッセージ受信サンプルプログラム メッセージの受信を行うサンプルプログラムです。

RSW1 設定値が 1 の PCI-4156 の CN 1 にメッセージを受信したら、メッセージを取り出します。

ReceiveMessage ディレクトリでコンパイルを行い、ReceiveMessage を実行してください。

#cd /usr/src/interface/gpg4115/アーキテクチャ名/linux/samples/c #cd ReceiveMessage #make #./ReceiveMessage

5.6 通信接続サンプルプログラム 通信接続を行うサンプルプログラムです。

RSW1 設定値が 1 の PCI-4156 の CN 1 と相手局の接続を行います。

SetLink ディレクトリでコンパイルを行い、SetLink を実行してください。

#cd /usr/src/interface/gpg4115/i386/アーキテクチャ名/samples/c #cd SetLink #make #./SetLink

Page 51: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

51

第6章 ユーティリティ

6.1 自己診断プログラム

自己診断プログラムは、動作不具合時の原因を判断するためのものです。

自己診断プログラムにより、以下のことを確認できます。

・GPG-4115 デバイスドライバのインストールの有無

・パソコン LAP-B ボードとのインタフェース動作(I/O ポートアクセス、PCI バスマスタアクセス、割

り込み信号)、

送受信診断、制御信号診断。

(必要な機材)

・診断プログラム(clapbdiag)

・ループバックコネクタ

(ピン接続の組み合わせ ①RS-232C,SD-RD,RS-CS-CD,ER-DR-CI ②RS-485:T-R,C-I)

(操作手順)

1. 診断を行うボードの CN1,CN2 にループバックコネクタを差してください。

2. 自己診断プログラムを実行する前にドライバモジュールを組み込みます。

3. 診断したいボードのデバイス名を入力して、「Enter」キーを押してください。

4. 3 がエラーになる場合は次の原因が考えられます。

・ドライバモジュールが組み込まれていない。

・ボードの故障

・システムの故障

5. 3 が成功すると、ボードのリソースが表示されます。

6. 自動的に各項目の診断が行われ、結果が表示されます。

7. 診断結果を保存したい場合は、「y」キーを押すと、診断結果をテキスト形式で保存できます。

Page 52: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

52

第7章 重要な情報

保証の内容と制限

弊社は本ドキュメントに含まれるソースプログラムの実行が中断しないこと、またはその実行に誤り

が無いことを保証していません。

本製品の品質や使用に起因する、性能に起因するいかなるリスクも使用者が負うものとします。

弊社はドキュメント内の情報の正確さに万全を期しています。万一、誤記または誤植などがあった場

合、弊社は予告無く改訂する場合があります。ドキュメントまたはドキュメント内の情報に起因する

いかなる損害に対しても弊社は責任を負いません。

ドキュメント内の図や表は説明のためであり、ユーザ個別の応用事例により変化する場合があります。

著作権、知的所有権

弊社は本製品に含まれるおよび本製品に対する権利や知的所有権を保持しています。

本製品はコンピュータ ソフトウェア、映像/音声(例えば図、文章、写真など)を含んでいます。

医療機器/器具への適用における注意

弊社の製品は人命に関わるような状況下で使用される機器に用いられる事を目的として設計、製造さ

れた物では有りません。

弊社の製品は人体の検査などに使用するに適する信頼性を確保する事を意図された部品や検査機器

と共に設計された物では有りません。

医療機器、治療器具などの本製品の適用により、製品の故障、ユーザ、設計者の過失などにより、損

傷/損害を引き起こす場合が有ります。

複製の禁止

弊社の許可なく、本ドキュメントの全て、または一部に関わらず、複製、改変などを行うことはでき

ません。

責任の制限

弊社は、弊社または再販売者の予見の有無にかかわらず発生したいかなる特別損害、偶発的損害、間

接的な損害、重大な損害について、責任を負いません。

本製品(ハードウェア,ソフトウェア)のシステム組み込み、使用、ならびに本製品から得られる結果

に関する一切のリスクについては、本製品の使用者に帰属するものとします。

本製品に含まれるバグ、あるいは本製品の供給(納期遅延)、性能もしくは使用に起因する付帯的損

害もしくは間接的損害に対して、弊社に全面的に責がある場合でも、弊社はその製品に対する改良(正

常に動作する)、代品交換までとし、金銭面での賠償の責任は負わないものとしますので、予めご了

承ください。

本製品(ソフトウェアを含む)は、日本国内仕様です。本製品を日本国外で使用された場合、弊社は

一切責任を負いかねます。また、弊社は本製品に関し、海外での保守サービスおよび技術サポート等

は行っておりません。

Page 53: GPG-4115 - Interface · 2011-06-09 · LAP-B(PCI/C-PCI)Linux/RT  GPG-4115 LAP-B 通信インタフェースモジュール用Linux/RT ドライバ Help for Linux

GPG-4115 Help for Linux

© 2000, 2011 Interface Corporation. All rights reserved.

53

商標/登録商標

本書に掲載されている会社名、製品名は、それぞれ各社の商標または登録商標です。