目次へ  /  次へ


19章 KCXライブラリリファレンス


KCXライブラリは、C言語から外部装置と各種データの入出力を行うための関数を中心に、各種 ユーティリティ関数を用意しています。

19.1 KCX基本ライブラリ一覧

以下に、現在ご利用できる関数の一覧を示します。

KCXライブラリの関数に使用する各種定義は、“karacrix.h”に記述されていますので、プログ ラムを記述される際には、必ずインクルードする必要があります。


kcxinit()                             KARACRIXシステムとの結合を図り環境の初期化を行う。
kcxobj_open()                     オブジェクトをオープンし識別子(OBJID)を得る。
kcxobj_tquery()                   オブジェクトの分類型、整実数型、入出力型、分類属性を得る。
kcxobj_stat_ird()                  整数型オブジェクトの状態を得る。
kcxobj_stat_iwt()                 整数型オブジェクトに状態を設定する。
kcxobj_stat_frd()                 実数型オブジェクトの状態を得る。
kcxobj_stat_fwt()                 実数型オブジェクトに状態を設定する。
kcxobj_scale_frd()                アナログ型オブジェクトのスケールを得る。
kcxobj_sndstat_fromkcx()      KARACRIXシステムからの出力(操作)オブジェクトデータを得る。
kcxobj_sndistat_tokcx()         KARACRIXシステムに整数オブジェクトデータを送る。
kcxobj_sndfstat_tokcx()         KARACRIXシステムに実数オブジェクトデータを送る。
kcxobj_defdlgwintype_set()     オブジェクトの状態ダイアログタイプを設定する。
kcxmem_ird()                      共有メモリ(整数型)からデータを得る。
kcxmem_iwt()                      共有メモリ(整数型)へデータを設定する。
kcxmem_frd()                      共有メモリ(実数型)からデータを得る。
kcxmem_fwt()                     共有メモリ(実数型)へデータを設定する。
kcxmem_crd()                     共有メモリ(文字列型)からデータを得る。
kcxmem_cwt()                     共有メモリ(文字列型)へデータを設定する。
kcxtim_tsleep()                     プロセスを一定時間休止します。
kcxtim_whattime()                現在時刻を取得します。
kcxstr_printm()                    情報表示エリアに文字列を表示します。
kcxstr_scanfm()                   プログラム実行中に対話データ入力を行ないます。


kcxinit関数

機能: KARACRIXシステムとの結合を図り環境の初期設定を行う。

書式: kcxinit( argc, argv )

引数: int argc; コマンドラインパラメータの数
         char *argv[]; コマンドラインパラメータ文字ポインタ配列

返値: 未定義

解説: 本関数は、main関数の先頭の実行文として記述する必要があります。

KARACRIXシステムとの結合を図り、環境の初期設定を行なうために、引数にはシス テムから渡されるコマンドラインパラメータを必要とします。

使用例:

#include <karacrix.h>
main( argc, argv )
int argc;
char *arcgv[];
{
  int i, j;
  char text[32];

    kcxinit( argc, argv );

}


kcxobj_open関数

機能: オブジェクトをオープンし識別子(OBJID)を得る。

書式: objid = kcxobj_open( objidname )

引数: char *objidname オブジェクトID名文字列(8文字以内)

返値: int objid オブジェクトID:正値(エラー値:負値)

解説: オブジェクトをKARACRIXシステム内で扱うためのIDを取得します。ファイルを扱う時に、ファイルディスクリプタを作成する
のと同様に、オブジェクトを扱う時にオブジェクト名に対応するOBJIDを取得するために使用します。

使用例:

int objid;

  if (( objid = kcxobj_open( “bi01” )) < 0 ) {

    fprintf( stderr, “kcxobj_open() error %s\n”, “bi01” );
    exit(0);

  }


kcxobj_tquery関数

機能: オブジェクトの分類型、整実数型、入出力型、分類属性を取得する。

書式: status = kcxobj_tquery( objid, objtype, objatttype, objvaltype, objiotype )

引数: int objid オブジェクトID
         int *objtype オブジェクト型
             (KcxOBJtp_POINT_BI:バイナリ入力型)
             (KcxOBJtp_POINT_BO:バイナリ出力型)
             (KcxOBJtp_POINT_iAI:アナログ入力整数型)
             (KcxOBJtp_POINT_fAI:アナログ入力実数型)

         int *objatttype 属性タイプ
             (KcxOBJtp_BINARY:バイナリ型)
             (KcxOBJtp_ANALOG:アナログ型)

         int *objvaltype データタイプ
             (KcxFLOAT:実数型)
             (KcxINTEGER:整数型)

         int *objiotype 入出力タイプ
             (KcxOUT:出力型)
             (KcxIN:入力型)

返値: int status 正常動作:正値(エラー値:負値)

解説: オブジェクトの各種属性情報を取得します。

         kcxobj_open関数で取得したオブジェクトIDを指定することにより、そのオブジェクトの各種属性情報を取得します。

使用例:

int objid;
int objtype, objatttype;
int onjvaltype, objiotype;

     if(( objid = kcxobj_open( “bi01” )) < 0 ){
        fprintf( stderr, “kcxobj_open() error %s\n”, “bi01” );
        exit(0);
     }

     if(( objid = kcxobj_tquery( objid, &objtype, &objatttype,&objvaltype, &objiotype )) < 0 ){
        fprintf( stderr, “kcxobj_tqery() error %d\n”, objid );
        exit(0);
     }

     switch( objatttype ){

     case KcxOBJtp_BINARY:
            break;
     case KcxOBJtp_ANALOG:
             break;
     }

     ・
     ・
     ・


kcxobj_stat_ird関数

機能: 整数型オブジェクトの状態値を取得する。

書式: status = kcxobj_stat_ird( objid, data )

引数: int objid オブジェクトID
         int *data 状態値

返値: int status   正常動作:正値(エラー値:負値)

解説: 整数型オブジェクトの状態(内部メモリ)を調べる時に使用します。

この関数が使えるのは、objvaltypeがKcxOBJtp_INTEGERのものに限ります。
objatttypeがKcxOBJtp_BINARYの場合、状態値が0でOFF状態、1でON状態を示し ます。

使用例:

int objid;
int idata;
int status;

    if(( objid = kcxobj_open( “bi01” )) < 0 ){
      fprintf( stderr, “kcxobj_open() error %s\n”, “bi01” );
      exit(0);
    }

    status = kcxobj_stat_ird( objid, &idata );


kcxobj_stat_iwt関数

機能: 整数型オブジェクトに状態値を書き込む。

書式: status = kcxobj_stat_iwt( objid, data )

引数: int objid  オブジェクトID
         int data  状態値

返値: int status 正常動作:正値(エラー値:負値)

解説: 整数型オブジェクトの状態(内部メモリ)を書き換える時に使用します。

この関数が使えるのは、objvaltypeがKcxOBJtp_INTEGERのものに限ります。
objatttypeがKcxOBJtp_BINARYの場合、状態をOFFにしたい時は0を、状態をONに したい ときは、1を与えます。

使用例:

int objid;
int idata;
int status;

    if(( objid = kcxobj_open( “bi01” )) < 0 ){
      fprintf( stderr, “kcxobj_open() error %s\n”, “bi01” );
      exit(0);

    }

    idata = 1; /* オブジェクトをONにする */
    status = kcxobj_stat_iwt( objid, idata );


kcxobj_stat_frd関数

機能: 実数型オブジェクトの状態値を取得する。

書式: status = kcxobj_stat_frd( objid, data )

引数: int     objid  オブジェクトID
         float *data  状態値

返値: int status 正常動作:正値(エラー値:負値)

解説: 実数型オブジェクトの状態(内部メモリ)を調べる時に使用します。

この関数が使えるのは、objvaltypeがKcxOBJtp_FLOATのものに限ります。

使用例:

int objid;
float fdata;
int status;

     if(( objid = kcxobj_open( “aif01” )) < 0 ){
      fprintf( stderr, “kcxobj_open() error %s\n”, “aif01” );
      exit(0);
    }

    status = kcxobj_stat_frd( objid, &fdata );


kcxobj_stat_fwt関数

機能: 実数型オブジェクトに状態値を書き込む。

書式: status = kcxobj_stat_fwt( objid, data )

引数: int   objid  オブジェクトID
         float data  状態値

返値: int status 正常動作:正値(エラー値:負値)

解説: 実数型オブジェクトに状態(内部メモリ)を書き換える時に使用します。

この関数が使えるのは、objvaltypeがKcxOBJtp_FLOATのものに限ります。

使用例:

int objid;
float fdata;
int status;

    if(( objid = kcxobj_open( “aif01” )) < 0 ){
      fprintf( stderr, “kcxobj_open() error %s\n”, “bo01” );
      exit(0);
    }

    fdata = 3.1415; /* オブジェクトに値を書き込む */
    status = kcxobj_stat_fwt( objid, fdata );
 


kcxobj_sndstat_fromkcx関数

機能: KARACRIXシステムからの出力(操作)オブジェクトデータを取得する。

書式: status = kcxobj_sndstat_fromkcx( objid, data )

引数: int  *objid              オブジェクトID
         KcxVarUnion *data 状態値

返値: int status KcxNULL: 操作データが無かった事を示します。

         KcxINTEGER: 整数型オブジェクトの操作データを取得した事 を示します。
         KcxFLOAT: 実数型オブジェクトの操作データを取得した事 を示します。

解説: 操作ウィンドウやプログラムによってオブジェクトに操作信号を発行した場合、それらのデータは、一つずつこの関数によって取得できます。

使用例:

int objid;
int ival;
float fval;
KcxVarUnion data;
int status;

    status = kcxobj_sndstat_fromkcx( &objid, &data );

    switch( status ){
    case KcxINTEGER:
            ival = data.l;
            break;
    case KcxFLOAT:
           fval = data.f;
            break;
    case KcxNULL:
           break;
}


kcxobj_sndistat_tokcx関数

機能: KARACRIXシステムへ、整数型オブジェクトデータを送る。

書式: status = kcxobj_sndistat_tokcx( objid, data )

引数: int objid  オブジェクトID
         int data  状態値

返値: int status 正常動作:正値(エラー値:負値)

解説: 整数型オブジェクトに操作信号を発行する時に使用します。

この関数が使えるのは、objvaltypeがKcxOBJtp_INTEGERのものに限ります。

使用例:

int objid;
int idata;
int status;

    if(( objid = kcxobj_open( “bo01” )) < 0 ){
      fprintf( stderr, “kcxobj_open() error %s\n”, “bo01” );
      exit(0);
    }

    idata = 1; /* オブジェクトに値を送信する */
    status = kcxobj_sndistat_tokcx( objid, idata );


kcxtim_whattime関数

機能: 現在の時刻を取得する。

書式: kcxtim_whattime( &jikan )

引数: struct tm *jikan   tm構造体変数のアドレス

返値: 未定義

解説: 現在時刻を取得します。

この関数は、引数にUNIXのtm構造体を使用していますが、取得される年月日 時分秒 は、使いやすいように加工してあります。戻り値は、以下のようになります。

struct tm {
  int tm_sec;    0-59[sec](但し、閏秒の調整時に0-61の値を取ります)
  int tm_min;    0-59[min]
  int tm_hour;   0-23[hour]
  int tm_mday;  1-31[day]
  int tm_mon;   1-12[month]
  int tm_year;   西暦年(例:2000)
  int tm_wday;  0-6(曜日)
  int tm_yday;   1-365(通算日)

  以下省略

};

使用例:

struct tm jikan;;

    kcxtim_whattime( &jikan );

    if( (jikan.tm_year == (2001) )&& (jikan.tm_mon == (1)) ){
      fprintf( stderr, “21世紀になりました!\n” );
    }


kcxobj_scale_frd関数

機能: アナログ型オブジェクトのスケールを取得する。

書式: status = kcxobj_scale_frd( objid, hi, low )

引数: int objid   オブジェクトID
         float *hi   上限値
         float *low 下限値

返値: int status 正常動作:正値(エラー値:負値)

解説: オブジェクト登録で設定した、アナログ型オブジェクトの上下限のスケールを調べる時に使用します。
         この関数が使えるのは、objatttypeがKcxOBJtp_ANALOGのものに限ります。

使用例:

int objid;
float hi, low;
int status;

    if(( objid = kcxobj_open( “aif01” )) < 0 ){
      fprintf( stderr, “kcxobj_open() error %s\n”, “aif01” );
      exit(0);
    }

    status = kcxobj_scale_frd( objid, &hi, &low );


kcxtim_tsleep関数

機能: プロセスを一定時間休止する。

書式: kcxtim_tsleep( microsec )

引数: long microsec   休止時間(micro sec)

返値: 未定義

解説: 1プロセスがCPUタイムを独占し、負荷を与えないためにwhile文、for文でルー プを構 成する場合、使用をお勧めします。

microsecが10000(10msec)以下の場合、UNIXの構造上機能があいまいになります。 また、これ以上の場合においても、UNIX環境においては正確でない事があります。

使用例:

int objid;
float fdata;

    while(1){
      kcxobj_stat_frd( objid, &fdata );

      /* 100ミリ秒休止する */
      kcxobjtim_tsleep( 100000L );
}


kcxobj_sndfstat_tokcx関数

機能: KARACRIXシステムへ、実数型オブジェクトデータを送る。

書式: status = kcxobj_sndfstat_tokcx( objid, data )

引数: int   objid  オブジェクトID
         float data  状態値

返値: int status  正常動作:正値(エラー値:負値)

解説: 実数型オブジェクトに操作信号を発行する時に使用します。

この関数が使えるのは、objvaltypeがKcxOBJtp_FLOATのものに限ります。

使用例:

int objid;
float fdata;
int status;

    if(( objid = kcxobj_open( “aif01” )) < 0 ){
      fprintf( stderr, “kcxobj_open() error %s\n”, “bo01” );
      exit(0);
    }

    fdata = 1.28; /* オブジェクトに値を送信する */
    status = kcxobj_sndfstat_tokcx( objid, fdata );
 


kcxmem_ird関数

機能: 整数型共有メモリから、データを得る。

書式: status = kcxmem_ird( no, data )

引数: int no     共有メモリ番号
         int *data 整数データ

返値: int status 正常動作:KcxOK(エラー値:KcxERR)

解説: プロセス間でデータを受け渡しする時に使用します。

共有メモリ(排他制御されています)から整数データを取得する時に使用します。
共有メモリ番号には、0から9までのチャネルを指定できます。 共有メモリ番号は、実数型、文字列型の共有メモリ番号とは独立しています。

使用例:

int no;
int idata;
int status;

    no = 0;
    status = kcxmem_ird( no, &idata );
 


kcxmem_iwt関数

機能: 整数型共有メモリへ、データを設定する。

書式: status = kcxmem_iwt( no, data )

引数: int no    共有メモリ番号
         int data 整数データ

返値: int status  正常動作:KcxOK(エラー値:KcxERR)

解説: プロセス間でデータを受け渡しする時に使用します。

共有メモリ(排他制御されています)へ整数データを設定する時に使用します。
共有メモリ番号には、0から9までのチャネルを指定できます。共有メモリ番号は、実数型、文字列型の共有メモリ番号とは独立しています。

使用例:

int no;
int idata;
int status;

    no = 0;
    idata = 128;

    status = kcxmem_iwt( no, idata );
 


kcxmem_frd関数

機能: 実数型共有メモリから、データを得る。

書式: status = kcxmem_frd( no, data )

引数: int    no      共有メモリ番号
         float *data  実数データ

返値: int status 正常動作:KcxOK(エラー値:KcxERR)

解説: プロセス間でデータを受け渡しする時に使用します。

共有メモリ(排他制御されています)から実数データを取得する時に使用します。
共有メモリ番号には、0から9までのチャネルを指定できます。 共有メモリ番号は、整数型、文字列型の共有メモリ番号とは独立しています。

使用例:

int no;
float fdata;
int status;

   no = 0;
   status = kcxmem_frd( no, &fdata );
 


kcxmem_fwt関数

機能: 実数型共有メモリへ、データを設定する。

書式: status = kcxmem_fwt( no, data )

引数: int    no    共有メモリ番号
         float data  実数データ

返値: int status  正常動作:KcxOK(エラー値:KcxERR)

解説: プロセス間でデータを受け渡しする時に使用します。

共有メモリ(排他制御されています)へ整数データを設定する時に使用します。
共有メモリ番号には、0から9までのチャネルを指定できます。 共有メモリ番号は、整数型、文字列型の共有メモリ番号とは独立しています。

使用例:

int no;
float fdata;
int status;

    no = 0;
    fdata = 7.16;

    status = kcxmem_fwt( no, fdata );
 


kcxmem_crd関数

機能: 文字型共有メモリから、データを得る。

書式: status = kcxmem_crd( no, data )

引数: int    no      共有メモリ番号
         char *data  文字列

返値: int status 正常動作:KcxOK(エラー値:KcxERR)

解説: プロセス間でデータを受け渡しする時に使用します。

共有メモリ(排他制御されています)から文字列データを取得する時に使用します。
共有メモリ番号には、0から9までのチャネルを指定できます。文字列データバッファの大きさは、32以上にして下さい。共有メモリ番号は、整数型、実数型の共有メモリ番号とは独立しています。

使用例:

int no;
char text[ 32 ];
int status;

    no = 0;
    status = kcxmem_crd( no, text );
 


kcxmem_cwt関数

機能: 文字型共有メモリへ、データを設定する。

書式: status = kcxmem_cwt( no, data )

引数: int    no      共有メモリ番号
         char *data  文字列

返値: int status  正常動作:KcxOK(エラー値:KcxERR)

解説: プロセス間でデータを受け渡しする時に使用します。

共有メモリ(排他制御されています)へ文字列データを設定する時に使用します。
共有メモリ番号には、0から9までのチャネルを指定できます。文字列データバッファの大きさは、32以上にして下さい。共有メモリ番号は、整数型、実数型の共有メモリ番号とは独立しています。

使用例:

int no;
char text[ 32 ];

    no = 0;
    strcpy( text,”TEST” );

    status = kcxmem_cwt( no, text );
 


kcxstr_printm関数

機能: データ表示エリアに文字列情報を出力する。

書式: status = kcxstr_printm( no, text )

引数: int    no      表示エリア番号(0〜9)
         char *text  文字列

返値: int status 正常動作:0(エラー値:-1)

解説: 実行モニタ画面の情報表示エリアの指定した番号の行に文字列を表示します。

プログラム実行過程で各種変数値など表示したい場合や、デバッグなどを行なう時に使用します。

使用例:

int no;
char text[32];
int status;

    no = 0;
    strcpy( text, “デバッグに便利です!” );
    kcxstr_printm( no, text );

    no = 1;
    sprintf( text, “%f”, 34.5 );
    kcxstr_printm( no, text );


kcxstr_scanfm関数

機能: プログラムに対話データ入力を行なう。

書式: status = kcxstr_scanfm( text )

引数: char text[]   文字列(半角20文字以内)

返値: int status   正常動作:0(エラー値:-1)

解説: プログラム実行時に任意の場所で、データ入力を行なう場合に使用します。

プログラム実行過程で各種パラメータを変更して動作を変更したい場合や、デバッグなどを行なう時に使用します。
本関数を実行すると、実行モニタ画面ので実行行がマーキングされ、INPUTボタンを選択すると文字列入力ダイアログが表示されます。

使用例:

int selval;
char text[32];
int status;

    kcxstr_scanfm( text ); /* 0〜2 の数字を入力 */

    selval = atoi( text );

    switch( selval ){
    case 0:
           /* 各種処理 */
           break;
    case 1:
           break;
    case 2:
           break;
    }
 



 

19.2 KCX印刷ライブラリ一覧

KCX印刷ライブラリは、KARACRIXの印刷プログラムを作成する時に必要となる各種機能を提供す るC言語ライブラリです。以下に、現在ご利用できる関数の一覧を示します。

尚、KCX印刷ライブラリを使用したアプリケーションを作成する際も、KCX基本ライブラリの初 期化関数を先頭で実行する必要があります。


kcxpris_priinit()             KCX印刷ライブラリの初期化を行う。
kcxpris_formread()         ベースになる印刷フォームを読み込み。
kcxpris_drawtext()         テキストを印刷フォーム上に配置する。
kcxpris_drawval()           整数型、実数型データを印刷フォーム上に配置する。
kcxpris_newpage()          改ページを行なう。
kcxpris_output()            プリンタに印刷出力を行なう。



※KCX印刷ライブラリは、KaracrixBuilderPro-500Rでサポートしています。
 

kcxpris_priinit関数

機能: KCX印刷ライブラリの初期設定を行ない新しい描画ページを用意します。

書式: kcxpris_priinit()

引数: なし

返値: 未定義

解説: 本関数は、印刷ライブラリ使用時に、最初に記述 する必要があります。

印刷ライブラリの初期設定を行ない、新しい印刷描画ページを用意します。

使用例:

#include <karacrix.h>
main( argc, argv )
int argc;
char *arcgv[];
{
  int i, j;
  char text[32];

    kcxinit( argc, argv );

    kcxpris_priinit();

}


kcxpris_formread関数

機能: KCX印刷ライブラリの初期設定を行う。

書式: kcxpris_formread( formid )

引数: char formid; 読込む印刷フォームのID[省略可]

返値: 未定義

解説: 指定された印刷フォームのデータをシステムに読込みます。

印刷フォームID名を省略した場合には、印刷プログラム登録画面で選択した印刷書式を指定したものとみなされます。
本関数を複数コールした場合、読込まれた印刷フォームはオーバーレイされて印刷されます。

使用例:

    kcxpris_formread();              /* 印刷プログラム設定で選択した書式名称IDが使用されます */
    kcxpris_formread(“form02”); /* “form02”書式を使用します */
 


kcxpris_drawtext関数(マクロ)

機能: 文字列を印刷フォーム上に描画する。

書式: kcxpris_drawtext( [/]origin[/], strbuff )

引数: char orgin; 原点名
              /origin -> 原点を始点に右方向に印字[省略時]
              origin/ -> 原点を終点に左方向に印字

         char strbuff; 印字する文字列

返値: 未定義

解説: strbuffの内容を、印刷フォームに定義されているoriginの位置に印字出力します。

“/”オプションを指定することで、印字位置を指定することができます。
本関数は、KARACRIX上でコンパイルされるときにプリプロセスされるマクロ関数になっています。

使用例:

char text[32];

    strcpy( text, “文字列を印字します” );

    kcxpris_drawtext( p0, text );          /* 点原点p0 に右方向に印字出力します */
    kcxpris_drawtext( /p0, text );         /* 点原点p0 に右方向に印字出力します */
    kcxpris_drawtext( p0/, text );         /* 点原点p0 に左方向に印字出力します */
    kcxpris_drawtext( p1[0], text );       /* 表原点p1 に右方向に印字出力します */
    kcxpris_drawtext( /p1[1], text );     /* 表原点p1 に右方向に印字出力します */
    kcxpris_drawtext( p1/[2], text );      /* 表原点p1 に左方向に印字出力します */
    kcxpris_drawtext( p2[0][0], text );    /* 表原点p2 に右方向に印字出力します */
    kcxpris_drawtext( /p2[0][1], text );  /* 表原点p2 に右方向に印字出力します */
    kcxpris_drawtext( p2/[0][2], text );  /* 表原点p2 に左方向に印字出力します */
 


kcxpris_drawval関数(マクロ)

機能: 実数データを印刷フォーム上に描画する。

書式: kcxpris_drawval( [/]origin[/], priform, data )

引数: char orgin; 原点名
             /origin -> 原点を始点に右方向に印字[省略時]
              origin/ -> 原点を終点に左方向に印字

         const priform; 印字有効桁数.有効小数点桁数 float data; 印字するデータ

返値: 未定義

解説: dataの内容を、印刷フォームに定義されているoriginの位置に印字出力します。

priformには、数値指定を行ないます。
“/”オプションを指定することで、印字位置を指定することができます。
本関数は、KARACRIX上でコンパイルされるときにプリプロセスされるマクロ関数になっています。

使用例:

int idata = 100;
float fdata = 27.56;

    kcxpris_drawval( p0, 3.0, (float)idata );/* 点原点p0 に右方向に印字出力します */

    /* 整数を出力する場合は、floatに型変換して下さい */
    kcxpris_drawval( /p0, 4.2, fdata );        /* 点原点p0 に右方向に印字出力します */
    kcxpris_drawval( p0/, 4.2, fdata );        /* 点原点p0 に左方向に印字出力します */
    kcxpris_drawval( p1[0], 4.2, fdata );      /* 表原点p1 に右方向に印字出力します */
    kcxpris_drawval( /p1[1], 4.2, fdata );     /* 表原点p1 に右方向に印字出力します */
    kcxpris_drawval( p1/[2], 4.2, fdata );     /* 表原点p1 に左方向に印字出力します */
    kcxpris_drawval( p2[0][0], 4.2, fdata );  /* 表原点p2 に右方向に印字出力します */
    kcxpris_drawval( /p2[0][1], 4.2, fdata ); /* 表原点p2 に右方向に印字出力します */
    kcxpris_drawval( p2/[0][2], 4.2, fdata ); /* 表原点p2 に左方向に印字出力します */
 


kcxpris_output関数

機能: 印字出力ファイルをプリンタスプールに送信する。

書式: kcxpris_output()

引数: なし

返値: 未定義

解説: 描画している印字出力ファイルをプリンタスプールに送ります。

使用例:

#include <karacrix.h>
main( argc, argv )
int argc;
char *arcgv[];
{
  int i, j;
  char text[32];

    kcxinit( argc, argv );

    kcxpris_priinit();

    /*
     * 各種描画処理
     */
    kcxpris_output();

}



 

19.3 KCX画像記録制御ライブラリ一覧

KCX画像記録制御ライブラリは、KARACRIXの画像記録をプログラムでコントロールする機能を機 能を提供するライブラリです。以下に、現在ご利用できる関数の一覧を示します。

尚、KCX画像記録ライブラリを使用したアプリケーションを作成する際も、KCX基本ライブラリ の初期化関数を先頭で実行する必要があります。


kcximg_quality_set()        画像を自動記録する時のJPEG圧縮の画質を設定する。
kcximg_recctl_set()          画像記録を行なう場合の各種動作モードを設定する。



 

kcximg_quality_set関数


機能: 画像を自動記録する時のJPEG圧縮クウォリティを設定する。

書式: kcximg_quality_set( idata )

引数: int idata クウォリティ値(1〜100)

返値: 未定義

解説: プログラムで自動画像記録を行なう場合に画像記録の画質を変更したい時に使用し

ます。具体的には、JPEG圧縮ライブラリへのクウォリティパラメータを変更します。
クウォリティ値は、100が最も高画質になり、0が最低画質になります。クウォリティ値を高く設定する程、作成されるJPEG画像ファイルのサイズは大きくなります。

使用例:

int jyoken;

    kcximg_quality_set( 70 );

    switch( jyoken ){
    case 0:
           /* 通常 */
           kcximg_quality_set( 70 );
           break;
    case 1:
           /* 低画質モード */
           kcximg_quality_set( 10 );
           break;
    case 2:
           /* 高画質モード */
           kcximg_quality_set( 100 );
           break;
    }
 


kcximg_recctl_set関数

機能: 画像を自動記録する時の動作モードを設定する。

書式: kcximg_quality_set( idata )

引数: int idata 動作モード

         0: 連続記録を停止する
         1: 連続記録を開始する
         2: 1回記録する(記録開始まで0〜1秒の遅れが生じます)

返値: 未定義

解説: プログラムで自動画像記録を行なうための動作モードを設定します。

動作モード0、1では、本関数を実行した時点から連続的に画像記録が開始、終了します。画像サンプリング間隔は、画像記録条件設定画面での設定で決まります。
動作モード2では、本関数を実行した時点の入力画像が1回だけ記録されます。センサの状態変化を監視して画像記録を行なったり、定時観測などの用途に便利な機能です。

使用例:

int sensorval;

    kcximg_quality_set( 70 ); /* クウォリティ値をセット */
    kcximg_recctl_set( 1 ); /* 連続記録開始 */
    ・・・
    kcximg_recctl_set( 0 ); /* 連続記録終了 */

    if( sensorval > 0 ){
      /* 1回記録モードで記録 */
      kcximg_recctl_set( 2 );
    }



 

19.4 KCX通信ライブラリ一覧

KCX通信ライブラリは、外部IO装置と通信するための機能を提供します。
現在サポートされているものは、シリアルポート通信用の機能です。
尚、KCXEメールライブラリを使用したアプリケーションを作成する際も、KCX基本ライブラリ の初期化関数を先頭で実行する必要があります。


kcxsio_interface_init()      シリアルデバイスの初期化を行う。
kcxsio_recvfd()               シリアルデバイスからデータを受信する。
kcxsio_sendfd()               シリアルデバイスへデータを送信する。



 

kcxsio_interface_init関数

機能: シリアルデバイスの初期設定を行う。

書式: kcxsio_interface_init( devid, rate, frame, parity, stopbit )

引数: int devid    通信デバイスファイル記述子
         int rate     通信速度(bps:1200,2400,4800,9600,19200など)
         int frame   通信フレーム(bit:7,8)
         int parity   パリティ(無し:0,有り:1)
         int stopbit  ストップビット(bit:1,2)

返値: 未定義

解説: open関数で取得した通信デバイスの初期化を行います。

使用例:

int rs232c;
int idata;

    if(( rs232c = open( “/dev/tty00”, O_RDWR )) < 0 ){
      fprintf( stderr, “open() error %s\n”, “/dev/tty00” );
      exit(0);
    }

    /*
     * 通信ボーレート: 4800 bps
     * 通信フレーム: 8 bit
     * パリティ: 無し
     * ストップビット: 1 bit
     */

    kcxsio_interface_init( rs232c, 4800, 8, 0, 1 );
 


kcxsio_recvfd関数

機能: シリアルデバイスからデータを受信する。

書式: len = kcxsio_recvfd( devid, rcvbuff, rcvlen, cterm, timeout )

引数: int devid         通信デバイスのファイル記述子
         char *rcvbuff  受信データバッファ
         int rcvlen        指定受信データ長(byte)[受信データバッファ以内]
         int cterm        デリミタ文字(1byte文字)
         int timeout      タイムアウト時間(秒)

返値: int len            受信データ数(byte)

解説: RS232C等のデバイスから、データを受信する時に使用します。

rcvbuffは、受信したデータを格納するバッファの先頭アドレスを指定します。
受信行為を終了させる条件として、

1) 受信データが、指定受信データ長に達した
2) 指定したデリミタ文字データを受信した
3) 1),2)に適合しないまま、タイムアウト時間を経過した

の3条件があります。
rcvlenは、通常受信データバッファの大きさを指定し、ctermは、復帰コードとしての13か、改行コードとしての10を指定する場合が多い様です。タイムアウトを起こさせたくない場合は、timeoutに0を指定します。

使用例:

#define CR (13)

int rs232c;
int rcvlen;
char rcvbuff[ BUFSIZ ];

    rcvlen = kcxsio_recvfd( rs232c, recvbuff, BUFSIZ, CR, 0 );
 


kcxsio_sendfd関数

機能: シリアルデバイスへデータを送信する。

書式: len = kcxsio_sendfd( devid, sndbuff, sndlen )

引数: int devid          通信デバイスのファイル記述子
         char *sndbuff   送信データバッファ
         int sndlen         送信データ長(byte)

返値: int len              送信データ数(byte)

解説: RS232C等のデバイスへ、データを送信する時に使用します。

sndbuffには、送信するデータを格納したバッファの先頭アドレスを指定します。
sndlenには、送信するデータ長を指定します。

使用例:

int rs232c;
int sndlen;
char sndbuff[ BUFSIZ ];

     sndlen = kcxsio_sendfd( rs232c, sndbuff, 128 );



 

19.5 KCXEメールライブラリ一覧

KCXEメールライブラリは、Eメールを使用してKARACRIXのオブジェクト情報を他のホスト等に 送信するための機能を提供します。
尚、KCXEメールライブラリを使用したアプリケーションを作成する際も、KCX基本ライブラリ の初期化関数を先頭で実行する必要があります。


kcxsnd_email_text()                 1行メッセージをEメールで送信する。
kcxsnd_email_texts()                複数行のメッセージをEメールで送信する。
kcxsnd_email_text_append()       1行メッセージに付加情報を添付してEメールで送信する。
kcxsnd_email_texts_append()     複数行メッセージに付加情報を添付してEメールで送信する。



※KCXEメールライブラリは、KaracrixBuilder-30Sではサポートしていません。
 

kcxsnd_email_text関数

機能: 1行メッセージをEメールで送信する。

書式: kcxsnd_email_text( toaddr, ccaddr, bccaddr, subject, mailtext )

引数: char toaddr[64];    送り先
         char ccaddr[64];    同報送り先(CC)
         char bccaddr[64];  同報送り先(BCC)
         char subject[64];   メールタイトル
         char mailtext[64];  メール本文

返値: 未定義

解説: 指定したEメールアドレスに、64文字以内のメッセージを送信します。

使用例:

char toaddr[64]; /* 送り先 */
char ccaddr[64]; /* 同報送り先(CC) */
char bccaddr[64]; /* 同報送り先(BCC) */
char subject[64]; /* メールタイトル */
char mailtext[64]; /* メール本文 */

    strcpy( toaddr, “nippon@xxx.jpn” );
    strcpy( ccaddr, “honami@xxx.jpn,syuusei@xxx.jpn” );
    strcpy( bccaddr, “tarou@xxx.jpn,hanako@xxx.jpn” );
    strcpy( subject, “Hello!” );
    strcpy( mailtext, “こんにちは!” );

   kcxsnd_email_text( toaddr, ccaddr, bccaddr, subject, mailtext );
 


kcxsnd_email_texts関数

機能: 複数行メッセージをEメールで送信する。

書式: kcxsnd_email_texts( toaddr, ccaddr, bccaddr, subject, mtext, mtexts )

引数: char toaddr[64];    送り先
         char ccaddr[64];    同報送り先(CC)
         char bccaddr[64];  同報送り先(BCC)
         char subject[64];   メールタイトル
         char *mtext[];      メール本文(1行は、64文字以内)
         int mtexts;           メール本文の行数(最大100)

返値: 未定義

解説: 指定したEメールアドレスに、1行64文字100行以内のメッセージを送信します。

使用例:

char toaddr[64]; /* 送り先 */
char ccaddr[64]; /* 同報送り先(CC) */
char bccaddr[64]; /* 同報送り先(BCC) */
char subject[64]; /* メールタイトル */
char *mtext[];    /* メール本文 */
int mtexts;       /* メール本文の行数 */
    strcpy( toaddr, “nippon@xxx.jpn” );
    strcpy( ccaddr, “honami@xxx.jpn,syuusei@xxx.jpn” );
    strcpy( bccaddr, “tarou@xxx.jpn,hanako@xxx.jpn” );
    strcpy( subject, “Hello!” );

    mtexts = 2;

    for (i=0;i<mtexts; i++ ) {
       mtext[i] = (char *)malloc( 64+1 );
    }

    strcpy( mtext[0], “こんにちわ!” );
    strcpy( mtext[1], “お元気ですか!” );

   kcxsnd_email_texts( toaddr, ccaddr, bccaddr, subject, mtext, mtexts );


kcxsnd_email_text_append関数

機能: 1行メッセージに付加情報を添付してEメールで送信する。

書式: kcxsnd_email_text_append( toaddr, ccaddr, bccaddr,  subject, mailtext, appendtext )

引数: char toaddr[64]; 送り先
         char ccaddr[64]; 同報送り先(CC)
         char bccaddr[64]; 同報送り先(BCC)
         char subject[64]; メールタイトル
         char mailtext[64]; メール本文
         char appendtext[64]; 付加文

返値: 未定義

解説: 指定したEメールアドレスに、64文字以内のメッセージを送信します。

この時、KARACRIXのオブジェクト画像情報を添付することができます。

使用例:

char toaddr[64]; /* 送り先 */
char ccaddr[64]; /* 同報送り先(CC) */
char bccaddr[64]; /* 同報送り先(BCC) */
char subject[64]; /* メールタイトル */
char mailtext[64]; /* メール本文 */
char appendtext[64]; /* 付加文 */

    strcpy( toaddr, “nippon@xxx.jpn” );
    strcpy( ccaddr, “honami@xxx.jpn,syuusei@xxx.jpn” );
    strcpy( bccaddr, “tarou@xxx.jpn,hanako@xxx.jpn” );
    strcpy( subject, “Hello!” );
    strcpy( mailtext, “こんにちは!” );

    strcpy( appendtext, “mon 1” ); /* 1番のモニタ画面を添付 */
    kcxsnd_email_text_append( toaddr,ccaddr,bccaddr,subject,mailtext,appendtext );

    strcpy( appendmtext, “mon 1 -quality 90” ); /* 上記に、画質指定も追加 */
    kcxsnd_email_text_append( toaddr,ccaddr,bccaddr,subject,mailtext,appendtext );

    strcpy( appendtext, “tre 1” ); /* 1番のトレンドグラフ画像を添付 */
    kcxsnd_email_text_append( toaddr,ccaddr,bccaddr,subject,mailtext,appendtext );
 


kcxsnd_email_text関数

機能: 複数行メッセージをEメールで送信する。

書式: kcxsnd_email_texts_append( toaddr, ccaddr, bccaddr, subject, mtext, mtexts, appendtext )

引数: char toaddr[64]; 送り先
         char ccaddr[64]; 同報送り先(CC)
         char bccaddr[64]; 同報送り先(BCC)
         char subject[64]; メールタイトル
         char *mtext[]; メール本文(1行は、64文字以内)
         int mtexts; メール本文の行数(最大100)
         char appendtext[64]; 付加文

返値: 未定義

解説: 指定したEメールアドレスに、1行64文字100行以内のメッセージを送信します。

この時、KARACRIXのオブジェクト画像情報を添付することができます。

使用例:

char toaddr[64]; /* 送り先 */
char ccaddr[64]; /* 同報送り先(CC) */
char bccaddr[64]; /* 同報送り先(BCC) */
char subject[64]; /* メールタイトル */
char *mtext[]; /* メール本文 */
int mtexts; /* メール本文の行数 */
char appendtext[64]; /* 付加文 */
    strcpy( toaddr, “nippon@xxx.jpn” );
    strcpy( ccaddr, “honami@xxx.jpn,syuusei@xxx.jpn” );
    strcpy( bccaddr, “tarou@xxx.jpn,hanako@xxx.jpn” );
    strcpy( subject, “Hello!” );
    mtexts = 2;

    for ( i=0; i<mtexts; i++ ) {
      mtext[i] = (char *)malloc( 64+1 );
    }

    strcpy( mtext[0], “こんにちわ!” );
    strcpy( mtext[1], “お元気ですか!” );
    strcpy( appendtext, “mon 1” ); /* 1番のモニタ画面を添付 */

    kcxsnd_email_texts_append( toaddr, ccaddr, bccaddr, subject, mtext, mtexts, appendtext );

    strcpy( appendmtext, “mon 1 -quality 90” ); /* 上記に、画質指定も追加 */
    kcxsnd_email_texts_append( toaddr, ccaddr, bccaddr, subject, mtext, mtexts, appendtext );

    strcpy( appendtext, “tre 1” ); /* 1番のトレンドグラフ画像を添付 */
    kcxsnd_email_texts_append( toaddr, ccaddr, bccaddr, subject, mtext, mtexts, appendtext );


kcxpris_newpage関数

機能: 改ページを行う。

書式: kcxpris_newpage()

引数: なし

返値: 未定義

解説: 現在描画しているページを改ページします。

複数ページを1つの印字ファイルに出力する場合に使用します。

使用例:

#include <karacrix.h>
main( argc, argv )
int argc;
char *arcgv[];
{
  int i, j;
  char text[32];

    kcxinit( argc, argv );

    kcxpris_priinit();

    for( i = 0; i < 2; i++ ){
      /*
       * 各種描画処理
       */
       kcxpris_newpage();
    }

    kcxpris_output();

}


kcxobj_defdlgwintype_set関数

機能: オブジェクトの状態ダイアログ表示モードフラグを設定する。

書式: status = kcxobj_defdlgwintype_set( objid, type )

引数: int objid オブジェクトID
         int type 表示タイプ
            (0: xidigwintypeパラメータ値を参照する view:表示のみ、viewset:表示+設定)
            (1:表示のみ)
            (2:表示+設定)

返値: int status 正常動作:正値(エラー値:負値)

解説: 監視パネルでオブジェクトを選択した場合に表示される状態ダイアログのタイプを

設定します。表示のみの設定を行なうと状態表示のみダイアログが表示され、 表示+設定の設定を行なうと、状態表示と状態値の設定を行なえるダイアログが表示されます。typeが0の場合、syscnf.envファイルに定義されているxidlgwintypeパラメータの定義によって表示されるダイアログが決まります。

この関数は、計測制御通信プログラムで主に使用します。

使用例:

int bi_objid, ai_objid;

   /*
    * 監視パネルのオブジェクト状態ダイアログを表示のみ型にする。
    */
    bi_objid = kcxobj_open( "bi01" );
    kcxobj_defdlgwintype_set( bi_objid, (1) );

    ai_objid = kcxobj_open( "aif01" );
    kcxobj_defdlgwintype_set( ai_objid, (1) );
 



Copyright(C) All Rights Reserved. by S.I.Soubou,Inc.