74
COM(PCI/C-PCI)Linux/RT www.interface.co.jp GPG-4141 調歩同期シリアル通信インタフェースモジュール用 Linux/RT 対応ドライバ Help for Linux

GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

COM(PCI/C-PCI)Linux/RT

www.interface.co.jp

GPG-4141 調歩同期シリアル通信インタフェースモジュール用 Linux/RT 対応ドライバ

Help for Linux

Page 2: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

2

目 次

第 1 章 はじめに 3

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

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

第 2 章 製品仕様 4

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

2.2 基本仕様......................................................................... 6

第 3 章 実行手順 10

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

3.2 制御手順(調歩同期通信部) ...................................................... 14

3.3 制御手順(汎用DIO部) ........................................................... 20

3.4 ドライバ組み込みオプション ...................................................... 23

3.5 /procファイルシステム........................................................... 25

第 4 章 リファレンス 26

4.1 関数一覧(調歩同期通信部) ...................................................... 26

4.2 IOCTLリクエスト一覧(調歩同期通信部) ........................................... 27

4.3 拡張ioctl仕様(調歩同期通信部) ................................................. 28

4.4 構造体(調歩同期通信部)........................................................ 40

4.5 関数一覧(汎用DIO部) ............................................................. 47

4.6 関数個別説明(汎用DIO部) ......................................................... 48

4.7 戻り値一覧(汎用DIO部) ........................................................... 70

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

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

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

5.3 データ送信サンプルプログラム(全二重方式) ........................................ 72

5.4 データ送信サンプルプログラム(2 線式半二重)....................................... 72

5.5 データ受信サンプルプログラム(全二重方式) ........................................ 72

5.6 データ受信サンプルプログラム(2 線式半二重)....................................... 72

第 6 章 ユーティリティ 73

6.1 通信方式設定プログラム.......................................................... 73

第 7 章 重要な情報 74

Page 3: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

3

第1章 はじめに

1.1 概要 本ソフトウェアは、Linux アプリケーションから、弊社調歩同期シリアル通信製品の制御を行うた

めのソフトウェアです。GPG-4141 は、弊社調歩同期シリアル通信製品を Linux アプリケーションか

らシリアル関数をコール(汎用 DIO 部は Lib をリンクし関数をコール)することにより制御します。

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

1.2 特長 ●弊社シリアル通信製品をコンピュータ本体内蔵のシリアルポートと同様に使用することができま

す。

●TTY ドライバに準拠しており、Linux 標準シリアル関数(termios)を使用して通信が行えます。

●ボーレート設定用の ioctl を呼び出すことで、コンピュータ本体内蔵のシリアルポートでは実現で

きないボーレートを設定することができます。

●RS-485 インタフェースモジュールを使用すれば、2 線式半二重によるマルチドロップ通信を実現

することができます。

また、4線式半二重通信にも対応しています。

●通信モジュール製品に対応しています。下記のような特長があります。

・CPU を搭載しており、通信の際のパソコンや CPU ボード負荷を軽減することが出来ます。

※PCI/CTP/CPZ-420108Q,PCI/CTP/CPZ-420116Q,PCI/CTP/CPZ-420208Q,PCI/CTP/CPZ-420216Q

のみ搭載しています。

・ 大 16 チャンネルの通信を制御することが可能です。

※PCI/CTP/CPZ-420116Q,PCI/CTP/CPZ-420216Q のみ 大 16 チャンネル可能です。

・ 大 48 点のデジタル入出力を制御することが可能です。

※PCI/CTP/CPZ-420116Q,PCI/CTP/CPZ-420216Q のみ 大 48 点可能です。

Page 4: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

4

第2章 製品仕様

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

弊社製 Classembly Devices®

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

ドライバ種別 TTY ドライバ(Linux 標準シリアルドライバ互換)

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

PCI-4201xxQ, PCI-4202xxQ

CPZ-4201xxQ, CPZ-4202xxQ

CTP-4201xxQ, CTP-4202xxQ

/dev/ttyJ0~/dev/ttyJ127

/dev/cuj0 ~/dev/cuj127

ドライバ組み込み時変更可能

PCI-4161, PCI-4661xx

LPC-400111, LPC-4661xx

PEX-400111, PEX-4661xx, PEX-H4661xx

CTP-4661xx, CPZ-4661xx

/dev/ttyG0~/dev/ttyG127

/dev/cug0 ~/dev/cug127

ドライバ組み込み時変更可能

IUC-C2934(L), IUC-P2934(L)

IUC-x2934(L6), TIO-C2934x(L6)

IUC-x2934(L7)

/dev/ttyUSB0 RS485

/dev/ttyUSB1 RS232C

固定割り当て(変更不可)

IUC-x4668(L6), TIO-C4668x(L6)

IUC-x4668(L7)

/dev/ttyUSB0 RS232C

/dev/ttyUSB1 RS232C

/dev/ttyUSB2 RS232C

/dev/ttyUSB3 RS232C

固定割り当て(変更不可)

IUC-x4676(L6), IUC-x4855(L6)

TIO-C4676x(L6), TIO-C4855x(L6)

IUC-x4676(L7), IUC-x4855(L7)

/dev/ttyUSB0 RS232C

IUC-x3615(L6), IUC-x4326(L6)

IUC-x2980(L6),

TIO-C3615x(L6), TIO-C4326x(L6)

TIO-C2980x(L6),

IUC-x3615(L7), IUC-x4326(L7)

IUC-x2980(L7)

/dev/ttyUSB0 RS232C

/dev/ttyUSB1 RS485

固定割り当て(変更不可)

デバイ

スノー

上記以外 /dev/ttyS64~/dev/ttyS191

/dev/cua64 ~/dev/cua191

ドライバ組み込み時変更可能

PCI-4201xxQ, PCI-4202xxQ

CPZ-4201xxQ, CPZ-4202xxQ

CTP-4201xxQ, CTP-4202xxQ

固定割り当て(デフォルト 48, 49)

ドライバ組み込み時変更可能

メジャ

ー番号

割り当

て PCI-4161, PCI-4661xx

LPC-400111, LPC-4661xx

PEX-400111, PEX-4661xx, PEX-H4661xx

CTP-4661xx, CPZ-4661xx

固定割り当て(デフォルト 40, 41)

ドライバ組み込み時変更可能

Page 5: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

5

IUC-C2934(L), IUC-P2934(L)

IUC-x2934(L6), TIO-C2934x(L6)

IUC-x4668(L6), TIO-C4668x(L6)

IUC-x4676(L6), TIO-C4676x(L6)

IUC-x3615(L6), TIO-C3615x(L6)

IUC-x4326(L6), TIO-C4326x(L6)

IUC-x4855(L6), TIO-C4855x(L6)

IUC-x2980(L6), TIO-C2980x(L6)

IUC-x2934(L7), IUC-x2980(L7)

IUC-x3615(L7), IUC-x4326(L7)

IUC-x4676(L7), IUC-x4668(L7)

IUC-x4855(L7)

固定割り当て変更不可(188)

上記以外 固定割り当て(デフォルト 4, 5)

ドライバ組み込み時変更可能

ソースコードの

取り扱い

ドライバモジュール公開

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

ヘルプファイル PDF 形式

テキスト形式

Page 6: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

6

2.2 基本仕様 大ポート数 128 ポート

PCI-4161 12bps ~ 1Mbps

PCI-46610x, PCI-4202xxQ,

PEX-46610x, PEX-H46610x,

LPC-46610x,

CPZ-46610x, CPZ-4202xxQ,

CTP-4202xxQ,CTP-46610x

8bps ~ 2Mbps

PCI-4661x0, PCI-4201xxQ,

PEX-400111, PEX-4661x0, PEX-H4661x0

LPC-400111, LPC-4661x0,

CPZ-4661x0, CPZ-4201xxQ,

CTP-4201xxQ,CTP-4661x0

8bps ~ 1Mbps

IUC-C2934(L)(RS232C),

IUC-P2934(L)(RS232C),

IUC-x2934(L6)(RS232C),

TIO-C2934x(L6)(RS232C),

IUC-x2934(L7)(RS232C)

2400bps,4800bps,9600bps,19200bps,

38400bps,57600bps,115200bps,

230400bps,460800bps,921600bps

IUC-x3615(L6)(RS232C),

IUC-x4668(L6)(RS232C),

IUC-x4676(L6)(RS232C),

IUC-x4326(L6)(RS232C),

IUC-x4855(L6)(RS232C),

IUC-x2980(L6)(RS232C),

TIO-C3615x(L6)(RS232C),

TIO-C4668x(L6)(RS232C),

TIO-C4676x(L6)(RS232C),

TIO-C4326x(L6)(RS232C),

TIO-C4855x(L6)(RS232C),

TIO-C2980x(L6)(RS232C),

IUC-x3615(L7)(RS232C),

IUC-x4668(L7)(RS232C),

IUC-x4676(L7)(RS232C),

IUC-x4326(L7)(RS232C),

IUC-x4855(L7)(RS232C),

IUC-x2980(L7)(RS232C)

300bps,600bps,1200bps,1800bps,

2400bps,4800bps,9600bps,19200bps,

38400bps,57600bps,115200bps,

230400bps,460800bps,500000bps,

576000bps,921600bps,1000000bps

ボーレート

IUC-C2934(L)(RS485),

IUC-P2934(L)(RS485),

IUC-x2934(L6)(RS485),

TIO-C2934x(L6)(RS485),

IUC-x3615(L6)(RS485),

IUC-x4326(L6)(RS485),

IUC-x2980(L6)(RS485),

TIO-C3615x(L6)(RS485),

TIO-C4326x(L6)(RS485),

TIO-C2980x(L6)(RS485),

IUC-x2934(L7)(RS485),

IUC-x3615(L7)(RS485),

IUC-x4326(L7)(RS485),

IUC-x2980(L7)(RS485)

300bps,600bps,1200bps,1800bps,

2400bps,4800bps,9600bps,19200bps,

38400bps,57600bps,115200bps,

230400bps,460800bps,500000bps,

576000bps,921600bps,1000000bps,

1500000bps,2000000bps

Page 7: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

7

上記以外 2bps ~ 921600bps

IUC-C2934(L)(RS232C),

IUC-P2934(L)(RS232C),

IUC-x2934(L6)(RS232C),

TIO-C2934x(L6)(RS232C),

IUC-x2934(L7)(RS232C)

8bit データ長

上記以外 5bit ~ 8bit

パリティ なし、奇数、偶数

PCI-4161, PCI-4661xx,

PCI-4201xxQ, PCI-4202xxQ,

PEX-400111, PEX-4661xx, PEX-H4661xx,

LPC-400111, LPC-4661xx,

CPZ-4661xx,

CPZ-4201xxQ, CPZ-4202xxQ,

CTP-4201xxQ, CTP-4202xxQ,

CTP-4661xx,

IUC-C2934(L)(RS485),

IUC-P2934(L)(RS485),

IUC-x2934(L6)(RS485),

IUC-x3615(L6), IUC-x4668(L6),

IUC-x4676(L6), IUC-x4326(L6),

IUC-x4855(L6), IUC-x2980(L6),

TIO-C2934x(L6) (RS485),

TIO-C3615x(L6), TIO-C4668x(L6),

TIO-C4676x(L6), TIO-C4326x(L6),

TIO-C4855x(L6), TIO-C2980x(L6),

IUC-x2934(L7)(RS485),

IUC-x3615(L7), IUC-x4668(L7),

IUC-x4676(L7), IUC-x4326(L7),

IUC-x4855(L7), IUC-x2980(L7)

1bit, 2bit

IUC-C2934(L)(RS232C),

IUC-P2934(L)(RS232C),

IUC-x2934(L6)(RS232C),

TIO-C2934x(L6)(RS232C),

IUC-x2934(L7)(RS232C)

1bit

ストップビッ

ト長

上記以外 1bit, 1.5bit, 2bit

Page 8: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

8

IUC-C2934(L)(RS232C),

IUC-P2934(L)(RS232C),

IUC-x2934(L6)(RS232C),

TIO-C2934x(L6)(RS232C),

IUC-x3615(L6)(RS232C),

IUC-x4668(L6)(RS232C),

IUC-x4676(L6)(RS232C),

IUC-x4326(L6)(RS232C),

IUC-x4855(L6)(RS232C),

IUC-x2980(L6)(RS232C),

TIO-C3615x(L6)(RS232C),

TIO-C4668x(L6)(RS232C),

TIO-C4676x(L6)(RS232C),

TIO-C4326x(L6)(RS232C),

TIO-C4855x(L6)(RS232C),

TIO-C2980x(L6)(RS232C),

IUC-x2934(L7)(RS232C),

IUC-x3615(L7)(RS232C),

IUC-x4668(L7)(RS232C),

IUC-x4676(L7)(RS232C),

IUC-x4326(L7)(RS232C),

IUC-x4855(L7)(RS232C),

IUC-x2980(L7)(RS232C)

全二重通信

上記以外の RS232C 全二重通信、半二重通信(4 線式)

IUC-C2934(L)(RS485),

IUC-P2934(L)(RS485),

IUC-x2934(L6)(RS485),

IUC-x3615(L6)(RS485),

IUC-x4326(L6)(RS485),

IUC-x2980(L6)(RS485),

TIO-C2934x(L6)(RS485),

TIO-C3615x(L6)(RS485),

TIO-C4326x(L6)(RS485),

TIO-C2980x(L6)(RS485),

IUC-x2934(L7)(RS485),

IUC-x3615(L7)(RS485),

IUC-x4326(L7)(RS485),

IUC-x2980(L7)(RS485)

全二重通信、半二重通信(2 線式)

通信方式

上記以外の RS-485 全二重通信、半二重通信(2 線式、4線

式)

RS-232C 出力信号:RS, ER

入力信号:CS, DR, CI, CD

制御信号

RS-485 出力信号:C(全二重通信のみ *1)

入力信号:I(全二重通信のみ *1)

/proc ファイルシステム

※下記以外の型式

IUC-C2934(L)、IUC-P2934(L)、

IUC-x2934(L6)、IUC-x3615(L6)、IUC-x4668(L6)、

IUC-x4676(L6)、IUC-x4326(L6)、IUC-x4855(L6)、

IUC-x2980(L6)、

TIO-C2934x(L6)、TIO-C3615x(L6)、TIO-C4668x(L6)、

TIO-C4676x(L6)、TIO-C4326x(L6)、TIO-C4855x(L6)、

参照できる内容

・デバイスノード名

・送受信通算バイト数

・制御信号状態

Page 9: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

9

TIO-C2980x(L6)、

IUC-x2934(L7)、IUC-x3615(L7)、IUC-x4668(L7)、

IUC-x4676(L7)、IUC-x4326(L7)、IUC-x4855(L7)、

IUC-x2980(L7)

汎用 DIO 部 PCI-4201xxQ, PCI-4202xxQ

CPZ-4201xxQ, CPZ-4202xxQ

CTP-4201xxQ, CTP-4202xxQ

24 点/1 デバイス

*1) 半二重通信時、C 信号、I 信号はデータライン切り替え用に使われるため、制御することはできま

せん。

Page 10: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

10

第3章 実行手順

3.1 デバイスを動かすまで 1. インストール

インタフェースモジュールを拡張スロットに実装しシステムを起動します。

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

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

インストーラの指示に従って、インストールを行ってください。

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

Linux 用ドライバモジュールを組み込みます。

組み込むドライバは使用するインタフェースモジュールによって異なります。

インタフェースモジュール ドライバ

PCI-4201xxQ, PCI-4202xxQ

CPZ-4201xxQ, CPZ-4202xxQ

CTP-4201xxQ, CTP-4202xxQ

cp4201

PCI-4161, PCI-4661xx, LPC-400111, LPC-4661xx

PEX-400111, PEX-4661xx, PEX-H4661xx, CTP-4661xx

CPZ-4661xx

cp4161

IUC-C2934(L), IUC-P2934(L),

IUC-x2934(L6), IUC-x3615(L6),IUC-x4668(L6), IUC-x4676(L6),

IUC-x4326(L6), IUC-x4855(L6),IUC-x2980(L6),

TIO-C2934x(L6), TIO-C3615x(L6), TIO-C4668x(L6), TIO-C4676x(L6),

TIO-C4326x(L6), TIO-C4855x(L6), TIO-C2980x(L6),

IUC-x2934(L7), IUC-x3615(L7),IUC-x4668(L7), IUC-x4676(L7),

IUC-x4326(L7), IUC-x4855(L7),IUC-x2980(L7)

ifcp2105

上記以外 cp4141

例)PCI-420108Q の場合 #modprobe cp4201

Page 11: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

11

3. デバイスノード名の確認

/proc ファイルシステムを参照することにより、各通信ポートのデバイスノード名を確認します。

・cp4201, cp4161, cp4141 ドライバモジュールを組み込む製品の場合

行頭の ttyxx がデバイスノード名になります。 #cat /proc/tty/driver/cp4141 ttyS64: PCI-4141(bid=0h)CH1 [9600bps] tx:0 rx:0 ttyS65: PCI-4141(bid=0h)CH2 [9600bps] tx:0 rx:0 ttyS66: PCI-4142(bid=0h)CH1 [9600bps HD2W] tx:0 rx:0 ttyS67: PCI-4142(bid=0h)CH2 [9600bps HD2W] tx:0 rx:0 #cat /proc/tty/driver/cp4161 ttyG0: PCI-4161(bid=0h)CH1 [9600bps] tx:0 rx:0 ttyG1: PCI-4161(bid=0h)CH2 [9600bps] tx:0 rx:0

・ifcp2105 ドライバモジュールを組み込む製品の場合

・IUC-C2934(L), IUC-P2934(L), IUC-x2934(L6), TIO-C2934x(L6), IUC-x2934(L7)の場合

「ttyUSB0」, 「ttyUSB1」がデバイスノード名になります。

RS485 のデバイスノードは ttyUSB0、RS232C のデバイスノードは ttyUSB1 となります。

・IUC-x3615(L6), TIO-C3615x(L6), IUC-x3615(L7)の場合

「ttyUSB0」, 「ttyUSB1」がデバイスノード名になります。

RS485 のデバイスノードは ttyUSB1、RS232C のデバイスノードは ttyUSB0 となります。

・IUC-x4668(L6), TIO-C4668x(L6), IUC-x4668(L7)の場合

「ttyUSB0」,「ttyUSB1」,「ttyUSB2」,「ttyUSB3」がデバイスノード名になります。

RS232C の CH1, CH2, CH3, CH4 がそれぞれ「ttyUSB0」,「ttyUSB1」,「ttyUSB2」,「ttyUSB3」

となります。

・IUC-x4676(L6), TIO-C4676x(L6), IUC-x4676(L7)の場合

「ttyUSB0」がデバイスノード名になります。

・IUC-x4326(L6), TIO-C4326x(L6), IUC-x4326(L7)の場合

「ttyUSB0」, 「ttyUSB1」がデバイスノード名になります。

RS485 のデバイスノードは ttyUSB1、RS232C のデバイスノードは ttyUSB0 となります。

・IUC-x4855(L6), TIO-C4855x(L6), IUC-x4855(L7)の場合

「ttyUSB0」がデバイスノード名になります。

・IUC-x2980(L6), TIO-C2980x(L6), IUC-x2980(L7)の場合

「ttyUSB0」, 「ttyUSB1」がデバイスノード名になります。

RS485 のデバイスノードは ttyUSB1、RS232C のデバイスノードは ttyUSB0 となります。

通信ポートはデバイスノード名を指定してオープンします。

注)インタフェースモジュールが実装されていないと正しく表示されませんので、ご注意ください。

Page 12: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

12

4. プログラム作成

ここでは「ポートオープン」→「ボーレート設定」→「データ送信」→「ポートクローズ」の一連の通信

ポート制御を行うプログラムを作成します。

エディタを起動し、下記のコードを入力して下さい。

#include <stdio.h>

#include <unistd.h>

#include <fcntl.h>

#include <termios.h>

#include <errno.h>

#include <sys/ioctl.h>

#include "cp4141.h"

int main(void)

{

int fd, ret;

struct termios options;

unsigned long BaudRate;

fd = open("/dev/ttyS64", O_RDWR | O_NONBLOCK);

if (fd < 0){

perror("The port is not found. ");

return -1;

}

BaudRate = 921600;

ret = ioctl( fd, CP4141_SET_BAUDRATE, &BaudRate);

if(ret == -1) {

perror("The baudrate setup cannot be performed. ");

close(fd);

return -1;

}

ret = write(fd, "12345", 5);

if(ret == -1) {

perror("Failed to transmit the data. ");

close(fd);

return -1;

}

close(fd);

return 0;

}

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

5. コンパイル

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

Page 13: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

13

6. 実行

コンパイルすることで実行ファイル comtest ができていますので、 #./comtest と入力し、プログラムを実行してください。

より詳しいプログラム方法は、『3.2 制御手順』、およびチュートリアルをご参照ください。

Page 14: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

14

3.2 制御手順(調歩同期通信部) GPG-4141 では、Linux 標準シリアル関数を使用して通信ポートを制御します。

1.初期化

オープンシステムコールでポートをオープンします。

オープンしたポートはアプリケーション終了の際には必ずクローズシステムコールでポートをクロ

ーズして下さい。

下の例ではデバイスノード ttyS66 のポートをオープンしています。

int open_port(void)

{

int fd;

/* ポートオープン */

fd = open("/dev/ttyS66", O_RDWR);

if(fd < 0) {

perror("The port is not found. ");

}

return fd;

}

●インタフェースモジュールを特定してのポートオープン方法

ioctl 関数でポートに対して CP4141_GET_PORTINFO リクエストを指定することで、そのポートの詳細

な機能情報を取得できます。これにより、そのポートが所望のポートかどうかを調べることができま

す。

int open_cp4141port(int DeviceID, int SubsystemID, int BoardID, int ChannelNumber)

{

int index;

int tempfd;

char ttyname[256];

CP4141_PORTINFO PortInfo;

/* ポート検索("/dev/ttyS64"から順番にサーチします) */

for(index = 0; index < CP4141_MAX_PORTS; index++) {

sprintf(ttyname, "/dev/" CP4141_TTY_NAME "%d", index + 64);

tempfd = open(ttyname, O_RDWR | O_NDELAY);

if(tempfd < 0) continue;

if(ioctl(tempfd, CP4141_GET_PORTINFO, &PortInfo) < 0) {

close(tempfd);

return -1;

}

if (PortInfo.DeviceID == DeviceID &&

PortInfo.SubsystemID == SubsystemID &&

PortInfo.BoardID == BoardID &&

PortInfo.ChannelNumber == ChannelNumber) {

return tempfd;

}

}

return -1;

Page 15: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

15

}

int main(void)

{

int fd;

/* ポートオープン */

fd = open_cp4141port(4144, 0x1, 0, 1);

if(fd < 0) {

perror("The port is not found. ");

return -1;

}

}

上の例では PCI-4144(RSW1 設定値が 0)のチャンネル 1をオープンしています。

ポートのオープンが完了したら、通信パラメータを設定します。tcgetattr 関数は現在の設定値を取

得し、必要な項目に対して termios 構造体のパラメータを変更します。

tcsetattr 関数で行います。設定例を以下に示します。

int setup_port(int fd)

{

struct termios tty_config;

/* 現在の設定値を取得 */

tcgetattr(fd, &tty_config);

/* 以下の条件で通信設定を行う */

/* データ長 8bit、1 ストップビット */

/* フロー制御なし、ローカルエコーなし */

tty_config.c_cflag &= ~(CRTSCTS | CSIZE);

tty_config.c_cflag |= (CS8 | CLOCAL | CREAD);

tty_config.c_iflag &= ~(IXON | IXOFF | ICRNL | ISTRIP);

tty_config.c_oflag = 0;

tty_config.c_lflag &= ~(ICANON | ECHO);

if(tcsetattr(fd, TCSANOW, &tty_config) == -1) {

perror("The port setup cannot be performed. ");

return -1;

}

return 0;

}

Page 16: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

16

●termios で設定できないボーレートの指定方法

termios では下記の 18 種類のボーレートに設定することができます。

50bps, 75bps, 110bps, 134bps, 150bps, 200bps, 300bps, 600bps, 1200bps, 1800bps,

2400bps, 4800bps, 9600bps, 19200bps, 38400bps, 57600bps, 115200bps, 230400bps

※カーネル 2.6.32-5 では上記に加え、下記のボーレートを設定することができます。

460800bps, 500000bps, 576000bps, 921600bps, 1000000bps, 1500000bps, 2000000bps

これ以外のボーレートに設定する場合、ボーレート設定用 ioctl リクエストを使用します。

下の例ではボーレートを 921600bps に設定しています。

int setup_port(int fd)

{

struct termios tty_config;

unsigned long BaudRate;

/* 通信設定(ボーレートの設定はここでは行わない) */

tcgetattr(fd, &tty_config);

tty_config.c_cflag &= ~(CRTSCTS | CSIZE);

tty_config.c_cflag |= (CS8 | CLOCAL | CREAD);

tty_config.c_iflag &= ~(IXON | IXOFF | ICRNL | ISTRIP);

tty_config.c_oflag = 0;

tty_config.c_lflag &= ~(ICANON | ECHO);

if(tcsetattr(fd, TCSANOW, &tty_config) == -1) {

perror("The port setup cannot be performed. ");

return -1;

}

/* ボーレートを 921600bps に設定 */

BaudRate = 921600;

if(ioctl(fd, CP4141_SET_BAUDRATE, &BaudRate) == -1) {

perror("The baudrate setup cannot be performed. ");

return -1;

}

return 0;

}

Page 17: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

17

2.送信

データ送信する際には、termios の write 関数を使用します。

データ送信例を以下に示します。

void send_data(int fd)

{

char SendBuffer[256];

size_t SendLength;

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

strcpy(SendBuffer, "The quick brown fox jumps over the lazy dog. ");

/* データ長の取得 */

SendLength = strlen(SendBuffer);

/* データ送信 */

write(fd, SendBuffer, SendLength);

}

3.受信

受信バッファ内に格納されているデータを取得するには、termios の read 関数を使用します。以下

に例を示します。

#define MAX_RECEIVE_LENGTH 128

int receive_data(int fd)

{

int ret;

char RecvBuffer[MAX_RECEIVE_LENGTH];

/* 受信を行います。 */

ret = read(fd, RecvBuffer, MAX_RECEIVE_LENGTH);

if(ret < 0) return ret;

/* 受信したデータを表示します。 */

if(ret > 0) {

RecvBuffer[ret] = '/0';

printf("%s", RecvBuffer);

}

return ret;

}

Page 18: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

18

4.半二重制御

半二重通信を行うには、半二重設定用 ioctl リクエストの CP4141_SET_DUPLEX_MODE を呼び出し通信

方式を切り替える必要があります。

下の例では通信方式を 2線式半二重に切り替えています。

int set_duplexmode(int fd)

{

int ret;

unsigned long DuplexMode;

/* 2 線式半二重に設定 */

DuplexMode = CP4141_HALF_DUPLEX_2W;

ret = ioctl(fd, CP4141_SET_DUPLEX_MODE, &DuplexMode);

return ret;

}

●データラインの切り替え(cp4141 ドライバの場合)

データラインの切り替えは制御信号設定用 ioctl リクエスト TIOCMBIS,TIOCMBIC を使用します。

データ送信を行う場合、TIOCMBIS リクエストで送信有効・受信無効に切り替え、データ送信を行

い、データ送信後 TIOCMBIC リクエストで送信無効・受信有効に切り替えます。

int half_send_data(int fd)

{

int ret;

unsigned int flag;

/* 送信有効・受信無効に切り換え */

flag = TIOCM_RTS;

ioctl(fd, TIOCMBIS, &flag);

/* データを送信 */

ret = write(fd, "12345", 5);

if(ret < 0) return ret;

/* 全ての送信データが回線に送出されるまで待つ */

while(1) {

ioctl(fd, TIOCSERGETLSR, &flag);

if(flag & TIOCSER_TEMT) {

break;

}

}

/* 送信無効・受信有効に切り換え */

flag = TIOCM_RTS;

ioctl(fd, TIOCMBIC, &flag);

return 0;

}

Page 19: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

19

注意点として、送信関数呼び出し後のデータライン切り替えのタイミングが早いと、全ての送信デー

タが回線に送出される前にラインが切り替えられ、送信データが欠けてしまいます。

終データが回線に送出されるのを待ってから、TIOCMBIC リクエストでラインの切り替えを行って

ください。

終データが回線に送出されたかどうかは、TIOCSERGETLSR リクエスト戻り値の TIOCSER_TEMT ビッ

トで確認することができます。

write 関数リターン時、全ての送信データが回線に送出されたわけではないのでご注意ください。

●データラインの切り替え(cp4201/cp4161 ドライバの場合)

データラインの切り替えはハードウェアで自動的に行います。

データラインの切り替えのタイミングは CP4141_SET_HS_FUNCTION リクエストで設定します。

●データラインの切り替え(ifcp2105 ドライバの場合)

データラインの切り替えはハードウェアで自動的に行います。

データラインの切り替えのタイミングは下記となります。

1 ÷ 設定されたボーレート

5.終了処理

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

int close_port(int fd)

{

int ret;

ret = close(fd);

if(ret < 0) {

perror("The close operation was failed.");

return ret;

}

return 0;

}

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

Page 20: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

20

3.3 制御手順(汎用 DIO 部)

基本的な制御の手順は以下の通りです。(記述例は C言語です。)

1.初期化

デバイスをオープンし、デバイスハンドルを得ます。

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

/* デバイス初期化 */

lRet = SdioOpen(nDevice);

if (lRet != IFSDIO_ERROR_SUCCESS) { /* オープンに失敗 */

return -1;

}

第 1 引数には、型式・チャンネル・RSW1 設定値により一意に定まるデバイス番号を指定します。

型式・チャンネル・RSW1 設定とデバイス番号の対応は以下のとおりになります。 型式 RSW1

設定値

チャンネル デバイス

番号

デバイス番号識別子

1 33 IFSDIO_DEVICENO_TTYQ_0_1 0

2 34 IFSDIO_DEVICENO_TTYQ_0_2

1 35 IFSDIO_DEVICENO_TTYQ_1_1 1

2 36 IFSDIO_DEVICENO_TTYQ_1_2

… … … …

1 63 IFSDIO_DEVICENO_TTYQ_F_1

CPZ-420108Q, CPZ-420116Q,

CPZ-420208Q, CPZ-420216Q,

CTP-420108Q, CTP-420116Q,

CTP-420208Q, CTP-420216Q,

PCI-420108Q, PCI-420116Q,

PCI-420208Q, PCI-420216Q

※CPZ-420108Q, CPZ-420208Q,

CTP-420108Q, CTP-420208Q,

PCI-420108Q,PCI-420208Q には、

チャンネル 2は存在しません。

F

2 64 IFSDIO_DEVICENO_TTYQ_F_2

2.入力方法

SdioInputByte/SdioInputWord/SdioInputDword 関数を用いて、指定した接点の状態を読み出します。

// IN1~IN8 の 8 点の接点状態を入力します。

lRet = SdioInputByte( nDevice, IFSDIO_IN1_8, &Value );

// IN1~IN16 の 16 点の接点状態を入力します。

lRet = SdioInputWord( nDevice, IFSDIO_IN1_16, &Value );

// IN1~IN32 の 32 点の接点状態を入力します。

lRet = SdioInputDword( nDevice, IFSDIO_IN1_32, &Value );

上記方法では、8 / 16 / 32 点ごとに、区切られた範囲の接点状態を入力しますが、以下のように、

入力する接点の範囲を指定して入力することも出来ます。

// IN5~IN7 の 3 点の接点状態を入力します。

lRet = SdioInputPoint( nDevice, &nBuffer[0], 5, 3 );

配列 nBuffer は、3つ以上の要素が用意されていなければなりません。

Page 21: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

21

3.出力方法

SdioOutputByte/SdioOutputWord/SdioOutputDword 関数を用いて、出力を変化させます。

// OUT1~OUT8 の 8 点の出力を変化させします。

lRet = SdioOutputByte( nDevice, IFSDIO_OUT1_8, Value );

// OUT1~OUT16 の 16 点の出力を変化させます。

lRet = SdioOutputWord( nDevice, IFSDIO_OUT1_16, Value );

// OUT1~OUT32 の 32 点の出力を変化させします。

lRet = SdioOutputDword( nDevice, IFSDIO_OUT1_32, Value );

上記方法では、8 / 16 / 32 点ごとに、区切られた範囲の出力状態を変化させますが、以下のように、

出力する範囲を指定することも出来ます。

// OUT5~OUT7 の 3 点の出力を変化させます。

lRet = SdioOutputPoint( nDevice, &nBuffer[0], 5, 3 );

配列 nBuffer は、3 つ以上の要素が用意され、あらかじめ nBuffer[0]~[2]へ、 OUT3~5 へ出力さ

せる値がセットされていなければなりません。

4.STB 入力時のデータを取り込む

1) STB 入力によるラッチ機能を有効にします。

// STB の立下りエッジでデータをラッチする。

lRet = SdioSetLatchLogic( nDevice, IFSDIO_FALL_EDGE );

2) STB 入力割り込み時の動作を登録します。

// コールバック関数 CallBackProc を登録

lRet = SdioSetEvent( nDevice, NULL, 0, NULL, CallBackProc, 0);

上記はコールバックを用いた例です。

SdioSetEvent 関数では、コールバック処理を登録させることが出来ます。

STB 入力時に、SdioSetEvent 関数で指定したコールバック関数が呼び出されます。

コールバック関数の仕様は、CallBackProc を参照してください。

3) STB 入力時の割り込みを有効にします。

// STB の立下りエッジで割り込みを発生させる

lRet = SdioSetEventLogic( nDevice, IFSDIO_FALL_EDGE );

Page 22: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

22

4) CallBackProc 関数の中で、STB 入力によってラッチされた接点状態を読み出します。

// IN1~IN8 の 8 点の接点状態を入力します。

lRet = SdioInputLatchByte( nDevice, IFSDIO_IN1_8, &Value );

// IN1~IN16 の 16 点の接点状態を入力します。

lRet = SdioInputLatchWord( nDevice, IFSDIO_IN1_16, &Value );

// IN1~IN32 の 32 点の接点状態を入力します。

lRet = SdioInputLatchDword( nDevice, IFSDIO_IN1_32, &Value );

上記方法では、8 / 16 / 32 点ごとに、区切られた範囲の接点状態を入力しますが、以下のように、

入力する接点の範囲を

指定して入力することも出来ます。

// IN5~IN7 の 3 点の接点状態を入力します。

lRet = SdioInputLatchPoint( nDevice, &nBuffer[0], 5, 3 );

配列 nBuffer は、3つ以上の要素が用意されていなければなりません。

5.終了方法

1) STB 入力割り込み処理を登録している場合、割り込みを無効にしてから、登録している処理を解除

します。

// STB 入力割り込みを解除

lRet = SdioSetEventLogic( nDevice, 0);

// STB 入力割り込み時の処理を解除

lRet = SdioSetEvent( nDevice, NULL, 0, NULL, NULL, 0);

2) SdioClose 関数でデバイスをクローズします。

lRet = SdioClose( nDevice);

Page 23: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

23

3.4 ドライバ組み込みオプション 本ドライバ組み込み時、以下のパラメータを設定することができます。

※ifcp2105 ドライバモジュールでは対応しておりません。ご注意下さい。

cp4141 ドライバ

パラメータ 内容

cp4141_ttyname TTY デバイス名を設定します。

デフォルトは ttyS です。

cp4141_calloutname コールアウトデバイス名を設定します。

デフォルトは cua です。

cp4141_ttymajor TTY デバイスのメジャー番号を設定します。

デフォルトは 4です。

cp4141_calloutmajor コールアウトデバイスのメジャー番号を設定します。

デフォルトは 5です。

cp4141_minorstart シリアルポートのマイナー番号が割り振られる先頭値です。

デフォルトは 64 です。

ドライバ組み込み直後の RS-485 の通信方式を設定します。

デフォルトは全二重です。

設定値は以下のとおりです。

full 全二重通信

half2w 2 線式半二重通信

cp4141_duplexmode

half4w 4 線式半二重通信

cp4161 ドライバ

パラメータ 内容

cp4161_ttyname TTY デバイス名を設定します。

デフォルトは ttyG です。

cp4161_calloutname コールアウトデバイス名を設定します。

デフォルトは cug です。

cp4161_ttymajor TTY デバイスのメジャー番号を設定します。

デフォルトは 40 です。

cp4161_calloutmajor コールアウトデバイスのメジャー番号を設定します。

デフォルトは 41 です。

cp4161_minorstart シリアルポートのマイナー番号が割り振られる先頭値です。

デフォルトは 0です。

ドライバ組み込み直後の RS-485 の通信方式を設定します。

デフォルトは全二重です。

設定値は以下のとおりです。

full 全二重通信

half2w 2 線式半二重通信

cp4161_duplexmode

half4w 4 線式半二重通信

Page 24: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

24

cp4201 ドライバ

パラメータ 内容

cp4201_ttyname TTY デバイス名を設定します。

デフォルトは ttyJ です。

cp4201_calloutname コールアウトデバイス名を設定します。

デフォルトは cuj です。

cp4201_ttymajor TTY デバイスのメジャー番号を設定します。

デフォルトは 48 です。

cp4201_calloutmajor コールアウトデバイスのメジャー番号を設定します。

デフォルトは 49 です。

cp4201_minorstart シリアルポートのマイナー番号が割り振られる先頭値です。

デフォルトは 0です。

ドライバ組み込み直後の RS-485 の通信方式を設定します。

デフォルトは全二重です。

設定値は以下のとおりです。

full 全二重通信

half2w 2 線式半二重通信

cp4201_duplexmode

half4w 4 線式半二重通信

オプション指定例

#modprobe cp4141 cp4141_ttyname=ttyH cp4141_ttymajor=45 cp4141_minorstart=0

TTY デバイス名を ttyH、TTY デバイスのメジャー番号を 45、マイナー番号の先頭値を 0 に設定し

ます。

Page 25: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

25

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

できます。

※IUC-C2934(L)、IUC-P2934(L)、IUC-x2934(L6) 、IUC-x3615(L6)、IUC-x4668(L6)、IUC-x4676(L6)、

IUC-x4326(L6)、IUC-x4855(L6)、IUC-x2980(L6)、

TIO-C2934x(L6)、TIO-C3615x(L6)、TIO-C4668x(L6)、TIO-C4676x(L6)、TIO-C4326x(L6)、

TIO-C4855x(L6)、TIO-C2980x(L6)、

IUC-x2934(L7) 、IUC-x3615(L7)、IUC-x4668(L7)、IUC-x4676(L7)、IUC-x4326(L7)、IUC-x4855(L7)、

IUC-x2980(L7)は対応しておりません。

ご注意下さい。

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

項目 内容

デバイスノード デバイスノード名を表示します。

製品型式 製品型式を表示します。

括弧内は RSW1 設定値(CardBus シリーズの場合カード ID 番号)を表

します。

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

現在設定されている通信方式を表示します。

RS-485 のみ表示されます。

FD 全二重通信に設定されています。

HD2W 2 線式半二重通信に設定されています。

通信方式

HD4W 4 線式半二重通信に設定されています。

送受信通算バイト数 現在まで送受信したデータの通算バイト数です。

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/cp4141 ttyS64: PCI-4141(bid=0h)CH1 [9600bps] tx:812 rx:4312 RTS|CTS ttyS65: PCI-4141(bid=0h)CH2 [9600bps] tx:4312 rx:812 RTS|CTS ttyS66: PCI-4142(bid=0h)CH1 [9600bps HD2W] tx:0 rx:0 ttyS67: PCI-4142(bid=0h)CH2 [9600bps HD2W] tx:0 rx:0

Page 26: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

26

第4章 リファレンス

4.1 関数一覧(調歩同期通信部)

No 関数名 機能

1 open ポートのオープンを行います。

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

3 tcsetattr ポートの通信設定を行います。

4 tcgetattr ポートの通信設定を取得します。

5 write データを送信します。

6 read 受信データを取得します。

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

8 ioctl 通信ポートに対する各種制御を行います。

一覧に掲示した関数が Linux 標準シリアル関数(termios)です。

termios の詳細内容につきましては、専門書籍、Linux 関連の Web site を御覧下さい。

以下に Linux のシリアル通信に関する情報源を紹介します。

全般

http://linuxjf.sourceforge.jp/JFdocs/Serial-HOWTO.html

プログラミング

http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/termios.3.html

http://linuxjf.sourceforge.jp/JFdocs/Serial-Programming-HOWTO.html

SETSERIAL

http://linuxjm.sourceforge.jp/html/setserial/man8/setserial.8.html

その他

http://linuxjf.sourceforge.jp/

http://linuxjm.sourceforge.jp/

Page 27: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

27

4.2 IOCTL リクエスト一覧(調歩同期通信部)

制御信号の操作、ブレーク信号送信などは ioctl システムコールで行います。

ボーレート、全二重/半二重の設定などの、当社通信製品固有の処理は拡張 ioctl で制御を行います。

拡張 ioctl については、次項の『4.3 拡張 ioctl 仕様』をご参照ください。

No リクエスト 機能

1 TCSBRK ブレーク信号の送信を行います。

2 TIOCMGET 制御信号の状態取得

RS-232C RS,ER 信号を ON にします。

RS-485 全二重 C 信号を ON にします。

3 TIOCMBIS

RS-485 半二重 送信ラインを有効にします。

RS-232C RS,ER 信号を OFF にします。

RS-485 全二重 C 信号を OFF にします。

4 TIOCMBIC

RS-485 半二重 受信ラインを有効にします。

5 TIOCMSET RS,ER の出力状態を個別に変換します。

6 TIOCGSERIAL ポート情報の取得を行います。※1 ※2

7 TIOCSSERIAL ポート情報の設定を行います。※2

8 TIOCSERGETLSR 通信コントローラの送信バッファの状態を取得します。※2

9 CP4141_SET_BAUDRATE ボーレートの設定を行います。

10 CP4141_GET_BAUDRATE ボーレートの取得を行います。

11 CP4141_SET_DUPLEX_MODE 全二重/半二重の設定を行います。

12 CP4141_GET_DUPLEX_MODE 全二重/半二重の取得を行います。

13 CP4141_SET_FIFO_TRIGGER FIFO トリガレベルを設定します。

14 CP4141_GET_FIFO_TRIGGER FIFO トリガレベルを取得します。

15 CP4141_SET_HSFUNCTION 拡張通信設定を行います。

16 CP4141_GET_HSFUNCTION 拡張通信設定の取得を行います。

17 CP4141_GET_PORTINFO 通信ポートのハードウェア情報を取得します。

※1 64Bit 版の場合 serial_struct 構造体の iomap_base メンバにてアドレス取得ができます。

port メンバには-1 がはいります。

※2 下記の製品型式には対応していません。ご注意下さい。

IUC-C2934(L)、IUC-P2934(L)、IUC-x2934(L6)、 IUC-x3615(L6)、IUC-x4668(L6)、IUC-x4676(L6)、

IUC-x4326(L6)、IUC-x4855(L6)、IUC-x2980(L6)、

TIO-C2934x(L6)、TIO-C3615x(L6)、TIO-C4668x(L6)、TIO-C4676x(L6)、TIO-C4326x(L6)、

TIO-C4855x(L6)、TIO-C2980x(L6)、

IUC-x2934(L7)、 IUC-x3615(L7)、IUC-x4668(L7)、IUC-x4676(L7)、IUC-x4326(L7)、IUC-x4855(L7)、

IUC-x2980(L7)

Page 28: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

28

4.3 拡張 ioctl 仕様(調歩同期通信部)

1. CP4141_SET_BAUDRATE ボーレートを設定します。

int ioctl(

int fd,

CP4141_SET_BAUDRATE,

unsigned long* BaudRate

);

パラメータ

fd open システムコールで取得したシリアルポートのファイルディスクリプタを指定します。

BaudRate ボーレートを格納した変数へのポインタを指定します。

戻り値

関数が成功すると、0が返ります。

関数が失敗すると、-1 が返ります。エラー情報は errno に格納されます。

識別子 エラー内容

EBADF fd が有効なディスクリプタではない。

EFAULT BaudRate がアクセス不可能なメモリを参照している。

ENOTTY fd がキャラクタ・スペシャル・デバイスを参照していない。

EINVAL BaudRate の値が不正である。

備考

1. Linux 標準シリアル関数は以下の 18 種類のボーレートしか選択できません。

本 API を呼び出すことによりこれ以外のボーレートにも設定できます。

50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,

115200,230400

2. シリアル通信製品には複数の基準クロックが搭載されていますが、本 API はボーレートから

自動的に 適な基準クロックを算出し設定します。アプリケーションで基準クロックを意識

する必要はありません。

下記の製品型式には対応していませんのでご注意下さい。

IUC-C2934(L)、IUC-P2934(L)、IUC-x2934(L6)、IUC-x3615(L6)、IUC-x4668(L6)、IUC-x4676(L6)、

IUC-x4326(L6)、IUC-x4855(L6)、IUC-x2980(L6)、TIO-C2934x(L6)、TIO-C3615x(L6)、

TIO-C4668x(L6)、TIO-C4676x(L6)、TIO-C4326x(L6)、TIO-C4855x(L6)、TIO-C2980x(L6)、

IUC-x2934(L7)、IUC-x3615(L7)、IUC-x4668(L7)、IUC-x4676(L7)、IUC-x4326(L7)、IUC-x4855(L7)、

IUC-x2980(L7)

使用例

unsigned long BaudRate;

BaudRate = 230400;

ioctl(fd, CP4141_SET_BAUDRATE, &BaudRate);

ボーレートを 230400bps に設定します。

Page 29: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

29

2. CP4141_GET_BAUDRATE ボーレートを取得します。

int ioctl(

int fd,

CP4141_GET_BAUDRATE,

unsigned long* BaudRate

);

パラメータ

fd open システムコールで取得したシリアルポートのファイルディスクリプタを指定します。

BaudRate ボーレートを格納する変数へのポインタを指定します。

戻り値

関数が成功すると、0が返ります。

関数が失敗すると、-1 が返ります。エラー情報は errno に格納されます。

識別子 エラー内容

EBADF fd が有効なディスクリプタではない。

EFAULT BaudRate がアクセス不可能なメモリを参照している。

ENOTTY fd がキャラクタ・スペシャル・デバイスを参照していない。

備考

デフォルトは 9600bps に設定されています。

下記の製品型式には対応していませんのでご注意下さい。

IUC-C2934(L)、IUC-P2934(L)、IUC-x2934(L6)、IUC-x3615(L6)、IUC-x4668(L6)、IUC-x4676(L6)、

IUC-x4326(L6)、IUC-x4855(L6)、IUC-x2980(L6)、TIO-C2934x(L6)、TIO-C3615x(L6)、

TIO-C4668x(L6)、TIO-C4676x(L6)、TIO-C4326x(L6)、TIO-C4855x(L6)、TIO-C2980x(L6)、

IUC-x2934(L7)、IUC-x3615(L7)、IUC-x4668(L7)、IUC-x4676(L7)、IUC-x4326(L7)、IUC-x4855(L7)、

IUC-x2980(L7)

使用例

unsigned long BaudRate;

ioctl(fd, CP4141_GET_BAUDRATE, &BaudRate);

ボーレートの取得を行います。

Page 30: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

30

3. CP4141_SET_DUPLEX_MODE 通信方式(全二重/半二重)を設定します。

int ioctl(

int fd,

CP4141_SET_DUPLEX_MODE,

unsigned long* DuplexMode );

パラメータ

fd open システムコールで取得したシリアルポートのファイルディスクリプタを指定します。

DuplexMode 全二重/半二重設定の情報を格納した変数のポインタを指定します。

識別子 モード

CP4141_FULL_DUPLEX 全二重通信

CP4141_HALF_DUPLEX_2W 2 線式半二重通信

CP4141_HALF_DUPLEX_4W 4 線式半二重通信

戻り値

関数が成功すると、0が返ります。

関数が失敗すると、-1 が返ります。エラー情報は errno に格納されます。

識別子 エラー内容

EBADF fd が有効なディスクリプタではない。

EFAULT DuplexMode がアクセス不可能なメモリを参照している。

ENOTTY fd がキャラクタ・スペシャル・デバイスを参照していない。

EINVAL DuplexMode の値が不正である。もしくは関数が製品に対応していない。

備考

この関数は、下記の製品型式に対応していませんのでご注意下さい。

PCI-4141, PCI-4141P, PCI-4141PE ,PCI-4144, PCI-4146, PCI-4148C,

PCI-4150(シリアルポート部), PCI-4155,

CTP-4141, CTP-4141P, CTP-4142, CTP-4142P, CTP-4144, CTP-4146, CTP-4148,

CPZ-4141, CPZ-4141P, CPZ-4142, CPZ-4142P, CPZ-4144, CPZ-4146, CPZ-4148

IUC-x4668(L6)、IUC-x4676(L6)、IUC-x4855(L6)、IUC-x4668(L7)、IUC-x4676(L7)、IUC-x4855(L7)

TIO-C4668x(L6)、TIO-C4676x(L6)、TIO-C4855x(L6)、

下記製品は RS232C 側のみ対応していません。

IUC-C2934(L)、IUC-P2934(L)、IUC-x2934(L6)、IUC-x3615(L6)、IUC-x4326(L6)、IUC-x2980(L6)、

IUC-x3615(L7)、IUC-x4326(L7)、IUC-x2980(L7)

TIO-C2934(L6)、TIO-C3615x(L6)、TIO-C4326x(L6)、TIO-C2980x(L6)、IUC-x2934(L7)、

Page 31: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

31

使用例

unsigned long DuplexMode;

DuplexMode = CP4141_HALF_DUPLEX_2W;

ioctl(fd, CP4141_SET_DUPLEX_MODE, &DuplexMode);

2 線式半二重に設定します。

備考

<2 線式半二重通信>

下記のような接続で、Tラインのみ接続して半二重通信を行います。

<4 線式半二重通信>

下記のような接続で、2線式と違い Tラインと Rラインを分けて半二重通信を行います。

T :送信ライン

SG :信号グランド T:送信ライン

SG:信号グランド

T:送信ライン

SG:信号グランド

R:受信ライン

Page 32: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

32

4. CP4141_GET_DUPLEX_MODE 通信方式(全二重/半二重)を取得します。

int ioctl(

int fd,

CP4141_GET_DUPLEX_MODE,

unsigned long* DuplexMode );

パラメータ

fd open システムコールで取得したシリアルポートのファイルディスクリプタを指定します。

DuplexMode 全二重/半二重設定の情報を格納する変数のポインタを指定します。

識別子 モード

CP4141_FULL_DUPLEX 全二重通信

CP4141_HALF_DUPLEX_2W 2 線式半二重通信

CP4141_HALF_DUPLEX_4W 4 線式半二重通信

戻り値

関数が成功すると、0が返ります。

関数が失敗すると、-1 が返ります。エラー情報は errno に格納されます。

識別子 エラー内容

EBADF fd が有効なディスクリプタではない。

EFAULT DuplexMode がアクセス不可能なメモリを参照している。

ENOTTY fd がキャラクタ・スペシャル・デバイスを参照していない。

備考

この関数は、下記の製品には対応していませんのでご注意下さい。

IUC-x4668(L6)、IUC-x4676(L6)、IUC-x4855(L6)、IUC-x4668(L7)、IUC-x4676(L7)、IUC-x4855(L7)

TIO-C4668x(L6)、TIO-C4676x(L6)、TIO-C4855x(L6)、

下記製品は RS232C 側のみ対応していません。

IUC-C2934(L)、IUC-P2934(L)、IUC-x2934(L6)、IUC-x3615(L6)、IUC-x4326(L6)、IUC-x2980(L6)、

IUC-x2934(L7)、IUC-x3615(L7)、IUC-x4326(L7)、IUC-x2980(L7)

TIO-C2934(L6)、TIO-C3615x(L6)、TIO-C4326x(L6)、TIO-C2980x(L6)、

使用例

unsigned long DuplexMode;

ioctl(fd, CP4141_GET_DUPLEX_MODE, &DuplexMode);

全二重/半二重の取得を行います。

Page 33: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

33

5. CP4141_SET_FIFO_TRIGGER FIFO トリガレベルを設定します。

Int ioctl(

int fd,

CP4141_SET_FIFO_TRIGGER,

struct fifo_trigger_level * FifoTrigger

);

パラメータ

fd open システムコールで取得したシリアルポートのファイルディスクリプタを指定します。

FifoTrigger FIFO トリガレベルが格納された構造体へのポインタを指定します。

詳細は「fifo_trigger_level構造体」を参照ください。

戻り値

関数が成功すると、0が返ります。

関数が失敗すると、-1 が返ります。エラー情報は errno に格納されます。

識別子 エラー内容

EBADF fd が有効なディスクリプタではない。

EFAULT FifoTrigger がアクセス不可能なメモリを参照している。

ENOTTY fd がキャラクタ・スペシャル・デバイスを参照していない。

EINVAL FifoTrigger の値が不正である。

使用例

struct fifo_trigger_level FifoTrigger;

FifoTrigger.fifotx = UART_FCR654_T_TRIGGER_8;

FifoTrigger.fiforx = UART_FCR_TRIGGER_4;

ioctl(fd, CP4141_SET_FIFO_TRIGGER, &FifoTrigger);

送信 FIFO トリガレベルを 8、受信 FIFO トリガレベルを 16 に設定します。(PCI-4141 の場合)

備考

本 ioctl リクエストは GPG-4141 ver1.0x の TIOCSFIFOTRG リクエストと同仕様です。

下記の型式は、拡張の受信トリガレベルとして 1~7までの設定も可能です。

設定方法は下記のように「UART_FCR4661_R_TRIGGER_EN+設定値」を FifoTrigger.fiforx に設定

します。

拡張受信トリガ設定可能型式

PCI-4201xxQ, PCI-4202xxQ, PCI-4661xx, LPC-400111, LPC-4661xx,

CPZ-4201xxQ, CPZ-4202xxQ, CPZ-4661xx,

CTP-4201xxQ, CTP-4202xxQ, CTP-4661xx,

PEX-400111, PEX-4661xx, PEX-H4661xx

Page 34: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

34

下記の製品型式には対応していませんのでご注意下さい。

IUC-C2934(L)、IUC-P2934(L)、IUC-x2934(L6)、IUC-x3615(L6)、IUC-x4668(L6)、IUC-x4676(L6)、

IUC-x4326(L6)、IUC-x4855(L6)、IUC-x2980(L6)、TIO-C2934x(L6)、TIO-C3615x(L6)、

TIO-C4668x(L6)、TIO-C4676x(L6)、TIO-C4326x(L6)、TIO-C4855x(L6)、TIO-C2980x(L6)、

IUC-x2934(L7)、IUC-x3615(L7)、IUC-x4668(L7)、IUC-x4676(L7)、IUC-x4326(L7)、IUC-x4855(L7)、

IUC-x2980(L7)

FifoTrigger.fiforx = UART_FCR4661_R_TRIGGER_EN + 5;

受信トリガレベルを 5に設定します。

Page 35: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

35

6. CP4141_GET_FIFO_TRIGGER FIFO トリガレベルを取得します。

int ioctl(

int fd,

CP4141_GET_FIFO_TRIGGER,

struct fifo_trigger_level * FifoTrigger );

パラメータ

fd open システムコールで取得したシリアルポートのファイルディスクリプタを指定します。

FifoTrigger FIFO トリガレベルを格納する構造体へのポインタを指定します。

詳細は「fifo_trigger_level構造体」を参照ください。

戻り値

関数が成功すると、0が返ります。

関数が失敗すると、-1 が返ります。エラー情報は errno に格納されます。

識別子 エラー内容

EBADF fd が有効なディスクリプタではない。

EFAULT FifoTrigger がアクセス不可能なメモリを参照している。

ENOTTY fd がキャラクタ・スペシャル・デバイスを参照していない。

使用例

struct fifo_trigger_level FifoTrigger;

ioctl(fd, CP4141_GET_FIFO_TRIGGER, &FifoTrigger);

FIFO トリガレベルを取得します。

備考

本 ioctl リクエストは GPG-4141 ver1.0x の TIOCGFIFOTRG リクエストと同仕様です。

下記の製品型式には対応していませんのでご注意下さい。

IUC-C2934(L)、IUC-P2934(L)、IUC-x2934(L6)、IUC-x3615(L6)、IUC-x4668(L6)、IUC-x4676(L6)、

IUC-x4326(L6)、IUC-x4855(L6)、IUC-x2980(L6)、TIO-C2934x(L6)、TIO-C3615x(L6)、

TIO-C4668x(L6)、TIO-C4676x(L6)、TIO-C4326x(L6)、TIO-C4855x(L6)、TIO-C2980x(L6)、

IUC-x2934(L7)、IUC-x3615(L7)、IUC-x4668(L7)、IUC-x4676(L7)、IUC-x4326(L7)、IUC-x4855(L7)、

IUC-x2980(L7)

Page 36: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

36

7. CP4141_SET_HS_FUNCTION 拡張通信パラメータを設定します。

int ioctl(

int fd,

CP4141_SET_HS_FUNCTION,

CP4141_HSFUNC * HsFunc

);

パラメータ

fd open システムコールで取得したシリアルポートのファイルディスクリプタを指定します。

HsFunc 拡張通信パラメータが格納された構造体へのポインタを指定します。

詳細は「CP4141_HSFUNC構造体」を参照ください。

戻り値

関数が成功すると、0が返ります。

関数が失敗すると、-1 が返ります。エラー情報は errno に格納されます。

識別子 エラー内容

EBADF fd が有効なディスクリプタではない。

EFAULT HsFunc がアクセス不可能なメモリを参照している。

ENOTTY fd がキャラクタ・スペシャル・デバイスを参照していない。

EINVAL 通信設定に誤りがあります。

備考

この関数は、下記の製品型式に対応していませんのでご注意下さい。

PCI-4141, PCI-4141P, PCI-4141PE, PCI-4142, PCI-4142P, PCI-4142PE

PCI-4144, PCI-4145, PCI-4146, PCI-4147, PCI-4148C, PCI-4149C

PCI-4150(シリアルポート部), PCI-4155,

CTP-4141, CTP-4141P, CTP-4142, CTP-4142P, CTP-4144, CTP-4145

CTP-4146, CTP-4147, CTP-4148, CTP-4149, CPZ-4141, CPZ-4141P, CPZ-4142, CPZ-4142P,

CPZ-4144, CPZ-4145, CPZ-4146, CPZ-4147, CPZ-4148, CPZ-4149

IUC-C2934(L)、IUC-P2934(L)、IUC-x2934(L6)、IUC-x3615(L6)、IUC-x4668(L6)、IUC-x4676(L6)、

IUC-x4326(L6)、IUC-x4855(L6)、IUC-x2980(L6)、TIO-C2934x(L6)、TIO-C3615x(L6)、

TIO-C4668x(L6)、TIO-C4676x(L6)、TIO-C4326x(L6)、TIO-C4855x(L6)、TIO-C2980x(L6)、

IUC-x2934(L7)、IUC-x3615(L7)、IUC-x4668(L7)、IUC-x4676(L7)、IUC-x4326(L7)、

IUC-x4855(L7)、IUC-x2980(L7)

Page 37: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

37

使用例

CP4141_HSFUNC HsFunc;

ioctl(fd, CP4141_GET_HS_FUNCTION, &HsFunc);

HsFunc.TxCSelect = CP4141_TXC_INTERNAL;

HsFunc.RxCSelect = CP4141_RXC_EXTERNAL;

HsFunc.HoldTime = 10000;

HsFunc.SetupTime = 15000;

ioctl(fd, CP4141_SET_HS_FUNCTION, &HsFunc);

拡張通信パラメータを以下のように設定します。 送信クロック

受信クロック

ホールド時間

セットアップ時間

内部

外部

10ms

15ms

備考

各製品型式でサポートしている拡張通信パラメータは下記のとおりです。 製品型式 送信クロッ

ク選択

受信クロッ

ク選択

ホールド

時間

セットアッ

プ時間

モニタ

モード

T・C

信号設定

PCI-4161 ○ ○ ○ ○ × ×

PCI-46610x,PCI-4202xxQ,

CPZ-46610x,CPZ-4202xxQ,

CTP-4202xxQ,CTP-46610x,

LPC-46610x,

PEX-46610x, PEX-H46610x

× × ○ ○ × ○

PCI-4661x0,PCI-4201xxQ,

CPZ-4661x0,CPZ-4201xxQ,

CTP-4201xxQ,CTP-4661x0,

PEX-400111,PEX-4661x0,

LPC-400111,LPC-4661x0

PEX-H4661x0

× × ○ ○ × ×

上記以外 × × × × × ×

Page 38: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

38

8. CP4141_GET_HS_FUNCTION 拡張通信パラメータを取得します。

int ioctl(

int fd, /* ファイルハンドル */

CP4141_GET_HS_FUNCTION,

CP4141_HSFUNC * HsFunc /* 拡張通信設定構造体 */ );

パラメータ

fd open システムコールで取得したシリアルポートのファイルディスクリプタを指定します。

HsFunc 拡張通信パラメータを格納する構造体へのポインタを指定します。

詳細は「CP4141_HSFUNC構造体」を参照ください。

戻り値

関数が成功すると、0が返ります。

関数が失敗すると、-1 が返ります。エラー情報は errno に格納されます。

識別子 エラー内容

EBADF fd が有効なディスクリプタではない。

EFAULT HsFunc がアクセス不可能なメモリを参照している。

ENOTTY fd がキャラクタ・スペシャル・デバイスを参照していない。

備考

下記の製品型式には対応していませんのでご注意下さい。

IUC-C2934(L)、IUC-P2934(L)、IUC-x2934(L6)、IUC-x3615(L6)、IUC-x4668(L6)、IUC-x4676(L6)、

IUC-x4326(L6)、IUC-x4855(L6)、IUC-x2980(L6)、TIO-C2934x(L6)、TIO-C3615x(L6)、

TIO-C4668x(L6)、TIO-C4676x(L6)、TIO-C4326x(L6)、TIO-C4855x(L6)、TIO-C2980x(L6)、

IUC-x2934(L7)、IUC-x3615(L7)、IUC-x4668(L7)、IUC-x4676(L7)、IUC-x4326(L7)、IUC-x4855(L7)、

IUC-x2980(L7)

使用例

CP4141_HSFUNC HsFunc;

ioctl(fd, CP4141_GET_HS_FUNCTION, &HsFunc);

拡張通信パラメータを取得します。

Page 39: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

39

9. CP4141_GET_PORTINFO ポートのハードウェア情報を取得します。

int ioctl(

int fd,

CP4141_GET_PORTINFO,

CP4141_PORTINFO * PortInfo

);

パラメータ

fd open システムコールで取得したシリアルポートのファイルディスクリプタを指定します。

PortInfo 通信ポートのハードウェア情報を格納する構造体へのポインタを指定します。

戻り値

関数が成功すると、0が返ります。

関数が失敗すると、-1 が返ります。エラー情報は errno に格納されます。

識別子 エラー内容

EBADF fd が有効なディスクリプタではない。

EFAULT PortInfo がアクセス不可能なメモリを参照している。

ENOTTY fd がキャラクタ・スペシャル・デバイスを参照していない。

備考

下記の製品型式には対応していませんのでご注意下さい。

IUC-C2934(L)、IUC-P2934(L)、IUC-x2934(L6)、IUC-x3615(L6)、IUC-x4668(L6)、IUC-x4676(L6)、

IUC-x4326(L6)、IUC-x4855(L6)、IUC-x2980(L6)、TIO-C2934x(L6)、TIO-C3615x(L6)、

TIO-C4668x(L6)、TIO-C4676x(L6)、TIO-C4326x(L6)、TIO-C4855x(L6)、TIO-C2980x(L6)、

IUC-x2934(L7)、IUC-x3615(L7)、IUC-x4668(L7)、IUC-x4676(L7)、IUC-x4326(L7)、IUC-x4855(L7)、

IUC-x2980(L7)

参照

3.2 制御手順『1. 初期化』

使用例

int ret;

CP4141_PORTINFO PortInfo;

ret = ioctl(fd, CP4141_GET_PORTINFO, &PortInfo);

ハードウェア情報の取得を行います。

Page 40: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

40

4.4 構造体(調歩同期通信部)

1. fifo_trigger_level 構造体

FIFO トリガレベルを設定する構造体です。

struct fifo_trigger_level {

unsigned int fifotx;

unsigned int fiforx;

};

メンバ 説明

fifotx 送信 FIFO トリガレベルを設定します。

送信 FIFO 内のデータサイズがトリガレベルになったとき送信割り込みが発生します。

※ PCI-4201xxQ, PCI-4202xxQ, PCI-4161,PCI-4661xx,

CTP-4661xx, CPZ-4661xx, CTP-4201xxQ, CTP-4202xxQ,CPZ-4201xxQ, CPZ-4202xxQ,

LPC-400111, LPC-4661xx,

PEX-400111, PEX-4661xx, PEX-H4661xx

で本パラメータは無効です。

識別子 FIFO トリガレベル

UART_FCR654_T_TRIGGER_8 8

UART_FCR654_T_TRIGGER_16 16

UART_FCR654_T_TRIGGER_32 32

UART_FCR654_T_TRIGGER_56 56

※デフォルトは UART_FCR654_T_TRIGGER_8 が設定されています。

fiforx

受信 FIFO トリガレベルを設定します。

FIFO バッファに蓄積されたデータを抜き取る閾値です。

FIFO トリガレベル 識別子

PCI-4201xxQ, PCI-4202xxQ, CPZ-4201xxQ,

CPZ-4202xxQ, CTP-4201xxQ,CTP-4202xxQ,

PCI-4661xx, LPC-400111, LPC-4661xx,

PEX-400111, PEX-4661xx, PEX-H4661xx

CTP-4661xx,CPZ-4661xx

PCI-4161 PCI-415

5

左 に 表

記 さ れ

て い な

い型式

UART_FCR4661_R_TRIGGER_EN 1~7 ※

UART_FCR_TRIGGER_1 8 8 1 8

UART_FCR_TRIGGER_4 16 16 4 16

UART_FCR_TRIGGER_8 128 128 8 56

UART_FCR_TRIFFER_14 256 256 14 60

※デフォルトは UART_FCR_TRIGGER_1 が設定されています。

PCI-4661xx, PCI-H4661xx, CTP-4661xx,CPZ-4661xx は UART_FCR4661_R_TRIGGER_EN を

使用すると、1~7 の受信 FIFO トリガレベルを設定できます。使用方法は

UART_FCR4661_R_TRIGGER_EN に 1~7 の設定したい値を足した値を fiforx に入力して

ください。

Page 41: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

41

2. CP4141_HSFUNC 構造体

拡張通信設定を格納する構造体です。

typedef struct {

unsigned int TxCSelect;

unsigned int RxCSelect;

unsigned int HoldTime;

unsigned int SetupTime;

unsigned int Mode;

unsigend int SignalMode;

} CP4141_HSFUNC, *PCP4141_HSFUNC;

メンバ 説明

TxCSelect 送信に関して内部クロック/外部クロックの選択を行います。

識別子 内容

CP4141_TXC_INTERNAL 送信に内部クロックを使用 ※デフォルト

CP4141_TXC_EXTERNAL 送信に外部クロックを使用

RxCSelect 受信に関して内部クロック/外部クロックの選択を行います。

識別子 内容

CP4141_RXC_INTERNAL 受信に内部クロックを使用 ※デフォルト

CP4141_RXC_EXTERNAL 受信に外部クロックを使用

HoldTime ホールドタイムは型式によって意味合いが違いますので注意してください。

PCI-4161・・・半二重制御を行う際に、データを出し終えてから送信要求信号(RS)を無効

にするまでの時間(ホールドタイム(下記、図の H))を設定します。単位はμs で、設定可

能範囲は 1~1500000(1.5s)です。

その他型式・・・半二重制御を行う際に、送信データをインタフェースモジュールから

出し終えてから送信有効信号(TXE)または送信要求信号(RS)が無効になるまでの時間(ホ

ールドタイム(下記、図の H))を設定します。単位はμs で、設定可能範囲は 1~150000

(150ms)です。

RS

CS

S H

送信データ

RS

S H

送信データ

Page 42: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

42

設定範囲は下記のとおりです。

型式 RATE× CLK [μs]

PCI-4661xx, PCI-4201xxQ, PCI-4202xxQ,

CTP-4661xx, CTP-4201xxQ, CTP-4202xxQ,

CPZ-4661xx, CPZ-4201xxQ, CPZ-4202xxQ

LPC-400111, LPC-4661xx

PEX-400111,PEX-4661xx, PEX-H4661xx,

RATE = 0 ~ 15

CLK = 1, 10, 100, 1000, 10000

PCI-4161 RATE = 0 ~ 15

CLK = 1, 10, 100, 1000, 10000, 100000

上記以外の型式 0~99999(μs)

※デフォルトは 0に設定されています

SetupTime セットアップタイムは型式によって意味合いが違いますので注意してください。

PCI-4161 の場合・・・半二重制御を行う際に、送信可信号(CS)が有効になってからデー

タを出し始めるまでの時間(セットアップタイム(下記、図の S))を設定します。単位はμ

sで、設定可能範囲は 1~1500000(1.5s)です。

その他型式の場合・・・半二重制御を行う際に、送信有効信号(TXE)または送信要求信号

(RS)が有効になってからインタフェースモジュールが送信データを出し始めるまでの

時間(セットアップタイム(下記、図の S))を設定します。単位はμs で、設定可能範囲

は 1~150000(150ms)です。

設定範囲は下記のとおりです。

型式 RATE× CLK [μs]

PCI-4661xx, PCI-4201xxQ,PCI-4202xxQ,

CTP-4661xx, CTP-4201xxQ,CTP-4202xxQ,

CPZ-4661xx, CPZ-4201xxQ,

CPZ-4202xxQ

PEX-400111, PEX-4661xx, PEX-H4661xx,

LPC-400111, LPC-4661xx,

RATE = 0 ~ 15

CLK = 1, 10, 100, 1000, 10000

PCI-4161 RATE = 0 ~ 15

CLK = 1, 10, 100, 1000, 10000, 100000

上記以外の型式 0~99999(μs)

※デフォルトは 0に設定されています

RS

データ

S H

RS

CS

データ

S H

Page 43: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

43

Mode ポートの各種設定を行います。

1. モニタモード設定

識別子 内容

CP4141_MONITOR_DISABLE モニタモードを無効にします。 ※デフォルト

CP4141_MONITOR_RSCS モニタモード(RS/CS 接続)を有効にします。

CP4141_MONITOR_RSCD モニタモード(RS/CD 接続)を有効にします。

SignalMode RS-485 の T・C 信号設定を行います。

下記の C信号と T信号を 1つづつ選択し、足した値を設定してください。

信号 識別子 内容

CP4141_C_INVALID C 信号を常に無効にします。 ※デフォルト

CP4141_C_TXE TXE が’1’の時 C信号有効。TXE が’0’の時 C信号無効。

CP4141_C_NOT_TXE TXE が’1’の時 C信号無効。TXE が’0’の時 C信号有効。

C 信号

CP4141_C_VALID C 信号を常に有効にします。

CP4141_T_TXE TXE が’1’の時 T信号有効。TXE が’0’の時 T信号無効。

※デフォルト

T 信号

CP4141_T_VALID T 信号を常に有効にします。

Page 44: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

44

3. CP4141_PORTINFO 構造体

ポートのハードウェア情報が格納されている構造体です。

●32bit 版

typedef struct {

int StructVersion;

int StructLength;

int MinorNumber;

int VendorID;

int DeviceID;

int SubsystemID;

int RevisionID;

int BoardID;

int ChannelNumber;

int BaseAddress;

int IrqNumber;

} CP4141_PORTINFO, *PCP4141_PORTINFO

●64bit 版

typedef struct {

int StructVersion;

int StructLength;

int MinorNumber;

int VendorID;

int DeviceID;

int SubsystemID;

int RevisionID;

int BoardID;

int ChannelNumber;

unsigned long BaseAddress;

int IrqNumber;

} CP4141_PORTINFO, *PCP4141_PORTINFO

メンバ 説明

StructVersion 本構造体のバージョン情報です。

StructLength 本構造体のサイズです。

MinorNumber デバイスノードのマイナー番号です。

VendorID インタフェースモジュールのベンダ ID です。

DeviceID インタフェースモジュールのデバイス ID です。

SubsystemID インタフェースモジュールのサブシステム ID です。

RevisionID インタフェースモジュールのリビジョン ID です。

BoardID インタフェースモジュールの RSW1 設定値です。

ChannelNumber インタフェースモジュールのチャンネル番号です。

値は 1始まりです(チャンネル 1の場合は 1、チャンネル 2の場合は 2となりま

す)

BaseAddress 通信コントローラの I/O(またはメモリ)ポートアドレスです。

IrqNumber インタフェースモジュールの割り込み番号です。

Page 45: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

45

各インタフェースモジュールのデバイス ID、サブシステム ID は下記のとおりです。

製品型式 デバイス ID サブシステム ID

PCI-4141

PCI-4141P

4141(102Dh) 0001h

PCI-4141PE 4141(102Dh) 0011h

PCI-4142

PCI-4142P

4142(102Eh) 0001h

PCI-4142PE 4142(102Eh) 0011h

PCI-4144 4144(1030h) 0001h

PCI-4145 4145(1031h) 0001h

PCI-4146 4146(1032h) 0001h

PCI-4147 4147(1033h) 0001h

PCI-4148C(CH1~CH4) 4148(1034h) 0001h

PCI-4148C(CH5~CH8) 4148(1034h) 0002h

PCI-4149C(CH1~CH4) 4149(1035h) 0001h

PCI-4149C(CH5~CH8) 4149(1035h) 0002h

PCI-4150 4150(1036h) 0001h

PCI-4155 4155(103Bh) 0001h

PCI-4161 4161(1041h) 0001h

PCI-4646 4646(1226h) 0001h

PCI-466101 4661(1235h) 2081h

PCI-466102/P 4661(1235h) 2082h

PCI-466110 4661(1235h) 208Ah

PCI-466120/P 4661(1235h) 2094h

PCI-466130 4661(1235h) 209Eh

PCI-466104/A/P/PA 4661(1235h) 2084h

PCI-466140/A/P/PA 4661(1235h) 20A8h

PCI-466108(CH1~CH4) 4661(1235h) 2088h

PCI-466108(CH5~CH8) 4661(1235h) 2108h

PCI-466180(CH1~CH4) 4661(1235h) 20D0h

PCI-466180(CH5~CH8) 4661(1235h) 2150h

PCI-420108Q 4201(1069h) 2088h

PCI-420116Q 4201(1069h) 2090h

PCI-420208Q 4202(106Ah) 2088h

PCI-420216Q 4202(106Ah) 2090h

LPC-400111 4001(FA1h) 208Bh

LPC-466102 4661(1235h) 2082h

LPC-466104 4661(1235h) 2084h

LPC-466120 4661(1235h) 2094h

LPC-466140 4661(1235h) 20A8h

Page 46: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

46

製品型式 デバイス ID サブシステム ID

CTP-4141

CPZ-4141

CTP-4141P

CPZ-4141P

4141(102Dh) 0101h

CTP-4142

CTP-4142P

4142(102Eh) 0101h

CTP-4144

CPZ-4144

4144(1030h) 0101h

CTP-4145

CPZ-4145

4145(1031h) 0101h

CTP-4146

CPZ-4146

4146(1032h) 0101h

CTP-4147

CPZ-4147

4147(1033h) 0101h

CTP-4148(CH1~CH4)

CPZ-4148(CH1~CH4)

4148(1034h) 0101h

CTP-4148(CH5~CH8)

CPZ-4148(CH5~CH8)

4148(1034h) 0102h

CTP-4149(CH1~CH4)

CPZ-4149(CH1~CH4)

4149(1035h) 0101h

CTP-4149(CH5~CH8)

CPZ-4149(CH5~CH8)

4149(1035h) 0102h

CTP-466102

CPZ-466102/P

4661(1235h) 2482h

CTP-466120

CPZ-466120/P

4661(1235h) 2494h

CPZ-466104/A/P/PA 4661(1235h) 2484h

CPZ-466140/A/P/PA 4661(1235h) 24A8h

CPZ-466108(CH1~CH4) 4661(1235h) 2488h

CPZ-466108(CH5~CH8) 4661(1235h) 2508h

CPZ-466180(CH1~CH4) 4661(1235h) 24D0h

CPZ-466180(CH5~CH8) 4661(1235h) 2550h

CPZ-420108Q

CTP-420108Q

4201(1069h) 2488h

CPZ-420116Q

CTP-420116Q

4201(1069h) 2490h

CPZ-420208Q

CTP-420208Q

4202(106Ah) 2488h

CPZ-420216Q

CTP-420216Q

4202(106Ah) 2490h

製品型式 デバイス ID サブシステム ID

PEX-400111 4001(FA1h) 2C8Bh

PEX-466102 4661(1235h) 2C82h

PEX-466104 4661(1235h) 2C84h

PEX-466120 4661(1235h) 2C94h

PEX-466140 4661(1235h) 2CA8h

PEX-H466102/P 4661(1235h) 2082h

PEX-H466120/P 4661(1235h) 2094h

PEX-H466104PA 4661(1235h) 2084h

PEX-H466140PA 4661(1235h) 20A8h

PEX-H466108(CH1~CH4) 4661(1235h) 2088h

PEX-H466108(CH5~CH8) 4661(1235h) 2108h

PEX-H466180(CH1~CH4) 4661(1235h) 20D0h

PEX-H466180(CH5~CH8) 4661(1235h) 2150h

Page 47: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

47

4.5 関数一覧(汎用 DIO 部) ※ これらの関数は、下記の製品型式のみ対応していますのでご注意下さい。

PCI/CTP/CPZ-420108Q, PCI/CTP/CPZ-420116Q, PCI/CTP/CPZ-420208Q, PCI/CTP/CPZ-420216Q

No 関数名 機能

1 SdioOpen 通信モジュールのデジタル入出力デバイスのオープンを行い、

以後のアクセスを行えるようにします。

2 SdioClose 通信モジュールのデジタル入出力デバイスのクローズを行い、

アクセスのために使用されていた各種リソースの解放を行い、

以後のアクセスを禁止します。

3 SdioInputPoint 任意の点数の入力接点の状態を読み込みます。

4 SdioOutputPoint 任意の点数の出力接点の出力を制御します。

5 SdioInputByte 指定した 8点の入力接点の状態を読み込みます。

(BYTE アクセス)

6 SdioInputWord 指定した 16 点の入力接点の状態を読み込みます。

(WORD アクセス)

7 SdioInputDword 指定した 32 点の入力接点の状態を読み込みます。

(DWORD アクセス)

8 SdioOutputByte 指定した 8点の出力接点の出力を制御します。

(BYTE アクセス)

9 SdioOutputWord 指定した 16 点の出力接点の出力を制御します。

(WORD アクセス)

10 SdioOutputDword 指定した 32 点の出力接点の出力を制御します。

(DWORD アクセス)

11 SdioSetLatchLogic 入力信号をラッチする STB 信号の論理を指定します。

12 SdioGetLatchLogic 入力信号をラッチする STB 信号の論理を取得します。

13 SdioInputLatchPoint 任意の点数のラッチされた入力接点の状態を読み込みます。

14 SdioInputLatchByte ラッチされた 32 点の入力接点の状態を読み込みます。

(BYTE アクセス)

15 SdioInputLatchWord ラッチされた 32 点の入力接点の状態を読み込みます。

(WORD アクセス)

16 SdioInputLatchDword ラッチされた 32 点の入力接点の状態を読み込みます。

(DWORD アクセス)

17 SdioSetEvent STB 信号の変化による割り込みが発生したときに実行するイベ

ントを指定します。

18 SdioSetEventLogic STB 信号の割り込み発生論理を設定します。

19 SdioGetEventLogic STB 信号の割り込み発生論理の設定を取得します。

20 SdioGetTmoduleStatus 通信モジュールの接続状態を取得します。

21 SdioSetTmodulePower 通信モジュールの電源を制御します。

22 CallBackProc STB 信号の割り込み発生によってコールされるコールバック関

数のプレースホルダです。

Page 48: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

48

4.6 関数個別説明(汎用 DIO 部)

1. SdioOpen 通信モジュールのデジタル入出力デバイスのオープンを行い、以後のデバイスへのアクセスを行える

ようにします。

long SdioOpen(

int nDevice // デバイス番号

);

パラメータ

nDevice オープンするデバイス番号を指定します。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

lRet = SdioOpen( nDevice );

if(lRet != IFSDIO_ERROR_SUCCESS) {

/* オープンに失敗 */

printf("Fail to open the device\n");

}

通信モジュールのデジタル入出力デバイスをオープンします。

Page 49: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

49

2. SdioClose 通信モジュールのデジタル入出力デバイスのクローズを行い、通信モジュールのデジタル入出力デバ

イスへアクセスのために使用されていた各種リソースの解放を行い、以後の通信モジュールのデジタ

ル入出力デバイスへのアクセスを禁止します。

long SdioClose(

int nDevice // デバイス番号

);

パラメータ

nDevice デバイス番号を指定します。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

lRet = SdioClose( nDevice );

通信モジュールのデジタル入出力デバイスのクローズ処理を行います。

Page 50: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

50

3. SdioInputPoint 任意の点数の入力接点の状態を読み込みます。指定した開始接点番号から 1接点ずつ変数に格納され

ます。

long SdioInputPoint(

int nDevice, // デバイス番号

unsinged char *pbBuffer, // 接点状態を返す変数へのポインタ

unsigned long ulStartNum, // 入力開始接点番号

unsigned long ulInputNum // 入力接点数

);

パラメータ

nDevice デバイス番号を指定します。

pbBuffer デバイスから読み取ったデータを受け取るバッファを指すポインタです。

ulStartNum

入力開始接点番号 1~24 を指定してください。

入力接点の指定と、信号は下記のように対応しています。

接点番号 1 2 3 … 31 32

入力信号 IN1 IN2 IN3 … IN31 IN32

1: Low レベル 0:High レベル

ulInputNum

入力接点数を指定してください。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

unsigned char bBuffer[8];

lRet = SdioInputPoint( nDevice, &bBuffer[0], 16, 8 );

IN16~23 の状態を入力します。

Page 51: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

51

4. SdioOutputPoint 任意の点数の出力接点の出力を制御します。指定した開始接点番号から 1接点づつ変数に格納された

データで接点を制御します。

long SdioOutputPoint(

int nDevice, // デバイス番号

unsinged char *pbBuffer, // 出力状態を収めている変数へのポインタ

unsigned long ulStartNum, // 出力開始接点番号

unsigned long ulOutputNum // 出力接点数

);

パラメータ

nDevice デバイス番号を指定します。

pbBuffer デバイスから出力させるデータを収めている変数へのポインタです。

ulStartNum 出力開始接点番号 1~24 を指定してください。

出力接点の指定と、信号は下記のように対応しています。

接点番号 1 2 3 … 31 32

出力信号 OUT1 OUT2 OUT3 … OUT31 OUT32

1: Low レベル 0:High レベル

ulOutputNum 出力接点数を指定してください。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

unsigned char bBuffer[8] = { 1, 0, 0, 1, 0, 1, 1, 0};

lRet = SdioOutputPoint( nDevice, &bBuffer[0], 16, 8 );

OUT16~23 に値を出力します。

Page 52: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

52

5. SdioInputByte 接点 8点分のデータを読み込み、1バイト(8ビット)の変数に格納します。

long SdioInputByte(

int nDevice, // デバイス番号

unsigned long ulInputNo, // 入力接点位置

unsigned char *pbValue // 接点状態を返す変数へのポインタ

);

パラメータ

nDevice デバイス番号を指定します。

ulInputNo 読み込む接点を下記の識別子で指定します。

IFSDIO_IN1_8 IN1~IN8 の 8 点分のデータを読み込みます。

IFSDIO_IN9_16 IN9~IN16 の 8 点分のデータを読み込みます。

IFSDIO_IN17_24 IN17~IN24 の 8 点分のデータを読み込みます。

pbValue 読み込まれたデータを格納する変数へのポインタを指定してください。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

備考

取得したデータは下記のようにビット毎に接点と対応しています。 ビット Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

IFSDIO_IN1_8 IN8 IN7 IN6 IN5 IN4 IN3 IN2 IN1

IFSDIO_IN9_16 IN16 IN15 IN14 IN13 IN12 IN11 IN10 IN9

IFSDIO_IN17_24 IN24 IN23 IN22 IN21 IN20 IN19 IN18 IN17

1:Low レベル 0:High レベル

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

unsigned char bValue;

lRet = SdioInputByte( nDevice, IFSDIO_IN1_8, &bValue );

IN1~8 の状態を bValue に入力します。

Page 53: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

53

6. SdioInputWord 接点 16 点分のデータを読み込み、1ワード(16 ビット)の変数に格納します。

long SdioInputWord(

int nDevice, // デバイス番号

unsigned long ulInputNo, // 入力接点位置

unsigned short *pwValue // 接点状態を返す変数へのポインタ

);

パラメータ

nDevice デバイス番号を指定します。

ulInputNo 読み込む接点を下記の識別子で指定します。

IFSDIO_IN1_16 IN1~IN16 の 16 点分のデータを読み込みます。

IFSDIO_IN17_32 IN17~IN32 の 16 点分のデータを読み込みます。

24 点入力の端子台では、IN25~IN32 のデータは取得できません。

またここのデータは全て 0になります。

pwValue 読み込まれたデータを格納する変数へのポインタを指定してください。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

備考

取得したデータは下記のようにビット毎に接点と対応しています。 ビット Bit15 Bit14 Bit13 … Bit2 Bit1 Bit0

IFSDIO_IN1_16 IN16 IN15 IN14 … IN3 IN2 IN1

IFSDIO_IN17_32 IN32 IN31 IN30 … IN19 IN18 IN17

1:Low レベル 0:High レベル

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

unsigned short wValue;

lRet = SdioInputWord( nDevice, IFSDIO_IN1_16, &wValue );

IN1~16 の状態を wValue に入力します。

Page 54: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

54

7. SdioInputDword 接点 32 点分のデータを読み込み、1ダブルワード(32 ビット)の変数に格納します。

long SdioInputDword(

int nDevice, // デバイス番号

unsigned long ulInputNo, // 入力接点位置

unsigned long *pdwValue // 接点状態を返す変数へのポインタ

);

パラメータ

nDevice デバイス番号を指定します。

ulInputNo 読み込む接点を下記の識別子で指定します。

IFSDIO_IN1_32 IN1~IN32 の 32 点分のデータを読み込みます。

24 点入力の端子台では IN25~IN32 のデータは取得できません。

またここのデータは全て 0になります。

pdwValue 読み込まれたデータを格納する変数へのポインタを指定してください。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

備考

取得したデータは下記のようにビット毎に接点と対応しています。 ビット Bit31 Bit30 Bit29 … Bit2 Bit1 Bit0

IFSDIO_IN1_32 IN32 IN31 IN30 … IN3 IN2 IN1

1:Low レベル 0:High レベル

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

unsigned long dwValue;

lRet = SdioInputDword( nDevice, IFSDIO_IN1_32, &dwValue );

IN1~32 の状態を dwValue に入力します。

Page 55: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

55

8. SdioOutputByte 接点 8点分の出力を制御します。

long SdioOutputByte(

int nDevice, // デバイス番号

unsigned long ulOutputNo, // 出力接点位置

unsigned char bValue // 出力データ

);

パラメータ

nDevice デバイス番号を指定します。

ulOutputNo データを出力する接点を下記の識別子で指定します。

IFSDIO_OUT1_8 OUT1~OUT8 の 8 点分のデータを出力します。

IFSDIO_OUT9_16 OUT9~OUT16 の 8 点分のデータを出力します。

IFSDIO_OUT17_24 OUT17~OUT24 の 8 点分のデータを出力します。

bValue 指定した接点へ出力するデータを指定してください。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

備考

出力データは下記のようにビット毎に接点と対応しています。 ビット Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

IFSDIO_OUT1_8 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1

IFSDIO_OUT9_16 OUT6 OUT15 OUT14 OUT13 OUT12 OUT11 OUT10 OUT9

IFSDIO_OUT17_24 OUT24 OUT23 OUT22 OUT21 OUT20 OUT19 OUT18 OUT17

1:Low レベル 0:High レベル

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

lRet = SdioOutputByte( nDevice, IFSDIO_OUT1_8, 0x12);

OUT1~8 へ 12h を出力します。

Page 56: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

56

9. SdioOutputWord 接点 16 点分の出力を制御します。

long SdioOutputWord(

int nDevice, // デバイス番号

unsigned long ulOutputNo, // 出力接点位置

unsigned short wValue // 出力データ

);

パラメータ

nDevice デバイス番号を指定します。

ulOutputNo データを出力する接点を下記の識別子で指定します。

IFSDIO_OUT1_16 OUT1~OUT16 の 16 点分のデータを出力します。

IFSDIO_OUT17_24 OUT17~OUT32 の 16 点分のデータを出力します。

24 点出力の端子台では OUT25~OUT32 から出力できません。

pwValue 指定した接点へ出力するデータを指定してください。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

備考

出力データは下記のようにビット毎に接点と対応しています。 ビット Bit15 Bit14 Bit13 … Bit2 Bit1 Bit0

IFSDIO_OUT1_16 OUT16 OUT15 OUT14 … OUT3 OUT2 OUT1

IFSDIO_OUT17_32 OUT32 OUT31 OUT30 … OUT19 OUT18 OUT17

1:Low レベル 0:High レベル

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

lRet = SdioOutputWord( nDevice, IFSDIO_OUT1_16, 0x1234);

OUT1~16 へ 1234h を出力します。

Page 57: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

57

10. SdioOutputDword

接点 32 点分の出力を制御します。

long SdioOutputDword(

int nDevice, // デバイス番号

unsigned long ulOutputNo, // 出力接点位置

unsigned long dwValue // 出力データ

);

パラメータ

nDevice デバイス番号を指定します。

ulOutputNo データを出力する接点を下記の識別子で指定します。

IFSDIO_OUT1_32 OUT1~OUT32 の 32 点分のデータを出力します。

24 点出力の端子台では OUT25~OUT32 から出力できません。

dwValue 指定した接点へ出力するデータを指定してください。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

備考

出力データは下記のようにビット毎に接点と対応しています。 ビット Bit31 Bit30 Bit29 … Bit2 Bit1 Bit0

IFSDIO_OUT1_32 OUT32 OUT31 OUT30 … OUT3 OUT2 OUT1

1:Low レベル 0:High レベル

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

lRet = SdioOutputDword( nDevice, IFSDIO_OUT1_32, 0x123456);

OUT1~32 へ 00123456h を出力します。

Page 58: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

58

11. SdioSetLatchLogic

入力信号をラッチする STB 信号の論理を指定します。

long SdioSetLatchLogic(

int nDevice, // デバイス番号

unsigned char bLatchLogic // STB 入力論理

);

パラメータ

nDevice デバイス番号を指定します。

bLatchLogic 入力信号をラッチする STB 信号の論理を以下の識別子で指定します。

IFSDIO_RISE_EDGE STB 信号の立ち上がりでラッチします。

IFSDIO_FALL_EDGE STB 信号の立ち下がりでラッチします。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

備考

ラッチするエッジは立ち上がりと立ち下がりを両方同時に指定することもできます。

STB 信号の変化により割り込みを発生させることができますが、この割り込みの設定とラッチの設

定は独立して指定できます。

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

lRet = SdioSetLatchLogic( nDevice, IFSDIO_RISE_EDGE );

STB 信号の立ち上がりで入力信号をラッチするように設定します。

Page 59: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

59

12. SdioGetLatchLogic

入力信号をラッチする STB 信号の論理を取得します。

long SdioGetLatchLogic(

int nDevice, // デバイス番号

unsigned char *pbLatchLogic // STB 入力論理を返す変数へのポインタ

);

パラメータ

nDevice デバイス番号を指定します。

pbLatchLogic STB 信号の論理を格納する変数へのポインタを指定してください。

STB 信号の論理を以下の識別子で格納されます。

IFSDIO_RISE_EDGE STB 信号の立ち上がりでラッチします。

IFSDIO_FALL_EDGE STB 信号の立ち下がりでラッチします。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

unsigned char bLatchLogic;

lRet = SdioGetLatchLogic( nDevice, &bLatchLogic );

STB 信号をラッチする論理を取得します。

Page 60: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

60

13. SdioInputLatchPoint

任意の点数のラッチされた入力接点の状態を読み込みます。指定した開始接点番号から 1接点ずつ変

数に格納されます。

long SdioInputLatchPoint(

int nDevice, // デバイス番号

unsigned char *pbBuffer, // 接点状態を返す変数へのポインタ

unsigned long ulStartNum, // 入力開始接点番号

unsigned long ulInputNum // 入力接点数

);

パラメータ

nDevice デバイス番号を指定します。

pbBuffer デバイスから読み取ったデータを受け取るバッファを指すポインタです。

ulStartNum 入力開始接点番号 1~24 を指定してください。ピン IN/OUT1 が 1 に対応します。

ulInputNum 入力接点数を指定してください。

入力接点の指定と、信号は下記のように対応しています。

接点番号 1 2 3 … 31 32

入力信号 IN1 IN2 IN3 … IN31 IN32

1: Low レベル 0:High レベル

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

unsigned char bBuffer[8];

lRet = SdioInputLatchPoint( nDevice, &bBuffer[0], 16, 8 );

IN16~23 の入力接点状態を、bBuffer へ返します。

Page 61: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

61

14. SdioInputLatchByte

ラッチされた接点 8点分のデータを読み込み、1バイト(8ビット)の変数に格納します。

long SdioInputLatchByte(

int nDevice, // デバイス番号

unsigned long ulInputNo, // 入力接点位置

unsigned char *pbValue // 接点状態を返す変数へのポインタ

);

パラメータ

nDevice デバイス番号を指定します。

ulInputNo 読み込む接点を下記の識別子で指定します。

IFSDIO_IN1_8 IN1~IN8 の 8 点分のデータを読み込みます。

IFSDIO_IN9_16 IN9~IN16 の 8 点分のデータを読み込みます。

IFSDIO_IN17_24 IN17~IN24 の 8 点分のデータを読み込みます。

pbValue 入力した接点状態を返す変数へのポインタ。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

備考

取得したデータは下記のようにビット毎に接点と対応しています。 ビット Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

IFSDIO_IN1_8 IN8 IN7 IN6 IN5 IN4 IN3 IN2 IN1

IFSDIO_IN9_16 IN16 IN15 IN14 IN13 IN12 IN11 IN10 IN9

IFSDIO_IN17_24 IN24 IN23 IN22 IN21 IN20 IN19 IN18 IN17

1:Low レベル 0:High レベル

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

unsigned char bValue;

lRet = SdioInputLatchByte( nDevice, IFSDIO_IN1_8, &bValue );

STB 信号によってラッチされた IN1~IN8 の状態を bValue に入力します。

Page 62: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

62

15. SdioInputLatchWord

ラッチされた接点 16 点分のデータを読み込み、1ワード(16 ビット)の変数に格納します。

long SdioInputLatchWord(

int nDevice, // デバイス番号

unsigned long ulInputNo, // 入力接点位置

unsigned short *pwValue // 接点状態を返す変数へのポインタ

);

パラメータ

nDevice デバイス番号を指定します。

ulInputNo 読み込む接点を下記の識別子で指定します。

IFSDIO_IN1_16 IN1~IN16 の 16 点分のデータを読み込みます。

IFSDIO_IN17_32 IN17~IN32 の 16 点分のデータを読み込みます。

24 点入力の端子台では IN25~IN32 のデータは取得できません。

またここのデータは全て 0になります。

pwValue 読み込まれたデータを格納する変数へのポインタを指定してください。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

備考

取得したデータは下記のようにビット毎に接点と対応しています。 ビット Bit15 Bit14 Bit13 … Bit2 Bit1 Bit0

IFSDIO_IN1_16 IN16 IN15 IN14 … IN3 IN2 IN1

IFSDIO_IN17_32 IN32 IN31 IN30 … IN19 IN18 IN17

1:Low レベル 0:High レベル

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

unsigned short wValue;

lRet = SdioInputLatchWord( nDevice, IFSDIO_IN1_16, &wValue );

STB 信号によってラッチされた IN1~IN16 の状態を wValue に入力します。

Page 63: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

63

16. SdioInputLatchDword

ラッチされた接点 32 点分のデータを読み込み、1ダブルワード(32 ビット)の変数に格納します。

long SdioInputLatchDword(

int nDevice, // デバイス番号

unsigned long ulInputNo, // 入力接点位置

unsigned long *pdwValue // 接点状態を返す変数へのポインタ

);

パラメータ

nDevice デバイス番号を指定します。

ulInputNo 読み込む接点を下記の識別子で指定します。

IFSDIO_IN1_32 IN1~IN32 の 32 点分のデータを読み込みます。

24 点入力の端子台では IN25~IN32 のデータは取得できません。

またここのデータは全て 0になります。

pdwValue 読み込まれたデータを格納する変数へのポインタを指定してください。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

備考

取得したデータは下記のようにビット毎に接点と対応しています。 ビット Bit31 Bit30 Bit29 … Bit2 Bit1 Bit0

IFSDIO_IN1_32 IN32 IN31 IN30 … IN3 IN2 IN1

1:Low レベル 0:High レベル

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

unsigned long dwValue;

lRet = SdioInputLatchDword( nDevice, IFSDIO_IN1_32, &dwValue );

STB 信号によってラッチされた IN1~IN32 の状態を dwValue に入力します。

Page 64: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

64

17. SdioSetEvent

STB 信号の変化による割り込みが発生したときに実行するイベントを指定します。

long SdioSetEvent(

int nDevice, // デバイス番号

unsigned long ulWindowHandle, // 予約

unsigned long ulWindowMessage, // 予約

unsigned long ulEventHandle, // 予約

LPSDIOCALLBACK pCallBackProc, // コールバック関数へのポインタ

unsigned long ulUserData // ユーザパラメータ

);

パラメータ

nDevice デバイス番号を指定します。

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

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

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

pCallBackProc 割り込み発生時に呼び出されるコールバック関数へのポインタを指定します。

ulUserData コールバック関数およびメッセージハンドラへ引き渡すユーザ・データを指定してください。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

使用例

void EventHandler(unsigned long ulEventFactor, unsigned long ulUserData)

{

}

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

lRet = SdioSetEvent( nDevice, 0, 0, 0, EventHandler, 0 );

STB 割り込み発生時に呼び出されるコールバック関数を登録します。

Page 65: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

65

18. SdioSetEventLogic

STB 信号の割り込み発生論理と、通信モジュールの異常発生割り込みを設定します。

long SdioSetEventLogic(

int nDevice, // デバイス番号

unsigned char bEventLogic // STB 信号割り込み発生論理

);

パラメータ

nDevice デバイス番号を指定します。

bEventLogic STB 信号の割り込み論理を以下の識別子で指定します。

IFSDIO_RISE_EDGE STB 信号の立ち上がりで割り込みを発生します。

IFSDIO_FALL_EDGE STB 信号の立ち下がりで割り込みを発生します。

通信モジュールの異常発生割り込みを以下の識別子で指定します。

IFSDIO_CONNECT_EVENT 通信モジュールとの切断で割り込みを発生します。

IFSDIO_POWER_EVENT 通信モジュールの電源電圧異常で割り込みを発生します。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

備考

割り込みを発生する論理は立ち上がりと立ち下がりを両方同時に指定することもできます。

STB 信号の変化により入力信号の状態をラッチできますが、このラッチの設定と割り込みの設定

は独立して指定できます。

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

lRet = SdioSetEventLogic( nDevice, IFSDIO_FALL_EDGE);

STB 信号の割り込み発生論理を立ち下がりに設定します。

Page 66: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

66

19. SdioGetEventLogic

STB 信号の割り込み発生論理の設定を取得します。

long SdioGetEventLogic(

int nDevice, // デバイス番号

unsigned char *pbEventLogic // STB信号割り込み発生論理を返す変数へのポインタ

);

パラメータ

nDevice デバイス番号を指定します。

pbEventLogic STB 信号の割り込み論理、通信モジュール異常の割り込み発生条件を格納する変数へのポイン

タを指定します。

割り込み論理、条件は以下の識別子で格納されます。

IFSDIO_RISE_EDGE STB 信号の立ち上がりで割り込みを発生します。

IFSDIO_FALL_EDGE STB 信号の立ち下がりで割り込みを発生します。

IFSDIO_CONNECT_EVENT 通信モジュールとの切断で割り込みを発生します。

IFSDIO_POWER_EVENT 通信モジュールの電源電圧異常で割り込みを発生します。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

unsigned char bEventLogic;

lRet = SdioGetEventLogic( nDevice, &bEventLogic);

STB 信号の割り込み発生論理を取得します。

Page 67: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

67

20. SdioGetTmoduleStatus

通信モジュールの接続状態を取得します。

long SdioGetTmoduleStatus(

int nDevice, // デバイス番号

unsigned char *pbTmoduleStatus // 接続状態を格納する変数へのポインタ

);

パラメータ

nDevice デバイス番号を指定します。

pbTmoduleStatus 通信モジュールの接続状態を格納する変数へのポインタを指定します。

bit7 bit6 Bit5 bit4 bit3 bit2 bit1 bit0

予約 予約 PWRNG SAFNG 予約 予約 PWROK SAFOK

SAFOK 1 現在、通信モジュールと接続されています。

0 現在、通信モジュールと接続されていません。

PWROK 1 現在、通信モジュールの電源電圧は正常です。

0 現在、通信モジュールの電源電圧が異常です。

SAFNG 1 前回の本関数実行時から、今回の実行までに、通信モジュールとの

切断がありました。

0 前回の本関数実行時から、今回の実行までに、通信モジュールとの

切断はありませんでした。

PWRNG 1 前回の本関数実行時から、今回の実行までに、通信モジュールの電

源電圧の異常がありました。

0 前回の本関数実行時から、今回の実行までに、通信モジュールの電

源電圧の異常はありませんでした。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

unsigned char bTmoduleStatus;

lRet = SdioGetTmoduleStatus( nDevice, &bTmoduleStatus);

通信モジュールの接続状態を取得します。

Page 68: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

68

21. SdioSetTmodulePower

通信モジュールの電源を制御します。

long SdioSetTmodulePower(

int nDevice, // デバイス番号

unsigned char bSetPower // 電源状態

);

パラメータ

nDevice デバイス番号を指定します。

bSetPower 電源状態を指定します。

識別子 値 内容

IFSDIO_POWER_ON 1 通信モジュールの電源を ON にします。

IFSDIO_POWER_OFF 0 通信モジュールの電源を OFF にします。

戻り値

この関数では下記の戻り値が返されます。詳細は『4.7 戻り値一覧(汎用DIO部)』をご参照くださ

い。

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

使用例

int nDevice = IFSDIO_DEVICENO_TTY_0_1;

long lRet;

lRet = SdioSetTmodulePower( nDevice, IFSDIO_POWER_OFF);

通信モジュールの電源を OFF にします。

Page 69: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

69

22. CallBackProc

STB 信号の割り込み発生、通信モジュール異常時の割り込み発生によってコールされるコールバック

関数のプレースホルダです。

呼び出される関数は SdioSetEvent 関数に渡した関数となります。

void CallBackProc(

unsigned long ulEventLogic, // 割り込み要因

unsigned long ulUserData // ユーザーデータ

);

パラメータ

ulEventLogic コールバック関数を呼び出した STB 信号の割り込み発生論理です。

割り込み論理は以下の識別子で格納されます。

IFSDIO_RISE_EDGE STB 信号の立ち上がりで割り込みが発生しました。

IFSDIO_FALL_EDGE STB 信号の立ち下がりで割り込みが発生しました。

IFSDIO_CONNECT_EVENT 通信モジュールとの切断で割り込みが発生しました。

IFSDIO_POWER_EVENT 通信モジュールの電源電圧異常で割り込みが発生しました。

ulUserData SdioSetEvent関数で指定したユーザデータです。

戻り値

なし

Page 70: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

70

4.7 戻り値一覧(汎用 DIO 部)

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

IFSDIO_ERROR_SUCCESS 0 正常終了

IFSDIO_ERROR_DEVICE_NOT_FOUND 0xC0000001 デバイスが見つかりま

せん

指定されたデバイスが見つかりません

でした。指定されたデバイスが認識さ

れているか確認して下さい。

IFSDIO_ERROR_DEVICE_NOT_OPEN 0xC0000002 デバイスがオープンさ

れていません

デバイスをオープンしているか確認し

てください。

IFSDIO_ERROR_INVALID_PARAMETER 0xC0001001 引数パラメータの値が

不正です

関数に指定する値が不正もしくは範囲

外です。

引数に NULL ポインタが指定されてい

ます。

IFSDIO_ERROR_TERMINAL 0xC0003001 端子台に異常がありま

端子台の電源電圧に異常があるか、端

子台が接続されていません。または正

しくない組み合わせの端子台が接続さ

れています。

正しい組み合わせの端子台を接続して

ください。

Page 71: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

71

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

5.1 データ送信サンプルプログラム データ送信を行うサンプルプログラムです。

・実行方法

#cd /usr/src/interface/gpg4141/(アーキテクチャ名※)/linux/samples/c #make #./send ※アークテクチャ名は IBM PC/AT 互換機なら「i386」、弊社 SH-CPU ボードなら「sh」になります(以

下同じ)。

実行すると下記表示になりますので、デバイス名と送信する文字列を入力します。

***************** Send data Program ***********************

Input the One Port Device Name : (デバイス名※)

※例:デバイスノード名が ttyG0 の場合は、「/dev/ttyG0」となります。(以下同じ)。

文字列データを入力して「ENTER」キーを押すと、データを送信します。

5.2 データ受信サンプルプログラム データ受信を行うサンプルプログラムです。

・実行方法

#cd /usr/src/interface/gpg4141/(アーキテクチャ名※)/linux/samples/c #make #./receive

実行すると下記表示になりますので、データを送信するデバイス名を入力します。

***************** Receive data Program ***********************

Input the One Port Device Name : (デバイス名)

デバイス名を入力した後、受信待機状態になります。データを受信すると、受信したデータを表示し

ます。

Page 72: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

72

5.3 データ送信サンプルプログラム(全二重方式) 全二重方式でデータ送信を行うサンプルプログラムです。

RSW1 設定値が 1の PCI-4141 のチャンネル 1から、キーボードから入力した文字列データを全二重方

式で送信します。「CTRL + \」キーが押されたらプログラムを終了します。

#cd /usr/src/interface/gpg4141/(アーキテクチャ名※)/linux/samples/c #make #./fd_send

5.4 データ送信サンプルプログラム(2 線式半二重) 2線式半二重でデータ送信を行うサンプルプログラムです。

RSW1 設定値が 1の PCI-4142 のチャンネル 1から、キーボードから入力した文字列データを 2線式半

二重で送信します。「CTRL + \」キーが押されたらプログラムを終了します。

#cd /usr/src/interface/gpg4141/(アーキテクチャ名)/linux/samples/c #make #./hd_send

5.5 データ受信サンプルプログラム(全二重方式) 全二重式でデータ受信を行うサンプルプログラムです。

RSW1 設定値が 1 の PCI-4141 のチャンネル 1 で、送信側からのデータを受信します。「CTRL + \」キ

ーが押されたらプログラムを終了します。

#cd /usr/src/interface/gpg4141/(アーキテクチャ名)/linux/samples/c #make #./fd_receive

5.6 データ受信サンプルプログラム(2 線式半二重) 2線式半二重でデータ受信を行うサンプルプログラムです。

RSW1 設定値が 1 の PCI-4142 のチャンネル 1 で、データを受信します。「CTRL + \」キーが押された

らプログラムを終了します。

#cd /usr/src/interface/gpg4141/(アーキテクチャ名)/linux/samples/c #make #./hd_receive

Page 73: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

73

第6章 ユーティリティ

6.1 通信方式設定プログラム 通信方式(全二重/半二重)を設定するプログラムです。

※下記製品のみ対応しております。ご注意下さい。

IUC-C2934(L), IUC-P2934(L), IUC-x2934(L6), IUC-x3615(L6), IUC-x4668(L6), IUC-x4676(L6),

IUC-x4326(L6), IUC-x4855(L6), IUC-x2980(L6), IUC-x2934(L7), IUC-x3615(L7), IUC-x4668(L7),

IUC-x4676(L7), IUC-x4326(L7), IUC-x4855(L7), IUC-x2980(L7),

ITC-x2984(L6), ITC-x4006(L6), ITC-x4007(L6), ITC-x4874(L6),

ITC-x2984(L7), ITC-x4006(L7), ITC-x4007(L7), ITC-x4874(L7),

IMC-T4003(L6), IMC-T4004(L6), IMC-T4666(L6), IMC-T4667(L6),

TIO-C2934x(L6), TIO-C3615x(L6), TIO-C4668x(L6), TIO-C4676x(L6), TIO-C4326x(L6),

TIO-C4855x(L6), TIO-C2980x(L6),

TIO-N2984x(L6),TIO-N4006x(L6), TIO-N4007x(L6), TIO-N4874x(L6), ETC-D916(L6)

設定した通信方式は Linux 上に保存され、次回ドライバ組込み時からは自動で設定した通信方式とな

ります。(RS-485 のみ)

※設定はデバイスノード名に対して保存されます。

デバイスを拡張(追加)するなどして、デバイスノード名が変更された場合、

再度設定を行う必要があります。ご注意下さい。

【実行方法】

コンソールから下記のコマンドを実行します。

ifsetduplex [デバイスノード名] [DuplexMode]

デバイスノード名:設定を行うデバイスノード名を指定します。(ttyxxx)

デバイスノード名については「3.1 デバイスを動かすまで」の「3 デバイスノ

ード名の確認」を参照してください。

DuplexMode :通信方式を指定します。指定する値は下記となります。

値 モード

1 全二重通信

0 2 線式半二重通信

2 4 線式半二重通信

※ioctl リクエストの CP4141_SET_DUPLEX_MODE による設定を行います。

製品により設定できない通信方式があります。ご注意下さい。

下記にそれぞれの実行例を記載します。

・全二重の設定 #ifsetduplex ttyUSB0 1 デバイスノード名「ttyUSB0」を全二重に設定します。

・2 線式半二重の設定 #ifsetduplex ttyUSB0 0 デバイスノード名「ttyUSB0」を 2線式半二重に設定します。

・4 線式半二重の設定 #ifsetduplex ttyG0 2 デバイスノード名「ttyG0」を 4線式半二重に設定します。

Page 74: GPG-4141 - InterfaceGPG-4141は、弊社調歩同期シリアル通信製品をLinuxアプリケーションか らシリアル関数をコール(汎用DIO部はLibをリンクし関数をコール)することにより制御します。

GPG-4141 Help for Linux

© 2001 Interface Corporation. All rights reserved.

74

第7章 重要な情報

保証の内容と制限

弊社は本ドキュメントに含まれるソースプログラムの実行が中断しないこと、またはその実行に誤り

が無いことを保証していません。

本製品の品質や使用に起因する、性能に起因するいかなるリスクも使用者が負うものとします。

弊社はドキュメント内の情報の正確さに万全を期しています。万一、誤記または誤植などがあった場

合、弊社は予告無く改訂する場合があります。ドキュメントまたはドキュメント内の情報に起因する

いかなる損害に対しても弊社は責任を負いません。

ドキュメント内の図や表は説明のためであり、ユーザ個別の応用事例により変化する場合があります。

著作権、知的所有権

弊社は本製品に含まれるおよび本製品に対する権利や知的所有権を保持しています。

本製品はコンピュータ ソフトウェア、映像/音声(例えば図、文章、写真など)を含んでいます。

医療機器/器具への適用における注意

弊社の製品は人命に関わるような状況下で使用される機器に用いられる事を目的として設計、製造さ

れた物では有りません。

弊社の製品は人体の検査などに使用するに適する信頼性を確保する事を意図された部品や検査機器

と共に設計された物では有りません。

医療機器、治療器具などの本製品の適用により、製品の故障、ユーザ、設計者の過失などにより、損

傷/損害を引き起こす場合が有ります。

複製の禁止

弊社の許可なく、本ドキュメントの全て、または一部に関わらず、複製、改変などを行うことはでき

ません。

責任の制限

弊社は、弊社または再販売者の予見の有無にかかわらず発生したいかなる特別損害、偶発的損害、間

接的な損害、重大な損害について、責任を負いません。

本製品(ハードウェア,ソフトウェア)のシステム組み込み、使用、ならびに本製品から得られる結果

に関する一切のリスクについては、本製品の使用者に帰属するものとします。

本製品に含まれる不都合、あるいは本製品の供給(納期遅延)、性能もしくは使用に起因する付帯的損

害もしくは間接的損害に対して、弊社に全面的に責がある場合でも、弊社はその製品に対する改良(有

償サービスの利用)、代品交換までとし、製品の予防交換並びに、代金減額等、金銭面での賠償の責

任は負わないものとします。

本製品は、日本国内仕様です。

商標/登録商標

本書に掲載されている会社名、製品名は、それぞれ各社の商標または登録商標です。