Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ir(4) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ibir(4)

IR(4)  —  NEWS-OS Programmer’s Manual

名称

ir − NEWS イメージリーダインターフェース

形式

ir0 at iop addr xxx intr 110  ( xxx は機種依存 )

/dev/ir

#include <newsiop/imagereader.h>

解説

このインターフェースは、NEWS のイメージリーダ (NWP-534 + NWB-240A/241A/244 または NWP-540 + NWB-242/243) に対する 制御を行うためのものです。

イメージリーダは数々のインテリジェント機能を備えており、 このインターフェースを用いてそれらを効果的に 活用することができるようになっています。

制御は一般的な ioctl システムコールによって行うことができ、 C 言語から簡単に利用可能となっています。

(NWP-540 に対しては、イメージボードライブラリが用意されており、 NWP-540 固有の機能を使用することが可能です。)

NWS-5000/5900 シリーズの場合、NWP-534 はサポートされません。 ここに説明する ioctl は NWB-5101 + NWP-540 の組合せでのみ 動作します。NWB-5101 については ibir(4) を参照してください。

データ形式

以下に、ここで使用する構造体のデータ形式を説明します。

struct ir_window {
intiw_x;          /∗ X 座標 ∗/
intiw_y;          /∗ Y 座標 ∗/
intiw_dx;         /∗ 幅 ∗/
intiw_dy;         /∗ 高さ ∗/
};
 struct ir_xy {
intiw_x;          /∗ X 方向の倍率/データ量 ∗/
intiw_y;          /∗ Y 方向の倍率/データ量 ∗/
};
 struct ir_seg {
intis_in;         /∗ セグメント内のモードなど ∗/
intis_out;        /∗ セグメント外のモードなど ∗/
};

ir_window は、領域のデータを格納するためのデータ形式です。

ir_xy は、倍率のデータや画像データ量などのデータを格納するためのデータ形式です。

ir_seg は、セグメントの内部と外部のモードなどを格納するためのデータ形式です。

IOCTL

IRIOCINIT イニシャライズ指示

イメージリーダのイニシャライズを指示します。 ioctl(fildes,IRIOCINIT);

IRIOCHOME ホームポジション指示

イメージリーダの光学系をホームポジションに戻すとき指示します。 (NWP-540 の場合は何も実行しません。) ioctl(fildes,IRIOCHOME);

IRIOCLAMP 光源点灯指示

イメージリーダの光源の点灯、または消灯を指示します。 (NWP-540 の場合は何も実行しません。)
 

#define    LAMP_OFF    0        /∗ 消灯 ∗/
#define    LAMP_ON     1        /∗ 点灯 ∗/
 int lamp;
ioctl(fildes,IRIOCLAMP,&lamp);

IRIOCRESOLUTION
解像度指示

解像度を指定します。 (NWP-540 では次の 4 つの解像度のほかに 400dpi、240dpi をサポートします。)

#define    DPI_300    300       /∗ 300 dpi ∗ /
#define    DPI_200    200       /∗ 200 dpi ∗ /
#define    DPI_150    150       /∗ 150 dpi ∗ /
#define    DPI_75      75       /∗  75 dpi ∗ /
 int resolution;
ioctl(fildes,IRIOCRESOLUTION,&resolution);

IRIOCMIRROR 鏡像指示

鏡像の指示、または解除を行います。

#define    NORMAL      0        /∗ 正像 ∗/
#define    MIRROR      1        /∗ 鏡像 ∗/
 int mirror;
ioctl(fildes,IRIOCMIRROR,&mirror)

IRIOCOUTMODE 出力指示

出力モード (画像読み取りモード) を指定します。 (NWP-540 の場合、 ディザパターン 1 または 2 が指定された場合は 8×8 フラット ベッドリード用パターンに設定され、ディザパターン 3、4、5、6 が指定された場合は 4×4 フラットベッドリード用 パターンに設定されます。 ディザパターン 7 が指定された場合はエラーになります。)

#define    BINARY      0        /∗ 2 値 ∗ /
#define    DIZER1      1        /∗ ディザパターン No.1 ∗ /
#define    DIZER2      2        /∗ ディザパターン No.2 ∗ /
#define    DIZER3      3        /∗ ディザパターン No.3 ∗ /
#define    DIZER4      4        /∗ ディザパターン No.4 ∗ /
#define    DIZER5      5        /∗ ディザパターン No.5 ∗ /
#define    DIZER6      6        /∗ ディザパターン No.6 ∗ /
#define    DIZER7      7        /∗ ディザパターン No.7 ∗ /
#define    MULTI       9        /∗ 多値出力 ∗ /
 int outmode;
ioctl(fildes,IRIOCOUTMODE,&outmode);

IRIOCAREAMODE
像域分離出力指示

像域分離出力時のセグメント内外の出力モードを指定します。

#define    BINARY      0        /∗ 2 値 ∗ /
#define    DIZER1      1        /∗ ディザパターン No.1 ∗ /
#define    DIZER2      2        /∗ ディザパターン No.2 ∗ /
#define    DIZER3      3        /∗ ディザパターン No.3 ∗ /
#define    DIZER4      4        /∗ ディザパターン No.4 ∗ /
#define    DIZER5      5        /∗ ディザパターン No.5 ∗ /
#define    DIZER6      6        /∗ ディザパターン No.6 ∗ /
#define    DIZER7      7        /∗ ディザパターン No.7 ∗ /
#define    WHITE       11       /∗ 白 ∗ /
 struct ir_seg seg_outmode;
ioctl(fildes,IRIOCAREAMODE,&seg_outmode)

IRIOCLIGHT 濃度指示

画像信号の濃度を指定します。 
 

int light;
ioctl(fildes,IRIOCLIGHT,&light);

IRIOCNOAE AE (自動濃度調整) 指示

AE (自動濃度調整) の指定、または解除を行います。
 

#define    AE          0        /∗ AEの指定 ∗/
#define    NO_AE       1        /∗ AEの解除 ∗/
 int no_ae;
ioctl(fildes,IRIOCNOAE,&no_ae);

IRIOCREVERSE ネガ/ポジ指示

ネガ/ポジを指定します。
 

#define    POSI        0        /∗ ポジ ∗/
#define    NEGA        1        /∗ ネガ ∗/
 int reverse;
ioctl(fildes,IRIOCREVERSE,&reverse);

IRIOCAREAREVERSE
像域分離ネガ/ポジ指示

像域分離出力時のセグメント内外のネガ/ポジを指定します。
 

#define    POSI        0        /∗ ポジ ∗/
#define    NEGA        1        /∗ ネガ ∗/
 struct ir_seg seg_reverse;
ioctl(fildes,IRIOCAREAREVERSE,&seg_reverse);

IRIOCSCALE 倍率指示

読み取り倍率を指定します。
 

int scale;
ioctl(fildes,IRIOCSCALE,&scale);

IRIOCXYSCALE 独立変倍指示

主走査と副走査で別々の倍率を指定します。
 

struct ir_xy xy scale;
ioctl(fildes,IRIOCXYSCALE,&xy_scale);

IRIOCAREA 領域指示

読み取り領域を指定します。 (NWP-540 でサポートされていない用紙サイズが指定されると エラーになります。)
 

#define    WINDOW               0
#define    A4                   1
#define    A5                   2
#define    B5                   3
#define    B6                   4
#define    ENVELOPE             5
#define    POSTCARD             6
#define    A6                   7
#define    MINI                 10
#define    LETTER               11
#define    NOT_SPECIFIED        99
 int area;
ioctl(fildes,IRIOCAREA,&area);

IRIOCWINDOW ウィンドウ領域指示

ウィンドウ読み取りモードの領域を指定します。
 

struct ir_window window;
ioctl(fildes,IRIOCWINDOW,&window);

IRIOCSEGMENT セグメント領域指示

セグメントの領域を指定します。
 

struct ir_window segment;
ioctl(fildes,IRIOCSEGMENT,&segment);

IRIOCREAD スキャニング指示コマンド

読み取りの実行を指示します。
 

int area;
ioctl(fildes,IRIOCREAD,&area);

IRIOCAREAREAD
像域分離スキャニング指示コマンド

像域分離読み取りの実行を指示します。
 

int area;
ioctl(fildes,IRIOCAREAREAD,&area);

IRIOCRMODE モードレポート

レポート内容 No.0 (モードレポート) を要求します。 (NWP-540 の場合は im_motor、im_lightについては常に 0 を返します。)
 

struct ir_mode {
intim_resolution;
intim_mirror;
intim_motor;
intim_light;
struct ir_seg im_reverse;
};

struct ir_mode mode;
ioctl(fildes,IRIOCRMODE,&mode);

IRIOCRSTATUS ステータスレポート

レポート内容 No.1 (ステータスレポート) を要求します。 (NWP-540 の場合、紙詰まりの時には is_operator_call に 3 を返します。 そのほかは NWP-534 と同じです。)
 

struct ir_status {
intis_error;
intis_timeout;
intis_operator_call;
intis_service_call;
};

struct ir_status status;
ioctl(fildes,IRIOCRSTATUS,&status);

IRIOCRPOSITION
原点からのポジションレポート

レポート内容 No.2 (原点からのポジションレポート) を要求します。 (NWP-540 の場合は光源の位置を返します。)
 

int position;
ioctl(fildes,IRIOCRPOSITION,&position);

IRIOCRWINDOW ウィンドウレポート

レポート内容 No.3 (ウィンドウレポート) を要求します。
 

struct ir_window window;
ioctl(fildes,IRIOCRWINDOW,&window);

IRIOCRLIGHT 濃度レポート

レポート内容 No.4 (濃度レポート) を要求します。
 

struct ir_light {
intil_ae;
intil_light;
};
 struct ir_light light;
ioctl(fildes,IRIOCRLIGHT,&light);

IRIOCROUTMODE
出力モードレポート

レポート内容 No.5 (出力モードレポート) を要求します。
 

struct ir_seg outmode;
ioctl(fildes,IRIOCROUTMODE,&outmode);

IRIOCRSCALE 倍率レポート

レポート内容 No.6 (倍率レポート) を要求します。
 

struct ir_xy scale;
ioctl(fildes,IRIOCRSCALE,&scale);

IRIOCRDATA 転送データ数レポート

レポート内容 No.8 (転送データ数レポート) を要求します。 amount.x は X 方向のバイト数、amount.y は Y 方向のドット数です。 イメージデータの読み取りの際にイメージリーダから 出力されるバイト数は NWP-534 と NWP-540 とで 異なる場合があります。 そのため、両方のイメージリーダに対応するアプリケーションプログラムは この ioctl システムコールにより出力画素数を求める必要があります。
 

struct ir_xy amount;
ioctl(fildes,IRIOCRDATA,&amount);

IRIOCRSELECT レポート内容選択

モードレポートおよび出力モードレポート時の内容を規定します。 (NWP-540 の場合、0 を返します。)
 

int select;
ioctl(fildes,IRIOCRSELECT,&select);

 

関連ファイル

/dev/ir イメージリーダデバイスファイル

関連事項

イメージリーダ (NWP-534) 取扱説明書

「NEWS-OS Release 4.0 I/O デバイスプログラミングガイド/イメージリーダ」

「NEWS-OS Release 4.0 プログラマーズガイド/イメージボードライブラリ」

ibir(4)

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026