KCXライブラリは、C言語から外部装置と各種データの入出力を行うための関数を中心に、各種 ユーティリティ関数を用意しています。
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( argc, argv )
引数: int argc; コマンドラインパラメータの数
char *argv[]; コマンドラインパラメータ文字ポインタ配列
返値: 未定義
解説: 本関数は、main関数の先頭の実行文として記述する必要があります。
KARACRIXシステムとの結合を図り、環境の初期設定を行なうために、引数にはシス テムから渡されるコマンドラインパラメータを必要とします。
使用例:
#include <karacrix.h>main( argc, argv )
kcxinit( argc, argv );
}
書式: 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);
}
書式: 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;
}
・
・
・
書式: 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 );
書式: 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 );
書式: 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 );
書式: 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 );
書式: 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;
}
書式: 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( &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”
);
}
書式: 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( 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 );
}
書式: 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 );
書式: 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 );
書式: 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 );
書式: 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 );
書式: 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 );
書式: 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 );
書式: 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 );
書式: 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 );
書式: 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;
}
尚、KCX印刷ライブラリを使用したアプリケーションを作成する際も、KCX基本ライブラリの初 期化関数を先頭で実行する必要があります。
kcxpris_priinit()
KCX印刷ライブラリの初期化を行う。
kcxpris_formread()
ベースになる印刷フォームを読み込み。
kcxpris_drawtext()
テキストを印刷フォーム上に配置する。
kcxpris_drawval()
整数型、実数型データを印刷フォーム上に配置する。
kcxpris_newpage()
改ページを行なう。
kcxpris_output()
プリンタに印刷出力を行なう。
書式: kcxpris_priinit()
引数: なし
返値: 未定義
解説: 本関数は、印刷ライブラリ使用時に、最初に記述 する必要があります。
印刷ライブラリの初期設定を行ない、新しい印刷描画ページを用意します。
使用例:
#include <karacrix.h>main( argc, argv )
kcxinit( argc, argv );
kcxpris_priinit();
}
書式: kcxpris_formread( formid )
引数: char formid; 読込む印刷フォームのID[省略可]
返値: 未定義
解説: 指定された印刷フォームのデータをシステムに読込みます。
印刷フォームID名を省略した場合には、印刷プログラム登録画面で選択した印刷書式を指定したものとみなされます。
本関数を複数コールした場合、読込まれた印刷フォームはオーバーレイされて印刷されます。
使用例:
kcxpris_formread();
/* 印刷プログラム設定で選択した書式名称IDが使用されます */
kcxpris_formread(“form02”); /* “form02”書式を使用します
*/
書式: 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( [/]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()
引数: なし
返値: 未定義
解説: 描画している印字出力ファイルをプリンタスプールに送ります。
使用例:
#include <karacrix.h>main( argc, argv )
kcxinit( argc, argv );
kcxpris_priinit();
/*
* 各種描画処理
*/
kcxpris_output();
}
尚、KCX画像記録ライブラリを使用したアプリケーションを作成する際も、KCX基本ライブラリ の初期化関数を先頭で実行する必要があります。
kcximg_quality_set() 画像を自動記録する時のJPEG圧縮の画質を設定する。
kcximg_recctl_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_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 );
}
kcxsio_interface_init() シリアルデバイスの初期化を行う。
kcxsio_recvfd()
シリアルデバイスからデータを受信する。
kcxsio_sendfd()
シリアルデバイスへデータを送信する。
書式: 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 );
書式: 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 );
書式: 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 );
kcxsnd_email_text()
1行メッセージをEメールで送信する。
kcxsnd_email_texts()
複数行のメッセージをEメールで送信する。
kcxsnd_email_text_append() 1行メッセージに付加情報を添付してEメールで送信する。
kcxsnd_email_texts_append() 複数行メッセージに付加情報を添付して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( 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” );
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( 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_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” );
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()
引数: なし
返値: 未定義
解説: 現在描画しているページを改ページします。
複数ページを1つの印字ファイルに出力する場合に使用します。
使用例:
#include <karacrix.h>main( argc, argv )
kcxinit( argc, argv );
kcxpris_priinit();
for( i = 0; i < 2; i++ ){
/*
* 各種描画処理
*/
kcxpris_newpage();
}
kcxpris_output();
}
書式: 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) );