KARACRIXは、インストールされたディレクトリ以下に、図1のような階層で展開されています。
図1 ディレクトリ構成
大きく分けて次の2種類に分けられます。
usr ユーザー用
以下に、sysディレクトリの概要を示します。
sfnt CAD用アウトラインフォントデータ
simg GUI用各種ビットマップファイル
sbin KARACRIXシステム実行プログラム
srun 実行用一時ファイル
stbl システム用各種データテーブル
stmp システム用一時ファイル
ssmp 各種サンプルリソースファイル
slib システム用ライブラリ
sinc システム用インクルードファイル
setc システム用
sxrs GUI用画面リソースファイル
以下に、usrディレクトリの概要を示します。
ufile ユーザ作成データ
env KARACRIXシステム環境設定ファイル
sdx KARACRIXシステム設定テーブルファイル
prg ユーザ作成プログラムソースファイル
pfm 印刷書式ファイル
mon 監視パネルファイル
log オブジェクトログファイル
tre オブジェクトトレンド記録保存ファイル
img ユーザ作成ビットマップファイル
spool 印刷出力用スプールファイル
vdr 画像記録ファイル
上記のディレクトリ内の各種設定ファイル等は、KARACRIXが使用しますので、本マニュアル、ま
たはその他の記述(当社のホームページ等)に説明のないものは変更しないでください。誤動作の
原因になる場合があります。
ユーザは、KARACRIXのインストール後、特に環境ファイルに手を加えなくてもそのまま使用でき るように適切な環境に設定されていますが、場合によっては環境設定ファイルを書き換える必要が あります。
ユーザの環境設定ファイルは、「$KARACRIXTYPE/usr/env」以下にあります。この中で次の環境設 定ファイルを編集します。内容は資料1および 資料2をご覧下さい。
表1 環境設定ファイル
オブジェクト登録で使用するアナログ単位の追加を行うことができます。次のファイルをエディ タで編集します。
$KARACRIXTYPE/sys/stbl/kcxname_unit.tbl
内容は資料3を参照下さい。
オブジェクト登録で使用するバイナリフォーマットの追加を行うことができます。次のファイル をエディタで編集します。
$KARACRIXTYPE/sys/stbl/kcxtext_stat_binary.tbl
内容は資料4を参照下さい。
$KARACRIXTYPE/usr/tre
ファイル名の生成ルールは、以下のようになっています。
4-12行目は、トレンドグラフ描画条件設定で登録したオブジェクトの数によって可変長になっ ており、カンマ区切りで最大8項目までデータが並ぶことになります。
13行目以降に計測データが最新のものから降順に並んでいます。
1行目 コメント
2行目 サンプリング時間(秒),横拡大表示倍率(%),縦拡大表示倍率(%)(未使用),横時間軸幅(秒)
3行目 “グラフタイトル名”
4行目 オブジェクト登録表示行番号,・・・・
5行目 “オブジェクトID名”,・・・・
6行目 オブジェクトID,・・・・
7行目 データ型,・・・・
8行目 ハイレンジ値,・・・・
9行目 ローレンジ値,・・・・
10行目 線色番号,・・・・
11行目 線幅,・・・・
12行目 線種,・・・・
13行目 データ番号,縦時間軸表示フラグ,計測時間(UNIXタイム),データ1,データ2,・・・・
・・・
n行目 データ番号,縦時間軸表示フラグ,計測時間(UNIXタイム),データ1,データ2,・・・・
●データ型 (0:整数 1:実数)
●線色番号 (1:赤,2:緑,3:青,4:黄,5:水色,6:桃色,7:紫,8:蜜柑)
●線幅 (1〜4ドット)
●線種 (1:実線)
以下に、トレンドファイルのサンプルを示します。
#Copyright (c) 1996-2000 S.I.Soubou,Inc. All rights reserved.
1,100,100,120
"計測テスト"
0,1,2
“bi01”,“aii01”,“aif01”
55,175,213
0,0,1
10,100,100.000000
0,0,0.000000
1,2,3
1,1,1
1,1,1
994,0,940398044,1,50,64.377098
993,0,940398043,1,58,65.462513
992,0,940398042,1,65,66.545418
991,0,940398041,0,72,67.561493
990,0,940398040,0,79,68.526627
$KARACRIXTYPE/usr/log
ファイル名の生成ルールは、以下のようになっています。
MM: 月(01〜12)
1) フレームヘッダ部
0バイト目は、フレームヘッダ部になっておりデータフレームの属性情報が定義されています。
表2 フレームヘッダの定義
表3 ログフレームのフォーマット
2) 汎用データ分部(char型)
1バイト目の1byteは、アナログオブジェクトの場合に、オブジェクト登録で設定したオブジェ クトの単位の単位テーブルへのインデックス番号が格納されています。単位のインデックス番号は 「資料3 kcxname_unit.tbl」を参照して下さい。
3) アジャストタイム部(short int型)
2-3バイト目の2byteは、ネットワーク上に複数のKARACRIXシステムが存在する場合に基準タイ ムサーバーとなるホストの時間との誤差を補正するために使用します。KARACRIXを単独で使用す る場合には未使用になっています。
4) オブジェクトID部(char型)
4-7バイト目の4byteは、計測オブジェクトの計測時刻がUNIXタイム(通算秒形式)で格納され ています。
5) データタイム部(long int型)
8-15バイト目の8byteは、計測オブジェクトIDが8桁のアスキーコードで格納されています。
6) データ部(long int型、float型、char型)
16-19バイト目の4byteに、オブジェクトの計測データが格納されています。格納されているデー タ型は、フレームヘッダのDataTypeにより判断します。
バイナリオブジェクトの状態データの場合には、表4、表5に示すようにhintフラグの値により 状態情報の論理が定義されています。
表4 バイナリデータ格納エリアの定義
表5 バイナリデータのON論理
表6 ログファイル保存形式
1 2 #include <stdio.h> 3 #include <fcntl.h> 4 #include <time.h> 5 6 typedef struct { 7 unsigned char flag; 8 unsigned char etc; 9 short adjsec; 10 long logsec; 11 char objidname[8]; 12 } 13 kcxlogrech; 14 15 typedef struct { 16 kcxlogrech h; 17 union { 18 unsigned char b[4]; 19 long l; 20 float f; 21 } d; 22 } 23 kcxlogrec; 24 25 main() 26 { 27 int i, fd; 28 long ltime; 29 char objidname[16]; 30 char filename [1024]; 31 kcxlogrec logrec; 32 struct tm *jikan; 33 34 /* 2000年5月のファイル */ 35 strcpy( filename, "sys_itv0005.log" ); 36 37 if (( fd = open( filename, O_RDONLY, 0444 )) >= 0 ) { 38 39 while( read( fd, (void *)&logrec,sizeof( kcxlogrec )) > 0 ){ 40 41 ltime = logrec.h.logsec + logrec.h.adjsec; 42 jikan = localtime( <ime ); 43 44 for(i=0;i<8;i++){ 45 objidname[i] = logrec.h.objidname[i]; 46 } 47 objidname[i] = (char)0; 48 49 printf("objid名 = %s\n", objidname ); 50 printf("記録時間:yy=%d mm=%d dd=%d hh=%d mi=%d ss=%d\n", 51 jikan->tm_year+1900,jikan->tm_mon+1, jikan->tm_mday, 52 jikan->tm_hour,jikan->tm_min, jikan->tm_sec ); 53 54 if( (logrec.h.flag & 0x07) == 0x01 ){ 55 printf("バイナリデータ = %d ON論理 = %d ", 56 (int)logrec.d.b[0],(int)logrec.d.b[2] ); 57 }else if( (logrec.h.flag & 0x07) == 0x02 ){ 58 printf("整数データ = %d 単位コード = %d", 59 logrec.d.l,(int)logrec.h.etc ); 60 }else if( (logrec.h.flag & 0x07) == 0x03 ){ 61 printf("実数データ = %f 単位コード = %d", 62 logrec.d.f,(int)logrec.h.etc ); 63 } 64 printf("\n\n" ); 65 66 } 67 68 close(fd); 69 70 } 71 }
KARACRIXで印刷を行う場合の出力先は、インストール時には「lp」に設定されています。この lpがシステムのprintcapファイルにない場合はlpを作成するか、またはKARACRIXの出力先を変 更することができます。
$KARACRIXTYPE/usr/sdx/sys_#obj_system.edt
この出力先の変更は、次のファイルの記述を変更することで可能です。
変更の記述個所については、資料5を参照下さい。
オブジェクトの状態ダイアログは、基本的にオブジェクトの現在の状態値を表示して確認するた めの機能を提供しますが、擬似オブジェクト(17章17.2を参照)として扱うものに関しては状態 値を設定できるようになっています。
外部のセンサなどに割り付けられている実オブジェクトと擬似オブジェクトを識別するために KARACRIXシステム内部で保持している識別情報をもとに状態ダイアログの表示が切替えられるよ うになっています。
KARACRIX内部の識別情報は、計測制御通信プログラムの中でkcxobj_defdlgwintype_set()関数 (「19章KCXライブラリリファレンス」を参照)を使用してセットします。
以上のようなしくみを提供する理由は、通信プログラムが状態値を書き込んでいるオブジェクト
に対して、状態ダイアログから値を設定できてしまうとオブジェクトへの書き込みが競合してしま
うため、これを避けるための措置です。
#Copyright (c) 1996-2000 S.I.Soubou,Inc. All rights reserved.
#<< KARACRIX 環境データ >>
#
sysoption, ""
externalsrcpath, "/tmp" ←インポート/エクスポートするディレクトリ※1
rmtsecuchk, on
rmtctlperm, on ←Web、Eメールでアクセスをしないなら“off”
rmtctlpublic, on
cadeditperm, on ←CAD編集をしないなら“off”
prgeditperm, on ←プログラム編集をしないなら“off”
webjpgquality, 75 ←Web画像(JPEG)のクウォリティ(1〜100)
xidefdlgwintype, viewset
copyrightdpysec, 3 ←ライセンスウィンドウ表示の時間(0〜秒)
#
bootclean, on ←起動時に印刷スプールのクリアをしないなら“off”
txcodehint, euc
entrytext, key
ximserver, on ←日本語入力をしない(XIMサーバなし)なら“off”
alarmbeep, on
sysdbtype, text
logdbtype, text
videoimgrec, on
menuwinmappt, auto
emailrcvtype, pop
emailrcvunitsec, 60
hardcopycolor, color
printerdpi, 300
fontimgdotsz, 256
psoption, ""
kcxenvfilepath, "/tmp"
vflibname, "kcxVFlibd0a"
vflibpath, "open/kcxsvr/bin/"
vflibwait, 0
#
ccmacro, "/usr/bin/cc","cc","-D_KcxOsLINUX","-D_KcxVsTpNRM0","-O" ←コンパイルオプション※2
mkmacro, "/usr/bin/make","make","-f","/tmp/makefile.kcx","static"
cclibinc, "-I/usr/local/include","-I/usr/X11R6/include","-L/usr/X11R6/lib","-lX11","-lm"
#
printprg, KcxTBLtp_PRIPRG_Message, master,"Msg0","Msg0","0","1"
printprg, KcxTBLtp_PRIPRG_Report0, always,"Rep0","Rep0","1","1"
printprg, KcxTBLtp_PRIPRG_Report1, always,"Rep1","Rep1","1","1"
printprg, KcxTBLtp_PRIPRG_HardCopy,always,"Hdc0","Hdc0","1","1"
printprg, KcxTBLtp_PRIPRG_PrgList, always,"Lst0","Lst0","1","1"
#
※1 “/”が先頭に付くとフルパス指定になり、“/”が無い場合、KARACRIXのディレクトリから の相対パスになります。この場合、usr/ufileディレクトリの指定を推奨します。
※2 FreeBSDの場合は”-D_KcxOsLINUX”が”-D_KcxOsFREEBSD”となります。
#Copyright (c) 1996-2000 S.I.Soubou,Inc. All rights reserved.
#<< KARACRIX UNIX環境データ >>
# unixidname(c),unixidval(i)
#
shmkey_env, 21100 ←シェアードメモリのキー番号です
shmkey_ipc, 21200 〃
shmkey_obj, 21300 〃
shmkey_web, 21400 〃
#
#(mesgkey値とsemkey値がラップしてはいけません)
msgkey_opseventproc, 22100 ←セマフォのキー番号です
msgkey_eventmkdproc, 22200 〃
msgkey_eventactproc, 22300 〃
msgkey_consmesgproc, 22400 〃
semkey_consmesgmem, 23100 ←セマフォのキー番号です
semkey_histeventmem, 23200 〃
semkey_send1stmem, 23300 〃
semkey_sendfinalmem, 23400 〃
semkey_mtrendmem, 23500 〃
semkey_usershmem, 23600 〃
semkey_httpdcgibin, 23700 〃
semkey_uniquerecnum, 23800 〃
#
ipport_sedmon_syseditor, 51001 ←ソケット通信のポート番号です
ipport_sedmon_monitor, 51002 〃
ipport_sedcad_syseditor, 51101 〃
ipport_sedcad_cad, 51102 〃
ipport_sedcpl_syseditor, 51201 〃
ipport_sedcpl_compiler, 51202 〃
ipport_sedcmd_syseditor, 51301 〃
ipport_sedcmd_cmdserver, 51302 〃
ipport_objprc_bootobjctl, 51401 〃
ipport_objprc_sedobjctl, 51402 〃
ipport_objprc_cadobjctl, 51403 〃
ipport_objprc_schobjctl, 51404 〃
ipport_objprc_procctler, 51405 〃
ipport_objprc_emailobjctl, 51406 〃
ipport_pri_printer, 51501 〃
ipport_pri_ops, 51601 〃
ipport_emailsv_emgonly, 51701 〃
ipport_snd_opsbos, 51801 〃
ipport_snd_opsbom, 51802 〃
ipport_snd_iosnd, 51803 〃
#
ipport_monfsv_kcx, 52001 〃
ipport_monfsv_vflib, 52002 〃
ipport_sedfsv_kcx, 52101 〃
ipport_sedfsv_vflib, 52102 〃
ipport_cadfsv_kcx, 52201 〃
ipport_cadfsv_vflib, 52202 〃
ipport_fontserver_kcx, 52301 〃
ipport_fontserver_vflib, 52302 〃
ipport_sedback_syseditor, 52401 〃
ipport_sedback_backup, 52402 〃
ipport_monwebfsv_kcx, 52501 〃
ipport_monwebfsv_vflib, 52502 〃
ipport_sedwebfsv_kcx, 52601 〃
ipport_sedwebfsv_vflib, 52602 〃
#
#
※他のアプリケーションと上記のキー番号、ポート番号が衝突している場合に変更して下さい。
#Copyright (c) 1996-2000 S.I.Soubou,Inc. All rights reserved.
#<< KARACRIX 単位データ >>
#idcode(i), "dpysname(c)", "dpylname(c)", "etcname(c)" ←この順でエントリを作成します
#
0, "-", "-", "- (null)"
1, "A", "A", "A (ampere)"
2, "Bq", "Bq", "Bq (becquerel)"
3, "C", "C", "C (coulomb)"
4, "F", "F", "F (farad)"
5, "Hz", "Hz", "Hz (hertz)"
6, "J", "J", "J (joule)"
7, "K", "K", "K (kelvin)"
8, "N", "N", "N (newton)"
9, "Pa", "Pa", "Pa (pascal)"
10, "S", "S", "S (siemens)"
11, "Sv", "Sv", "Sv (sievert)"
12, "V", "V", "V (volt)"
13, "W", "W", "W (watt)"
14, "Wb", "Wb", "Wb (weber)"
#
16, "%", "%", "% (percent)"
17, "℃", "℃", "℃ (degree)"
18, "Ω", "Ω", "Ω (ohm)"
19, "lx", "lx", "lx (lux)"
20, "mol", "mol", "mol (mole)"
#
追加したい単位を20番以降に追加していきます。
“#”で始まる行はコメントとみなされます。
“idcode(i)”は重複しない正整数値です。
“dpysname(c)”は、KARACRIXでのオブジェクトデータを表示する際に単位として表示されます。
"dpylname(c)"は現在KARACRIXでは使われませんが、ユーザーが識別できるような名称をつけてください。
"etcname(c)"はオブジェクト登録時に選択ウィンドウで表示する内容を定義します。
#Copyright (c) 1996-2000 S.I.Soubou,Inc. All rights reserved.
#<< KARACRIX バイナリーステータス文字列データ >>
# idcode(i),"dpyname(c)"
# obj,"off_sname{nrm}(c)","off_lname{nrm}(c)","on_sname{alm}(c)","on_lname{alm}(c)"
# btn,"off_sname{nrm}(c)","off_lname{nrm}(c)","on_sname{alm}(c)","on_lname{alm}(c)"
# end
#
0, "ON/OFF"
obj, "OFF", "OFF", " ON", " ON"
btn, "OFF", "", " ON", ""
end
1, "オン/オフ"
obj, "オフ", "オフ", "オン", "オン"
btn, "オフ", "", "オン", ""
end
2, "起動/停止"
obj, "停止", "停止", "起動", "起動"
btn, "停止", "", "起動", ""
end
3, "実行/停止"
obj, "停止", "停止", "実行", "実行"
btn, "停止", "", "実行", ""
end
4, "開/閉"
obj, "閉", "閉", "開", "開"
btn, "閉", "", "開", ""
end
5, "OPEN/CLOSE"
obj, "クローズ", "クローズ", "オープン", "オープン"
btn, "クローズ", "", "オープン", ""
end
KARACRIXでは印刷時にUNIXシステムの”lpr”コマンドを実行します。コマンドで印刷すると きフィルター等を使用するためにオプションを設定しているユーザーは、そのオプションをこ こに設定します。
特に指定のないところは変更しないで下さい。
#Copyright (c) 1996-2000 S.I.Soubou,Inc. All rights reserved.
# no(i),perm(i),objidname{[8]}(c),objidcore(i),objtypename(c) ,objname(c)
# no(i),perm(i),objitemname(c),valtype{ifc}(c),val(if"c")
# end
#
0,1,"system",1,KcxOBJtp_SYSTEM_SysStd,"system"
0,0,KcxTBLtp_OBJSYSTEM_RmtProtocol,c,""
1,0,KcxTBLtp_OBJSYSTEM_RmtHostAddr,c,""
2,0,KcxTBLtp_OBJSYSTEM_RmtPortAddr,i,0
end
1,1,"_mesg0P",2,KcxOBJtp_PRINTER_UsrStd,"_mesg0P"
0,0,KcxTBLtp_OBJPRINTER_RmtProtocol,c,""
1,0,KcxTBLtp_OBJPRINTER_RmtHostAddr,c,""
2,0,KcxTBLtp_OBJPRINTER_RmtPortAddr,i,0
3,1,KcxTBLtp_OBJPRINTER_AlmCnvCode,i,0
4,1,KcxTBLtp_OBJPRINTER_Format,c,"escp"
5,1,KcxTBLtp_OBJPRINTER_PauseAnsSec,i,5
6,1,KcxTBLtp_OBJPRINTER_SpoolDirName,c,"0"
7,1,KcxTBLtp_OBJPRINTER_SpoolCleanSec,i,1800
8,1,KcxTBLtp_OBJPRINTER_SpoolCleanMByte,i,4
9,1,KcxTBLtp_OBJPRINTER_Protocol,c,"rs232c"
10,1,KcxTBLtp_OBJPRINTER_ProtocolOpt0,c,"/dev/tty00"
11,1,KcxTBLtp_OBJPRINTER_ProtocolOpt1,c,"9600"
12,1,KcxTBLtp_OBJPRINTER_ProtocolOpt2,c,"8"
13,1,KcxTBLtp_OBJPRINTER_ProtocolOpt3,c,"e"
14,1,KcxTBLtp_OBJPRINTER_ProtocolOpt4,c,"1"
15,1,KcxTBLtp_OBJPRINTER_ProtocolOpt5,c,""
16,1,KcxTBLtp_OBJPRINTER_ProtocolOpt6,c,""
17,1,KcxTBLtp_OBJPRINTER_ProtocolOpt7,c,""
end
2,1,"_ps0P",3,KcxOBJtp_PRINTER_UsrStd,"_ps0P"
0,0,KcxTBLtp_OBJPRINTER_RmtProtocol,c,""
1,0,KcxTBLtp_OBJPRINTER_RmtHostAddr,c,""
2,0,KcxTBLtp_OBJPRINTER_RmtPortAddr,i,0
3,1,KcxTBLtp_OBJPRINTER_AlmCnvCode,i,0
4,1,KcxTBLtp_OBJPRINTER_Format,c,"ps"
5,1,KcxTBLtp_OBJPRINTER_PauseAnsSec,i,5
6,1,KcxTBLtp_OBJPRINTER_SpoolDirName,c,"1"
7,1,KcxTBLtp_OBJPRINTER_SpoolCleanSec,i,3600
8,1,KcxTBLtp_OBJPRINTER_SpoolCleanMByte,i,-1
9,1,KcxTBLtp_OBJPRINTER_Protocol,c,"unix"
10,1,KcxTBLtp_OBJPRINTER_ProtocolOpt0,c,"/usr/bin/lpr"
11,1,KcxTBLtp_OBJPRINTER_ProtocolOpt1,c,"lpr"
12,1,KcxTBLtp_OBJPRINTER_ProtocolOpt2,c,"-Plp"
←printcapのエントリを指定します
13,1,KcxTBLtp_OBJPRINTER_ProtocolOpt3,c,""
←lprのオプションを指定します
14,1,KcxTBLtp_OBJPRINTER_ProtocolOpt4,c,""
←lprのオプションを指定します
15,1,KcxTBLtp_OBJPRINTER_ProtocolOpt5,c,""
←lprのオプションを指定します
16,1,KcxTBLtp_OBJPRINTER_ProtocolOpt6,c,""
←lprのオプションを指定します
17,1,KcxTBLtp_OBJPRINTER_ProtocolOpt7,c,""
←lprのオプションを指定します
end
3,1,"_pcadP",4,KcxOBJtp_PRIPRG_SysStd,"_pcadP"
0,0,KcxTBLtp_OBJPROGRAM_RmtProtocol,c,""
1,0,KcxTBLtp_OBJPROGRAM_RmtHostAddr,c,""
2,0,KcxTBLtp_OBJPROGRAM_RmtPortAddr,i,0
3,0,KcxTBLtp_OBJPROGRAM_MyIpPortAddr0,i,55000
4,0,KcxTBLtp_OBJPROGRAM_MyIpPortAddr1,i,55001
5,0,KcxTBLtp_OBJPROGRAM_MyIpPortAddr2,i,0
6,1,KcxTBLtp_OBJPROGRAM_AlmCnvCode,i,0
7,1,KcxTBLtp_OBJPROGRAM_CompileLang,i,0
8,1,KcxTBLtp_OBJPROGRAM_QueingSeqOutPut,i,1
9,1,KcxTBLtp_OBJPROGRAM_WebWrtCtlLevel,i,-1
end
4,1,"_mcadP",5,KcxOBJtp_PRIPRG_SysStd,"_mcadP"
0,0,KcxTBLtp_OBJPROGRAM_RmtProtocol,c,""
1,0,KcxTBLtp_OBJPROGRAM_RmtHostAddr,c,""
2,0,KcxTBLtp_OBJPROGRAM_RmtPortAddr,i,0
3,0,KcxTBLtp_OBJPROGRAM_MyIpPortAddr0,i,55003
4,0,KcxTBLtp_OBJPROGRAM_MyIpPortAddr1,i,55004
5,0,KcxTBLtp_OBJPROGRAM_MyIpPortAddr2,i,0
6,1,KcxTBLtp_OBJPROGRAM_AlmCnvCode,i,0
7,1,KcxTBLtp_OBJPROGRAM_CompileLang,i,0
8,1,KcxTBLtp_OBJPROGRAM_QueingSeqOutPut,i,1
9,1,KcxTBLtp_OBJPROGRAM_WebWrtCtlLevel,i,-1
end
5,1,"_listP",6,KcxOBJtp_PRIPRG_SysStd,"_listP"
0,0,KcxTBLtp_OBJPROGRAM_RmtProtocol,c,""
1,0,KcxTBLtp_OBJPROGRAM_RmtHostAddr,c,""
2,0,KcxTBLtp_OBJPROGRAM_RmtPortAddr,i,0
3,0,KcxTBLtp_OBJPROGRAM_MyIpPortAddr0,i,55006
4,0,KcxTBLtp_OBJPROGRAM_MyIpPortAddr1,i,55007
5,0,KcxTBLtp_OBJPROGRAM_MyIpPortAddr2,i,0
6,1,KcxTBLtp_OBJPROGRAM_AlmCnvCode,i,0
7,1,KcxTBLtp_OBJPROGRAM_CompileLang,i,0
8,1,KcxTBLtp_OBJPROGRAM_QueingSeqOutPut,i,1
9,1,KcxTBLtp_OBJPROGRAM_WebWrtCtlLevel,i,-1
end
#
資料3の単位と同様に、5番目以降に状態を追加していきます。
(Apache1.3.3以前のバージョン場合)
Apacheの設定ファイル access.conf、srm.conf を以下のように修正しKARACRIXのホームページをアクセスできるように設定します。なお、これらの設定ファイルの存在している場所はディス トリビューションにより異なりますので、各OSの説明書を参照して下さい。
(以下の説明の中で、Apacheのドキュメントパス(/usr/local/apache/share)は、ディストリ ビューションにより異なる場合がありますので読み替えて下さい)
下記の例では、KARACRIXを /home/karacrix にインストールしたものとして説明します。また、XXXXXXの部分は、お使いのKARACRIXのタイプに合わせて書き換えて記述してください。
1) karacrix200L の場合: ../XXXXXX/.. -> ../karacrix200L/..
2) karacrix500R の場合: ../XXXXXX/.. -> ../karacrix500R/..
ファイル内の以下の行をエディタで変更して下さい。#を付けている行は、オリジナルの記述を 保存しておくためです。#を付けた行の次の行にKARACRIXのドキュメントパスを追記します。
A) access.conf ファイル
A.1) htdocsのパス
<Directory /usr/local/apache/share/htdocs>[変更前]↓
#<Directory /usr/local/apache/share/htdocs> [変更後]
<Directory /home/karacrix/XXXXXX/sys/sweb/htdocs>
A.2) cgi-binのパス
<Directory /usr/local/apache/share/cgi-bin>[変更前]
↓
#<Directory /usr/local/apache/share/cgi-bin> [変更後]
<Directory /home/karacrix/XXXXXX/sys/sweb/cgi-bin>
AllowOverride None
Options None
</Directory>
B) srm.conf ファイル
B.1) htdocsのパス
DocumentRoot /usr/local/apache/share/htdocs [変更前]
↓
#DocumentRoot /usr/local/apache/share/htdocs [変更後]
DocumentRoot /home/karacrix/XXXXXX/sys/sweb/htdocs
B.2) cgi-binのパス
ScriptAlias /cgi-bin/ /usr/local/apache/share/cgi-bin/ [変更前]
↓
#ScriptAlias /cgi-bin/ /usr/local/apache/share/cgi-bin/
ScriptAlias /cgi-bin/ /home/karacrix/XXXXXX/sys/sweb/cgi-bin/ [変更後]
以上の変更をおこなった後、例えば、コンピュータを再起動するなどしてWebサーバーを立ち上 げ直して下さい。
(Apache1.3.4以降のバージョン場合)
Apacheの三つの設定ファイル access.conf、srm.conf、httpd.confファイルが一つの httpd.conf に統合されています。httpd.confファイルを以下のように修正してKARACRIXのホームページをア クセスできるように設定します。なお、これらの設定ファイルの存在している場所はディストリ ビューションにより異なりますので、各OSの説明書を参照して下さい。
(以下の説明の中で、Apacheのドキュメントパス(/usr/local/apache)は、ディストリビューショ ンにより異なる場合がありますので読み替えて下さい)
下記の例では、KARACRIXを /home/karacrix にインストールしたものとして説明します。また、XXXXXXの部分は、お使いのKARACRIXのタイプに合わせて書き換えて記述してください。
1) karacrix200L の場合: ../XXXXXX/.. -> ../karacrix200L/..
2) karacrix500R の場合: ../XXXXXX/.. -> ../karacrix500R/..
ファイル内の以下の行をエディタで変更して下さい。#を付けている行は、オリジナルの記述を 保存しておくためです。#を付けた行の次の行にKARACRIXのドキュメントパスを追記します。
(httpd.conf ファイル)
1) htdocsのパス
DocumentRoot /usr/local/apache/htdocs [変更前]↓
#DocumentRoot /usr/local/apache/htdocs [変更後]
DocumentRoot /home/karacrix/XXXXXX/sys/sweb/htdocs
2) htdocsのパス
<Directory /usr/local/apache/htdocs>[変更前]
↓
#<Directory /usr/local/apache/htdocs> [変更後]
<Directory /home/karacrix/XXXXXX/sys/sweb/htdocs>
3) cgi-binのパス
ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/ [変更前]
↓
#ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/
ScriptAlias /cgi-bin/ /home/karacrix/XXXXXX/sys/sweb/cgi-bin/ [変更後]
4) cgi-binのパス
<Directory /usr/local/apache/cgi-bin>[変更前]
↓
#<Directory /usr/local/apache/cgi-bin> [変更後]
<Directory /home/karacrix/XXXXXX/sys/sweb/cgi-bin>
AllowOverride None
Options None
</Directory>
以上の変更をおこなった後、例えば、コンピュータを再起動するなどしてWebサーバーを立ち上 げ直して下さい。
● Webからのアクセス
Webサーバーが立ち上がっている状態で、KARACRIXを起動して下さい。
KARACRIXが立ち上がっているホストとネットワークでつながっているコンピュータでWebブラウ ザを実行しKARACRIXが起動しているホストのURLを指定します。
例) 直接IPアドレス(DNSを利用しない場合等)を指定する場合
http://192.168.0.100/
URLを指定すると、KARACRIXホームページが読み込まれます。ユーザ認証を要求してきますので、 ユーザーIDとパスワードを入力して下さい。
[Linuxの場合]
2.2.x以降のカーネルを採用した、最近のディストリビューションをご使用の場合はビデオキャ プチャドライバが標準でインストールされている場合がほとんどですので、その場合は以下の [C]から作業をして下さい。それ以前の(2.0.x系)のカーネルを使用したディストリビュー ションをご使用の場合には、[A]から作業する必要があるかもしれません。
[A] Linuxカーネルの再構築
1. Linux Kernel Configuration が Loadable Module Supportに対応していない場合、これに対応したカーネルを作ります。
% cd /usr/src/linux
2. スーパーユーザになる。
% su
#
3. カーネルのコンフィグレーションを行う。
# make xconfig
Loadable_module_supportの項目で、Enable_loadable_module_support が y になっていなければ yにして。 MainMenu に戻り Save&Exitします。 (注意:表示内容と実際が異なる場合があるようです。)
4. 新しいカーネルを作成し入れ替える。(要注意)
# make dep
# make clean
# make zlilo (或いは make bzlilo)
# make modules
# make modules_install
[B] Linuxドライバ(Bt848)のインストール
カメラ画像を扱うためには、bt848チップを搭載したビデオキャプチャカードと デバイスドライバが必要です。以下にデバイスドライバのインストールについて説明します。下記の サイトからデバイスドライバを取得出来ます。
http://www.thp.uni-koeln.de/~rjkm/linux/bttv.html
bttv-0.5.22.tar.gz(比較的安定している)
bttv-0.6.4.tar.gz(最新版)
1. 作業するディレクトリにドライバファイル(圧縮)を置く。
例) /home/karacrix で作業する場合
% cd /home/karacrix
2. スーパーユーザになる。
% su
#
3. 解凍する。
# tar xzvf bttv-0.5.22.tar.gz (ドライババージョン名(0.5.22)可変)
4. 作業ディレクトリに移動する。
# cd bttv/driver
5. make インストールする。
# make
# make install (失敗時: cp -v *.o /lib/modules/バージョン名/misc)
6. デバイスファイルを作成する。
# sh MAKEDEV
7. ヘッダファイルを include にコピーする。
# cp videodev.h /usr/include/linux
8. インストールの確認をする。
# cd /lib/modules/2.0.36/misc (カーネルバージョン名(2.0.36)可変)
ここに、 bttv.o, i2c.o, videodev.o が存在していれば正しくインストールされています。
[C] Linuxドライバ(Bt848)をモジュールとして組込む
1. スーパーユーザになる。
% su
#
2. 起動ファイルの設定をする為、ディレクトリを移動。
# cd /etc/rc.d
3. rc.modules ファイルに以下の記述を追加する。
(注: rc.modules はデイストリビューションによって、存在しないことがあります。この場合は、 modules を実行権限を付けて新規作成するか、或いは、rc 起動される他のファイル(rc.local等)に下記の記述を追加して下さい。)
# Video:
/sbin/modprobe videodev
/sbin/modprobe i2c
/sbin/modprobe bttv
※Linuxの最近のバージョンでは、デバイスファイルが作成されていない場合がありますので以 下の作業で確認をして、もし作成されていなければ以下の手順で作成して下さい。
4. デバイスファイルを確認する。
# cd /dev
# ls -l video*
lrwxrwxrwx 1 root root 11 Dec 29 18:08 video -> /dev/video0
crw-rw-rw- 1 root root 81, 0 Dec 29 18:08 video0
crw-rw-rw- 1 root root 81, 1 Dec 29 18:08 video1
crw-rw-rw- 1 root root 81, 2 Dec 29 18:08 video2
crw-rw-rw- 1 root root 81, 3 Dec 29 18:08 video3
上記のように表示されていれば、デバイスファイルは作成されています。もし、表示されない場 合には、5.を実行してください。
5. デバイスファイルを作成する。
# sh MAKEDEV video
[D] マシンの再起動と実行
1. マシンを再起動します。
2. ドライバモジュール名がロードされているか確認をする。
% lsmod
Module: #pages: Used by:
bttv 8 0
i2c 1 [bttv] 0
videodev 1 [bttv] 0
モジュール名に、bttv, i2c, videodev が出ていれば正常。
もし、出ていない場合は正しくモジュールが認識されていません。調査が必要です。
(例えば、/sbin/modprob videodev を手動で起動してエラーメッセージを見る)
3. X Window System を 16 或いは 24 プレーンで起動する。
例) startx コマンドを用いる場合
% startx -- -bpp 16
4. KARACRIX を起動し、カメラハンドラサンプルプログラムをコンパイルし、 プログラムを実行させます。その後、監視パネル上にカメラ画像を 描画させる領域をCADにて定義します。これにより、「監視パネル」 画面、或は遠隔のブラウザよりカメラ画像を見ることができます。
※KARACRIX V2.09 以降の手順(現在は、ビデオレコーダデーモンプログラムに機能を移設した ため、4.の手順は不要で、実行すると競合を起こします。
[FreeBSDの場合]
1. デバイスドライバに対応したカーネルを作ります。
% cd /usr/src/sys/i386/conf
2. スーパーユーザになる。
% su
#
3. カーネルのコンフィグレーション GENERIC(例) に以下の記述を追加する。
device bktr0
4. make インストールする。
# config GENERIC
# cd ../../compile/GENERIC
# make depend; make
# make install
5. デバイスファイルを作成する。
# cd /dev
# sh MAKEDEV bktr
X Window Systemの起動法などは、LINUXと同様ですので参考にして下さい。