...

pragma title( "**-*** 風向風速データ演算装置(高圧ガス保安協会向け)" )

by user

on
Category: Documents
5

views

Report

Comments

Transcript

pragma title( "**-*** 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
title( "**-*** 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " データ演算装置 メイン処理" )
/*************************************************************************
**
**-*** 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
データ演算装置 メイン処理
*
*
Module Name
: GP_MAIN.C
*
*************************************************************************/
//----------------------------------------------------------------------------------------// measure_main( void )
観測 メイン処理
// sys_init( void )
システム 初期設定処理
// sys_down( void )
システム 終了処理
// measure_init( void )
観測 初期設定処理
// measure_second( void )
瞬間値 観測処理
// measure_mean( void )
1/10 分 観測処理
// measure_stop( void )
観測 停止処理
// disp_datetime( void )
日付、時刻 表示処理
// init_data_area( void )
データ・エリア 初期設定処理
// init_mean_data( DEF_MDATA *ptr )
表示データ(平均値 演算値) 初期設定処理
// init_da600_data( DEF_SDATA *ptr )
表示データ(瞬間値 観測値) 初期設定処理
// handle_err( WORD deverror , WORD errcode , LPWORD devhdr )
INT 24H (例外エラー処理ハンドラ)
// int_ctrl_c( void )
INT 23H (Ctrl+C 割り込み処理ハンドラ)
//----------------------------------------------------------------------------------------#include
#include
#include
"**-***.H"
"GP_DATA.H"
"GP_MENU.H"
#pragma
page()
/****************************************
**
観測 定数
**
****************************************/
#define
DATE_NONE
/*****************************************
**
参照外部変数
**
*****************************************/
extern
FUNC_FORM fnc_key[9] ;
//ファンクション・キ-情報
#pragma
page()
/****************************************************************
***
void CDECL main( void )
*
*
**-*** 型データ演算装置 メイン処理
*
****************************************************************/
void CDECL main( void )
{
// システム 初期設定
sys_init() ;
while ( FOREVER )
// FOREVER=1
{
if ( file_sys.meas == '0' )
// file_sys.meas = ( char )( mode ¦ 0x30 ) <GP_WRITE.C>
{
menu_main() ;
// メニュー処理 <GP_MENU.C>
}
else
{
system_flag = SYS_MEASURE
;
// SYS_MEASURE=観測中 <GP_720.H>
}
if ( system_flag == SYS_EXIT )
// SYS_EXIT=システム終了 <GP_DATA.H>
{
break
;
}
else if ( system_flag == SYS_MEASURE )
{
measure_main()
;
// 観測 メイン処理 <Me>
}
}
sys_down()
}
;
//システム 終了処理 <Me>
#pragma
page()
/****************************************************************
***
void measure_main( void )
*
*
観測 メイン処理
*
****************************************************************/
void
measure_main( void )
{
time_t
s_time , c_time , t_time ;
t_time = s_time = measure_init() ;
//観測 初期設定
if ( system_flag == SYS_MEASURE ¦¦ system_flag == SYS_DATE )
{
while ( FOREVER )
{
time( &c_time ) ;
if ( c_time != t_time )
{
disp_datetime()
t_time = c_time
}
;
;
//日付、時刻 表示 <Me>
if ( c_time - s_time >= sampling_stime )
{
measure_second() ; //1 秒観測
s_time = c_time ;
}
receive_da600() ;
//**-*** 型シリアル・データ 受信
if ( !check_function() )
//ファンクション・キー 入力チェック
{
system_flag = SYS_MENU ;
break ;
//観測終了
}
}
}
measure_stop()
;
//観測 停止処理 <Me>
}
#pragma
page()
/****************************************************************
***
void sys_init( void )
*
*
システム 初期設定処理
*
****************************************************************/
void
sys_init( void )
{
char
str[128] ;
short
len ;
system_flag = SYS_START ;
init_data_area() ;
//データ・エリア 初期設定 <Me>
read_sysfile() ;
//システム・ファイル 読み込み <GP_PPLOT.C>
printer_init() ;
//プリンタ 初期化 <GP_MAIN.C>
_getcwd( str , 120 ) ;
strcpy( exe_directry , str ) ;
//起動ディレクトリ名 退避
if ( strlen( str ) != 3 )
{
strcat( str , "\\" )
}
len = strlen( str )
;
;
/*-----*
フォント・ファイル 登録
*-----*/
strcpy( &str[len] , "SYSTEM.FON" ) ;
_registerfonts( str ) ;
strcpy( &str[len] , "PREV.FON" ) ;
_registerfonts( str ) ;
strcpy( &str[len] , "TMSRB.FON" ) ;
_registerfonts( str ) ;
_displaycursor( _GCURSOROFF ) ;
_setvideomode( _VRES16EXCOLOR ) ;
//カーソル 消去
//ビデオ・モード 設定(640×480 16 色
/*-----*
割り込みハンドラ 設定
*-----*/
handle_int23 = ( IHDL )_dos_getvect( INT23 ) ;
handle_int24 = ( IHDL )_dos_getvect( INT24 ) ;
_dos_setvect( INT23 , int_ctrl_c ) ;
//Ctrl+C ハンドラ 退避
//例外処理ハンドラ 退避
//Ctrl+C 割り込みハンドラ 登録
<GP_COMBD.C>
_harderr( handle_err )
;
//例外エラー・ハンドラ 登録
}
#pragma
page()
/****************************************************************
***
void sys_down( void )
*
*
システム 終了処理
*
****************************************************************/
void
sys_down( void )
{
comio_end() ;
//コミュニケーション終了 <Me>
if ( ( printer_status() & 0x90 ) == 0x90 )
{
printer_line( "\f" , 1 ) ;
}
//改頁
/*-----*
割り込みハンドラ 復帰
*-----*/
_dos_setvect( INT23 , handle_int23 ) ;
//INT23
_dos_setvect( INT24 , handle_int24 ) ;
//INT24
_chdir( exe_directry ) ;
//起動ディレクトリ名
_unregisterfonts() ;
//フォント・ファイル クローズ
_setvideomode( _DEFAULTMODE ) ;
//画面モード デフォルト
_displaycursor( _GCURSORON ) ;
//カーソル 表示
}
#pragma
page()
#pragma
optimize( "" , off )
/****************************************************************
***
time_t measure_init( void )
*
*
観測 初期設定処理
*
*
Return Value
*
*
現時刻
*
****************************************************************/
time_t
measure_init( void )
{
time_t
s_time , c_time ;
measure_flag = FALSE ;
write_sysfile( 1 ) ;
old_year = old_month = old_day = 99 ;
old_hour = old_minute = old_second = 99
//待機中
//観測中 設定 <GP_WRITE.C>
;
/*-----*
受信データ
*-----*/
flag_com1 = flag_com2 = flag_com3 = FALSE
flag_cal1 = flag_cal2 = flag_cal3 = FALSE
in_da600a = in_da600b = in_da600c = 0 ;
out_da600a = out_da600b = out_da600c = 0
num_da600a = num_da600b = num_da600c = 0
;
;
//**-***
;
;
//COM-2S 動作フラグ
//平均演算フラグ
受信バッファ 入力ポインタ
//**-*** 受信バッファ 出力ポインタ
/**-*** 受信データ数
ptr_da600a = ptr_da600b = ptr_da600c = 0 ;
setup_comboard() ;
//シリアルI/Oボード(COM-2S(PC)) 設定 <Me><GP_COMBD.C>
display_row = display_top = 0 ;
//表示データ 先頭ポインタ 初期化
data_suma.n = data_sumb.n = data_sumc.n = 0.0 ;
sampling_stime = sampling_rec >= 1.0 ? ( time_t )sampling_rec : 1
sampling_num = sampling_rec >= 1.0 ? 1.0 : 1.0 / sampling_rec ;
draw_title() ;
disp_datetime()
time( &s_time )
;
//観測画面 タイトル描画 <GP_MEAS.C>
//日付、時刻 表示 <Me>
;
;
while ( FOREVER )
{
time( &c_time )
;
if ( c_time != s_time )
{
disp_datetime()
;
//日付、時刻 表示 <Me>
if ( !check_function() )
//ファンクション・キー 入力チェック
{
system_flag = SYS_MENU ;
//観測中止
break ;
}
if ( ( curr_second + sampling_stime ) == 60 && ( ( curr_minute + 1 ) % sampling_mean )
== 0 )
{
draw_mean_wt() ;
//平均風速/風向/温度画面 タイトル 描画処理 <GP_MEAS.C>
break ;
}
}
receive_da600()
;
//DA-600 シリアル・データ 受信 <GP_COMBD.C>
}
old_year = curr_year ;
old_month = curr_month ;
old_day = curr_day ;
old_hour = curr_hour ;
old_minute = curr_minute ;
old_second = curr_second ;
check_file_date( 0 )
check_file_date( 1 )
;
;
disp_ptrm = disp_num = 0
measure_flag = TRUE
return( c_time ) ;
//平均値 収録期間 チェック <GP_DATE.C>
//瞬間値 収録期間 チェック
;
;
//観測中
}
#pragma
page()
#pragma
optimize( "" , on )
/****************************************************************
***
void measure_second( void )
*
*
瞬間値 観測処理
*
****************************************************************/
void
measure_second( void )
{
short
i , ptra , ptrb , ptrc , offa , offb , offc ;
if ( system_flag == SYS_MEASURE )
{
check_file_date( 1 ) ;
}
//瞬間値 収録期間 チェック <GP_DATE.C>
if ( curr_hour != old_hour )
{
creat_filename( FALSE )
old_hour = curr_hour
;
//収録ファイル 作成 <GP_WRITE.C>
;
}
if ( curr_second == 0 && ( curr_minute % sampling_mean ) == 0 )
{
measure_mean() ;
//1/10 分 観測処理
}
if ( curr_day != old_day )
{
old_day = curr_day
;
display_row = display_top = 0
;
_settextwindow( 8 , 1 , 23 , 80 )
_scrolltextwindow( 16 ) ;
_settextwindow( 1 , 1 , 25 , 80 )
disp_ptrm = disp_num = 0
;
}
if ( sampling_num != 1.0 )
{
ptra = ptr_da600a - 21
ptrb = ptr_da600b - 21
ptrc = ptr_da600c - 21
;
;
;
//10 分表示データ・テーブル ポインタ クリア
;
;
//ウインドウ座標 設定
//表示データ クリア
//ウインドウ座標 設定
offa = 20 / ( short )sampling_num
offb = 20 / ( short )sampling_num
offc = 20 / ( short )sampling_num
;
;
;
}
else
{
ptra = ptr_da600a - 1
ptrb = ptr_da600b - 1
ptrc = ptr_da600c - 1
offa = 1
offb = 1
offc = 1
;
;
;
;
;
;
}
if ( ptra < 0 )
{
ptra = MAX_RECBF + ptra
}
if ( ptrb < 0 )
{
ptrb = MAX_RECBF + ptrb
}
if ( ptrc < 0 )
{
ptrc = MAX_RECBF + ptrc
}
;
;
;
for ( i = 0 ; i < ( short )sampling_num ; i++ )
{
calcu_da600_sec( ptra , ptrb , ptrc )
creat_sdata( i ) ;
if ( display_flag >= DISP_IWT )
{
scdata_disp () ;
}
ptra += offa ;
if ( ptra >= MAX_RECBF )
{
ptra -= MAX_RECBF
}
ptrb += offb ;
if ( ptrb >= MAX_RECBF )
{
ptrb -= MAX_RECBF
}
ptrc += offc ;
if ( ptrc >= MAX_RECBF )
{
ptrc -= MAX_RECBF
}
receive_da600()
;
//**-*** 型風速計データ 成分風速(1 秒) 演算<GP_CAL.C>
//収録/表示データ 作成処理
//瞬間値データ 表示 <GP_MDSP.C>
;
;
;
/**-*** シリアル・データ 受信 <GP_COMBD.C>
}
write_sdata() ;
//瞬間値 収録
flag_com1 = flag_com2 = flag_com3 = FALSE
if ( old_year != curr_year )
{
old_year = curr_year ;
}
if ( old_month != curr_month )
{
old_month = curr_month ;
}
if ( old_minute != curr_minute )
{
old_minute = curr_minute ;
}
old_second = curr_second ;
}
;
;
#pragma
page()
/****************************************************************
***
void measure_mean( void )
*
*
1/10 分 観測処理
*
****************************************************************/
void
measure_mean( void )
{
if ( system_flag == SYS_MEASURE )
{
check_file_date( 0 ) ;
}
calcu_mean() ;
creat_mdata() ;
//平均値 収録期間 チェック <GP_DATE.C>
//平均値 演算処理 <GP_CAL.C>
//収録/表示データ 作成処理 <GP_WRITE.C>
if ( display_flag <= DISP_SSW )
{
scdata_disp () ;
//平均値データ 表示 <GP_MDSP.C>
}
write_mdata() ;
//平均値 収録 <GP_WRITE.C>
_settextwindow( 1 , 1 , 25 , 80 ) ;
//ウインドウ座標 設定
flag_cal1 = flag_cal2 = flag_cal3 = FALSE
;
}
#pragma
page()
/****************************************************************
***
void measure_stop( void )
*
*
観測 停止処理
*
****************************************************************/
void
measure_stop( void )
{
long
len ;
FILE
*fp ;
change_directry( 1 )
;
//ディレクトリ変更(演算値) <GP_PPLOT.C>
if ( ( fp = fopen( file_cname , "a+b" ) ) != NULL )
{
len = _filelength( _fileno( fp ) ) ;
fclose( fp ) ;
if ( len < SIZE_CFILE )
{
_unlink( file_cname ) ;
//データ・ファイル 削除
}
}
change_directry( 0 )
;
//ディレクトリ変更(瞬間値) <GP_PPLOT.C>
if ( ( fp = fopen( file_sname , "a+b" ) ) != NULL )
{
len = _filelength( _fileno( fp ) ) ;
fclose( fp ) ;
if ( len < SIZE_SFILE )
{
_unlink( file_sname ) ;
//データ・ファイル 削除
}
}
strcpy(
strcpy(
strcpy(
strcpy(
period_cdata.start.date
period_cdata.end.date ,
period_sdata.start.date
period_sdata.end.date ,
period_cdata.start.year = 0 ;
period_cdata.start.month = 0 ;
period_cdata.start.day = 0 ;
period_cdata.start.hour = 0 ;
period_cdata.end.year = 0 ;
period_cdata.end.month = 0 ;
period_cdata.end.day = 0 ;
, DATE_NONE ) ;
DATE_NONE ) ;
, DATE_NONE ) ;
DATE_NONE ) ;
period_cdata.end.hour = 0 ;
period_sdata.start.year = 0 ;
period_sdata.start.month = 0 ;
period_sdata.start.day = 0 ;
period_sdata.start.hour = 0 ;
period_sdata.end.year = 0 ;
period_sdata.end.month = 0 ;
period_sdata.end.day = 0 ;
period_sdata.end.hour = 0 ;
period_sdata.flag = FALSE
period_cdata.flag = FALSE
write_sysfile( 0 )
;
;
; //停止中 設定 <GP_WRITE.C>
}
#pragma
page()
/****************************************************************
***
void disp_datetime( void )
*
*
日付、時刻 表示処理
*
****************************************************************/
void
disp_datetime( void )
{
struct
dosdate_t ddate ;
struct
dostime_t dtime ;
_dos_getdate( &ddate ) ;
//システム日付 取得
_dos_gettime( &dtime ) ;
//システム時刻 取得
curr_year = ( short )ddate.year ;
curr_month = ( short )ddate.month ;
curr_day = ( short )ddate.day ;
curr_hour = ( short )dtime.hour ;
curr_minute = ( short )dtime.minute ;
curr_second = ( short )dtime.second ;
/*-----*
/*-----*
年、月、日 設定
str_datetime[0] =
str_datetime[1] =
str_datetime[2] =
str_datetime[3] =
str_datetime[5] =
str_datetime[6] =
str_datetime[8] =
str_datetime[9] =
時、分、秒 設定
str_datetime[11]
str_datetime[12]
str_datetime[14]
str_datetime[15]
str_datetime[17]
str_datetime[18]
*-----*/
char )( ddate.year
/ 1000 + '0'
char )( ddate.year % 1000 / 100 + '0'
char )( ddate.year % 100 /
10 + '0'
char )( ddate.year %
10
+ '0'
char )( ddate.month / 10 + '0' ) ;
char )( ddate.month % 10 + '0' ) ;
char )( ddate.day / 10 + '0' ) ;
char )( ddate.day % 10 + '0' ) ;
(
(
(
(
(
(
(
(
=
=
=
=
=
=
(
(
(
(
(
(
*-----*/
char )( dtime.hour /
char )( dtime.hour %
char )( dtime.minute
char )( dtime.minute
char )( dtime.second
char )( dtime.second
LOCATE( 1 , 5 ) ;
printf( str_datetime )
;
10 +
10 +
/ 10
% 10
/ 10
% 10
'0' )
'0' )
+ '0'
+ '0'
+ '0'
+ '0'
)
)
)
)
;
;
;
;
;
;
)
)
)
)
;
;
;
;
//現日付、時刻 表示
}
#pragma
page()
/****************************************************************
***
void init_data_area( void )
*
*
データ・エリア 初期設定処理
*
****************************************************************/
void
init_data_area( void )
{
short
i ;
display_flag = 0 ;
//観測画面フラグ 初期設定
/*-----*
表示データ
*-----*/
strcpy( str_datetime , "
/ /
:
:
/*-----*
平均値データ
*-----*/
for ( i = 0 ; i < 144 ; i++ )
{
strcpy( data_dispm[i].time , "
" )
;
" )
init_mean_data( &data_dispm[i].da )
//日付、時刻バッファ初期化
;
;
//時刻データ
//平均値 演算値 A <Me>
init_mean_data( &data_dispm[i].db )
init_mean_data( &data_dispm[i].db )
;
;
//平均値 演算値 B <Me>
//平均値 演算値 C <Me>
}
/*-----*
瞬間値データ
*-----*/
strcpy( data_disps.time , "
" )
init_da600_data( &data_disps.da )
init_da600_data( &data_disps.db )
init_da600_data( &data_disps.dc )
;
;
;
;
/*-----*
積算値
*-----*/
clear_sum_data( &data_suma ) ;
clear_sum_data( &data_sumb ) ;
clear_sum_data( &data_sumc ) ;
//時刻データ
//瞬間値 観測値 A <Me>
//瞬間値 観測値 B <Me>
//瞬間値 観測値 C <Me>
//瞬間値 積算データ A クリア <GP_CAL.C>
//瞬間値 積算データ B クリア <GP_CAL.C>
//瞬間値 積算データ C クリア <GP_CAL.C>
/*-----*
収録データ
*-----*/
strcpy( file_cname , " :
" ) ;
strcpy( &file_cname[10] , FILE_CAL ) ;
strcpy( file_sname , " :
" ) ;
strcpy( &file_sname[10] , FILE_SMPL ) ;
memcpy( ( char
memcpy( ( char
//演算ファイル名 初期設定
//瞬間ファイル名 初期設定
*)&data_cfile , INIT_CDATA , SIZE_CFILE )
*)&data_sfile , INIT_SDATA , SIZE_SFILE )
period_sdata.flag = period_cdata.flag = FALSE
error_flag = FALSE ;
system_flag = SYS_MENU
;
;
;
//演算値ファイル
//瞬間値ファイル
//保存開始フラグ
;
}
#pragma
page()
/****************************************************************
***
void init_mean_data( DEF_MDATA *ptr )
*
*
表示データ(平均値 演算値) 初期設定処理
*
*
Parameter
*
*
DEF_MDATA *ptr : 平均値 表示データ ポインタ
*
****************************************************************/
void
init_mean_data( DEF_MDATA *ptr )
{
strcpy( ptr->u , "****" ) ;
//水平風速データ
strcpy( ptr->d , "***" ) ;
//水平風向データ
strcpy( ptr->w , "*****" ) ; //垂直風速データ
strcpy( ptr->x , "*****" ) ; //X 成分風速データ
strcpy( ptr->y , "*****" ) ; //Y 成分風速データ
strcpy(
strcpy(
strcpy(
strcpy(
strcpy(
ptr->su
ptr->sd
ptr->sw
ptr->sx
ptr->sy
strcpy(
strcpy(
strcpy(
strcpy(
ptr->suu
ptr->sxx
ptr->syy
ptr->sww
,
,
,
,
,
"****"
"****"
"****"
"****"
"****"
,
,
,
,
)
)
)
)
)
"****"
"****"
"****"
"****"
strcpy( ptr->t , "*****" )
;
;
;
;
;
)
)
)
)
//水平風速 標準偏差データ
//水平風向 標準偏差データ
//垂直風速 標準偏差データ
//X 成分風速 標準偏差データ
//Y 成分風速 標準偏差データ
; //水平風速 乱流強度データ(σU/U)
; //X 成分風速 乱流強度データ(σX/X)
;
//Y 成分風速 乱流強度データ(σY/Y)
; //W 成分風速 乱流強度データ(σW/W)
;
//平均温度データ
}
#pragma
page()
/****************************************************************
***
void init_vector_data( DEF_SDATA *ptr )
*
*
表示データ(瞬間値 観測値) 初期設定処理
*
*
Parameter
*
*
DEF_SDATA *ptr : 瞬間値 表示データ ポインタ
*
****************************************************************/
void
init_da600_data( DEF_SDATA *ptr )
{
strcpy( ptr->x , "*****" ) ; //X 軸風速
strcpy( ptr->y , "*****" ) ; //Y 軸風速
strcpy( ptr->w , "*****" ) ; //W 軸風速
strcpy( ptr->u , "****" ) ;
//水平風速
strcpy( ptr->v , "****" ) ;
//風向
strcpy( ptr->t , "*****" )
;
//Ts 温度
}
#pragma
page()
/****************************************************************
***
VOID FAR handle_err( WORD deverror ,
*
**
WORD errcode , LPWORD devhdr )
*
*
INT 24H (例外エラー処理ハンドラ)
*
*
Parameter
*
*
WORD
deverror : デバイス エラーコード
*
*
WORD
errcode : エラーコード
*
*
LPWORD devhdr
: エラー デバイス
*
****************************************************************/
VOID FAR handle_err( WORD deverror , WORD errcode , LPWORD devhdr )
{
char
str[30] ;
if ( !( deverror & BIT_15 ) )
{
switch ( errcode & 0x00ff )
{
case 0 :
strcpy( str , "ライト・プロテクト" )
error_flag = TRUE ;
break ;
;
//プロテクト・ディスク
case 1 :
strcpy( str , "存在しないユニット" ) ;
error_flag = TRUE ;
//存在しないユニット
break ;
case 2 :
strcpy( str , "ディスクの準備ができていない" ) ;
error_flag = TRUE ;
//準備ができていない
break ;
case 6 :
strcpy( str , "シーク エラー" )
error_flag = TRUE ;
break ;
;
//シーク エラー
case 7 :
strcpy( str , "存在しないメディア" ) ;
error_flag = TRUE ;
//存在しないメディア
break ;
case 8 :
strcpy( str , "セクタが存在しない" ) ;
error_flag = TRUE ;
//セクタが存在しない
break ;
case 0xa :
strcpy( str , "書き込み 不良" ) ;
error_flag = TRUE ;
//書き込み 不良
break ;
case 0xb :
strcpy( str , "読み込み 不良" ) ;
error_flag = TRUE ;
//読み込み 不良
break ;
default :
strcpy( str , "一般的なディスクエラー" ) ;
error_flag = TRUE ;
//一般的なディスクエラー
break ;
}
}
if ( error_flag )
{
_settextcolor( GRED ) ;
_settextposition( 24 , 5 )
_outtext( "
_settextposition( 24 , 5 )
_outtext( str ) ;
;
" )
;
;
}
_hardretn( errcode )
;
}
#pragma
page()
/****************************************************************
***
VOID INTERRUPT FAR CDECL int_ctrl_c( void )
*
*
INT 23H (Ctrl+C 割り込み処理ハンドラ)
*
****************************************************************/
VOID INTERRUPT FAR CDECL
int_ctrl_c( void )
{
}
_
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " 風向、風速 演算処理" )
/*************************************************************************
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
風向、風速 演算処理
*
*
Module Name
: GP_CAL.C
*
*************************************************************************/
//----------------------------------------------------------------------------------------// calcu_da600_sec( short pa , short pb , short pc )
DA-600 型風速計データ 成分風速(1 秒) 演算処理
// calcu_sdata( short mode , double x , double y , double w, double t )
瞬間値データ 演算処理
// calcu_mean( void )
平均値 演算処理
// calcu_mean_data( short mode )
平均値 演算処理(1チャネル)
// calcu_theta( double x , double y )
θ(水平風向) 演算処理(deg)
// clear_sum_data( DEF_SUM *ptr )
瞬間値 積算データ クリア処理
//----------------------------------------------------------------------------------------#include
#include
"GP_720.H"
"GP_DATA.H"
#pragma
page()
/********************************************************************
***
void calcu_da600_sec( short pa , short pb
*
*
DA-600 型風速計データ 成分風速(1 秒) 演算処理
*
*
Parameter
*
*
short pa : DA-600(A) 受信データ・ポインタ
*
*
short pb : DA-600(B) 受信データ・ポインタ
*
*
short pc : DA-600(C) 受信データ・ポインタ
*
********************************************************************/
void
calcu_da600_sec( short pa , short pb , short pc )
{
double
xa , xb , xc , ya , yb , yc , wa , wb , wc , ta , tb , tc
xa = ya = wa = ta = 0.0
xb = yb = wb = tb = 0.0
xc = yc = wc = tc = 0.0
;
;
;
;
if ( flag_com1 == TRUE )
{
xa = da600a[pa].x
ya = da600a[pa].y
wa = da600a[pa].w
ta = da600a[pa].t
}
;
;
;
;
//X 成分風速 積算
//Y 成分風速 積算
//W 成分風速 積算
//Ts 温度 積算
if ( flag_com2 == TRUE )
{
/*-----*
Bデータ 積算
*-----*/
xb = da600b[pb].x ; //X 成分風速 積算
yb = da600b[pb].y ; //Y 成分風速 積算
wb = da600b[pb].w ; //W 成分風速 積算
tb = da600b[pb].t ; //Ts 温度 積算
}
if ( flag_com3 == TRUE )
{
/*-----*
Cデータ 積算
*-----*/
xc = da600c[pc].x ; //X 成分風速 積算
yc = da600c[pc].y ; //Y 成分風速 積算
wc = da600c[pc].w ; //W 成分風速 積算
tc = da600c[pc].t ; //Ts 温度 積算
}
/*-----*
瞬間値データ 平均
*-----*/
calcu_sdata( 0 , xa , ya , wa , ta ) ;
calcu_sdata( 1 , xb , yb , wb , tb ) ;
calcu_sdata( 2 , xc , yc , wc , tc ) ;
}
//瞬間値データ A 演算<Me>
//瞬間値データ B 演算<Me>
//瞬間値データ C 演算<Me>
#pragma
page()
/****************************************************************
***
void calcu_sdata( short mode , double x
*
**
, double y , double w , double t )
*
*
瞬間値データ 演算処理
*
*
Parameter
*
*
short
mode : 演算チャネル
*
*
0 : A
*
*
1 : B
*
*
2 : C
*
*
double x
: X 成分風速 積算値
*
*
double y
: Y 成分風速 積算値
*
*
double w
: W 成分風速 積算値
*
*
double t
: Ts 温度 積算値
*
****************************************************************/
void
calcu_sdata( short mode , double x , double y , double w,
{
DEF_SUM
*sum ;
DEF_SCAL *cal ;
DEF_DA600 *da ;
short
flag , *fm ;
double
xx , yy , *u , *v ;
cal = &data_cals
t )
;
switch( mode )
{
case 0 : //A
sum = &data_suma ;
da = &cal->da ;
u = &cal->ua ;
v = &cal->va ;
flag = flag_com1 ;
fm = &flag_cal1 ;
break ;
//瞬間値 積算データ A
//DA-600 観測値 A
//水平風速 A
//風速 A
//動作フラグ
//平均フラグ
case 1 : //B
sum = &data_sumb ;
da = &cal->db ;
u = &cal->ub ;
v = &cal->vb ;
flag = flag_com2 ;
fm = &flag_cal2 ;
break ;
//瞬間値 積算データ B
//DA-600 観測値 B
//水平風速 B
//風速 B
//動作フラグ
//平均フラグ
case 2 : //C
sum = &data_sumc ;
da = &cal->dc ;
u = &cal->uc ;
v = &cal->vc ;
flag = flag_com3 ;
fm = &flag_cal3 ;
break ;
//瞬間値 積算データ C
//DA-600 観測値 C
//水平風速 C
//風速 C
//動作フラグ
//平均フラグ
default :
break
double
;
}
if ( flag == TRUE )
{
xx = x * x
yy = y * y
da->x
da->y
da->w
da->t
sum->x
sum->y
sum->w
sum->t
=
=
=
=
;
;
x
y
w
t
+=
+=
+=
+=
//X 成分風速の 2 乗
//Y 成分風速の 2 乗
;
;
;
;
x
y
w
t
sum->xx += xx
sum->yy += yy
//X 成分風速 瞬間値
//Y 成分風速 瞬間値
//W 成分風速 瞬間値
//Ts 温度 瞬間値
;
;
;
;
//X 成分風速 積算値
//Y 成分風速 積算値
//W 成分風速 積算値
//Ts 温度 積算値
;
;
//X 成分風速の 2 乗 積算値
//Y 成分風速の 2 乗 積算値
sum->ww += w * w ;
sum->xy += x * y ;
//W 成分風速の 2 乗 積算値
//X 成分風速×Y 成分風速 積算値
*u = sqrt( xx + yy ) ;
*v = sqrt( xx + yy + w * w )
*fm = TRUE
//水平風速
; //風速
;
sum->n += 1.0
;
//受信データ数 +1
}
}
#pragma
page()
/****************************************************************
***
void calcu_mean( void )
*
*
平均値 演算処理
*
****************************************************************/
void
calcu_mean( void )
{
short
i ;
for ( i = 0 ; i < 3 ; i++ )
{
calcu_mean_data( i )
}
;
//平均値演算(1チャネル)
}
#pragma
page()
/****************************************************************
***
void calcu_mean_data( short mode )
*
*
平均値 演算処理(1チャネル)
*
*
Parameter
*
*
short
mode : 演算チャネル
*
*
0 : A
*
*
1 : B
*
*
2 : C
*
****************************************************************/
void
calcu_mean_data( short mode )
{
DEF_MEAN *mean ;
DEF_SUM
*sum ;
double
sigxx , sigyy , sigww , sv , au , ad , s , c
double
x , y , w , xx , yy , ww , xy , w1 ;
short
flag ;
switch( mode )
{
case 0 : //A
sum = &data_suma ;
mean = &data_calm.ma
flag = flag_cal1 ;
break ;
;
case 1 : //B
sum = &data_sumb ;
mean = &data_calm.mb
flag = flag_cal2 ;
break ;
;
case 2 : //C
sum = &data_sumc ;
mean = &data_calm.mc
flag = flag_cal3 ;
break ;
;
default :
break
;
//瞬間値 積算データ A
//平均値 演算データ A
//平均フラグ
//瞬間値 積算データ B
//平均値 演算データ B
//平均フラグ
//瞬間値 積算データ C
//平均値 演算データ C
//平均フラグ
;
}
if ( flag == TRUE && sum->n > 0 )
{
x = sum->x / sum->n ;
y = sum->y / sum->n ;
w = sum->w / sum->n ;
xx = sum->xx / sum->n ;
//X 成分風速
//Y 成分風速
//W 成分風速
//X 成分風速の 2 乗
yy = sum->yy / sum->n ;
ww = sum->ww / sum->n ;
xy = sum->xy / sum->n ;
mean->t = sum->t / sum->n
mean->u
mean->d
ad = ad
mean->w
mean->x
mean->y
=
=
*
=
=
=
//Y 成分風速の 2 乗
//W 成分風速の 2 乗
//X 成分風速 × Y 成分風速
//平均温度
;
au = sqrt( x * x + y * y ) ;
//水平風速
ad = calcu_theta( x , y ) ;
//水平風向
PAI / RAD ;
//水平風向(ラジアン)
w ;
//垂直風速
x ;
//X 成分風速
y ;
//Y 成分風速
sigxx = xx - x * x ; //σX の 2 乗
if ( sigxx < 0.0 )
{
sigxx = 0.0 ;
}
mean->sx = sqrt( sigxx ) ;
//X 成分風速 標準偏差 σX
sigyy = yy - y * y ;
if ( sigyy < 0.0 )
{
sigyy = 0.0 ;
}
mean->sy = sqrt( sigyy ) ;
//Y 成分風速 標準偏差 σY
sigww = ww - w * w ;
if ( w < 0.0 )
{
w = 0.0 ;
}
mean->sw = sqrt( sigww )
s = sin( ad )
c = cos( ad )
;
//σY の 2 乗
//垂直風速 標準偏差 σW
;
;
w = xy - x * y ;
if ( w < 0.0 )
{
w = 0.0
}
;
w1 = sigxx * s * s + sigyy * c * c + 2.0 * s * c * w ;
if ( w1 < 0.0 )
{
w1 = 0.0 ;
}
mean->su = sqrt( w1 ) ;
//ベクトル演算 水平風速 標準偏差 σU
w1 = sigxx * c * c + sigyy * s * s - 2.0 * s * c * w ;
if ( w1 < 0.0 )
{
w1 = 0.0 ;
}
sv = sqrt( w1 ) ;
mean->sd = au == 0.0 ? 0.0 : atan( sv / au ) * RAD / PAI
/*-----*
乱流強度
mean->suu
mean->sww
mean->sxx
mean->syy
=
=
=
=
*-----*/
au == 0.0
mean->w ==
mean->x ==
mean->y ==
;
//σV
//水平風向 標準偏差 σθ
? 0.0 : mean->su / au ;
//水平風速(σU/U)
0.0 ? 0.0 : mean->sw / fabs( mean->w ) ;
//W 成分風速(σW/W)
0.0 ? 0.0 : mean->sx / fabs( mean->x ) ;
//X 成分風速(σX/X)
0.0 ? 0.0 : mean->sy / fabs( mean->y ) ;
//Y 成分風速(σY/Y)
}
clear_sum_data( sum )
;
//瞬間値 クリア <GP_CAL.C>
}
#pragma
page()
/****************************************************************
***
double calcu_theta( double x , double y )
*
*
θ(水平風向) 演算処理(deg)
*
*
Parameter
*
*
double x : X 軸 成分風速
*
*
double y : Y 軸 成分風速
*
*
Return Value
*
*
θ(水平風向) (deg)
*
****************************************************************/
double
calcu_theta( double x , double y )
{
double
d ;
if ( x == 0.0 && y == 0.0 )
{
d = 0.0 ;
}
else if ( y == 0.0 && x > 0.0 )
{
d = 90.0 ;
}
else if ( y == 0.0 && x < 0.0 )
{
d = 270.0 ;
}
else
{
d = atan( x / y ) * RAD / PAI
;
//水平風向 演算
if ( x < 0.0 && y > 0.0 )
{
d += 360.0 ;
}
else if ( y < 0.0 )
{
d += 180.0 ;
}
}
return( d )
;
}
#pragma
page()
/****************************************************************
***
void clear_sum_data( DEF_SUM *ptr )
*
*
瞬間値 積算データ クリア処理
*
*
Parameter
*
*
DEF_SUM *ptr : 瞬間値 積算データ ポインタ
*
****************************************************************/
void
clear_sum_data( DEF_SUM *ptr )
{
ptr->n = 0.0 ;
//瞬間値 演算データ数
ptr->x = 0.0 ;
//X 成分風速 積算値
ptr->y = 0.0 ;
//Y 成分風速 積算値
ptr->w = 0.0 ;
//W 成分風速 積算値
ptr->xx = 0.0 ;
//X 成分風速の 2 乗 積算値
ptr->yy = 0.0 ;
//Y 成分風速の 2 乗 積算値
ptr->ww = 0.0 ;
//W 成分風速の 2 乗 積算値
ptr->xy = 0.0 ;
//X 成分風速 × Y 成分風速 積算値
ptr->t = 0.0 ;
//Ts 温度 積算値
}
_
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " シリアルI/Oボード 制御処理" )
/*************************************************************************
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
シリアルI/Oボード( COM-2S(PC) ) 制御処理
*
*
Module Name
: GP_COMBD.C
*
*************************************************************************/
//-----------------------------------------------------------------------// setup_comboard( void )
シリアルI/Oボード(COM-2S(PC)) 設定処理
// comio_workset( void )
シリアルI/Oボード(COM-2S(PC)) ワーク 設定処理
// comio_init( char ch )
チャネル 通信条件 設定処理
// setup_comint
シリアルI/Oボード 割り込みハンドラ 設定処理
// setup_format( char ch )
シリアルI/Oボード(COM-2S(PC)) 受信フォーマット設定処理
// comio_end( void ) シリアルI/Oボード(COM-2S(PC)) 終了処理
// receive_da600( void )
DA-600 型 超音波風速計データ 受信処理
// conv_da600( char ch )
DA-600 受信データ 数値変換処理
// int_comio1( void ) シリアルI/Oボード(COM-2S(PC) 1 枚目) 割り込みハンドラ
// int_comio2( void ) シリアルI/Oボード(COM-2S(PC) 2 枚目) 割り込みハンドラ
//-----------------------------------------------------------------------#include
#include
#include
"GP_720.H"
"GP_DATA.H"
"GP_COMBD.H"
#pragma
page()
/****************************************************************
***
void setup_comboard( void )
*
*
シリアルI/Oボード(COM-2S(PC)) 設定処理
*
****************************************************************/
void
setup_comboard( void )
{
char
i ;
comio_workset() ;
//ワーク(使用状態) 設定 <GP_COMBD.C>
for ( i = 1 ; i <= 3 ; i++ )
{
comio_init( i ) ;
}
setup_comint()
;
//チャネル 通信条件 設定 <GP_COMBD.C>
//シリアルI/Oボード 割り込みハンドラ 設定 <GP_COMBD.C>
}
#pragma
page()
/********************************************************************
***
void comio_workset( void )
*
*
シリアルI/Oボード(COM-2S(PC)) ワーク 設定処理
*
********************************************************************/
void
comio_workset( void )
{
short
address , p ;
char
quantity , board_type ;
address = COM_ADDR ; //COM-2S(PC)ボード 先頭アドレス
quantity = COM_QUANT ;
//ボード枚数
board_type = COM_TYPE ;
//ボード・タイプ
p = h104_workset( address , quantity , board_type)
;
//ワーク設定
}
#pragma
page()
/****************************************************************
***
void comio_init( char ch )
*
*
チャネル 通信条件 設定処理
*
*
Parameter
*
*
char ch : チャネル番号
*
****************************************************************/
void
comio_init( char ch )
{
short
p ;
char
bourate , control , mode , xoff , xon ;
p = h104_end( ch ) ;
//コミュニケーション終了 設定
p = h104_reset( ch , RST_BUFF ) ;
//エラー・リセット(バッファ・データ クリア)
//
bourate = COM_BORT ;
control = COM_CTRL ;
control = 0x04 ;
mode = ( char )COM_MODE
xoff = XOFF ;
xon = XON ;
;
//ボーレート
//通信コントロール
//通信コントロール
//制御モード
//フロー・オフ・コード
//フロー・オン・コード
p = h104_init( ch , bourate , control , mode , xoff , xon )
; //通信条件 設定
}
#pragma
page()
/****************************************************************
***
void setup_comint( void )
*
*
シリアルI/Oボード 割り込みハンドラ 設定処理
*
****************************************************************/
void
setup_comint( void )
{
char
ch ;
_disable() ;
handle_irq3 = ( IHDL )_dos_getvect( IRQ3 )
handle_irq5 = ( IHDL )_dos_getvect( IRQ5 )
_dos_setvect( IRQ3 , int_comio1 )
_dos_setvect( IRQ5 , int_comio2 )
;
;
;
;
//シリアルI/Oボード 割り込みハンドラ 登録
//シリアルI/Oボード 割り込みハンドラ 登録
_outp( PIC1_OCW1 , _inp( PIC1_IMR ) & 0xd7 )
_outp( PIC1_OCW2 , PIC_CLISR3 )
_outp( PIC1_OCW2 , PIC_CLISR5 )
_enable()
;
;
//IRQ3
//IRQ5
;
//IRQ3、IRQ5 マスク解除
//ISR クリア
//ISR クリア
;
for ( ch = 1 ; ch <= 3 ; ch++ )
{
setup_format( ch ) ; //受信フォーマット設定 <GP_COMBD.C>
}
}
#pragma
page()
/************************************************************************
***
void setup_format( char ch )
*
*
シリアルI/Oボード(COM-2S(PC)) 受信フォーマット設定処理
*
*
Parameter
*
*
char ch : チャネル番号
*
************************************************************************/
void
setup_format( char ch )
{
short
p ;
if ( h104_read( ch , 0 , LF , 26 , 0 ) )
{
p = h104_reset( ch , RST_REC )
//データ受信フォーマット指定
;
//エラー・リセット
p = h104_read( ch , 0 , LF , 26 , 0 )
;
//データ受信フォーマット指定
}
}
#pragma
page()
/****************************************************************
***
void comio_end( void )
*
*
シリアルI/Oボード(COM-2S(PC)) 終了処理
*
****************************************************************/
void
comio_end( void )
{
char
ch ;
short
p ;
for ( ch = 1 ; ch <= 3 ; ch++ )
{
p = h104_end( ch ) ;
}
//コミュニケーション終了 設定
_disable() ;
_outp( PIC1_OCW1 , _inp( PIC1_IMR ) ¦ 0x28 )
_dos_setvect( IRQ3 , handle_irq3 ) ;
_dos_setvect( IRQ5 , handle_irq5 ) ;
_enable() ;
;
//IRQ3、IRQ5 マスク
//IRQ3 割り込みハンドラ 復旧
//IRQ5 割り込みハンドラ 復旧
}
#pragma
page()
/****************************************************************
***
void receive_da600( void )
*
*
DA-600 型 超音波風速計データ 受信処理
*
****************************************************************/
void
receive_da600( void )
{
char
ch , post , sts ;
short
p , num , len , i ;
for ( ch = 1 ; ch <= 3 ; ch++ )
{
if ( ch == 1 )
{
num = num_da600a
}
else if ( ch == 2 )
{
num = num_da600b
}
else
{
num = num_da600c
}
;
//DA-600 チャネル1(A)
;
//DA-600 チャネル2(B)
;
//DA-600 チャネル3(C)
if ( num != 0 )
{
for ( i = 0 ; i < num ; i++ )
{
conv_da600( ch ) ; //受信データ 変換 <GP_COMBD.C>
}
}
else
{
p = h104_sense( ch , SNS_REC , &post , &sts , &len ) ;
if ( p != RTN_NRML ¦¦ ( p == RTN_NRML && sts != STS_NRML ) )
{
p = h104_reset( ch , RST_BUFF ) ;
//エラー・リセット
comio_init( ch ) ;
//チャネル 通信条件 設定 <GP_COMBD.C>
setup_format( ch ) ;
//受信フォーマット設定 <GP_COMBD.C>
}
}
}
}
#pragma
page()
/****************************************************************
***
void conv_da600( char ch )
*
*
DA-600 受信データ 数値変換処理
*
*
Parameter
*
*
char ch : チャネル番号
*
****************************************************************/
void
conv_da600( char ch )
{
DEF_RECDA *data ;
DEF_DA600 *buff ;
short
*ptr , *optr , *num , *flag ;
char
str[7] = "
" ;
if ( ch == 1 )
{
//チャネル1(A)
ptr = &ptr_da600a ;
buff = &da600a[*ptr] ;
flag = &flag_com1 ;
optr = &out_da600a ;
num = &num_da600a ;
data = &buff_da600a[*optr]
//受信バッファ ポインタ
//受信バッファ
;
}
else if ( ch == 2 )
{
//チャネル2(B)
ptr = &ptr_da600b ;
buff = &da600b[*ptr] ;
flag = &flag_com2 ;
optr = &out_da600b ;
num = &num_da600b ;
data = &buff_da600b[*optr]
//受信バッファ ポインタ
//受信バッファ
;
}
else
{
//チャネル3(C)
ptr = &ptr_da600c ;
buff = &da600c[*ptr] ;
flag = &flag_com3 ;
optr = &out_da600c ;
num = &num_da600c ;
data = &buff_da600c[*optr]
//受信バッファ ポインタ
//受信バッファ ;
;
}
if ( data->lf == LF )
{
memcpy( str , data->x , 6
buff->x = ( double )atol(
memcpy( str , data->y , 6
buff->y = ( double )atol(
memcpy( str , data->w , 6
buff->w = ( double )atol(
memcpy( str , data->t , 6
buff->t = ( double )atol(
*flag = TRUE ;
) ;
str )
) ;
str )
) ;
str )
) ;
str )
/*-----*
次受信バッファ・ポインタ
if ( *ptr >= MAX_RECBF - 1 )
{
*ptr = 0 ;
}
else
{
( *ptr )++ ;
}
}
/*-----*
次受信バッファ・ポインタ
if ( *optr >= MAX_COMBF - 1 )
{
*optr = 0 ;
}
else
{
( *optr )++ ;
}
*-----*/
/ 1000.0
;
/ 1000.0
;
/ 1000.0
;
/ 100.0
*-----*/
;
//X 軸成分風速データ 抽出(文字列)
//X 軸成分風速データ 格納(数値)
//Y 軸成分風速データ 抽出(文字列)
//Y 軸成分風速データ 格納(数値)
//W 軸成分風速データ 抽出(文字列)
//W 軸成分風速データ 格納(数値)
//Ts 温度データ 抽出(文字列)
//Ts 温度データ 格納(数値)
( *num )--
;
}
#pragma
page()
/************************************************************************
***
VOID INTERRUPT FAR CDECL int_comio1( void )
*
*
シリアルI/Oボード(COM-2S(PC) 1 枚目) 割り込みハンドラ
*
************************************************************************/
VOID INTERRUPT FAR CDECL
int_comio1( void )
{
DEF_RECDA *data ;
char
ch , post , sts ;
short
p , len , *num , *ptr ;
for ( ch = 1 ; ch <= 2 ; ch++ )
{
if ( ch == 1 )
{
//チャネル1(A)
ptr = &in_da600a ;
num = &num_da600a ;
data = &buff_da600a[*ptr]
}
else
{
//チャネル2(B)
ptr = &in_da600b ;
num = &num_da600b ;
data = &buff_da600b[*ptr]
}
;
;
p = h104_sense( ch , SNS_INT , &post , &sts , &len )
if ( post & SNSI_REC )
{
data->lf = ( char )NULL
;
;
//受信バッファ クリア
if ( h104_dataread( ch , ( char * )data ) )
//受信データ取り込み
{
p = h104_reset( ch , RST_REC ) ;
//エラー・リセット
}
else
{
/*-----*
次受信バッファ・ポインタ
*-----*/
if ( *ptr >= MAX_COMBF - 1 )
{
*ptr = 0 ;
}
else
{
( *ptr )++ ;
}
( *num )++
;
}
setup_format( ch )
; //受信フォーマット設定 <GP_COMBD.C>
}
}
_outp( PIC1_OCW2 , PIC_EOI )
;
//EOI
}
#pragma
page()
/************************************************************************
***
VOID INTERRUPT FAR CDECL int_comio2( void )
*
*
シリアルI/Oボード(COM-2S(PC) 2 枚目) 割り込みハンドラ
*
************************************************************************/
VOID INTERRUPT FAR CDECL
int_comio2( void )
{
DEF_RECDA *data ;
char
post , sts ;
short
p , len ;
p = h104_sense( 3 , SNS_INT , &post , &sts , &len )
if ( post & SNSI_REC )
{
;
data = &buff_da600c[in_da600c]
data->lf = ( char )NULL
;
;
if ( h104_dataread( 3 , ( char * )data ) )
{
//受信データ取り込み
p = h104_reset( 3 , RST_REC ) ;
}
else
{
//受信バッファ クリア
//エラー・リセット
/*-----*
次受信バッファ・ポインタ
*-----*/
if ( in_da600c >= MAX_COMBF - 1 )
{
in_da600c = 0 ;
}
else
{
in_da600c++ ;
}
num_da600c++
;
}
setup_format( 3 )
; //受信フォーマット設定 <GP_COMBD.C>
}
_outp( PIC1_OCW2 , PIC_EOI )
; //EOI
}
_
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " 収録期間 設定処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
収録期間 設定処理
*
*
*
*
*
*
Module Name
: GP_DATE.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Feb. 4, 1998
*
*
*
*
Revised Date : Mar. 5, 1998
*
*
*
*
Auther
: S. Yamashita
**
*
***
*
****
*************************************************************************/
/*********************************************************************
****
*
***
*
**
Ver 1.00
*
*
新規作成
Feb. 4, 1998
**
*
***
*
****
*********************************************************************/
#include
#include
"GP_720.H"
"GP_DATA.H"
#pragma
page()
/************************************************
***
*
**
収録期間入力 定数
**
*
***
************************************************/
#define
#define
DEF_DATE "----/--/-- --時"
KEY_TITLE "Ok ? (Y/N)"
const
short
table_month[2][12] =
{
{ 31
31
{ 31
31
}
,
,
,
,
28
31
29
31
,
,
,
,
31
30
31
30
;
#pragma
page()
/****************************************************************
****
*
***
void set_file_date( short mode )
*
**
*
*
収録期間 設定処理
*
*
*
*
*
*
Parameter
*
*
short mode : 設定モード
*
*
0 : 平均値収録 期間設定
*
*
1 : 瞬間値収録 期間設定
*
*
*
*
Version
1.00
*
*
Created Date Feb. 4,1998
**
*
Revised Date Mar. 5,1998
***
*
****
****************************************************************/
void
set_file_date( short
mode )
{
DEF_PERIOD back , *ptr ;
DEF_PDATE *data ;
short
c , l , n , flag
system_flag = SYS_DATE
;
;
,
,
,
,
30
31
30
31
,
,
,
,
31
30
31
30
,
,
,
,
30
31
30
31
,
} ,
,
}
ptr = mode ? &period_sdata : &period_cdata ;
back = *ptr ;
//
期間データ バックアップ
l = mode
?
3 : 2
; //
//
期間データ ポインタ
キー入力行
if ( ptr->start.date[0] == '-' )
{
n = 0 ;
flag = FALSE ;
}
else
{
n = 1 ;
flag = TRUE ;
}
while ( FOREVER )
{
if ( n )
{
c = 49 ; //
data = &ptr->end
キー入力桁
;
temp_year = ptr->start.year ;
temp_month = ptr->start.month ;
temp_day = ptr->start.day ;
temp_hour = ptr->start.hour ;
}
else
{
c = 27 ; //
data = &ptr->start
キー入力桁
;
temp_year = curr_year ;
temp_month = curr_month ;
temp_day = curr_day ;
temp_hour = curr_hour ;
}
strcpy( data->date , DEF_DATE )
_settextcolor( GLIGHTYELLOW )
_settextposition( l , c ) ;
_outtext( data->date ) ;
;
//
期間データ 初期値
;
//
初期値 表示
if ( set_date_time( data , c , l ) )
{
//
収録期間 キー入力 正常 ?
n++ ;
if ( n > 1 )
{
if ( key_yesno( l ) )
{
if ( flag == FALSE )
{
ptr->flag = FALSE
}
check_file_date( mode ) ;
}
else
{
*ptr = back ;
//
}
break
;
//収録期間 チェック <GP_DATE.C>
バックアップ・データ 復帰
;
}
}
else
{
*ptr = back
break ;
;
//
バックアップ・データ 復帰
}
}
disp_save_date( mode + 1 )
;
//平均値/瞬間値 収録期間 表示 < GP_MEAS.C >
system_flag = SYS_MEASURE
;
}
#pragma
page()
/****************************************************************
***
void check_file_date( short mode )
*
*
収録期間 チェック処理
*
*
Parameter
*
*
short mode : 設定モード
*
*
0 : 平均値収録 期間設定
*
*
1 : 瞬間値収録 期間設定
*
****************************************************************/
void
check_file_date( short mode )
{
DEF_PERIOD *ptr ;
short
f ;
ptr = mode
?
&period_sdata : &period_cdata
;
//期間データ ポインタ
f = ptr->flag == FALSE ? TRUE : FALSE ;
if ( check_date_time( f , ptr ) )
//収録開始/終了 チェック <GP_DATE.C>
{
disp_save_date( mode + 1 ) ; //平均値/瞬間値 収録期間 表示 < GP_MEAS.C >
}
}
#pragma
page()
/****************************************************************
****
*
***
short set_date_time( DEF_PDATE *ptr
*
**
, short colum , short row )
*
*
*
*
収録期間 キー入力処理
*
*
*
*
*
*
Parameter
*
*
DEF_PDATE *ptr
: 日付、時刻゙ータ 格納ポインタ
*
*
short
column : 入力位置 X 座標
*
*
short
row
:
Y 座標
*
*
Return Value
*
*
TRUE : 正常終了
*
*
FALSE : 入力キャンセル
*
*
*
*
Version
1.00
*
*
Created Date Feb. 4,1998
**
*
Revised Date Feb. 5,1998
***
*
****
****************************************************************/
short
{
set_date_time( DEF_PDATE
*ptr , short
time_t
s_time , c_time , t_time
short
r , n = 0 ;
t_time = time( &s_time ) ;
while ( FOREVER )
{
time( &c_time )
colum , short
row )
;
;
if ( c_time != t_time )
{
disp_datetime()
t_time = c_time
}
;
;
//日付、時刻 表示 <Main>
if ( c_time - s_time >= sampling_stime && measure_flag == TRUE )
{
measure_second() ; //1 秒観測
s_time = c_time ;
}
receive_da600()
;
//DA-600 シリアル・データ 受信 <GP_COMBD.C>
r = key_date_time( colum , row , ptr , &n )
if ( r != 0 )
{
r = r > 0
break ;
}
}
return( r )
?
TRUE : FALSE
;
//日付、時刻 キー入力
;
;
}
#pragma
page()
/********************************************************************
****
*
***
void key_date_time( short colum , short row
*
**
, DEF_PDATE *buff , short *num )
*
*
*
*
収録開始/終了期間 キー入力チェック処理
*
*
*
*
*
*
Parameter
*
*
short
colum : 入力位置 X 座標
*
*
short
row
:
Y 座標
*
*
DEF_PDATE *buff : 日付、時刻゙ータ 格納ポインタ
*
*
short
*num : 入力データ数 格納ポインタ
*
*
Return Value
*
*
1 : キー入力終了
*
*
0 : キー入力継続
*
*
-1 : 入力キャンセル
*
*
*
*
Version
1.00
*
*
Created Date Feb. 5,1998
**
*
Revised Date
. ,
***
*
****
********************************************************************/
short
key_date_time( short
colum , short
row , DEF_PDATE
*buff , short
*num )
{
short
char
key , r = 0 ;
str[2] = " " ;
set_cursor( TRUE , colum + *num , row , GBRIGHTWHITE ) ;
//
key = check_keybrd()
;
//
カーソル表示
キー・ボード 入力チェック
if ( key != KEY_NONE )
{
set_cursor( FALSE , colum + *num , row , GBRIGHTWHITE ) ;
//
カーソル消去
if ( key == KEY_ENT )
{
//
入力終了
if ( *num == 14 )
{
//
確定
_settextcolor( GLIGHTCYAN ) ;
_settextposition( row , colum ) ;
_outtext( buff->date ) ;
//
r = 1
;
}
else
{
//
r = -1
入力キャンセル
;
}
}
{
else if ( '0' <= key && key <= '9' && *num != 14 )
//
数値入力
buff->date[*num] = str[0] = ( char )key ;
日付、時刻確定 表示
if ( *num == 3 )
{
//
日付(年)
if ( set_date_year( colum , row , buff ) )
{
*num += 2 ;
}
}
else if ( *num == 6 )
{
//
日付(月)
if ( set_date_month( colum , row , buff ) )
{
*num += 2 ;
}
}
else if ( *num == 9 )
{
//
日付(日)
if ( set_date_day( colum , row , buff ) )
{
*num += 3 ;
}
}
else if ( *num == 13 )
{
set_time_hour( colum , row , buff ) ;
( *num )++
;
}
else
{
_settextcolor( GLIGHTYELLOW ) ;
_settextposition( row , colum + *num )
_outtext( str ) ;
( *num )++
;
}
}
{
else if ( key == KEY_BAK && *num != 0 )
//
Back Space/Delete
if ( *num == 5 ¦¦ *num == 8 )
{
*num -= 2 ;
}
else if ( *num == 12 )
{
*num -= 3 ;
}
else
{
( *num )-- ;
}
}
}
return( r )
;
}
#pragma
page()
/****************************************************************
****
*
***
void key_yesno( short row )
*
**
*
*
収録開始/終了期間 入力終了 確認処理
*
*
*
*
*
*
Parameter
*
*
short
row : 入力位置 YX 座標
*
*
Return Value
*
*
1 : キー入力終了
*
*
0 : 入力キャンセル
*
*
*
*
Version
1.00
*
*
Created Date Feb.27,1998
**
*
Revised Date Mar. 5,1998
***
*
****
;
****************************************************************/
short
key_yesno( short
row )
{
time_t
short
s_time , c_time , t_time
c , ret = FALSE ;
;
_settextcolor( GBRIGHTWHITE ) ;
_settextposition( row , 67 ) ;
_outtext( KEY_TITLE ) ;
t_time = time( &s_time )
;
while ( FOREVER )
{
c = check_keybrd()
; //
キー・ボード 入力チェック
if ( c == 'Y' ¦¦ c == 'y' ¦¦ c == 'ン' )
{
ret = TRUE ;
break ;
}
else if ( c == 'N' ¦¦ c == 'n' ¦¦ c == 'ミ' )
{
break ;
}
time( &c_time )
;
if ( c_time != t_time )
{
disp_datetime()
t_time = c_time
}
;
;
//
日付、時刻 表示
<Main>
if ( c_time - s_time >= sampling_stime && measure_flag == TRUE )
{
measure_second() ;
//
1 秒観測
s_time = c_time
;
}
receive_da600()
;
//
DA-600 シリアル・データ 受信 <GP_COMBD.C>
}
_settextposition( row , 67 )
_outtext( "
" ) ;
return( ret )
;
;
}
#pragma
page()
/****************************************************************
***
short check_date_time( short mode ,
*
**
DEF_PERIOD *ptr )
*
*
収録開始/終了 チェック処理
*
*
Parameter
*
*
short
mode : チェック・モード
*
*
TRUE : 収録開始チェック
*
*
FALSE :
終了チェック
*
*
DEF_PERIOD *ptr : 期間゙ータ ポインタ
*
*
Return Value
*
*
TRUE : 状態変化
*
*
FALSE : 状態継続
*
****************************************************************/
short
check_date_time( short mode , DEF_PERIOD *ptr )
{
short
sy , sm , sd , sh , dy , dm , dd , dh , f = TRUE , r = FALSE
if ( mode )
;
{
sy
sm
sd
sh
=
=
=
=
ptr->start.year ;
ptr->start.month ;
ptr->start.day ;
ptr->start.hour ;
dy
dm
dd
dh
=
=
=
=
curr_year ;
curr_month ;
curr_day ;
curr_hour ;
if ( ptr->start.date[0] == MINUS )
{
f = FALSE ;
}
}
else
{
sy
sm
sd
sh
=
=
=
=
curr_year ;
curr_month ;
curr_day ;
curr_hour ;
dy
dm
dd
dh
=
=
=
=
ptr->end.year ;
ptr->end.month ;
ptr->end.day ;
ptr->end.hour ;
}
if ( f )
{
if ( sy == dy && sm == dm && sd == dd )
{
if ( mode )
{
if ( sh <= dh )
{
ptr->flag = TRUE
;
//収録開始
if ( measure_flag == TRUE )
{
creat_filename( TRUE )
}
r = TRUE
;
;
}
}
else
{
if ( sh >= dh )
{
ptr->flag = FALSE
; //収録終了
strcpy( ptr->start.date , DEF_DATE ) ;
strcpy( ptr->end.date , DEF_DATE ) ;
r = TRUE
;
}
}
}
}
return( r )
;
}
#pragma
page()
/****************************************************************
****
*
***
short set_date_year( short colum ,
*
**
short row , DEF_PDATE *buff )
*
*
*
*
収録期間(年) キー入力処理
*
*
*
*
*
*
Parameter
*
//収録ファイル名 作成(演算、瞬間)
*
short
colum : 入力位置 X 座標
*
*
short
row
:
Y 座標
*
*
DEF_PDATE *buff : 日付、時刻゙ータ 格納ポインタ
*
*
Return Value
*
*
TRUE : 正常終了
*
*
FALSE : 入力異常
*
*
*
*
Version
1.00
*
*
Created Date Feb. 4,1998
**
*
Revised Date Feb. 5,1998
***
*
****
****************************************************************/
short
set_date_year( short
colum , short
row , DEF_PDATE
*buff )
{
short
char
data , r = FALSE ;
str[6] = "
" ;
memcpy( str , buff->date , 4 )
data = atoi( str ) ;
if ( temp_year <= data )
{
str[4] = SLASH ;
str[5] = ( char )NULL
;
;
_settextcolor( GLIGHTYELLOW ) ;
_settextposition( row , colum ) ;
_outtext( str ) ;
buff->year = data
r = TRUE
; //
入力日付(年) 設定
;
}
return( r )
;
}
#pragma
page()
/****************************************************************
****
*
***
short set_date_month( short colum ,
*
**
short row , DEF_PDATE *buff )
*
*
*
*
収録期間(月) キー入力処理
*
*
*
*
*
*
Parameter
*
*
short
colum : 入力位置 X 座標
*
*
short
row
:
Y 座標
*
*
DEF_PDATE *buff : 日付、時刻゙ータ 格納ポインタ
*
*
Return Value
*
*
TRUE : 正常終了
*
*
FALSE : 入力異常
*
*
*
*
Version
1.00
*
*
Created Date Feb. 5,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
short
set_date_month( short
colum , short
row , DEF_PDATE
{
short
char
data , r = FALSE
str[4] = " " ;
;
memcpy( str , &buff->date[5] , 2 )
data = atoi( str ) ;
;
*buff )
if ( ( ( temp_year == buff->year && temp_month <= data )
¦¦ temp_year < buff->year ) && 1 <= data && data <= 12 )
{
str[2] = SLASH ;
str[3] = ( char )NULL ;
_settextcolor( GLIGHTYELLOW ) ;
_settextposition( row , colum + 5 )
_outtext( str ) ;
buff->month = data
r = TRUE
; //
;
入力日付(月) 設定
;
}
return( r )
;
}
#pragma
page()
/********************************************************************
****
*
***
short set_date_day( short colum , short row
*
**
, DEF_PDATE *buff )
*
*
*
*
収録期間(日) キー入力処理
*
*
*
*
*
*
Parameter
*
*
short
colum : 入力位置 X 座標
*
*
short
row
:
Y 座標
*
*
DEF_PDATE *buff : 日付、時刻゙ータ 格納ポインタ
*
*
Return Value
*
*
TRUE : 正常終了
*
*
FALSE : 入力異常
*
*
*
*
Version
1.00
*
*
Created Date Feb. 5,1998
**
*
Revised Date
. ,
***
*
****
********************************************************************/
short
set_date_day( short
colum , short
row , DEF_PDATE
*buff )
{
short
char
data , leap , r = FALSE
str[3] = " " ;
;
memcpy( str , &buff->date[8] , 2 )
data = atoi( str ) ;
;
if ( ( temp_month == buff->month && temp_day <= data )
¦¦ temp_month < buff->month ¦¦ temp_year < buff->year )
{
leap = ( buff->year % 400 == 0 ) ¦¦
( buff->year % 100 != 0 && buff->year % 4 == 0 )
?
1 : 0
if ( 0 < data && data <= table_month[leap][buff->month-1] )
{
_settextcolor( GLIGHTYELLOW ) ;
_settextposition( row , colum + 8 ) ;
_outtext( str ) ;
buff->day = data
r = TRUE
}
}
return( r )
}
;
;
;
//
入力日付(日) 設定
;
#pragma
page()
/********************************************************************
****
*
***
void set_time_hour( short colum , short row
*
**
, DEF_PDATE *buff )
*
*
*
*
収録期間(時) キー入力処理
*
*
*
*
*
*
Parameter
*
*
short
colum : 入力位置 X 座標
*
*
short
row
:
Y 座標
*
*
DEF_PDATE *buff : 日付、時刻゙ータ 格納ポインタ
*
*
*
*
Version
1.00
*
*
Created Date Feb. 5,1998
**
*
Revised Date
. ,
***
*
****
********************************************************************/
void
set_time_hour( short
colum , short
short
char
"
row , DEF_PDATE
*buff )
{
data ;
str[3] = "
;
memcpy( str , &buff->date[12] , 2 )
data = atoi( str ) ;
;
if ( ( temp_day == buff->day && temp_hour <= data )
¦¦ temp_day < buff->day ¦¦ temp_month < buff->month
¦¦ temp_year < buff->year )
{
if ( 0 <= data && data < 24 )
{
_settextcolor( GLIGHTYELLOW ) ;
_settextposition( row , colum + 12 )
_outtext( str ) ;
buff->hour = data
; //
;
入力日付(時) 設定
}
}
}
#pragma
page()
/************************************************************************
****
*
***
void set_cursor( short mode , short column
*
**
, short row , short col )
*
*
*
*
カーソル 設定処理
*
*
*
*
*
*
Parameter
*
*
short mode
: 設定モード
*
*
TRUE : 表示
*
*
FALSE : 消去
*
*
short column : 設定位置 X 座標
*
*
short row
:
Y 座標
*
*
short col
: カーソル色
*
*
*
*
Version
1.00
*
*
Created Date Feb. 4,1998
**
*
Revised Date Feb.23,1998
***
*
****
************************************************************************/
void
{
set_cursor( short
mode , short
column , short
row , short
col )
if ( mode == TRUE )
{
_setcolor( col )
;
_settextposition( row , column )
;
}
else
{
_setcolor( GBLACK )
;
}
_moveto( ( column - 1 ) * 8 , 19 * row - 2 )
_lineto( column * 8 - 1 , 19 * row - 2 ) ;
;
}
#pragma
optimize( "" , off )
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " データ演算装置 メニュー処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
データ演算装置 収録データ表示処理
*
*
*
*
*
*
Module Name
: GP_DISP.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Jan. 16, 1998
*
*
*
*
Revised Date : Mar. 13, 1998
*
*
*
*
Auther
: N. Kamio
*
***
*
****
*************************************************************************/
**
/*********************************************************************
***
*
**
Ver 1.00
*
*
新規作成
Jan. 16, 1998
**
*
***
*
****
**********************************************************************/
#include
#include
#include
"GP_720.H"
"GP_DATA.H"
"GP_MENU.H"
#pragma
page()
/****************************************
***
*
**
画面 定数
**
*
***
****************************************/
/*-----*
#define
#define
観測画面 タイトル
TITLE_SAMPL
TITLE_DATA
*-----*/
"サンプリング間隔="
"日付:"
FUNC_FORM cf_key[5] = {
{
{
{
{
{
1
2
3
4
12
,
,
,
,
0 , "平風温" }
0 , "平成風" }
0 , "偏 差" }
0 , "乱流強" }
, 0 , "戻る" }
,
,
,
,
// 演算値表示ファンクション・キー情報
, 0 , "瞬風温" } ,
// 瞬間値表示ファンクション・キ-情報
} ;
FUNC_FORM sf_key[3] = {
{ 1
{ 2 , 0 , "瞬成風" } ,
{ 12 , 0 , "戻る" }
} ;
#define
#define
CD_FILE
SD_FILE
0
1
#pragma
page()
/****************************************************************
****
*
***
void
disp_main ( void )
**
*
*
GP-720 型 データ演算装置 収録データ表示メイン処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void disp_main ( void )
{
for ( ; ; ) {
param_menu () ;
if ( system_flag == SYS_DISP ) {
file_disp_main () ;
} else if ( system_flag == SYS_MENU ) {
break ;
}
}
}
#pragma
page()
/****************************************************************
****
*
***
void
file_disp_err( void )
*
**
*
*
GP-720 型 データ演算装置 ファイル読込みメイン処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void file_disp_err ( void )
{
_clearscreen ( _GCLEARSCREEN ) ;
_settextcolor( GBRIGHTWHITE ) ;
_settextposition( 3 , 5 ) ;
_outtext( "ファイルがありません。" )
/* 画面消去 */
;
}
#pragma
page()
/****************************************************************
****
*
***
void
file_disp_main( void )
*
**
*
*
GP-720 型 データ演算装置 ファイルデータ表示処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
*
Revised Date
. ,
***
*
****
****************************************************************/
void file_disp_main ( void )
{
file_disp_head () ;
display_cnt = 0L ;
if ( cs_flag == 1 ) {
cs_disp_flag =
c_data_disp ()
} else {
cs_disp_flag =
s_data_disp ()
}
DISP_MWT ;
;
DISP_IWT ;
;
/* 演算値表示 */
/* 平均風速・風向・温度 */
/* 瞬間風速・風向・温度 */
}
#pragma
page()
/****************************************************************
****
*
***
void
file_disp_head( void )
*
**
*
*
GP-720 型 データ演算装置 ファイルヘッダ表示処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void file_disp_head ( void )
{
char
short
str[12] ;
n ;
_clearscreen ( _GCLEARSCREEN ) ;
/* 画面消去 */
if ( cs_flag == 1 ) {
/* 演算値表示 */
draw_function( cf_key , TRUE ) ;
} else {
draw_function( sf_key , TRUE ) ;
}
/*-----*
日付 表示
*-----*/
_settextcolor( GBRIGHTWHITE )
_settextposition( 1 , 5 ) ;
_outtext ( TITLE_DATA ) ;
/* 瞬間値表示 */
;
if ( disp_fname[2] > '8' ) {
memcpy ( &str[0] , "19" , 2 ) ;
} else {
memcpy ( &str[0] , "20" , 2 ) ;
}
memcpy ( &str[2] , &disp_fname[2] , 2 ) ;
str[4] = '/' ;
memcpy ( &str[5] , &disp_fname[4] , 2 ) ;
str[7] = '/' ;
memcpy ( &str[8] , &disp_fname[6] , 2 ) ;
str[10] = 0x00 ;
_outtext( str ) ;
/*-----*
サンプリング間隔 表示
*-----*/
if ( ( disp_fp = fopen( disp_fname , "r+b" ) ) != NULL ) {
if ( cs_flag == 1 ) { /* 演算値 */
n = fread( &disp_cfile_data , SIZE_CFILE , 1 , disp_fp )
memcpy ( str , disp_cfile_data.smpl , 5 ) ;
str[5] = 0x00 ;
} else {
/* 瞬間値 */
;
n = fread( &disp_sfile_data , SIZE_SFILE , 1 , disp_fp )
memcpy ( str , disp_sfile_data.smpl , 5 ) ;
str[5] = 0x00 ;
;
}
fclose ( disp_fp ) ;
_settextcolor( GCYAN ) ;
_settextposition( 1 , 28 ) ;
_outtext ( TITLE_SAMPL ) ;
_outtext( str ) ;
_outtext ( "秒" ) ;
}
}
#pragma
page()
/****************************************************************
****
*
***
void
c_data_disp( void )
*
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ表示処理 *
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date Mar.13,1998
***
*
****
****************************************************************/
void c_data_disp ( void )
{
short
key , flag = TRUE ;
/* 演算データ オープン */
if ( ( disp_fp = fopen( disp_fname , "r+b" ) ) != NULL ) {
disp_file_cnt = 0 ;
first_disp () ;
/* データ表示列 = 0 */
for ( ; ; ) {
key = check_keybrd () ;
switch ( key ) {
case KEY_F1 :
/* 平風温 */
if ( cs_disp_flag != DISP_MWT ) {
cs_disp_flag = DISP_MWT ;
first_disp () ;
}
break ;
case KEY_F2 :
/* 平成風 */
if ( cs_disp_flag != DISP_MVW ) {
cs_disp_flag = DISP_MVW ;
first_disp () ;
}
break ;
case KEY_F3 :
/* 偏差 */
if ( cs_disp_flag != DISP_SIG ) {
cs_disp_flag = DISP_SIG ;
first_disp () ;
}
break ;
case KEY_F4 :
/* 乱流強 */
if ( cs_disp_flag != DISP_SSW ) {
cs_disp_flag = DISP_SSW ;
first_disp () ;
}
break ;
case KEY_F12 :
/* 戻る */
flag = FALSE ;
break ;
case KEY_UP :
fcdata_up () ;
break ;
case KEY_DOWN :
fcdata_down () ;
break ;
case KEY_PUP :
fcdata_pup () ;
break ;
case KEY_PDOWN :
fcdata_pdown () ;
break ;
default :
break ;
}
if ( flag == FALSE ) {
break ;
}
}
fclose ( disp_fp ) ;
}
}
#pragma
page()
/****************************************************************
****
*
***
void
s_data_disp( void )
*
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ表示処理 *
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
{
s_data_disp ( void )
short
key , flag = TRUE ;
/* 演算データ オープン */
if ( ( disp_fp = fopen( disp_fname , "r+b" ) ) != NULL ) {
disp_file_cnt = 0 ;
first_disp () ;
/* データ表示列 = 0 */
for ( ; ; ) {
key = check_keybrd () ;
switch ( key ) {
case KEY_F1 :
/* 瞬間風速/風向/温度 */
if ( cs_disp_flag != DISP_IWT ) {
cs_disp_flag = DISP_IWT ;
first_disp () ;
}
break ;
case KEY_F2 :
/* 瞬間成分風速 */
if ( cs_disp_flag != DISP_IVW ) {
cs_disp_flag = DISP_IVW ;
first_disp () ;
}
break ;
case KEY_F12 :
/* 戻る */
flag = FALSE ;
break ;
case KEY_UP :
fcdata_up () ;
break ;
case KEY_DOWN :
fcdata_down () ;
break ;
case KEY_PUP :
fcdata_pup () ;
break ;
case KEY_PDOWN :
fcdata_pdown () ;
break ;
default :
break ;
}
if ( flag == FALSE ) {
break ;
}
}
fclose ( disp_fp ) ;
}
}
_
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " データ演算装置 メニュー処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
データ演算装置 収録データ表示処理
*
*
*
*
*
*
Module Name
: GP_DPRN.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Jan. 16, 1998
*
*
*
*
Revised Date : Jan. 19, 1998
*
*
*
*
Auther
: N. Kamio
*
***
*
****
*************************************************************************/
#include
#include
#include
"GP_720.H"
"GP_DATA.H"
"GP_MENU.H"
/*********************************************************************
**
***
*
**
Ver 1.00
*
*
新規作成
Jan. 16, 1998
**
*
***
*
****
**********************************************************************/
#pragma
page()
/****************************************************************
****
*
***
void
mwt_head_print ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ印刷処理 *
*
平均風向風速と温度
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
*
mwt_head_print ( void )
{
short
sp = 10 ;
if ( ( printer_status() & 0x90 ) == 0x90 ) {
//
printer_line ( "MWT\r\n" , 5 ) ;
printer_line ( "\r\n" , 2 ) ;
printer_line ( "\r\n" , 2 ) ;
/* 改行 */
/* 改行 */
/* 改行 */
print_space ( sp+13 ) ;
printer_line ( "---------------平均値
------------------\r\n" , 48 ) ;
print_space ( sp+13 ) ;
printer_line ( "---水平風速--- -- 水平風向-- ---- 温 度 ----\r\n" , 47 ) ;
print_space ( sp+13 ) ;
printer_line ( "
(m/s)
(deg)
(℃)
\r\n" , 47 ) ;
print_space ( sp ) ;
printer_line ( "-年-月日時分 A
B
C
A
B
C
A
B
C\r\n" , 60 ) ;
}
}
#pragma
page()
/****************************************************************
****
*
***
void
mvw_head_print ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ印刷処理 *
*
平均風向風速と温度
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
*
mvw_head_print ( void )
{
short
sp = 10 ;
if ( ( printer_status() & 0x90 ) == 0x90 ) {
//
printer_line ( "\r\n" , 2 ) ;
printer_line ( "MVW\r\n" , 5 ) ;
/* 改行 */
/* 改行 */
printer_line ( "\r\n" , 2 ) ;
/* 改行 */
print_space ( sp+13 ) ;
printer_line ( "-----------------平 均 値
-------------------\r\n" , 55 ) ;
print_space ( sp+13 ) ;
printer_line ( "---- X風速 ---- ---- Y風速 ---- ---- W風速 ----\r\n" , 54 ) ;
print_space ( sp+13 ) ;
printer_line ( "
(m/s)
(m/s)
(m/s)
\r\n" , 54 ) ;
print_space ( sp ) ;
printer_line ( "-年-月日時分
A
B
C
A
B
C
A
B
C\r\n" , 67 ) ;
}
}
#pragma
page()
/****************************************************************
****
*
***
void
wtsig_head_print ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ印刷処理 *
*
平均風向風速と温度
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
*
wtsig_head_print ( void )
{
short
sp = 10 ;
if ( ( printer_status() & 0x90 ) == 0x90 ) {
//
printer_line ( "WTSIG\r\n" , 5 ) ;
printer_line ( "\r\n" , 2 ) ;
printer_line ( "\r\n" , 2 ) ;
/* 改行 */
/* 改行 */
/* 改行 */
print_space ( sp+13 ) ;
printer_line ( "--------- 標準偏差 ---------\r\n"
print_space ( sp+13 ) ;
printer_line ( "---水平風速--- ---水平風向---\r\n"
print_space ( sp+13 ) ;
printer_line ( "
(m/s)
(deg)
\r\n"
print_space ( sp ) ;
printer_line ( "-年-月日時分 " , 13 ) ;
printer_line ( " A
B
C
A
B
C \r\n"
}
}
#pragma
page()
/****************************************************************
****
*
***
void
vwsig_head_print ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ印刷処理 *
*
平均風向風速と温度
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
vwsig_head_print ( void )
{
short
sp = 10 ;
*
, 31 ) ;
, 31 ) ;
, 31 ) ;
, 31 ) ;
if ( ( printer_status() & 0x90 ) == 0x90 ) {
printer_line ( "\r\n" , 2 ) ;
printer_line ( "VWSIG\r\n" , 5 ) ;
printer_line ( "\r\n" , 2 ) ;
//
/* 改行 */
/* 改行 */
/* 改行 */
print_space ( sp+13 ) ;
printer_line ( "--------------標準偏差
---------------\r\n"
print_space ( sp+13 ) ;
printer_line ( "----X風速---- ----Y風速---- ----W風速----\r\n"
print_space ( sp+13 ) ;
printer_line ( "
(m/s)
(m/s)
(m/s)
\r\n"
print_space ( sp ) ;
printer_line ( "-年-月日時分 " , 13 ) ;
printer_line ( " A
B
C
A
B
C
A
B
C \r\n"
, 47 ) ;
, 47 ) ;
, 47 ) ;
, 47 ) ;
}
}
#pragma
page()
/****************************************************************
****
*
***
void
sswig_head_print ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ印刷処理 *
*
平均風向風速と温度
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
*
ssw_head_print ( void )
{
short
sp = 7 ;
if ( ( printer_status() & 0x90 ) == 0x90 ) {
printer_line ( "\r\n" , 2 ) ;
printer_line ( "SSW\r\n" , 5 ) ;
printer_line ( "\r\n" , 2 ) ;
//
/* 改行 */
/* 改行 */
/* 改行 */
print_space ( sp+13 ) ;
printer_line ( "--------------乱流強度演算結果
----------------\r\n"
print_space ( sp+13 ) ;
printer_line ( "---水平風速--- --- X風速 --- --- Y風速 --- ----W風速----\r\n"
print_space ( sp+13 ) ;
printer_line ( "
(m/s)
(m/s)
(m/s)
(m/s)
\r\n"
print_space ( sp ) ;
printer_line ( "-年-月日時分 " , 13 ) ;
printer_line ( " A
B
C
A
B
C
A
B
C
A
B
C \r\n"
}
}
#pragma
page()
/****************************************************************
*
****
***
void
iwt_head_print ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ印刷処理 *
*
平均風向風速と温度
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
*
, 61 ) ;
, 61 ) ;
, 61 ) ;
, 61 ) ;
****************************************************************/
void
iwt_head_print ( void )
{
short
sp = 10 ;
if ( ( printer_status() & 0x90 ) == 0x90 ) {
printer_line ( "\r\n" , 2 ) ;
printer_line ( "IWT\r\n" , 5 ) ;
printer_line ( "\r\n" , 2 ) ;
//
/* 改行 */
/* 改行 */
/* 改行 */
print_space ( sp+15 ) ;
printer_line ( "---------------------- 瞬間値 -----------------------\r\n"
print_space ( sp+15 ) ;
printer_line ( "---- U風速 ---- ---- V風速 ---- ---- T温度 ----\r\n"
print_space ( sp+15 ) ;
printer_line ( "
(m/s)
(m/s)
(℃)
\r\n"
print_space ( sp ) ;
printer_line ( "-年-月日時分秒 " , 15 ) ;
printer_line ( " A
B
C
A
B
C
A
B
C \r\n"
, 55 ) ;
, 55 ) ;
, 55 ) ;
, 55 ) ;
}
}
#pragma
page()
/****************************************************************
****
*
***
void
ivw_head_print ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ印刷処理 *
*
平均風向風速と温度
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
*
ivw_head_print ( void )
{
short
sp = 10 ;
if ( ( printer_status() & 0x90 ) == 0x90 ) {
printer_line ( "\r\n" , 2 ) ;
printer_line ( "IVW\r\n" , 5 ) ;
printer_line ( "\r\n" , 2 ) ;
//
/* 改行 */
/* 改行 */
/* 改行 */
print_space ( sp+15 ) ;
printer_line ( "-----------------瞬 間 値
-------------------\r\n"
print_space ( sp+15 ) ;
printer_line ( "---- X風速 ---- ---- Y風速 ---- ---- W風速 -----\r\n"
print_space ( sp+15 ) ;
printer_line ( "
(m/s)
(m/s)
(m/s)
\r\n"
print_space ( sp ) ;
printer_line ( "-年-月日時分秒 " , 15 ) ;
printer_line ( " A
B
C
A
B
C
A
B
C \r\n"
}
}
#pragma
page()
/****************************************************************
*
****
***
void
mwt_data_print ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ印刷処理 *
*
, 56 ) ;
, 56 ) ;
, 56 ) ;
, 56 ) ;
*
平均風向風速と温度
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
mwt_data_print ( void )
{
short
sp = 10 , sp1 = 1 , sp2 = 2 ;
if ( ( printer_status() & 0x90 ) == 0x90 ) {
print_cnt ++ ;
page_cnt ++ ;
print_space ( sp ) ;
printer_line ( disp_cfile_data.year , 4 ) ;
/* 年 */
printer_line ( disp_cfile_data.month , 2 ) ;/* 月 */
printer_line ( disp_cfile_data.day , 2 ) ; /* 日 */
printer_line ( disp_cfile_data.hour , 2 ) ;
/* 時 */
printer_line ( disp_cfile_data.minute , 2 ) ;
/* 分 */
print_space ( sp1 ) ;
/* スペース */
printer_line ( disp_cfile_data.ua , 4 ) ; /* A : 水平風速 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.ub , 4 ) ; /* B : 水平風速 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.uc , 4 ) ; /* C : 水平風速 */
print_space ( sp1 ) ;
/* スペース */
/* スペース */
/* スペース */
printer_line ( disp_cfile_data.da , 3 ) ; /* A : 水平風向 */
print_space ( sp2 ) ;
printer_line ( disp_cfile_data.db , 3 ) ; /* B : 水平風向 */
print_space ( sp2 ) ;
printer_line ( disp_cfile_data.dc , 3 ) ; /* C : 水平風向 */
print_space ( sp1 ) ;
/* スペース */
/* スペース */
/* スペース */
printer_line ( disp_cfile_data.ta , 5 ) ; /* A : 平均温度 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.tb , 5 ) ; /* B : 平均温度 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.tc , 5 ) ; /* C : 平均温度 */
printer_line ( "\r\n" , 2 ) ;
}
void
mvw_data_print ( void )
{
short
sp = 10 , sp1 = 1 , sp2 = 2 ;
if ( ( printer_status() & 0x90 ) == 0x90 ) {
/* スペース */
/* 改行 */
}
#pragma
page()
/****************************************************************
****
*
***
void
mvw_data_print ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ印刷処理 *
*
平均風向風速と温度
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
/* スペース */
*
print_cnt ++ ;
page_cnt ++ ;
print_space ( sp ) ;
printer_line ( disp_cfile_data.year , 4 ) ;
/* 年 */
printer_line ( disp_cfile_data.month , 2 ) ;/* 月 */
printer_line ( disp_cfile_data.day , 2 ) ; /* 日 */
printer_line ( disp_cfile_data.hour , 2 ) ;
/* 時 */
printer_line ( disp_cfile_data.minute , 2 ) ;
/* 分 */
print_space ( sp1 ) ;
/* スペース */
printer_line ( disp_cfile_data.xa , 5 ) ; /* A : X成分風速 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.xb , 5 ) ; /* B : X成分風速 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.xc , 5 ) ; /* C : X成分風速 */
print_space ( sp1 ) ;
/* スペース */
/* スペース */
/* スペース */
printer_line ( disp_cfile_data.ya , 5 ) ; /* A : Y成分風速 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.yb , 5 ) ; /* B : Y成分風速 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.yc , 5 ) ; /* C : Y成分風速 */
print_space ( sp1 ) ;
/* スペース */
/* スペース */
/* スペース */
printer_line ( disp_cfile_data.wa , 5 ) ; /* A : 垂直風速 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.wb , 5 ) ; /* B : 垂直風速 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.wc , 5 ) ; /* C : 垂直風速 */
printer_line ( "\r\n" , 2 ) ;
/* スペース */
/* スペース */
/* 改行 */
}
}
#pragma
page()
/****************************************************************
****
*
***
void
wtsig_data_print ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ印刷処理 *
*
平均風向風速と温度
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
*
wtsig_data_print ( void )
{
short
sp = 10 , sp1 = 1 , sp2 = 2 ;
if ( ( printer_status() & 0x90 ) == 0x90 ) {
print_cnt ++ ;
page_cnt ++ ;
print_space ( sp ) ;
printer_line ( disp_cfile_data.year , 4 ) ;
/* 年 */
printer_line ( disp_cfile_data.month , 2 ) ;/* 月 */
printer_line ( disp_cfile_data.day , 2 ) ; /* 日 */
printer_line ( disp_cfile_data.hour , 2 ) ;
/* 時 */
printer_line ( disp_cfile_data.minute , 2 ) ;
/* 分 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.sua , 4 ) ; /* A : 水平風速 標準偏差 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.sub , 4 ) ; /* B : 水平風速 標準偏差 */
/* スペース */
/* スペース */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.suc , 4 ) ; /* C : 水平風速 標準偏差 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.sda , 4 ) ; /* A : 水平風向 標準偏差 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.sdb , 4 ) ; /* B : 水平風向 標準偏差 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.sdc , 4 ) ; /* C : 水平風向 標準偏差 */
printer_line ( "\r\n" , 2 ) ;
/* スペース */
/* スペース */
/* スペース */
/* スペース */
/* 改行 */
}
}
#pragma
page()
/****************************************************************
****
*
***
void
vwsig_data_print ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ印刷処理 *
*
平均風向風速と温度
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
*
vwsig_data_print ( void )
{
short
sp = 10 , sp1 = 1 , sp2 = 2 ;
if ( ( printer_status() & 0x90 ) == 0x90 ) {
print_cnt ++ ;
page_cnt ++ ;
print_space ( sp ) ;
printer_line ( disp_cfile_data.year , 4 ) ;
/* 年 */
printer_line ( disp_cfile_data.month , 2 ) ;/* 月 */
printer_line ( disp_cfile_data.day , 2 ) ; /* 日 */
printer_line ( disp_cfile_data.hour , 2 ) ;
/* 時 */
printer_line ( disp_cfile_data.minute , 2 ) ;
/* 分 */
print_space ( sp1 ) ;
/* スペース */
printer_line ( disp_cfile_data.sxa , 4 ) ; /* A : X成分風速 標準偏差 */
print_space ( sp1 ) ;
/* スペース */
printer_line ( disp_cfile_data.sxb , 4 ) ; /* B : X成分風速 標準偏差 */
print_space ( sp1 ) ;
/* スペース */
printer_line ( disp_cfile_data.sxc , 4 ) ; /* C : X成分風速 標準偏差 */
print_space ( sp1 ) ;
/* スペース */
printer_line ( disp_cfile_data.sya , 4 ) ; /* A : Y成分風速 標準偏差 */
print_space ( sp1 ) ;
/* スペース */
printer_line ( disp_cfile_data.syb , 4 ) ; /* B : Y成分風速 標準偏差 標準偏差 */
print_space ( sp1 ) ;
/* スペース */
printer_line ( disp_cfile_data.syc , 4 ) ; /* C : Y成分風速 標準偏差 */
print_space ( sp1 ) ;
/* スペース */
printer_line ( disp_cfile_data.swa , 4 ) ; /* A : 垂直風速 標準偏差 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.swa , 4 ) ; /* B : 垂直風速 標準偏差 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.swc , 4 ) ; /* C : 垂直風速 標準偏差 */
printer_line ( "\r\n" , 2 ) ;
}
}
/* 改行 */
/* スペース */
/* スペース */
#pragma
page()
/****************************************************************
****
*
***
void
ssw_data_print ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ印刷処理 *
*
平均風向風速と温度
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
*
ssw_data_print ( void )
{
short
sp = 7 , sp1 = 1 , sp2 = 2 ;
if ( ( printer_status() & 0x90 ) == 0x90 ) {
print_cnt ++ ;
page_cnt ++ ;
print_space ( sp ) ;
printer_line ( disp_cfile_data.year , 4 ) ;
/* 年 */
printer_line ( disp_cfile_data.month , 2 ) ;/* 月 */
printer_line ( disp_cfile_data.day , 2 ) ; /* 日 */
printer_line ( disp_cfile_data.hour , 2 ) ;
/* 時 */
printer_line ( disp_cfile_data.minute , 2 ) ;
/* 分 */
print_space ( sp1 ) ;
/* スペース */
printer_line ( disp_cfile_data.suua , 4 ) ;/* A : 水平風速 乱流強度 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.suub , 4 ) ;/* B : 水平風速 乱流強度 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.suuc , 4 ) ;/* C : 水平風速 乱流強度 */
print_space ( sp1 ) ;
/* スペース */
/* スペース */
/* スペース */
printer_line ( disp_cfile_data.sxxa , 4 ) ;/* A : X成分風速 乱流強度 */
print_space ( sp1 ) ;
/* スペース */
printer_line ( disp_cfile_data.sxxb , 4 ) ;/* B : X成分風速 乱流強度 */
print_space ( sp1 ) ;
/* スペース */
printer_line ( disp_cfile_data.sxxc , 4 ) ;/* C : X成分風速 乱流強度 */
print_space ( sp1 ) ;
/* スペース */
printer_line ( disp_cfile_data.syya , 4 ) ;/* A : Y成分風速 乱流強度 */
print_space ( sp1 ) ;
/* スペース */
printer_line ( disp_cfile_data.syyb , 4 ) ;/* B : Y成分風速 乱流強度 */
print_space ( sp1 ) ;
/* スペース */
printer_line ( disp_cfile_data.syyc , 4 ) ;/* C : Y成分風速 乱流強度 */
print_space ( sp1 ) ;
/* スペース */
printer_line ( disp_cfile_data.swwa , 4 ) ;/* A : 垂直風速 乱流強度 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.swwb , 4 ) ;/* B : 垂直風速 乱流強度 */
print_space ( sp1 ) ;
printer_line ( disp_cfile_data.swwc , 4 ) ;/* C : 垂直風速 乱流強度 */
printer_line ( "\r\n" , 2 ) ;
/* 改行 */
}
}
#pragma
page()
/****************************************************************
****
*
***
void
iwt_data_print ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ印刷処理 *
*
/* スペース */
/* スペース */
*
平均風向風速と温度
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
iwt_data_print ( void )
{
short
sp = 10 , sp1 = 1 , sp2 = 2 ;
if ( ( printer_status() & 0x90 ) == 0x90 ) {
print_cnt ++ ;
page_cnt ++ ;
print_space ( sp ) ;
printer_line ( disp_sfile_data.year , 4 ) ;
printer_line ( disp_sfile_data.month , 2 ) ;/* 月 */
printer_line ( disp_sfile_data.day , 2 ) ; /* 日 */
printer_line ( disp_sfile_data.hour , 2 ) ;
printer_line ( disp_sfile_data.minute , 2 ) ;
printer_line ( disp_sfile_data.second , 2 ) ;
print_space ( sp1 ) ;
/* 年 */
/* 時 */
/* 分 */
/* 秒 */
/* スペース */
printer_line ( disp_sfile_data.ua , 5 ) ; /* A : 水平風速 */
print_space ( sp1 ) ;
printer_line ( disp_sfile_data.ub , 5 ) ; /* B : 水平風速 */
print_space ( sp1 ) ;
printer_line ( disp_sfile_data.uc , 5 ) ; /* C : 水平風速 */
print_space ( sp1 ) ;
/* スペース */
/* スペース */
/* スペース */
printer_line ( disp_sfile_data.va , 5 ) ; /* A : 風速 */
print_space ( sp1 ) ;
printer_line ( disp_sfile_data.vb , 5 ) ; /* B : 風速 */
print_space ( sp1 ) ;
printer_line ( disp_sfile_data.vc , 5 ) ; /* C : 風速 */
print_space ( sp1 ) ;
/* スペース */
/* スペース */
/* スペース */
printer_line ( disp_sfile_data.ta , 6 ) ; /* A : Ts 温度 */
print_space ( sp1 ) ;
printer_line ( disp_sfile_data.tb , 6 ) ; /* B : Ts 温度 */
print_space ( sp1 ) ;
printer_line ( disp_sfile_data.tc , 6 ) ;
/* C : Ts 温度 */
print_space ( sp1 ) ;
printer_line ( "\r\n" , 2 ) ;
/* 改行 */
}
}
#pragma
page()
/****************************************************************
****
*
***
void
ivw_data_print ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ印刷処理 *
*
平均風向風速と温度
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
{
ivw_data_print ( void )
*
/* スペース */
/* スペース */
/* スペース */
short
sp = 10 , sp1 = 1 , sp2 = 2 ;
if ( ( printer_status() & 0x90 ) == 0x90 ) {
print_cnt ++ ;
page_cnt ++ ;
print_space ( sp ) ;
printer_line ( disp_sfile_data.year , 4 ) ;
printer_line ( disp_sfile_data.month , 2 ) ;/* 月 */
printer_line ( disp_sfile_data.day , 2 ) ; /* 日 */
printer_line ( disp_sfile_data.hour , 2 ) ;
printer_line ( disp_sfile_data.minute , 2 ) ;
printer_line ( disp_sfile_data.second , 2 ) ;
print_space ( sp1 ) ;
/* 年 */
/* 時 */
/* 分 */
/* 秒 */
/* スペース */
printer_line ( disp_sfile_data.xa , 5 ) ; /* A : X成分風速 */
print_space ( sp1 ) ;
printer_line ( disp_sfile_data.xb , 5 ) ; /* B : X成分風速 */
print_space ( sp1 ) ;
printer_line ( disp_sfile_data.xc , 5 ) ; /* C : X成分風速 */
print_space ( sp1 ) ;
/* スペース */
/* スペース */
/* スペース */
printer_line ( disp_sfile_data.ya , 5 ) ; /* A : Y成分風速 */
print_space ( sp1 ) ;
printer_line ( disp_sfile_data.yb , 5 ) ; /* B : Y成分風速 */
print_space ( sp1 ) ;
printer_line ( disp_sfile_data.yc , 5 ) ; /* C : Y成分風速 */
print_space ( sp1 ) ;
/* スペース */
/* スペース */
/* スペース */
printer_line ( disp_sfile_data.wa , 5 ) ; /* A : 垂直風速 */
print_space ( sp1 ) ;
printer_line ( disp_sfile_data.wb , 5 ) ; /* B : 垂直風速 */
print_space ( sp1 ) ;
printer_line ( disp_sfile_data.wc , 5 ) ; /* C : 垂直風速 */
print_space ( sp1 ) ;
printer_line ( "\r\n" , 2 ) ;
/* スペース */
/* スペース */
/* スペース */
/* 改行 */
}
}
_
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " データ演算装置 メニュー処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
データ演算装置 収録データ表示処理
*
*
*
*
*
*
Module Name
: GP_FDSP.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Jan. 16, 1998
*
*
*
*
Revised Date : Jan. 19, 1998
*
*
*
*
Auther
: N. Kamio
*
***
*
****
*************************************************************************/
/*********************************************************************
***
*
**
Ver 1.00
*
*
新規作成
Jan. 16, 1998
**
**
*
***
*
****
**********************************************************************/
#include
#include
#include
"GP_720.H"
"GP_DATA.H"
"GP_MENU.H"
#pragma
page()
/****************************************
***
*
**
画面 定数
**
*
***
****************************************/
/*-----*
#define
#define
#define
#define
平均風速/風向/温度画面
*-----*/
MWT_T1
"---------平均演算結果
----------"
MWT_T2
"---水平風速--- --水平風向- -----温
度----"
MWT_T3
"(m/s)
(deg)
(℃)"
MWT_T4
"時分 A
B
C
A B C
A
B
C"
/*-----*
#define
#define
#define
平均成分風速画面
MVW_T1
MVW_T2
MVW_T3
/*-----*
#define
#define
#define
#define
標準偏差画面
SIG_T1
SIG_T2
SIG_T3
SIG_T4
*-----*/
"---------標準偏差演算結果
----------"
"---水平風速--- -- 水平風向 -- -- 垂直風速 -- --- X成分 --- --- Y成分 ---"
"(m/s)
(deg)
(m/s)
(m/s)
(m/s)"
"時分 A
B
C
A
B
C
A
B
C
A
B
C
A
B
C"
/*-----*
#define
#define
#define
乱流強度画面
SSW_T1
SSW_T2
SSW_T3
*-----*/
"---------乱流強度演算結果
"---水平風速--- ----- X風速 ---"時分 A
B
C
A
B
/*-----*
#define
#define
#define
#define
瞬間風速/風向/温度画面
*-----*/
IWT_T1
"---------瞬間値結果
----------"
IWT_T2
"---水平風速--- --- 風 速 --- ----- 温 度 ----"
IWT_T3
"(m/s)
(m/s)
(℃)"
IWT_T4
"時分秒 A
B
C
A
B
C
A
B
/*-----*
#define
#define
#define
瞬間成分風速画面
IVW_T1
IVW_T2
IVW_T3
*-----*/
"---- X風速 ---- ---- Y風速 ---- ---- W風速 ----"
"(m/s)
(m/s)
(m/s)"
"時分秒
A
B
C
A
B
C
A
B
#define
CLR_T
"
*-----*/
"----X成分風速--- ----Y成分風速--- ----W成分風速---"
"(m/s)
(m/s)
(m/s)"
"時分
A
B
C
A
B
C
A
B
C"
#pragma
page()
/****************************************************************
****
*
***
void
mwt_disp_head ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ表示処理 *
*
平均風向風速と温度
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
mwt_disp_head ( void )
{
_settextcolor( GGREEN ) ;
_settextposition( 4 , 1 ) ;
_outtext( CLR_T ) ;
----------"
----- Y風速 ---C
A
B
----- W風速 ----"
C
A
B
C"
C
"
C"
"
*
_settextposition( 4 , 8 )
_outtext( MWT_T1 ) ;
;
_settextcolor( GLIGHTYELLOW )
_settextposition( 5 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 5 , 6 ) ;
_outtext( MWT_T2 ) ;
;
_settextposition( 6 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 6 , 11 ) ;
_outtext( MWT_T3 ) ;
_settextcolor( GBRIGHTWHITE )
_settextposition( 7 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 7 , 1) ;
_outtext( MWT_T4 ) ;
;
}
#pragma
page()
/****************************************************************
****
*
***
void
mww_disp_head ( void )
*
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ表示処理 *
*
平均風向風速と温度
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
mvw_disp_head ( void )
{
_settextcolor( GGREEN ) ;
_settextposition( 4 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 4 , 12 ) ;
_outtext( MWT_T1 ) ;
_settextcolor( GLIGHTYELLOW )
_settextposition( 5 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 5 , 6 ) ;
_outtext( MVW_T1 ) ;
;
_settextposition( 6 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 6 , 13 ) ;
_outtext( MVW_T2 ) ;
_settextcolor( GBRIGHTWHITE )
_settextposition( 7 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 7 , 1) ;
_outtext( MVW_T3 ) ;
;
}
#pragma
page()
/****************************************************************
****
*
***
void
sig_disp_head ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ表示処理 *
*
標準偏差
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
sig_disp_head ( void )
{
_settextcolor( GGREEN ) ;
_settextposition( 4 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 4 , 20 ) ;
_outtext( SIG_T1 ) ;
_settextcolor( GLIGHTYELLOW )
_settextposition( 5 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 5 , 6 ) ;
_outtext( SIG_T2 ) ;
;
_settextposition( 6 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 6 , 11 ) ;
_outtext( SIG_T3 ) ;
_settextcolor( GBRIGHTWHITE )
_settextposition( 7 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 7 , 1) ;
_outtext( SIG_T4 ) ;
;
}
#pragma
page()
/****************************************************************
****
*
***
void
ssw_disp_head ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ表示処理 *
*
乱流強度演算結果
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
ssw_disp_head ( void )
{
_settextcolor( GGREEN ) ;
_settextposition( 4 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 4 , 8 ) ;
_outtext( SSW_T1 ) ;
_settextcolor( GLIGHTYELLOW )
_settextposition( 5 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 5 , 6 ) ;
_outtext( SSW_T2 ) ;
_settextposition( 6 , 1 )
_outtext( CLR_T ) ;
;
;
_settextcolor( GBRIGHTWHITE )
_settextposition( 7 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 7 , 1) ;
_outtext( SSW_T3 ) ;
;
*
}
#pragma
page()
/****************************************************************
****
*
***
void
iwt_disp_head ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ表示処理 *
*
乱流強度演算結果
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
*
iwt_disp_head ( void )
{
_settextcolor( GGREEN ) ;
_settextposition( 4 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 4 , 13 ) ;
_outtext( IWT_T1 ) ;
_settextcolor( GLIGHTYELLOW )
_settextposition( 5 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 5 , 8 ) ;
_outtext( IWT_T2 ) ;
;
_settextposition( 6 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 6 , 13 ) ;
_outtext( IWT_T3 ) ;
_settextcolor( GBRIGHTWHITE )
_settextposition( 7 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 7 , 1) ;
_outtext( IWT_T4 ) ;
;
}
#pragma
page()
/****************************************************************
****
*
***
void
ivw_disp_head ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ表示処理 *
*
瞬間成分風速
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
ivw_disp_head ( void )
{
_settextcolor( GGREEN ) ;
_settextposition( 4 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 4 , 13 ) ;
_outtext( IWT_T1 ) ;
_settextcolor( GLIGHTYELLOW )
_settextposition( 5 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 5 , 8 ) ;
;
*
_outtext( IVW_T1 )
;
_settextposition( 6 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 6 , 15 ) ;
_outtext( IVW_T2 ) ;
_settextcolor( GBRIGHTWHITE )
_settextposition( 7 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 7 , 1) ;
_outtext( IVW_T3 ) ;
;
}
#pragma
page()
/****************************************************************
****
*
***
void
mwt_fdata_out( void )
*
**
*
*
GP-720 型 データ演算装置 平風温表示処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void mwt_fdata_out ( void )
{
char
char
sp1[2] , sp2[3] ;
work[10] ;
sp1[0] = sp2[0] = sp2[1] = ' ' ;
sp1[1] = sp2[2] = 0x00 ;
memcpy ( work , disp_cfile_data.hour , 2 ) ;
work[2] = 0x00 ;
_outtext ( work ) ;
memcpy ( work , disp_cfile_data.minute , 2 ) ;
work[2] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp1 ) ;
/* 時 */
/* 分 */
memcpy ( work , disp_cfile_data.ua , 4 ) ; /* A : 水平風速 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp1 ) ;
memcpy ( work , disp_cfile_data.ub , 4 ) ; /* B : 水平風速 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp1 ) ;
memcpy ( work , disp_cfile_data.uc , 4 ) ; /* C : 水平風速 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp2 ) ;
memcpy ( work , disp_cfile_data.da , 3 ) ; /* A : 水平風向 */
work[3] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp1 ) ;
memcpy ( work , disp_cfile_data.db , 3 ) ; /* B : 水平風向 */
work[3] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp1 ) ;
memcpy ( work , disp_cfile_data.dc , 3 ) ; /* C : 水平風向 */
work[3] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp2 ) ;
memcpy ( work , disp_cfile_data.ta , 6 ) ; /* A : 平均温度 */
/* スペース */
/* スペース */
/* スペース */
/* スペース */
/* スペース */
/* スペース */
/* スペース */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp1 ) ;
/* スペース */
memcpy ( work , disp_cfile_data.tb , 6 ) ;
/* B : 平均温度 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp1 ) ;
/* スペース */
memcpy ( work , disp_cfile_data.tc , 6 ) ; /* C : 平均温度 */
work[5] = 0x00 ;
_outtext ( work ) ;
}
#pragma
page()
/****************************************************************
****
*
***
void
mvw_fdata_out( void )
*
**
*
*
GP-720 型 データ演算装置 平均成分風速表示処理 *
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void mvw_fdata_out ( void )
{
char
sp[2] , work[10] ;
sp[0] = ' ' ;
sp[1] = 0x00 ;
memcpy ( work , disp_cfile_data.hour , 2 ) ;
work[2] = 0x00 ;
_outtext ( work ) ;
memcpy ( work , disp_cfile_data.minute , 2 ) ;
work[2] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* 時 */
/* 分 */
/* スペース */
memcpy ( work , disp_cfile_data.xa , 6 ) ; /* A : X成分風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* スペース */
memcpy ( work , disp_cfile_data.xb , 6 ) ; /* B : X成分風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* スペース */
memcpy ( work , disp_cfile_data.xc , 6 ) ; /* C : X成分風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* スペース */
memcpy ( work , disp_cfile_data.ya , 6 ) ; /* A : Y成分風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* スペース */
memcpy ( work , disp_cfile_data.yb , 6 ) ; /* B : Y成分風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* スペース */
memcpy ( work , disp_cfile_data.yc , 6 ) ; /* C : Y成分風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* スペース */
memcpy ( work , disp_cfile_data.wa , 6 ) ; /* A : 垂直風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* スペース */
memcpy ( work , disp_cfile_data.wb , 6 ) ; /* B : 垂直風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
memcpy ( work , disp_cfile_data.wc , 6 ) ; /* C : 垂直風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
/* スペース */
}
#pragma
page()
/****************************************************************
****
*
***
void
sig_fdata_out( void )
*
**
*
*
GP-720 型 データ演算装置 標準偏差表示処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void sig_fdata_out ( void )
{
char
sp[2] , work[10] ;
sp[0] = ' ' ;
sp[1] = 0x00 ;
memcpy ( work , disp_cfile_data.hour , 2 ) ;
work[2] = 0x00 ;
_outtext ( work ) ;
memcpy ( work , disp_cfile_data.minute , 2 ) ;
work[2] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* 時 */
memcpy ( work , disp_cfile_data.sua , 5 ) ;
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
memcpy ( work , disp_cfile_data.sub , 5 ) ;
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
memcpy ( work , disp_cfile_data.suc , 5 ) ;
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* A : 水平風速 標準偏差 */
memcpy ( work , disp_cfile_data.sda , 5 ) ;
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
memcpy ( work , disp_cfile_data.sdb , 5 ) ;
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
memcpy ( work , disp_cfile_data.sdc , 5 ) ;
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
memcpy ( work , disp_cfile_data.swa , 5 ) ;
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
memcpy ( work , disp_cfile_data.swa , 5 ) ;
work[4] = 0x00 ;
_outtext ( work ) ;
/* 分 */
/* スペース */
/* スペース */
/* B : 水平風速 標準偏差 */
/* スペース */
/* C : 水平風速 標準偏差 */
/* スペース */
/* A : 水平風向 標準偏差 */
/* スペース */
/* B : 水平風向 標準偏差 */
/* スペース */
/* C : 水平風向 標準偏差 */
/* スペース */
/* A : 垂直風速 標準偏差 */
/* スペース */
/* B : 垂直風速 標準偏差 */
_outtext ( sp ) ;
memcpy ( work , disp_cfile_data.swc , 5 ) ;
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* スペース */
/* C : 垂直風速 標準偏差 */
memcpy ( work , disp_cfile_data.sxa , 5 ) ;
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
memcpy ( work , disp_cfile_data.sxb , 5 ) ;
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
memcpy ( work , disp_cfile_data.sxc , 5 ) ;
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* A : X成分風速 標準偏差 */
memcpy ( work , disp_cfile_data.sya , 5 ) ;
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
memcpy ( work , disp_cfile_data.syb , 5 ) ;
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
memcpy ( work , disp_cfile_data.syc , 5 ) ;
work[4] = 0x00 ;
_outtext ( work ) ;
/* A : Y成分風速 標準偏差 */
/* スペース */
/* スペース */
/* B : X成分風速 標準偏差 */
/* スペース */
/* C : X成分風速 標準偏差 */
/* スペース */
/* スペース */
/* B : Y成分風速 標準偏差 標準偏差 */
/* スペース */
/* C : Y成分風速 標準偏差 */
}
#pragma
page()
/****************************************************************
****
*
***
void
ssw_fdata_out( void )
*
**
*
*
GP-720 型 データ演算装置 乱流強度表示処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void ssw_fdata_out ( void )
{
char
sp1[2] , sp2[3] , work[10] ;
sp1[0] = sp2[0] = sp2[1] = ' ' ;
sp1[1] = sp2[2] = 0x00 ;
memcpy ( work , disp_cfile_data.hour , 2 ) ;
work[2] = 0x00 ;
_outtext ( work ) ;
memcpy ( work , disp_cfile_data.minute , 2 ) ;
work[2] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp1 ) ;
/* 時 */
/* 分 */
/* スペース */
memcpy ( work , disp_cfile_data.suua , 5 ) ;/* A : 水平風速 乱流強度 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp1 ) ;
/* スペース */
memcpy ( work , disp_cfile_data.suub , 5 ) ;/* B : 水平風速 乱流強度 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp1 ) ;
/* スペース */
memcpy ( work , disp_cfile_data.suuc , 5 ) ;/* C : 水平風速 乱流強度 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp2 ) ;
/* スペース */
_outtext ( sp1 ) ;
/* スペース */
memcpy ( work , disp_cfile_data.sxxa , 5 ) ;/* A : X成分風速 乱流強度 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp2 ) ;
/* スペース */
memcpy ( work , disp_cfile_data.sxxb , 5 ) ;/* B : X成分風速 乱流強度 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp2 ) ;
/* スペース */
memcpy ( work , disp_cfile_data.sxxc , 5 ) ;/* C : X成分風速 乱流強度 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp2 ) ;
/* スペース */
_outtext ( sp1 ) ;
/* スペース */
memcpy ( work , disp_cfile_data.syya , 5 ) ;/* A : Y成分風速 乱流強度 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp2 ) ;
/* スペース */
memcpy ( work , disp_cfile_data.syyb , 5 ) ;/* B : Y成分風速 乱流強度 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp2 ) ;
/* スペース */
memcpy ( work , disp_cfile_data.syyc , 5 ) ;/* C : Y成分風速 乱流強度 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp2 ) ;
/* スペース */
_outtext ( sp1 ) ;
/* スペース */
memcpy ( work , disp_cfile_data.swwa , 5 ) ;/* A : 垂直風速 乱流強度 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp2 ) ;
/* スペース */
memcpy ( work , disp_cfile_data.swwb , 5 ) ;/* B : 垂直風速 乱流強度 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp2 ) ;
/* スペース */
memcpy ( work , disp_cfile_data.swwc , 5 ) ;/* C : 垂直風速 乱流強度 */
work[4] = 0x00 ;
_outtext ( work ) ;
}
#pragma
page()
/****************************************************************
****
*
***
void
iwt_fdata_out( void )
*
**
*
*
GP-720 型 データ演算装置 瞬間風速と温度表示処理*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void iwt_fdata_out ( void )
{
char
sp1[2] , sp2[3] , work[10] ;
sp1[0] = sp2[0] = sp2[1] = ' ' ;
sp1[1] = sp2[2] = 0x00 ;
memcpy ( work , disp_sfile_data.hour , 2 ) ;
work[2] = 0x00 ;
_outtext ( work ) ;
memcpy ( work , disp_sfile_data.minute , 2 ) ;
work[2] = 0x00 ;
/* 時 */
/* 分 */
_outtext ( work ) ;
memcpy ( work , disp_sfile_data.second , 2 ) ;
work[2] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp1 ) ;
/* 秒 */
/* スペース */
memcpy ( work , disp_sfile_data.ua , 5 ) ; /* A : 水平風速 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp1 ) ;
memcpy ( work , disp_sfile_data.ub , 5 ) ; /* B : 水平風速 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp1 ) ;
memcpy ( work , disp_sfile_data.uc , 5 ) ; /* C : 水平風速 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp2 ) ;
memcpy ( work , disp_sfile_data.va , 5 ) ; /* A : 風速 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp1 ) ;
memcpy ( work , disp_sfile_data.vb , 5 ) ; /* B : 風速 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp1 ) ;
memcpy ( work , disp_sfile_data.vc , 5 ) ; /* C : 風速 */
work[4] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp2 ) ;
/* スペース */
/* スペース */
/* スペース */
/* スペース */
/* スペース */
/* スペース */
memcpy ( work , disp_sfile_data.ta , 6 ) ; /* A : Ts 温度 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp1 ) ;
/* スペース */
memcpy ( work , disp_sfile_data.tb , 6 ) ; /* B : Ts 温度 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp1 ) ;
/* スペース */
memcpy ( work , disp_sfile_data.tc , 6 ) ;
/* C : Ts 温度 */
work[5] = 0x00 ;
_outtext ( work ) ;
}
#pragma
page()
/****************************************************************
****
*
***
void
ivw_fdata_out( void )
*
**
*
*
GP-720 型 データ演算装置 瞬間成分風速表示処理 *
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void ivw_fdata_out ( void )
{
char
sp[2] , work[10] ;
sp[0] = ' ' ;
sp[1] = 0x00 ;
memcpy ( work , disp_sfile_data.hour , 2 ) ;
work[2] = 0x00 ;
_outtext ( work ) ;
memcpy ( work , disp_sfile_data.minute , 2 ) ;
work[2] = 0x00 ;
/* 時 */
/* 分 */
_outtext ( work ) ;
memcpy ( work , disp_sfile_data.second , 2 ) ;
work[2] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* 秒 */
/* スペース */
memcpy ( work , disp_sfile_data.xa , 6 ) ; /* A : X成分風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* スペース */
memcpy ( work , disp_sfile_data.xb , 6 ) ; /* B : X成分風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* スペース */
memcpy ( work , disp_sfile_data.xc , 6 ) ; /* C : X成分風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* スペース */
memcpy ( work , disp_sfile_data.ya , 6 ) ; /* A : Y成分風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* スペース */
memcpy ( work , disp_sfile_data.yb , 6 ) ; /* B : Y成分風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* スペース */
memcpy ( work , disp_sfile_data.yc , 6 ) ; /* C : Y成分風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
/* スペース */
memcpy ( work , disp_sfile_data.wa , 6 ) ; /* A : 垂直風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
memcpy ( work , disp_sfile_data.wb , 6 ) ; /* B : 垂直風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
_outtext ( sp ) ;
memcpy ( work , disp_sfile_data.wc , 6 ) ; /* C : 垂直風速 */
work[5] = 0x00 ;
_outtext ( work ) ;
}
_
/* スペース */
/* スペース */
#pragma
optimize( "" , off )
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " データ演算装置 メニュー処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
データ演算装置 収録データ表示処理
*
*
*
*
*
*
Module Name
: GP_DISP.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Jan. 16, 1998
*
*
*
*
Revised Date : Mar. 13, 1998
*
*
*
*
Auther
: N. Kamio
*
***
*
****
*************************************************************************/
/*********************************************************************
***
*
**
Ver 1.00
*
*
新規作成
Jan. 16, 1998
**
*
***
*
****
**********************************************************************/
#include
#include
#include
"GP_720.H"
"GP_DATA.H"
"GP_MENU.H"
#pragma
page()
/****************************************************************
****
*
***
void
fcdata_down ( void )
**
*
*
GP-720 型 データ演算装置 収録データ表示メイン処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void fcdata_down ( void )
{
short
long
n ;
sk ;
*
**
if ( display_cnt < 15L ) {
return ;
}
if ( cs_flag == 1 ) {
/* 演算値 */
sk = (long)SIZE_CFILE * display_cnt ;
} else {
/* 瞬間値 */
sk = (long)SIZE_SFILE * display_cnt ;
}
n = fseek ( disp_fp , sk , SEEK_SET ) ;
if ( n == 0 ) {
if ( cs_flag == 1 ) {
/* 演算値 */
n = fread( &disp_cfile_data , SIZE_CFILE , 1 , disp_fp ) ;
} else {
/* 瞬間値 */
n = fread( &disp_sfile_data , SIZE_SFILE , 1 , disp_fp ) ;
}
}
if ( n > 0 ) {
_settextwindow( 8 , 1 , 22 , 80 ) ;
/*
ウインドウ座標 設定 */
_scrolltextwindow( _GSCROLLUP ) ;
/*
1 行スクロール */
display_cnt ++ ;
_settextposition ( display_row , 1 ) ;
_settextcolor ( GBRIGHTWHITE ) ;
switch ( cs_disp_flag ) {
case DISP_MWT :
/* 平均 風速/風向/温度 */
mwt_fdata_out () ;
break ;
case DISP_MVW :
/* 平均 成分風速 */
mvw_fdata_out () ;
break ;
case DISP_SIG :
/* 標準偏差 */
sig_fdata_out () ;
break ;
case DISP_SSW :
/* 乱流強度 */
ssw_fdata_out () ;
break ;
case DISP_IWT :
/* 瞬間 風速/風向/温度 */
iwt_fdata_out () ;
break ;
case DISP_IVW :
/* 瞬間成分風速 */
ivw_fdata_out () ;
break ;
default :
break ;
}
_settextwindow( 1 , 1 , 25 , 80 ) ;
//
ウインドウ座標 設定
}
}
#pragma
page()
/****************************************************************
****
*
***
void
fcdata_up ( void )
*
**
*
*
GP-720 型 データ演算装置 収録データ表示メイン処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date Mar.13,1998
***
*
****
****************************************************************/
void fcdata_up ( void )
{
short
long
n ;
sk ;
if ( display_cnt < 15L ) {
return ;
}
if ( cs_flag == 1 ) {
/* 演算値 */
sk = (long)SIZE_CFILE * (display_cnt-16L) ;
} else {
/* 瞬間値 */
sk = (long)SIZE_SFILE * (display_cnt-16L) ;
}
n = fseek ( disp_fp , sk , SEEK_SET ) ;
if ( n == 0 ) {
if ( cs_flag == 1 ) {
/* 演算値 */
n = fread( &disp_cfile_data , SIZE_CFILE , 1 , disp_fp ) ;
} else {
/* 瞬間値 */
n = fread( &disp_sfile_data , SIZE_SFILE , 1 , disp_fp ) ;
}
}
if ( n > 0 ) {
_settextwindow( 8 , 1 , 22 , 80 ) ;
/*
ウインドウ座標 設定 */
_scrolltextwindow( _GSCROLLDOWN ) ;
/*
1 行スクロール */
display_cnt -- ;
_settextposition ( 1 , 1 ) ;
_settextcolor ( GBRIGHTWHITE ) ;
switch ( cs_disp_flag ) {
case DISP_MWT :
/* 平均 風速/風向/温度 */
mwt_fdata_out () ;
break ;
case DISP_MVW :
/* 平均 成分風速 */
mvw_fdata_out () ;
break ;
case DISP_SIG :
/* 標準偏差 */
sig_fdata_out () ;
break ;
case DISP_SSW :
/* 乱流強度 */
ssw_fdata_out () ;
break ;
case DISP_IWT :
/* 瞬間 風速/風向/温度 */
iwt_fdata_out () ;
break ;
case DISP_IVW :
/* 瞬間成分風速 */
ivw_fdata_out () ;
break ;
default :
break ;
}
_settextwindow( 1 , 1 , 25 , 80 ) ;
//
ウインドウ座標 設定
}
}
#pragma
page()
/****************************************************************
****
*
***
void
fcdata_pup ( void )
*
**
*
*
GP-720 型 データ演算装置 収録データ表示メイン処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date Mar.13,1998
***
*
****
****************************************************************/
void fcdata_pup ( void )
{
short
long
n , len = 15 ;
sk ;
if ( display_cnt <= 15L ) {
return ;
}
display_row = 0 ;
display_cnt = display_cnt - 15L - (long)len ;
if ( display_cnt < 0L )
{
display_cnt = 0L
}
;
if ( cs_flag == 1 ) {
/* 演算値 */
sk = (long)SIZE_CFILE * display_cnt ;
} else {
sk = (long)SIZE_SFILE * display_cnt ;
}
n = fseek ( disp_fp , sk , SEEK_SET ) ;
_settextwindow( 8 , 1 , 22 , 80 )
_clearscreen ( _GWINDOW ) ;
page_ud_disp () ;
_settextwindow( 1 , 1 , 25 , 80 )
/* 瞬間値 */
;
/*
ウインドウ座標 設定 */
/*
テキスト画面 クリア */
;
//
ウインドウ座標 設定
}
#pragma
page()
/****************************************************************
****
*
***
void
fcdata_pdown ( void )
*
**
*
*
GP-720 型 データ演算装置 収録データ表示メイン処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date Mar.13,1998
***
*
****
****************************************************************/
void fcdata_pdown ( void )
{
short
long
n ;
sk ;
display_row = 0 ;
if ( cs_flag == 1 ) {
/* 演算値 */
sk = (long)SIZE_CFILE * display_cnt ;
} else {
sk = (long)SIZE_SFILE * display_cnt ;
}
n = fseek ( disp_fp , sk , SEEK_SET ) ;
_settextwindow( 8 , 1 , 22 , 80 )
_clearscreen ( _GWINDOW ) ;
page_ud_disp () ;
_settextwindow( 1 , 1 , 25 , 80 )
}
_
/* 瞬間値 */
;
/*
ウインドウ座標 設定 */
/*
テキスト画面 クリア */
;
//
ウインドウ座標 設定
#pragma
optimize( "" , off )
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " データ演算装置 メニュー処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
データ演算装置 収録データ表示処理
*
*
*
*
*
*
Module Name
: GP_FPRN.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Jan. 16, 1998
*
*
*
*
Revised Date : Jan. 19, 1998
*
*
*
*
Auther
: N. Kamio
*
***
*
****
*************************************************************************/
**
/*********************************************************************
***
*
**
Ver 1.00
*
*
新規作成
Jan. 16, 1998
**
*
***
*
****
**********************************************************************/
#include
#include
#include
"GP_720.H"
"GP_DATA.H"
"GP_MENU.H"
#pragma
page()
/****************************************
***
*
**
画面 定数
**
*
***
****************************************/
/*-----*
#define
#define
観測画面 タイトル
TITLE_SAMPL
TITLE_DATA
*-----*/
"サンプリング間隔="
"日付:"
FUNC_FORM f_key[2] = {
{ 11 , 0 , "中止" } , //
{ 12 , 0 , "戻る" }
} ;
#pragma
page()
/****************************************************************
****
*
***
void
dprt_main ( void )
*
**
*
*
GP-720 型 データ演算装置 収録データ印刷メイン処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
dprt_main ( void )
観測メニュー時ファンクション・キ-情報
{
for ( ; ; ) {
print_menu () ;
if ( system_flag == SYS_DPRT ) {
file_print_main () ;
} else {
system_flag = SYS_MENU ;
break ;
}
}
}
#pragma
page()
/****************************************************************
****
*
***
void
print_menu ( void )
**
*
*
GP-720 型 データ演算装置 収録データ印刷
*
*
印刷パラメータ選択処理
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
*
void print_menu ( void )
{
if (menu_plot () == 1 ) {
system_flag = SYS_DPRT ;
if ( print_flag == 0 ) {
cs_flag = 2 ;
} else {
cs_flag = 1 ;
}
system_flag = SYS_DPRT ;
} else {
system_flag = SYS_MENU ;
}
/* メインメニュー選択処理 */
/* 瞬間値 */
/* 演算値 */
}
#pragma
page()
/****************************************************************
****
*
***
void
print_data ( void )
**
*
*
GP-720 型 データ演算装置 収録データ表示
*
*
パラメータデータ表示処理
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
*
void print_data ( void )
{
head_dsp () ;
draw_function( f_key , TRUE ) ;
_settextcolor( GLIGHTGREEN ) ;
_settextposition( 2 , 3 ) ;
_outtext( "収録データ印刷" ) ;
/* プログラム装置名表示 */
prnparam_data_disp ( 0 , MENU_ON ) ;
prnparam_data_disp ( 1 , MENU_OFF ) ;
prnparam_data_disp ( 2 , MENU_OFF ) ;
}
#pragma
page()
/****************************************************************
****
*
***
void
prnparam_data_disp ( short , short )
*
**
*
*
GP-720 型 データ演算装置 収録データ印刷
*
*
パラメータデータ表示処理
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void prnparam_data_disp ( short no , short col )
{
short
c ;
if ( col == MENU_OFF ) {
c = GBRIGHTWHITE ;
} else {
c = GLIGHTYELLOW ;
}
_settextcolor ( c ) ;
_settextposition( MENUP_Y+no*2 , MENUP_X ) ;
switch ( no ) {
case 0 :
case 1 :
case 2 :
/* 表示項目 */
_outtext( "表示項目(1:演算値 2:瞬間値)?" ) ;
break ;
/* 開始表示日時 */
_outtext( "開始日時( YYYY/MM/DD/HH ) ?" ) ;
break ;
/* 終了日時 */
_outtext( "終了日時( YYYY/MM/DD/HH ) ?" ) ;
break ;
default :
break ;
}
}
_
#pragma
optimize( "" , off )
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " データ演算装置 データファイル読込み処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
データ演算装置 データファイル読込み処理
*
*
*
*
*
*
Module Name
: GP_FRAD.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Jan. 16, 1998
*
*
*
*
Revised Date : Mar. 13, 1998
*
*
*
*
Auther
: N. Kamio
*
***
*
****
*************************************************************************/
/*********************************************************************
***
*
**
Ver 1.00
*
*
新規作成
Jan. 16, 1998
**
*
***
*
****
*********************************************************************/
#include
#include
#include
"GP_720.H"
"GP_DATA.H"
"GP_MENU.H"
#pragma
page()
/****************************************************************
****
*
***
void
first_disp( void )
*
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ表示処理 *
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date Mar.13,1998
***
*
****
****************************************************************/
void first_disp ( void )
{
short
long
n ;
sk ;
display_row = 0 ;
if ( display_cnt > 14L ) {
display_cnt -= 15L ;
} else {
**
display_cnt = 0L ;
}
if ( cs_flag == 1 ) {
sk = display_cnt * (long)SIZE_CFILE ;
} else {
sk = display_cnt * (long)SIZE_SFILE ;
}
n = fseek ( disp_fp , sk , SEEK_SET ) ;
save_data_out () ;
}
#pragma
page()
/****************************************************************
****
*
***
void
save_data_out ( void )
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ表示処理 *
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date Mar.13,1998
***
*
****
****************************************************************/
void
*
save_data_out ( void )
{
short
n , fr ;
save_data_head () ;
display_top = 0 ;
display_row = 0 ;
_settextwindow( 8 , 1 , 22 , 80 )
_clearscreen ( _GWINDOW ) ;
_settextcolor ( GBRIGHTWHITE ) ;
;
//
ウインドウ座標 設定
/*
テキスト画面 クリア */
for ( n = 0 ; ; n++ ) {
if ( cs_flag == 1 ) { /* 演算値 */
fr = fread( &disp_cfile_data , SIZE_CFILE , 1 , disp_fp )
} else {
/* 瞬間値 */
fr = fread( &disp_sfile_data , SIZE_SFILE , 1 , disp_fp )
}
if ( fr > 0 ) {
/* データ表示 */
_settextposition ( n+1 , 1 ) ;
save_data_put () ;
display_cnt ++ ;
if ( n == 14 ) {
break ;
}
} else {
break ;
}
}
display_row = n + 1 ;
_settextwindow( 1 , 1 , 25 , 80 )
;
//
ウインドウ座標 設定
}
#pragma
page()
/****************************************************************
****
*
***
void
save_data_head ( void )
*
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ表示処理 *
;
;
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void save_data_head ( void )
{
switch ( cs_disp_flag ) {
case DISP_MWT :
/* 平均 風速/風向/温度 */
mwt_disp_head () ;
break ;
case DISP_MVW :
/* 平均 成分風速 */
mvw_disp_head () ;
break ;
case DISP_SIG :
/* 標準偏差 */
sig_disp_head () ;
break ;
case DISP_SSW :
/* 乱流強度 */
ssw_disp_head () ;
break ;
case DISP_IWT :
/* 瞬間 風速/風向/温度 */
iwt_disp_head () ;
break ;
case DISP_IVW :
/* 瞬間 成分風速 */
ivw_disp_head () ;
break ;
default :
break ;
}
}
#pragma
page()
/****************************************************************
****
*
***
void
save_data_put ( void )
*
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ表示処理 *
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
save_data_put ( void )
{
switch ( cs_disp_flag ) {
case DISP_MWT :
/* 平均 風速/風向/温度 */
mwt_fdata_out () ;
break ;
case DISP_MVW :
/* 平均 成分風速 */
mvw_fdata_out () ;
break ;
case DISP_SIG :
/* 標準偏差 */
sig_fdata_out () ;
break ;
case DISP_SSW :
/* 乱流強度 */
ssw_fdata_out () ;
break ;
case DISP_IWT :
/* 瞬間 風速/風向/温度 */
iwt_fdata_out () ;
break ;
case DISP_IVW :
/* 瞬間 成分風速 */
ivw_fdata_out () ;
break ;
default :
break ;
}
}
#pragma
page()
/****************************************************************
****
*
***
void
file_name_ini( void )
*
**
*
*
GP-720 型 データ演算装置 ファイル名整列処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void file_name_ini ( void )
{
short
char
double
num , t ;
fn1[13] , fn2[13] ;
sam1 , sam2 ;
for ( t = 0 ; t < file_cnt ; t++ ) {
for ( num = 0 ; num < file_cnt-1 ; num++ ) {
memcpy ( fn1 , filename[num] , 8 ) ;
fn2[8] = 0x00 ;
sam1 = atof ( fn1 ) ;
memcpy ( fn2 , filename[num+1] , 8 ) ;
fn2[8] = 0x00 ;
sam2 = atof ( fn2 ) ;
if ( sam1 > sam2 ) {
memcpy ( filename[num] , fn2 , 13 ) ;
memcpy ( filename[num+1] , fn1 , 13 ) ;
}
}
}
}
#pragma
page()
/****************************************************************
****
*
***
short
file_fread ( short )
**
*
*
GP-720 型 データ演算装置 演算値表示データセット処理 *
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
short file_fread ( short fno , short cs )
{
short
FILE
n ;
*fp ;
fp = disp_fp ;
if ( cs == 0 ) {
/* 演算データ 読込み */
n = fread( &disp_cfile_data , SIZE_CFILE , 1 , (fp+fno*SIZE_CFILE) )
} else {
/* 瞬間データ 読込み */
n = fread( &disp_sfile_data , SIZE_SFILE , 1 , (fp+fno*SIZE_SFILE) )
}
if ( n > 0 ) {
return ( 0 ) ;
} else {
return ( 1 ) ;
}
;
;
/* データあり */
/* データなし */
}
#pragma
page()
/****************************************************************
****
*
***
void
page_up_disp( void )
*
**
*
*
GP-720 型 データ演算装置 演算ファイルデータ表示処理 *
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void page_ud_disp ( void )
{
short
n , t ;
for ( n = 0 ; n < 15 ; n++ ) {
if ( cs_flag == 1 ) {
/* 演算値 */
t = fread( &disp_cfile_data , SIZE_CFILE , 1 , disp_fp ) ;
} else {
/* 瞬間値 */
t = fread( &disp_sfile_data , SIZE_SFILE , 1 , disp_fp ) ;
}
if ( t > 0 ) {
/* データ表示 */
_settextposition ( n+1 , 1 ) ;
save_data_put () ;
display_cnt ++ ;
display_row ++ ;
} else {
break ;
}
}
}
_
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " キーボード 入力処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
キーボード 入力処理
*
*
*
*
*
*
Module Name
: GP_KEY.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Jan. 19, 1998
*
*
*
*
Revised Date : Mar. 14, 1998
*
*
*
*
Auther
: S. Yamashita
**
*
***
*
****
*************************************************************************/
/*********************************************************************
****
*
***
*
**
Ver 1.00
*
*
新規作成
Jan. 19, 1998
*
*
Windows95 用 ハード・コピー処理 追加
Mar. 3, 1998
**
*
***
*
****
*********************************************************************/
#include
#include
#include
"GP_720.H"
"GP_DATA.H"
"GP_MENU.H"
#pragma
page()
/******************************************
***
*
**
キー入力 定数
**
*
***
******************************************/
#define
EXIT_TITLE "Exit Ok ? (Y/N)"
/*****************************************
***
*
**
参照外部変数
**
*
***
*****************************************/
extern
extern
FUNC_FORM fnc_pmkey[10] ;
FUNC_FORM fnc_pskey[7] ;
//
//
ファンクション・キ-情報 演算値(通常)
ファンクション・キ-情報 演算値(Shift)
#pragma
page()
/************************************************************************
***
void draw_function( FUNC_FORM *btn , short mode )
*
*
ファンクション・キ- 描画処理
*
*
Parameter
*
*
FUNC_FORM *btn : ファンクション・キ- 表示文字列 ポインタ
*
*
short
mode : 描画モード
*
*
TRUE : 通常
*
*
FALSE : ハード・コピー
*
************************************************************************/
void
draw_function( FUNC_FORM *btn , short mode )
{
short
i , x , tx , c ;
_setfont( "t'system'b" ) ;
for ( i = 0 ; i < 12 ; i++ )
{
switch( i )
{
case
0 :
//F1キー
case
1 :
//F2キー
case
2 :
//F3キー
case
3 :
//F4キー
x = i * 51 + 9 ;
break ;
case
case
case
case
4 :
5 :
6 :
7 :
x = ( i break ;
//F4キー
//F6キー
//F7キー
//F8キー
4 ) * 51 + 220 ;
case
case
case
case
8 :
9 :
10 :
11 :
x = ( i break ;
//F9キー
//F10キー
//F11キー
//F12キー
8 ) * 51 + 431 ;
default :
break ;
}
c = mode ? GBRIGHTWHITE : GBLACK
_setcolor( c ) ;
;
if ( i == ( btn->no - 1 ) )
{
tx = ( 49 - _getgtextextent( btn->str ) ) / 2 + x ; //文字列表示開始位置 計算
_rectangle( _GFILLINTERIOR , x , 460 , x + 48 , 479 ) ;
c = mode ? GBLACK : GBRIGHTWHITE ;
_setcolor( c ) ;
_moveto( tx , 462 ) ;
_outgtext( btn->str ) ;
btn++ ;
}
else
{
_rectangle( _GFILLINTERIOR , x , 460 , x + 48 , 479 ) ;
}
}
}
#pragma
page()
/****************************************************************
****
*
***
short check_function( void )
*
**
*
*
ファンクション・キー 入力チェック処理
*
*
*
*
*
*
Return Value
*
*
TRUE : 観測継続
*
*
FALSE : 観測終了
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.19,1998
**
*
Revised Date Mar.10,1998
***
*
****
****************************************************************/
short
check_function( void )
{
time_t
short
s_time , c_time ;
c , key , ret = TRUE , f = FALSE
time( &s_time )
; ;
;
key = check_keybrd()
;
//
キー・ボード 入力チェック
switch ( key )
{
case KEY_F1 :
//
平均風速/風向/温度画面
if ( display_flag != DISP_MWT )
{
//
平均 風速/風向/温度 演算結果画面
display_top = 0 ;
draw_mean_wt() ;
//平均風速/風向/温度画面 タイトル 描画処理 <GP_MEAS.C>
f = TRUE ;
}
break ;
case KEY_F2 :
//
平均成分風速画面
if ( display_flag != DISP_MVW )
{
//
平均 成分風速 演算結果画面
display_top = 0 ;
draw_mean_vw() ;
f = TRUE
}
break
;
;
case KEY_F3 :
//
標準偏差
if ( display_flag != DISP_SIG )
{
//
標準偏差 演算結果画面
display_top = 0 ;
draw_mean_sigma() ;
f = TRUE
;
}
break
;
case KEY_F4 :
//
乱流強度
if ( display_flag != DISP_SSW )
{
//
乱流強度 演算結果画面
display_top = 0 ;
draw_mean_ssw() ;
f = TRUE
}
break
;
;
case KEY_F5 :
//
瞬間風速/風向/温度画面
if ( display_flag != DISP_IWT && sampling_rec > 0.1 )
{
//
瞬間 風速/風向/温度 演算結果画面
display_top = 0 ;
draw_instant_wt() ;
}
break ;
case KEY_F6 :
//
瞬間成分風速画面
if ( display_flag != DISP_IVW && sampling_rec > 0.1 )
{
//
瞬間 成分風速
display_top = 0 ;
draw_instant_vw() ;
}
break ;
case KEY_F9 :
set_file_date( 0 )
break ;
//
; //
平均値 収録期間
平均値 収録期間 設定
case KEY_F10 :
set_file_date( 1 )
break ;
//
; //
瞬間値 収録期間
瞬間値 収録期間 設定
case KEY_F12 :
//
終了
_settextcolor( GBRIGHTWHITE )
_settextposition( 24 , 3 ) ;
_outtext( EXIT_TITLE ) ;
while ( FOREVER )
{
c = check_keybrd()
;
; //
キー・ボード 入力チェック
if ( c == 'Y' ¦¦ c == 'y' ¦¦ c == 'ン' )
{
ret = FALSE ;
break ;
}
else if ( c == 'N' ¦¦ c == 'n' ¦¦ c == 'ミ' )
{
_settextposition( 24 , 3 ) ;
_outtext( "
" ) ;
break ;
}
time( &c_time )
;
if ( c_time - s_time >= sampling_stime )
{
measure_second() ;
s_time = c_time
//
1 秒観測
;
}
receive_da600()
}
}
break
;
default :
break
;
;
//
DA-600 シリアル・データ 受信 <GP_COMBD.C>
if ( f )
{
scdata_disp () ;
//平均値データ 表示 <GP_MDSP.C>
}
return( ret )
;
}
#pragma
page()
/****************************************************************
****
*
***
short check_keybrd( void )
*
**
*
*
キー・ボード 入力チェック処理
*
*
*
*
*
*
Return Value
*
*
0
: 入力なし
*
*
1 ∼ 12 : F1 ∼ F12
*
*
13
: Page Up
*
*
14
: Page Down
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.19,1998
**
*
Revised Date Mar.12,1998
***
*
****
****************************************************************/
short
check_keybrd( void )
{
FUNC_FORM *btn
WORD
short
;
scan , asc , code , shift
ret , fkey = 1 ;
;
if ( _bios_keybrd( _NKEYBRD_READY ) )
{
code = _bios_keybrd( _NKEYBRD_READ ) ;
shift = _bios_keybrd( _NKEYBRD_SHIFTSTATUS )
scan = code >> 8 ;
asc = code & 0x00ff
//
//
;
;
_settextposition( 16 , 1 ) ;
printf( "S=%2x A=%2x" , scan , asc )
;
if ( shift & ( SCAN_LSFT ¦ SCAN_RSFT ) )
{
switch ( scan )
{
case SCAN_SF1 :
//
ret = KEY_SF1 ;
break ;
case SCAN_SF2 :
//
ret = KEY_SF2
break ;
;
case SCAN_SF3 :
//
ret = KEY_SF3
break ;
;
case SCAN_SF4 :
//
ret = KEY_SF4
//
Shiftキー ?
Shift + F1 選択
Shift + F2 選択
Shift + F3 選択
Shift + F4 選択
;
break
;
case SCAN_SF5 :
//
ret = KEY_SF5
break ;
;
Shift + F5 選択
case SCAN_SF6 :
//
ret = KEY_SF6
break ;
;
case SCAN_SF7 :
//
ret = KEY_SF7
break ;
;
case SCAN_SF8 :
//
ret = KEY_SF8
break ;
;
case SCAN_SF9 :
//
ret = KEY_SF9
break ;
;
Shift + F6 選択
Shift + F7 選択
Shift + F8 選択
Shift + F9 選択
case SCAN_SF10 :
//
ret = KEY_SF10
break ;
;
Shift + F10 選択
case SCAN_SF11 :
//
ret = KEY_SF11
break ;
;
case SCAN_SF12 :
//
ret = KEY_SF12
break ;
;
Shift + F11 選択
Shift + F12 選択
default :
ret = ( short )asc & 0x00ff
break ;
}
}
else
{
switch ( scan )
{
case SCAN_F1 :
//
ret = KEY_F1 ;
break ;
F1 選択
case SCAN_F2 :
//
ret = KEY_F2 ;
break ;
F2 選択
case SCAN_F3 :
//
ret = KEY_F3 ;
break ;
F3 選択
case SCAN_F4 :
//
ret = KEY_F4 ;
break ;
F4 選択
case SCAN_F5 :
//
ret = KEY_F5 ;
break ;
F5 選択
case SCAN_F6 :
//
ret = KEY_F6 ;
break ;
F6 選択
case SCAN_F7 :
//
ret = KEY_F7 ;
break ;
F7 選択
case SCAN_F8 :
//
ret = KEY_F8 ;
break ;
F8 選択
;
case SCAN_F9 :
//
ret = KEY_F9 ;
break ;
F9 選択
case SCAN_F10 :
//
ret = KEY_F10
break ;
;
case SCAN_F11 :
//
ret = KEY_F11
break ;
;
case SCAN_F12 :
//
ret = KEY_F12
break ;
;
case SCAN_ENT :
//
case SCAN_NENT :
//
ret = KEY_ENT
break ;
F10 選択
F11 中止
F12 終了
Enter
Enter
;
case SCAN_PUP :
//
Page Up
if ( asc == ASC_FUNC ¦¦ asc == ASC_NULL )
{
ret = KEY_PUP ;
}
else
{
ret = ( short )asc & 0x00ff ;
}
break ;
case SCAN_PDN :
//
Page Down
if ( asc == ASC_FUNC ¦¦ asc == ASC_NULL )
{
ret = KEY_PDOWN ;
}
else
{
ret = ( short )asc & 0x00ff ;
}
break ;
case SCAN_UP :
//
↑
if ( asc == ASC_FUNC ¦¦ asc == ASC_NULL )
{
ret = KEY_UP ;
}
else
{
ret = ( short )asc & 0x00ff ;
}
break ;
case SCAN_DOWN :
//
↓
if ( asc == ASC_FUNC ¦¦ asc == ASC_NULL )
{
ret = KEY_DOWN ;
}
else
{
ret = ( short )asc & 0x00ff ;
}
break ;
case SCAN_LEFT :
//
←
if ( asc == ASC_FUNC ¦¦ asc == ASC_NULL )
{
ret = KEY_LEFT ;
}
else
{
ret = ( short )asc & 0x00ff ;
}
break ;
case SCAN_RIGHT :
//
→
if ( asc == ASC_FUNC ¦¦ asc == ASC_NULL )
{
ret = KEY_RIGHT ;
}
else
{
ret = ( short )asc & 0x00ff ;
}
break ;
case SCAN_BS :
//
ret = KEY_BAK
break ;
Back Space
;
case SCAN_DEL :
//
Delete or .
if ( asc == ASC_FUNC )
//
{
ret = KEY_BAK ;
}
else if ( asc == PERIOD )
{
ret = PERIOD ;
}
break ;
default :
ret = ( short )asc & 0x00ff
break ;
Delete
//
;
}
}
while ( _bios_keybrd( _NKEYBRD_READY ) )
{
code = _bios_keybrd( _NKEYBRD_READ ) ;
shift = _bios_keybrd( _NKEYBRD_SHIFTSTATUS )
}
;
}
else
{
ret = KEY_NONE
;
shift = _bios_keybrd( _NKEYBRD_SHIFTSTATUS )
;
if ( system_flag == SYS_PLOT && print_flag == 1 )
{
if ( shift & ( SCAN_LSFT ¦ SCAN_RSFT ) )
{
fkey = 2 ;
btn = fnc_pskey ;
}
else
{
fkey = 1 ;
btn = fnc_pmkey ;
}
}
}
if ( fkey != func_key )
{
draw_function( btn , TRUE )
func_key = fkey
}
return( ret )
}
_
;
;
;
//
Shiftキー ?
.
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " データ演算装置 メニュー処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
データ演算装置 観測データ表示処理
*
*
*
*
*
*
Module Name
: GP_MDSP.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Jan. 16, 1998
*
*
*
*
Revised Date : Jan. 19, 1998
*
*
*
*
Auther
: N. Kamio
*
***
*
****
*************************************************************************/
/*********************************************************************
***
*
**
Ver 1.00
*
*
新規作成
Jan. 16, 1998
**
*
***
*
****
*********************************************************************
****
*/
#include
#include
#include
"GP_720.H"
"GP_DATA.H"
"GP_MENU.H"
char
sc_data[81] ;
#pragma
page()
/****************************************************************
***
void
scdata_disp( void )
*
*
GP-720 型 データ演算装置 メニューメイン処理
*
****************************************************************/
void scdata_disp ( void )
{
if ( display_top == 0 && disp_ptrm > 1 ) {
scdata_back_disp () ;
}
_settextwindow( 8 , 1 , 23 , 80 )
;
//ウインドウ座標 設定
if ( display_top >= 15 ) {
_scrolltextwindow( _GSCROLLUP ) ;
_settextposition ( display_top , 1 ) ;
}
//1 行スクロール
else {
_settextposition ( display_top+1 , 1 ) ;
display_top++ ;
//
}
_settextposition ( display_top+1 , 1 ) ;
_settextcolor ( GBRIGHTWHITE ) ;
sc_data_out ( disp_ptrm-1 ) ;
_settextwindow( 1 , 1 , 25 , 80 ) ;
//ウインドウ座標 設定
}
#pragma
page()
/****************************************************************
****
*
***
void
scdata_back_disp( void )
*
**
*
**
*
GP-720 型 データ演算装置 メニューメイン処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void scdata_back_disp ( void )
{
short
n ;
_settextwindow( 8 , 1 , 23 , 80 )
_settextcolor ( GBRIGHTWHITE ) ;
;
//
ウインドウ座標 設定
if ( disp_ptrm < 15 ) {
for ( n = 0 ; n < (disp_ptrm-1) ; n++ ) {
_settextposition ( 1+n , 1 ) ;
sc_data_out ( n ) ;
display_top ++ ;
}
} else {
for ( n = 0 ; n < 14 ; n++ ) {
_settextposition ( 1+n , 1 ) ;
sc_data_out ( disp_ptrm-14-1+n ) ;
display_top = 14 ;
}
}
_settextwindow( 1 , 1 , 25 , 80 )
;
//
ウインドウ座標 設定
}
#pragma
page()
/****************************************************************
****
*
***
void
sc_data_out( short )
*
**
*
*
GP-720 型 データ演算装置 表示データ作成処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void sc_data_out ( short no )
{
switch ( display_flag ) {
case DISP_MWT :
/* 平均 風速/風向/温度 */
mwt_data_out ( no ) ;
break ;
case DISP_MVW :
/* 平均 成分風速 */
mvw_data_out ( no ) ;
break ;
case DISP_SIG :
/* 標準偏差 */
sig_data_out ( no ) ;
break ;
case DISP_SSW :
/* 乱流強度 */
ssw_data_out ( no ) ;
break ;
case DISP_IWT :
/* 瞬間 風速/風向/温度 */
iwt_data_out ( no ) ;
break ;
case DISP_IVW :
/* 瞬間 成分風速 */
ivw_data_out ( no ) ;
break ;
default :
break ;
}
}
#pragma
page()
/****************************************************************
****
*
***
void
mwt_data_out( short )
*
**
*
*
GP-720 型 データ演算装置 平風温表示処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void mwt_data_out ( short no )
{
char
sp1[2] , sp2[3] ;
sp1[0] = sp2[0] = sp2[1] = ' ' ;
sp1[1] = sp2[2] = 0x00 ;
_outtext ( data_dispm[no].time ) ;
_outtext ( sp1 ) ;
/* 時間 */
_outtext
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
(
data_dispm[no].da.u ) ;
sp1 ) ;
data_dispm[no].db.u ) ;
sp1 ) ;
data_dispm[no].dc.u ) ;
sp2 ) ;
/* A : 水平風速 */
/* スペース */
/* B : 水平風速 */
/* スペース */
/* C : 水平風速 */
/* スペース */
_outtext
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
(
data_dispm[no].da.d ) ;
sp1 ) ;
data_dispm[no].db.d ) ;
sp1 ) ;
data_dispm[no].dc.d ) ;
sp2 ) ;
/* A : 水平風向 */
/* スペース */
/* B : 水平風向 */
/* スペース */
/* C : 水平風向 */
/* スペース */
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
data_dispm[no].da.t ) ;
sp1 ) ;
data_dispm[no].db.t ) ;
sp1 ) ;
data_dispm[no].dc.t ) ;
/* A : 平均温度 */
/* スペース */
/* B : 平均温度 */
/* スペース */
/* C : 平均温度 */
/* スペース */
}
#pragma
page()
/****************************************************************
****
*
***
void
mvw_data_out( short )
*
**
*
*
GP-720 型 データ演算装置 平均成分風速表示処理 *
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void mvw_data_out ( short no )
{
char
sp[2] ;
sp[0] = ' ' ;
sp[1] = 0x00 ;
_outtext ( data_dispm[no].time ) ;
_outtext ( sp ) ;
/* 時間 */
_outtext
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
(
data_dispm[no].da.x ) ;
sp ) ;
data_dispm[no].db.x ) ;
sp ) ;
data_dispm[no].dc.x ) ;
sp ) ;
/* A : X成分風速 */
/* スペース */
/* B : X成分風速 */
/* スペース */
/* C : X成分風速 */
/* スペース */
_outtext
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
(
data_dispm[no].da.y ) ;
sp ) ;
data_dispm[no].db.y ) ;
sp ) ;
data_dispm[no].dc.y ) ;
sp ) ;
/* A : Y成分風速 */
/* スペース */
/* B : Y成分風速 */
/* スペース */
/* C : Y成分風速 */
/* スペース */
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
data_dispm[no].da.w ) ;
sp ) ;
data_dispm[no].db.w ) ;
sp ) ;
data_dispm[no].dc.w ) ;
/* A : 垂直風速 */
/* スペース */
/* B : 垂直風速 */
/* スペース */
/* C : 垂直風速 */
/* スペース */
}
#pragma
page()
/****************************************************************
****
*
***
void
sig_data_out( short )
*
**
*
*
GP-720 型 データ演算装置 標準偏差表示処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void sig_data_out ( short no )
{
char
sp[2] ;
sp[0] = ' ' ;
sp[1] = 0x00 ;
_outtext ( data_dispm[no].time ) ;
_outtext ( sp ) ;
/* 時間 */
_outtext
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
(
data_dispm[no].da.su ) ;
sp ) ;
data_dispm[no].db.su ) ;
sp ) ;
data_dispm[no].dc.su ) ;
sp ) ;
/* A : 水平風速 標準偏差 */
/* スペース */
/* B : 水平風速 標準偏差 */
/* スペース */
/* C : 水平風速 標準偏差 */
/* スペース */
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
data_dispm[no].da.sd ) ;
sp ) ;
data_dispm[no].db.sd ) ;
sp ) ;
data_dispm[no].dc.sd ) ;
/* A : 水平風向 標準偏差 */
/* スペース */
/* B : 水平風向 標準偏差 */
/* スペース */
/* C : 水平風向 標準偏差 */
/* スペース */
_outtext ( sp ) ;
/* スペース */
_outtext
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
(
data_dispm[no].da.sw ) ;
sp ) ;
data_dispm[no].db.sw ) ;
sp ) ;
data_dispm[no].dc.sw ) ;
sp ) ;
/* A : 垂直風速 標準偏差 */
/* スペース */
/* B : 垂直風速 標準偏差 */
/* スペース */
/* C : 垂直風速 標準偏差 */
/* スペース */
_outtext
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
(
data_dispm[no].da.sx ) ;
sp ) ;
data_dispm[no].db.sx ) ;
sp ) ;
data_dispm[no].dc.sx ) ;
sp ) ;
/* A : X成分風速 標準偏差 */
/* スペース */
/* B : X成分風速 標準偏差 */
/* スペース */
/* C : X成分風速 標準偏差 */
/* スペース */
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
data_dispm[no].da.sy ) ;
sp ) ;
data_dispm[no].db.sy ) ;
sp ) ;
data_dispm[no].dc.sy ) ;
/* A : Y成分風速 標準偏差 */
/* スペース */
/* B : Y成分風速 標準偏差 標準偏差 */
/* スペース */
/* C : Y成分風速 標準偏差 */
}
#pragma
page()
/****************************************************************
****
*
***
void
ssw_data_out( short )
*
**
*
*
GP-720 型 データ演算装置 乱流強度表示処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void ssw_data_out ( short no )
{
char
sp1[2] , sp2[3] ;
sp1[0] = sp2[0] = sp2[1] = ' ' ;
sp1[1] = sp2[2] = 0x00 ;
_outtext ( data_dispm[no].time ) ;
_outtext ( sp1 ) ;
/* 時間 */
/* スペース */
_outtext
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
(
data_dispm[no].da.suu ) ;
sp1 ) ;
data_dispm[no].db.suu ) ;
sp1 ) ;
data_dispm[no].dc.suu ) ;
sp2 ) ;
/* A : 水平風速 乱流強度 */
/* スペース */
/* B : 水平風速 乱流強度 */
/* スペース */
/* C : 水平風速 乱流強度 */
/* スペース */
_outtext
_outtext
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
(
(
sp1 ) ;
data_dispm[no].da.sxx ) ;
sp2 ) ;
data_dispm[no].db.sxx ) ;
sp2 ) ;
data_dispm[no].dc.sxx ) ;
sp2 ) ;
/* スペース */
/* A : X成分風速 乱流強度 */
/* スペース */
/* B : X成分風速 乱流強度 */
/* スペース */
/* C : X成分風速 乱流強度 */
/* スペース */
_outtext
_outtext
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
(
(
sp1 ) ;
data_dispm[no].da.syy ) ;
sp2 ) ;
data_dispm[no].db.syy ) ;
sp2 ) ;
data_dispm[no].dc.syy ) ;
sp2 ) ;
/* スペース */
/* A : Y成分風速 乱流強度 */
/* スペース */
/* B : Y成分風速 乱流強度 */
/* スペース */
/* C : Y成分風速 乱流強度 */
/* スペース */
_outtext ( sp1 ) ;
/* スペース */
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
data_dispm[no].da.sww ) ;
sp2 ) ;
data_dispm[no].db.sww ) ;
sp2 ) ;
data_dispm[no].dc.sww ) ;
/* A : 垂直風速 乱流強度 */
/* スペース */
/* B : 垂直風速 乱流強度 */
/* スペース */
/* C : 垂直風速 乱流強度 */
}
#pragma
page()
/****************************************************************
****
*
***
void
iwt_data_out( short )
*
**
*
*
GP-720 型 データ演算装置 瞬間風速と温度表示処理*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void iwt_data_out ( short no )
{
char
sp1[2] , sp2[3] ;
sp1[0] = sp2[0] = sp2[1] = ' ' ;
sp1[1] = sp2[2] = 0x00 ;
_outtext ( data_disps.time ) ;
_outtext ( sp1 ) ;
/* 時間 */
_outtext
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
(
data_disps.da.u ) ;
sp1 ) ;
data_disps.db.u ) ;
sp1 ) ;
data_disps.dc.u ) ;
sp2 ) ;
/* A : 水平風速 */
_outtext
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
(
data_disps.da.v ) ;
sp1 ) ;
data_disps.db.v ) ;
sp1 ) ;
data_disps.dc.v ) ;
sp2 ) ;
/* A : 風速 */
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
data_disps.da.t ) ;
sp1 ) ;
data_disps.db.t ) ;
sp1 ) ;
data_disps.dc.t ) ;
/* A : Ts 温度 */
/* スペース */
/* スペース */
/* B : 水平風速 */
/* スペース */
/* C : 水平風速 */
/* スペース */
/* スペース */
/* B : 風速 */
/* スペース */
/* C : 風速 */
/* スペース */
/* スペース */
/* B : Ts 温度 */
/* スペース */
/* C : Ts 温度 */
}
#pragma
page()
/****************************************************************
****
*
***
void
ivw_data_out( short )
*
**
*
*
GP-720 型 データ演算装置 瞬間成分風速表示処理 *
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void ivw_data_out ( short no )
{
char
sp[2] ;
sp[0] = ' ' ;
sp[1] = 0x00 ;
_outtext ( data_disps.time ) ;
_outtext ( sp ) ;
/* 時間 */
_outtext
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
(
data_disps.da.x ) ;
sp ) ;
data_disps.db.x ) ;
sp ) ;
data_disps.dc.x ) ;
sp ) ;
/* A : X成分風速 */
_outtext
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
(
data_disps.da.y ) ;
sp ) ;
data_disps.db.y ) ;
sp ) ;
data_disps.dc.y ) ;
sp ) ;
/* A : Y成分風速 */
_outtext
_outtext
_outtext
_outtext
_outtext
(
(
(
(
(
data_disps.da.w ) ;
sp ) ;
data_disps.db.w ) ;
sp ) ;
data_disps.dc.w ) ;
/* A : 垂直風速 */
/* スペース */
/* スペース */
/* B : X成分風速 */
/* スペース */
/* C : X成分風速 */
/* スペース */
/* スペース */
/* B : Y成分風速 */
/* スペース */
/* C : Y成分風速 */
/* スペース */
/* スペース */
/* B : 垂直風速 */
/* スペース */
/* C : 垂直風速 */
}
_
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " 観測データ 表示処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
観測データ 表示処理
*
*
*
*
*
*
Module Name
: GP_MEAS.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Feb. 2, 1998
*
*
*
*
Revised Date : Mar. 10, 1998
*
*
*
*
Auther
: S. Yamashita
**
*
***
*
****
*************************************************************************/
/*********************************************************************
****
*
***
*
**
Ver 1.00
*
*
新規作成
Feb. 2, 1998
*
*
Windows95 用 ハード・コピー処理 追加
Mar. 3, 1998
**
*
***
*
****
*********************************************************************/
#include
#include
"GP_720.H"
"GP_DATA.H"
#pragma
page()
/****************************************
***
*
**
画面 定数
**
*
***
****************************************/
/*-----*
#define
#define
#define
#define
観測画面 タイトル
TITLE_SAMPL
TITLE_MEAN
TITLE_MTIME
TITLE_ITIME
/*-----*
#define
#define
#define
#define
平均風速/風向/温度画面
*-----*/
MWT_T1
"---------平均演算結果
----------"
MWT_T2
"---水平風速--- --水平風向- -----温
度----"
MWT_T3
"(m/s)
(deg)
(℃)"
MWT_T4
"時分 A
B
C
A B C
A
B
C"
/*-----*
#define
#define
#define
平均成分風速画面
MVW_T1
MVW_T2
MVW_T3
/*-----*
#define
#define
#define
#define
標準偏差画面
SIG_T1
SIG_T2
SIG_T3
SIG_T4
*-----*/
"---------標準偏差演算結果
----------"
"---水平風速--- -- 水平風向 -- -- 垂直風速 -- --- X成分 --- --- Y成分 ---"
"(m/s)
(deg)
(m/s)
(m/s)
(m/s)"
"時分 A
B
C
A
B
C
A
B
C
A
B
C
A
B
C"
/*-----*
#define
#define
#define
乱流強度画面
SSW_T1
SSW_T2
SSW_T3
*-----*/
"---------乱流強度演算結果
"---水平風速--- ----- X風速 ---"時分 A
B
C
A
B
/*-----*
#define
#define
#define
#define
瞬間風速/風向/温度画面
*-----*/
IWT_T1
"---------瞬間値結果
----------"
IWT_T2
"---水平風速--- --- 風 速 --- ----- 温 度 ----"
IWT_T3
"(m/s)
(m/s)
(℃)"
IWT_T4
"時分秒 A
B
C
A
B
C
A
B
/*-----*
#define
#define
#define
瞬間成分風速画面
IVW_T1
IVW_T2
IVW_T3
*-----*/
"---- X風速 ---- ---- Y風速 ---- ---- W風速 ----"
"(m/s)
(m/s)
(m/s)"
"時分秒
A
B
C
A
B
C
A
B
#define
CLR_T
"
FUNC_FORM fnc_key1[9] =
*-----*/
"サンプリング間隔=
"平均時間= 分"
"平均値収録期間:
"瞬間値収録期間:
.
秒"
/
/
/
/
時
時
∼
∼
/
/
/
/
時"
時"
*-----*/
"----X成分風速--- ----Y成分風速--- ----W成分風速---"
"(m/s)
(m/s)
(m/s)"
"時分
A
B
C
A
B
C
A
B
C"
//
{
----------"
----- Y風速 ---C
A
B
----- W風速 ----"
C
A
B
C"
C"
C"
"
ファンクション・キ-情報
{ 1 ,
{ 2 ,
{ 3 ,
{ 4 ,
{ 5 ,
{ 6 ,
{ 9 ,
{ 10 ,
{ 12 ,
}
FUNC_FORM fnc_key2[7] =
,
,
,
,
,
,
,
,
,
"平風温"
"平成風"
"偏 差"
"乱流強"
"瞬風温"
"瞬成風"
"平設定"
"瞬設定"
"測定終"
} ,
} ,
} ,
} ,
} ,
} ,
} ,
} ,
} //
//
//
//
//
//
//
//
//
F12
F 1
F 2
F 3
F 4
F 5
F 6
F 9
F10
} ,
} ,
} ,
} ,
} ,
} ,
} //
//
//
//
//
//
//
F12
F 1
F 2
F 3
F 4
F 9
F10
;
//
{
ファンクション・キ-情報
{ 1 ,
{ 2 ,
{ 3 ,
{ 4 ,
{ 9 ,
{ 10 ,
{ 12 ,
}
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
,
,
,
,
,
,
,
"平風温"
"平成風"
"偏 差"
"乱流強"
"平設定"
"瞬設定"
"測定終"
;
#pragma
page()
/****************************************************************
****
*
***
void draw_title( void )
*
**
*
*
観測画面 タイトル 描画処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Feb. 2,1998
**
*
Revised Date Mar.10,1998
***
*
****
****************************************************************/
void
draw_title( void )
{
char
FUNC_FORM *ptr
str[26] , sdt[6]
_clearscreen( _GCLEARSCREEN )
/*-----*
;
//
サンプリング間隔 表示
*-----*/
sprintf( sdt , "%5.2f" , sampling_rec )
strcpy( str , TITLE_SAMPL ) ;
memcpy( &str[18] , sdt , 5 ) ;
_settextcolor( GCYAN ) ;
_settextposition( 1 , 28 )
_outtext( str ) ;
/*-----*
;
;
disp_save_date( 3 )
;
ptr = sampling_rec > 0.1 ?
draw_function( ptr , TRUE )
;
;
サンプリング間隔 表示
*-----*/
sprintf( sdt , "%2d" , sampling_mean )
strcpy( str , TITLE_MEAN ) ;
memcpy( &str[10] , sdt , 2 ) ;
_settextposition( 1 , 56 )
_outtext( str ) ;
画面消去
;
;
//平均値/瞬間値 収録期間 表示 < GP_MEAS.C >
fnc_key1 : fnc_key2
;
;
}
#pragma
page()
/****************************************************************
****
*
***
void draw_mean_wt( void )
*
**
*
*
平均風速/風向/温度画面 タイトル 描画処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Feb. 2,1998
**
*
Revised Date Feb. 3,1998
***
*
****
****************************************************************/
void
draw_mean_wt( void )
{
_settextwindow( 4 , 1 , 24 , 80 ) ;
_scrolltextwindow( 21 ) ;
//
_settextwindow( 1 , 1 , 25 , 80 ) ;
//
ウインドウ座標 設定
表示データ クリア
//
ウインドウ座標 設定
_settextcolor( GGREEN ) ;
_settextposition( 4 , 8 ) ;
_outtext( CLR_T ) ;
_settextposition( 4 , 8 ) ;
_outtext( MWT_T1 ) ;
_settextcolor( GLIGHTYELLOW )
_settextposition( 5 , 8 ) ;
_outtext( CLR_T ) ;
_settextposition( 5 , 6 ) ;
_outtext( MWT_T2 ) ;
_settextposition( 6 , 11 )
_outtext( CLR_T ) ;
_settextposition( 6 , 11 )
_outtext( MWT_T3 ) ;
;
;
_settextcolor( GBRIGHTWHITE )
_settextposition( 7 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 7 , 1) ;
_outtext( MWT_T4 ) ;
display_flag = DISP_MWT
display_top = 0 ;
;
;
;
//平均 風速/風向/温度 演算結果画面
/* データ列数 */
}
#pragma
page()
/****************************************************************
****
*
***
void draw_mean_vw( void )
*
**
*
*
平均成分風速画面 タイトル 描画処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Feb. 2,1998
**
*
Revised Date Feb. 3,1998
***
*
****
****************************************************************/
void
draw_mean_vw( void )
{
_settextwindow( 4 , 1 , 24 , 80 ) ;
_scrolltextwindow( 21 ) ;
//
_settextwindow( 1 , 1 , 25 , 80 ) ;
_settextcolor( GGREEN ) ;
_settextposition( 4 , 12 )
_outtext( CLR_T ) ;
_settextposition( 4 , 12 )
_outtext( MWT_T1 ) ;
;
;
//
ウインドウ座標 設定
表示データ クリア
//
ウインドウ座標 設定
_settextcolor( GLIGHTYELLOW )
_settextposition( 5 , 6 ) ;
_outtext( CLR_T ) ;
_settextposition( 5 , 6 ) ;
_outtext( MVW_T1 ) ;
_settextposition( 6 , 13 )
_outtext( CLR_T ) ;
_settextposition( 6 , 13 )
_outtext( MVW_T2 ) ;
;
;
_settextcolor( GBRIGHTWHITE )
_settextposition( 7 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 7 , 1) ;
_outtext( MVW_T3 ) ;
display_flag = DISP_MVW
display_top = 0 ;
;
;
;
//
平均 成分風速 演算結果画面
/* データ列数 */
}
#pragma
page()
/****************************************************************
****
*
***
void draw_mean_sigma( void )
*
**
*
*
標準偏差画面 タイトル 描画処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Feb. 2,1998
**
*
Revised Date Feb. 3,1998
***
*
****
****************************************************************/
void
draw_mean_sigma( void )
{
_settextwindow( 4 , 1 , 24 , 80 ) ;
_scrolltextwindow( 21 ) ;
//
_settextwindow( 1 , 1 , 25 , 80 ) ;
_settextcolor( GGREEN ) ;
_settextposition( 4 , 20 )
_outtext( CLR_T ) ;
_settextposition( 4 , 20 )
_outtext( SIG_T1 ) ;
;
;
_settextcolor( GLIGHTYELLOW )
_settextposition( 5 , 6 ) ;
_outtext( CLR_T ) ;
_settextposition( 5 , 6 ) ;
_outtext( SIG_T2 ) ;
_settextposition( 6 , 11 )
_outtext( CLR_T ) ;
_settextposition( 6 , 11 )
_outtext( SIG_T3 ) ;
;
;
;
;
_settextcolor( GBRIGHTWHITE )
_settextposition( 7 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 7 , 1) ;
_outtext( SIG_T4 ) ;
display_flag = DISP_SIG
display_top = 0 ;
//
ウインドウ座標 設定
表示データ クリア
//
ウインドウ座標 設定
;
//
標準偏差 演算結果画面
/* データ列数 */
}
#pragma
page()
/****************************************************************
****
*
***
void draw_mean_ssw( void )
*
**
*
*
乱流強度画面 タイトル 描画処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Feb. 2,1998
**
*
Revised Date Feb. 3,1998
***
*
****
****************************************************************/
void
draw_mean_ssw( void )
{
_settextwindow( 4 , 1 , 24 , 80 ) ;
_scrolltextwindow( 21 ) ;
//
_settextwindow( 1 , 1 , 25 , 80 ) ;
_settextcolor( GGREEN ) ;
_settextposition( 4 , 18 )
_outtext( CLR_T ) ;
_settextposition( 4 , 18 )
_outtext( SSW_T1 ) ;
;
;
_settextcolor( GLIGHTYELLOW )
_settextposition( 5 , 6 ) ;
_outtext( CLR_T ) ;
_settextposition( 5 , 6 ) ;
_outtext( SSW_T2 ) ;
;
_settextcolor( GBRIGHTWHITE )
_settextposition( 7 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 7 , 1) ;
_outtext( SSW_T3 ) ;
;
display_flag = DISP_SSW
display_top = 0 ;
//
ウインドウ座標 設定
表示データ クリア
//
ウインドウ座標 設定
;
//
乱流強度 演算結果画面
/* データ列数 */
}
#pragma
page()
/****************************************************************
****
*
***
void draw_instant_wt( void )
*
**
*
*
瞬間風速/風向/温度画面 タイトル 描画処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Feb. 2,1998
**
*
Revised Date Feb. 3,1998
***
*
****
****************************************************************/
void
draw_instant_wt( void )
{
_settextwindow( 4 , 1 , 24 , 80 ) ;
_scrolltextwindow( 21 ) ;
//
_settextwindow( 1 , 1 , 25 , 80 ) ;
_settextcolor( GGREEN ) ;
_settextposition( 4 , 13 )
_outtext( CLR_T ) ;
_settextposition( 4 , 13 )
_outtext( IWT_T1 ) ;
;
;
_settextcolor( GLIGHTYELLOW )
_settextposition( 5 , 8 ) ;
_outtext( CLR_T ) ;
_settextposition( 5 , 8 ) ;
_outtext( IWT_T2 ) ;
;
//
ウインドウ座標 設定
表示データ クリア
//
ウインドウ座標 設定
_settextposition( 6 , 13 )
_outtext( CLR_T ) ;
_settextposition( 6 , 13 )
_outtext( IWT_T3 ) ;
;
;
_settextcolor( GBRIGHTWHITE )
_settextposition( 7 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 7 , 1) ;
_outtext( IWT_T4 ) ;
display_flag = DISP_IWT
display_top = 0 ;
;
;
//
瞬間 風速/風向/温度 演算結果画面
/* データ列数 */
}
#pragma
page()
/****************************************************************
****
*
***
void draw_instant_vw( void )
*
**
*
*
瞬間成分風速画面 タイトル 描画処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Feb. 2,1998
**
*
Revised Date Feb. 3,1998
***
*
****
****************************************************************/
void
draw_instant_vw( void )
{
_settextwindow( 4 , 1 , 24 , 80 ) ;
_scrolltextwindow( 21 ) ;
//
_settextwindow( 1 , 1 , 25 , 80 ) ;
_settextcolor( GGREEN ) ;
_settextposition( 4 , 13 )
_outtext( CLR_T ) ;
_settextposition( 4 , 13 )
_outtext( IWT_T1 ) ;
;
;
_settextcolor( GLIGHTYELLOW )
_settextposition( 5 , 8 ) ;
_outtext( CLR_T ) ;
_settextposition( 5 , 8 ) ;
_outtext( IVW_T1 ) ;
_settextposition( 6 , 15 )
_outtext( CLR_T ) ;
_settextposition( 6 , 15 )
_outtext( IVW_T2 ) ;
;
;
;
;
_settextcolor( GBRIGHTWHITE )
_settextposition( 7 , 1 ) ;
_outtext( CLR_T ) ;
_settextposition( 7 , 1) ;
_outtext( IVW_T3 ) ;
display_flag = DISP_IVW
display_top = 0 ;
//
ウインドウ座標 設定
表示データ クリア
//
ウインドウ座標 設定
;
//
瞬間 成分風速
/* データ列数 */
}
#pragma
page()
/****************************************************************
***
void disp_save_date( short mode )
*
*
平均値/瞬間値 収録期間 表示処理
*
*
Parameter
*
*
short mode : 表示モード
*
*
1 : 平均値 収録期間 表示
*
*
2 : 瞬間値 収録期間 表示
*
*
3 : 平均値/瞬間値 収録期間 表示
*
****************************************************************/
void
disp_save_date( short mode )
{
short
c ;
char
str[55] ;
if ( ( mode & BIT_0 ) != 0 )
{
strcpy( str , TITLE_MTIME )
;
memcpy( &str[16] , period_cdata.start.date , 16 )
memcpy( &str[38] , period_cdata.end.date
, 16 )
strcpy( ( char
strcpy( ( char
;
;
* )file_sys.csdt , period_cdata.start.date ) ;
* )file_sys.cedt , period_cdata.end.date ) ;
c = period_cdata.flag ? GBRIGHTWHITE : GWHITE
_settextcolor( c ) ;
_settextposition( 2 , 11 ) ;
_outtext( str ) ;
;
}
if ( ( mode & BIT_1 ) != 0 )
{
strcpy( str , TITLE_ITIME )
;
memcpy( &str[16] , period_sdata.start.date , 16 )
memcpy( &str[38] , period_sdata.end.date
, 16 )
strcpy( ( char
strcpy( ( char
;
;
* )file_sys.isdt , period_sdata.start.date ) ;
* )file_sys.iedt , period_sdata.end.date ) ;
c = period_sdata.flag ? GBRIGHTWHITE : GWHITE
_settextcolor( c ) ;
_settextposition( 3 , 11 ) ;
_outtext( str ) ;
;
}
}
_
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " データ演算装置 メニュー処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
データ演算装置 メニュー処理
*
*
*
*
*
*
Module Name
: GP_MENU.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Jan. 16, 1998
*
*
*
*
Revised Date : Jan. 19, 1998
*
*
*
*
Auther
: N. Kamio
*
***
*
****
*************************************************************************/
/*********************************************************************
***
*
**
Ver 1.00
*
*
新規作成
Jan. 16, 1998
**
*
***
*
****
*********************************************************************
****
*/
**
#include
#include
#include
"GP_720.H"
"GP_DATA.H"
"GP_MENU.H"
FUNC_FORM mf_key[2] = {
{ 1 , 0 , "" } ,
{ 12 , 0 , "" }
//
メニュー時ファンクション・キ-情報
} ;
FUNC_FORM kf_key[1] = {
{ 12
, 0 , "戻る" } //
観測メニュー時ファンクション・キ-情報
} ;
#pragma
page()
/****************************************************************
***
void
menu_main( void )
*
*
GP-720 型 データ演算装置 メニューメイン処理
*
****************************************************************/
void menu_main ( void )
{
//
int
//
//
crtdrv =
file_drv
file_drv
file_drv
//
crtdrv ;
_getdrive () ;
= ( char )'A' + ( char )crtdrv - ( char ) 1 ;
= 'D' ;
= 'A' ;
for ( ; ; ) {
//
if ( system_flag == SYS_MENU ) {
menu_select () ;
}
//
if ( system_flag == SYS_EXIT ¦¦ system_flag == SYS_MEASURE ) {
break ;
}
}
}
#pragma
page()
/****************************************************************
****
*
***
void
menu_select ( void )
*
**
*
*
GP-720 型 データ演算装置 メニュー選択処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void menu_select (void )
{
head_dsp () ;
draw_function( mf_key , TRUE ) ;
menu_data_dsp () ;
mmenu_key () ;
switch ( system_flag ) {
case SYS_MEASURE :
measure_menu () ;
break ;
/* プログラム装置名表示 */
/* メインメニュー表示 */
/* メインメニュー選択処理 */
/* 観測 */
case SYS_DISP :
disp_main () ;
system_flag = SYS_MENU ;
break ;
case SYS_DPRT :
dprt_main () ;
system_flag = SYS_MENU ;
break ;
case SYS_PPRT :
penplot_main() ;
system_flag = SYS_MENU ;
break ;
default :
break ;
/* 収録データ表示 */
/* 収録データ印字 */
/* プロッタ表示・印字 */
}
}
#pragma
page()
/****************************************************************
***
void
head_dsp ( void )
*
*
GP-720 型 データ演算装置 メニュー選択処理
*
****************************************************************/
void head_dsp ( void )
{
_clearscreen ( _GCLEARSCREEN ) ;
/* 画面消去 */
_settextcolor( GCYAN ) ;
_settextposition( 0 , 20 ) ;
_outtext( "風 向 風 速 デ ー タ 演 算 装 置" ) ;
//
_settextcolor( GBRIGHTWHITE ) ;
}
#pragma
page()
/****************************************************************
***
void
menu_data_dsp ( void )
*
*
GP-720 型 データ演算装置 メニューデータ表示処理
*
****************************************************************/
void menu_data_dsp ( void )
{
_settextcolor ( GBRIGHTWHITE ) ;
_settextposition( MENU_Y , MENU_X ) ;
_outtext( "1.観測" ) ;
_settextposition( MENU_Y+1 , MENU_X ) ;
_outtext( "2.収録データ表示" ) ;
_settextposition( MENU_Y+2 , MENU_X ) ;
_outtext( "3.収録データ印字" ) ;
_settextposition( MENU_Y+3 , MENU_X ) ;
_outtext( "4.プロッタ表示・印字" ) ;
_settextposition( MENU_Y+4 , MENU_X ) ;
_outtext( "5.終了" ) ;
_settextcolor ( GGREEN ) ;
_settextposition( MENU_Y+6 , MENU_X )
_outtext( "処理番号? " ) ;
;
}
#pragma
page()
/****************************************************************
****
*
***
void
kansoku_data_dsp ( void )
*
**
*
*
GP-720 型 データ演算装置 観測メニューデータ表示処理 *
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void measure_menu ( void )
{
short
n ;
head_dsp () ;
/* プログラム装置名表示 */
draw_function( kf_key , TRUE ) ;
menu_cnt = 0 ;
/* メニューカウンタ = 0 観測 */
for ( n = 0 ; n < 4 ; n++ ) {
if ( n == menu_cnt ) {
kansoku_data_dsp ( n , MENU_ON ) ;
/* 観測メニュー表示 */
} else {
kansoku_data_dsp ( n , MENU_OFF ) ;
/* 観測メニュー表示 */
}
}
n = kmenu_key () ;
if ( n == 1 ) {
system_flag = SYS_MENU ;
}
/* メインメニュー選択処理 */
}
#pragma
page()
/****************************************************************
****
*
***
void
kansoku_data_dsp ( short , short )
*
**
*
*
GP-720 型 データ演算装置 観測メニューデータ表示処理 *
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void kansoku_data_dsp ( short no , short col )
{
short
c ;
if ( col == MENU_OFF ) {
c = GBRIGHTWHITE ;
} else {
c = GLIGHTYELLOW ;
}
_settextcolor ( c ) ;
_settextposition( MENU_Y+no , MENU_X )
;
switch ( no ) {
case 0 :
case 1 :
case 2 :
case 3 :
/* 瞬間データファイル */
_outtext( "平均値データファイル(1:1日 2:1ヶ月)?" ) ;
break ;
/* 演算値データファイル */
_outtext( "瞬間値データファイル(1:1時間 2:1日 3:1ヶ月)?" )
break ;
/* 演算値平均時間 */
_outtext( "平気値平均化時間
(1:1分 2:10分)?" ) ;
break ;
/* サンプリング間隔 */
_outtext( "サンプリング間隔
(0.05∼10秒)?" ) ;
break ;
default :
break ;
}
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " データ演算装置 メニューキー入力処理" )
/*************************************************************************
****
*
;
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
データ演算装置 メニューキー入力処理
*
*
*
*
*
*
Module Name
: GP_MKEY.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Jan. 16, 1998
*
*
*
*
Revised Date : Jan. 19, 1998
*
*
*
*
Auther
: N. Kamio
*
***
*
****
*************************************************************************/
**
/*********************************************************************
***
*
**
Ver 1.00
*
*
新規作成
Jan. 16, 1998
**
*
***
*
****
*********************************************************************/
#include
#include
#include
"GP_720.H"
"GP_DATA.H"
"GP_MENU.H"
char
short
short
short
sam_buff[5] ;
sam_cnt ;
sam_flag ;
sam_ent ;
/* サンプリング間隔データバッファ */
/* サンプリング間隔データカウンタ */
/* サンプリング間隔データ入力フラグ */
short
short
short
double
w_sflag ;
w_cflag ;
sam_mean ;
sam_rec ;
/*
/*
/*
/*
瞬間値データ 保存フラグ */
演算値データ 保存フラグ */
演算値 平均時間
1 分/10 分 */
DA600 サンプリング間隔 0.05∼10 秒 */
#pragma
page()
/****************************************************************
***
void
mmenu_key ( void )
*
*
GP-720 型 データ演算装置 メニューキー入力処理
*
****************************************************************/
void mmenu_key ( void )
{
short
key ;
for ( ; ; ) {
key = check_keybrd () ;
if ( key >= '1' && key <= '5' ) {
switch ( key ) {
case '1' :
case '2'
case '3'
case '4'
case '5'
/* 観測 */
system_flag = SYS_MEASURE ;
break ;
:
/* 収録データ表示 */
system_flag = SYS_DISP ;
break ;
:
/* 収録データ印字 */
system_flag = SYS_DPRT ;
break ;
:
/* プロッタ表示・印字 */
system_flag = SYS_PPRT ;
break ;
:
/* 終了 */
system_flag = SYS_EXIT ;
break ;
default :
break ;
}
break ;
}
}
}
#pragma
page()
/****************************************************************
****
*
***
short
kmenu_key ( void )
**
*
*
GP-720 型 データ演算装置 観測メニューキー入力処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
*
short kmenu_key ( void )
{
short
//
//
//
//
key , n ;
sam_cnt = 0 ;
sam_flag = 0 ;
for ( n = 0 ; n < 5 ; n++ ) {
sam_buff[n] = 0x00 ;
}
w_sflag = write_sflag ;
w_cflag = write_cflag ;
sam_mean = sampling_mean ;
sam_rec = sampling_rec ;
w_sflag = 0 ;
w_cflag = 0 ;
sam_mean = 0 ;
//
sam_rec = 0 ;
//
sam_ent = 0 ;
//
瞬間値データ 保存フラグ
//
演算値データ 保存フラグ
//
演算値 平均時間
1 分/10 分
//
DA600 サンプリング間隔
0.05∼10 秒
//
瞬間値データ 保存フラグ
//
演算値データ 保存フラグ
演算値 平均時間
1 分/10 分
DA600 サンプリング間隔
0.05∼10 秒
for ( ; ; ) {
key = check_keybrd () ;
if ( key == KEY_F12 ) {
return ( 1 ) ;
}
//
//
/* 戻る */
if ( key == KEY_ENT ) {/* 決定 */
if ( w_sflag > 0 && w_cflag > 0 &&
sam_mean > 0 && sam_rec > 0 ) {
write_sflag = w_sflag ;
write_cflag = w_cflag ;
sampling_mean = sam_mean ;
//
sampling_rec = sam_rec ;
//
sam_buff[sam_cnt] = 0x00 ;
sampling_rec = atof(sam_buff) ; //
return ( 0 ) ;
}
}
if (
//
瞬間値データ 保存フラグ
//
演算値データ 保存フラグ
演算値 平均時間
1 分/10 分
DA600 サンプリング間隔
0.05∼10 秒
DA600 サンプリング間隔
0.05∼10 秒
key == KEY_UP ¦¦ key == KEY_DOWN ) { /* ↑か↓ */
kmenu_ud_key ( key ) ;
}
/* 瞬間値、演算値データファイル、演算
値平均時間 */
if ( menu_cnt != 3 ) {
/* 数字入力処理 */
if ( key >= '1' && key <= '3' ) {
kmenu_num_key ( key ) ;
}
} else {
/* サンプリング間隔 */
/* 0∼9、. */
if ( ( key >= '0' && key <= '9' ) ¦¦ key == PERIOD ) {
sam_flag = 1 ;
sam_buff[sam_cnt] = ( char )key ;
sam_key () ;
}
}
}
}
#pragma
page()
/****************************************************************
****
*
***
void
kmenu_mun_key ( short )
*
**
*
*
GP-720 型 データ演算装置 観測メニュー数字キー入力処理*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void kmenu_num_key ( short key )
{
short
char
n = 0 ;
str[2] ;
_settextcolor ( GLIGHTYELLOW ) ;
sprintf ( str , "%c" , key ) ;
if ( menu_cnt == 0 ) {
/* 瞬間値データファイル */
if ( key == '1' ¦¦ key == '2' ) {
dnum_outtext( str , MENU_Y+menu_cnt , MENU_X+48 ) ;
w_cflag = key - 0x30 ;
} else {
n = 1 ;
}
} else if ( menu_cnt == 1 ) { /* 演算値データファイル */
dnum_outtext( str , MENU_Y+menu_cnt , MENU_X+60 ) ;
w_sflag = key - 0x30 ;
} else {
/* 平均値平均化時間 */
if ( key == '1' ) {
sam_mean = 1 ;
dnum_outtext( str , MENU_Y+menu_cnt , MENU_X+48 ) ;
} else if ( key == '2' ) {
sam_mean = 10 ;
dnum_outtext( str , MENU_Y+menu_cnt , MENU_X+48 ) ;
} else {
n = 1 ;
}
}
//
if ( n == 0 ) {
dnum_outtext( str ) ;
kansoku_data_dsp ( menu_cnt , MENU_OFF ) ;
menu_cnt ++ ;
kansoku_data_dsp ( menu_cnt , MENU_ON ) ;
}
}
#pragma
page()
/****************************************************************
/* キー入力数字表示 */
****
*
***
void
kmenu_ud_key ( short )
*
**
*
*
GP-720 型 データ演算装置 観測メニュー↑↓キー入力処理*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void kmenu_ud_key ( short key )
{
short
work ;
if ( menu_cnt == 3 && sam_flag == 1 ) {
/* サンプリング間隔 */
sam_check () ;
sam_cnt = 0 ;
for ( work = 0 ; work < 5 ; work++ ) {
sam_buff[work] = 0x00 ;
}
}
work = menu_cnt ;
if ( key == KEY_UP ) {
if ( menu_cnt > 0 ) {
menu_cnt -- ;
} else {
menu_cnt = 3 ;
}
} else {
if ( menu_cnt < 3 ) {
menu_cnt ++ ;
} else {
menu_cnt = 0 ;
}
}
/* ↑ */
/* ↓ */
if ( menu_cnt == 3 ) {
sam_flag = 0 ;
memset ( sam_buff , 0 , 5 ) ;
}
kansoku_data_dsp ( work , MENU_OFF ) ;
kansoku_data_dsp ( menu_cnt , MENU_ON ) ;
}
#pragma
page()
/****************************************************************
****
*
***
void
sam_key ( void )
**
*
*
GP-720 型 データ演算装置 サンプリングキー入力処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void sam_key ( void )
{
short
key , rgt = 0 ;
key = sam_buff[sam_cnt] ;
switch ( sam_cnt ) {
*
case 0 :
/* 1桁目 */
if ( key == '0' ¦¦ key == '1' ) {
sam_cnt ++ ;
rgt ++ ;
} else if ( key == PERIOD ) {
sam_buff[0] = '0' ;
sam_buff[1] = '.' ;
sam_cnt = 2 ;
rgt ++ ;
} else if ( key >= '2' && key <= '9' ) {
memset ( sam_buff , ' ' , 3 ) ;
sam_buff[3] = ( char )key ;
sam_cnt = 4 ;
menu_cnt = 0 ;
rgt ++ ;
}
break ;
case 1 :
/* 2桁目 */
if ( ( sam_buff[0] == '0' && key == PERIOD ) ) {
if ( key == PERIOD ) {
sam_cnt ++ ;
rgt ++ ;
} else if ( sam_buff[0] == '1' && key == '0' ) {
memcpy ( sam_buff , " 10" , 4 ) ;
sam_cnt = 4 ;
menu_cnt = 0 ;
rgt ++ ;
}
break ;
case 2 :
/* 3桁目 */
if ( ( sam_buff[0] == '0' && sam_buff[1] == PERIOD ) ¦¦
( key >= '0' && key <= '9' ) ) {
sam_cnt ++ ;
rgt ++ ;
}
break ;
case 3 :
/* 4桁目 */
if ( sam_buff[0] == '0' && sam_buff[1] == '.' &&
sam_buff[2] == '0' && key == '0' ) {
sam_cnt = 3 ;
} else if ( ( sam_buff[0] == '0' && sam_buff[1] == PERIOD ) &&
( sam_buff[2] >= '0' && sam_buff[2] <= '9' ) &&
} else if ( key == '0' ¦¦ key == '5' ) {
sam_cnt ++ ;
menu_cnt = 0 ;
rgt ++ ;
}
break ;
//
//
//
default :
break ;
}
_settextcolor ( GLIGHTYELLOW ) ;
_settextposition( MENU_Y+3 , MENU_X+44 )
_outtext( "
" ) ;
//
//
;
sam_buff[sam_cnt] = 0x00 ;
_settextposition( MENU_Y+menu_cnt , MENU_X+44 )
dnum_outtext( sam_buff , MENU_Y+3 , MENU_X+44 )
dnum_outtext( sam_buff , MENU_Y+3 , MENU_X+44 )
;
;
;
if ( rgt > 0 ) {
sam_buff[sam_cnt] = 0x00 ;
sam_rec = atof(sam_buff) ;
}
if ( menu_cnt == 0 ) {
sam_rec = atof ( sam_buff ) ;
kansoku_data_dsp ( 3 , MENU_OFF ) ;
kansoku_data_dsp ( menu_cnt , MENU_ON ) ;
sam_cnt = 0 ;
sam_flag = 0 ;
}
}
#pragma
page()
/****************************************************************
****
*
***
void
sam_check ( void )
**
*
*
GP-720 型 データ演算装置 サンプリングキー入力処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void sam_check ( void )
{
double
int
char
short
sam ;
w1 , w2 ;
str[5] ;
n ;
sam_cnt ++ ;
sam_buff[sam_cnt] = 0x00 ;
sam = atof ( sam_buff ) ;
_settextcolor ( GLIGHTYELLOW ) ;
if ( sam >= 0.05 && sam < 1.0 ) {
sam_rec = sam ;
sprintf ( str , "%4.2f" , sam ) ;
} else if ( sam >= 1.0 && sam <= 10.0 ) {
w1 = ( int )( sam * 100.0 ) ;
w2 = w1 / 100 ;
w1 = w2 * 100 ;
sam_rec = ( double )( w1 / 100 ) ;
sprintf ( str , "%2d" , ( w1 / 100 ) ) ;
} else if ( sam == 0.0 ) {
for ( n = 0 ; n < 5 ; n++ ) {
sam_buff[n] = 0x00 ;
}
memset ( str , ' ' , 4 ) ;
str[4] = 0x00 ;
}
//
_settextposition( MENU_Y+menu_cnt , MENU_X+44 )
dnum_outtext( str , MENU_Y+3 , MENU_X+44 ) ;
sam_cnt = 0 ;
;
}
#pragma
page()
/****************************************************************
****
*
***
void
dnum_outtext ( char * str , short , short ) *
**
*
*
GP-720 型 データ演算装置 サンプリングキー入力処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void dnum_outtext ( char * str , short y , short x )
*
{
short
n ;
for ( n = 0 ; ; n++ ) {
if ( *( str + n ) == 0x00 ) {
break ;
}
_settextposition( y , x+2*n )
switch ( *( str + n ) ) {
;
case '0' :
_outtext ( "0" ) ;
break ;
case '1' :
_outtext ( "1" ) ;
break ;
case '2' :
_outtext ( "2" ) ;
break ;
case '3' :
_outtext ( "3" ) ;
break ;
case '4' :
_outtext ( "4" ) ;
break ;
case '5' :
_outtext ( "5" ) ;
break ;
case '6' :
_outtext ( "6" ) ;
break ;
case '7' :
_outtext ( "7" ) ;
break ;
case '8' :
_outtext ( "8" ) ;
break ;
case '9' :
_outtext ( "9" ) ;
break ;
case '.' :
_outtext ( "." ) ;
break ;
case ' ' :
_outtext ( "
break ;
default :
break ;
}
}
}
_
" ) ;
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " プロット色 設定メニュー処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
プロット色 設定メニュー処理
*
*
*
*
*
*
Module Name
: GP_PCOL.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Feb. 25, 1998
*
*
*
*
Revised Date : Mar. 14, 1998
*
*
*
*
Auther
: S. Yamashita
**
*
***
*
****
*************************************************************************/
/*********************************************************************
****
*
***
*
**
Ver 1.00
*
*
新規作成
Feb. 25, 1998
*
*
Windows95 用 ハード・コピー処理 追加
Mar. 3, 1998
**
*
***
*
****
*********************************************************************/
#include
#include
"GP_720.H"
"GP_DATA.H"
#pragma
page()
/****************************************
***
*
**
画面 定数
**
*
***
****************************************/
#define
#define
#define
#define
#define
#define
#define
PCOL_TITLE
PCOL_MENU
PCOL_BLUE
PCOL_RED
PCOL_MAGENTA
PCOL_GREEN
PCOL_DATA
"プロット色設定"
"選択色(1:黒
"2:青 "
"3:赤 "
"4:紫 "
"5:緑"
"風速計
( )? "
char
*color_message[3] =
{
)"
{ " " } ,
{ " " } ,
{ " " }
}
;
FUNC_FORM fnc_ckey =
//
{
ファンクション・キ-情報
12 , 0 , "戻る"
}
//
F12
;
#pragma
page()
/****************************************************************
****
*
***
void menu_pencolor( void )
*
**
*
*
プロッタ色 設定 メニュー処理
*
*
*
*
*
*
Version
1.00
*
*
Created Date Feb.25,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
menu_pencolor( void )
{
short
no = 0
n , no , key
;
;
disp_colormenu( &n )
;
//
プロット色 設定メニュー 表示
while ( FOREVER )
{
if ( ( key = check_keybrd() ) != KEY_NONE )
//
キー入力あり ?
{
if ( key == KEY_F12 )
{
//
中止、終了 ?
save_pencolor() ;
break ;
}
else
{
edit_pencolor( &no , &n , key ) ;
//
プロット色 選択
}
}
}
}
#pragma
page()
/********************************************************************
****
*
***
void edit_pencolor( short *no , short *num
*
**
, short code )
*
*
*
*
プロット色 選択/変更処理
*
*
*
*
*
*
Parameter
*
*
short *no : 編集項目番号 ポインタ
*
*
short *num : 入力データ数 ポインタ
*
*
short code : キー・コード
*
*
*
*
Version
1.00
*
*
Created Date Mar.12,1998
**
*
Revised Date
. ,
***
*
****
********************************************************************/
void
edit_pencolor( short
*no , short
*num , short
code )
{
short
old , f1 = FALSE , f2 = FALSE
;
set_cursor( FALSE , *num + 25 , 9 + *no * 2 , GBLACK )
old = *no
;
//
編集項目番号 退避
switch ( code )
{
case KEY_ENT :
//
Enter
if ( *num == 1 )
{
change_pencolor( *no
if ( *no < 2 )
{
( *no )++
}
f1 = TRUE
}
break
;
)
;
;
;
;
case KEY_UP :
if ( *no )
{
( *no )--
//
↑キー
;
//
項目番号 -1
//
項目番号 +1
}
f1 = TRUE
break ;
;
case KEY_DOWN :
//
↓キー
if ( *no < 2 )
{
( *no )++ ;
}
f1 = TRUE
break ;
;
case KEY_BAK :
if ( *num != 0 )
{
( *num )-f2 = TRUE
}
break
;
;
;
default :
if ( '0' <= code && code <= '5' && *num == 0 )
{
//
数値キー
color_message[*no][0] = ( char )code
( *num )++ ;
;
f2 = TRUE
}
break
;
;
}
if ( f1 )
{
disp_coloritem( RELEASE , old , num )
;
disp_coloritem( SELECT , *no , num )
;
_settextcolor( GLIGHTYELLOW ) ;
_settextposition( 9 + *no * 2 , 25 )
_outtext( color_message[*no] ) ;
;
//
前選択項目 非選択表示
//
選択表示
}
if ( f2 )
{
}
set_cursor( TRUE , 25 + *num , 9 + *no * 2 , GLIGHTYELLOW )
;
}
#pragma
page()
/****************************************************************
****
*
***
void disp_colormenu( short *num )
*
**
*
*
プロッタ色 選択メニュー 表示処理
*
*
*
*
*
*
Parameter
*
*
short *num : 入力データ数 ポインタ
*
*
*
*
Version
1.00
*
*
Created Date Feb.25,1998
**
*
Revised Date Mar.12,1998
***
*
****
****************************************************************/
void
disp_colormenu( short
*num )
{
short
i
;
_settextwindow( 4 , 1 , 23 , 80 ) ;
_scrolltextwindow( 20 ) ;
//
_settextwindow( 1 , 1 , 25 , 80 ) ;
_settextcolor( GCYAN ) ;
_settextposition( 5 , 5 )
_outtext( PCOL_TITLE ) ;
//
ウインドウ座標 設定
表示データ クリア
//
ウインドウ座標 設定
;
_settextcolor( GBRIGHTWHITE )
_settextposition( 7 , 5 ) ;
_outtext( PCOL_MENU ) ;
;
_settextcolor( GBLUE ) ;
_settextposition( 7 , 21 ) ;
_outtext( PCOL_BLUE ) ;
_settextcolor( GRED ) ;
_outtext( PCOL_RED ) ;
_settextcolor( GMAGENTA ) ;
_outtext( PCOL_MAGENTA ) ;
_settextcolor( GGREEN ) ;
_outtext( PCOL_GREEN ) ;
for ( i = 0 ; i < 3 ; i++ )
{
color_message[i][0] = SPACE
if ( i == 0 )
{
;
disp_coloritem( SELECT , i , num )
;
}
else
{
disp_coloritem( RELEASE , i , num )
;
}
}
draw_function( &fnc_ckey , TRUE )
;
}
#pragma
page()
/********************************************************************
****
*
***
void disp_coloritem( short flag , short no
*
**
, short *num )
*
*
*
*
プロット色 選択項目 表示処理
*
*
*
*
*
*
Parameter
*
*
short flag : 表示色フラグ
*
*
RELEASE : 非選択表示
*
*
SELECT : 選択表示
*
*
short no
: 選択項目番号
*
*
short *num : 入力データ数 ポインタ
*
*
*
*
Version
1.00
*
*
Created Date Feb.25,1998
**
*
Revised Date Mar.12,1998
***
*
****
********************************************************************/
void
disp_coloritem( short
flag , short
no , short
*num )
{
char
str[19]
;
if ( flag == SELECT )
{
_settextcolor( GLIGHTYELLOW )
}
else
{
_settextcolor( GBRIGHTWHITE )
}
_settextposition( 9 + no * 2 , 7 )
creat_colmessage( no , str ) ;
_outtext( str ) ;
_outtext( color_message[no] ) ;
;
//
選択表示
;
//
非選択表示
;
if ( flag == SELECT )
{
*num = 0 ;
set_cursor( TRUE , 25 , 9 + no * 2 , GLIGHTYELLOW )
}
}
#pragma
page()
/********************************************************************
****
*
***
void creat_colmessage( short no , char *mes )
*
**
*
*
プロッタ色 選択メッセージ 作成処理
*
*
*
*
*
*
Parameter
*
*
short no
: データ番号
*
*
char
*mes : 選択メッセージ ポインタ
*
;
*
*
*
Version
1.00
*
*
Created Date Feb.25,1998
**
*
Revised Date
. ,
***
*
****
********************************************************************/
void
creat_colmessage( short
no , char
*mes )
{
short
*d , pen
;
strcpy( mes , PCOL_DATA )
;
*( mes + 6 ) = ( char )0x82 ;
*( mes + 7 ) = ( char )( no + 0x60 )
switch ( no )
{
case 0 :
d = &color_pena
break ;
case 1 :
d = &color_penb
break ;
case 2 :
d = &color_penc
break ;
default :
break
;
;
;
;
;
}
pen = conv_penno( *d )
;
*( mes + 11 ) = ( char )0x82 ;
*( mes + 12 ) = ( char )( pen + 0x4f )
;
}
#pragma
page()
/****************************************************************
****
*
***
void change_pencolor( short no )
*
**
*
*
プロッタ色 変更処理
*
*
*
*
*
*
Parameter
*
*
short no : データ番号
*
*
*
*
Version
1.00
*
*
Created Date Feb.25,1998
**
*
Revised Date Mar.12,1998
***
*
****
****************************************************************/
void
change_pencolor( short
no )
{
short
*d
;
switch ( no )
{
case 0 :
d = &color_pena
break ;
case 1 :
d = &color_penb
break ;
case 2 :
;
;
d = &color_penc
break ;
default :
break
;
;
}
*d = conv_colorno( ( short )( color_message[no][0] - 0x30 ) )
;
}
#pragma
page()
/****************************************************************
****
*
***
void save_pencolor( void )
*
**
*
*
プロッタ色 設定データ 書き込み処理
*
*
*
*
*
*
Version
1.00
*
*
Created Date Feb.25,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
save_pencolor( void )
{
file_sys.pena = ( char )( conv_penno( color_pena ) + 0x30 )
file_sys.penb = ( char )( conv_penno( color_penb ) + 0x30 )
file_sys.penc = ( char )( conv_penno( color_penc ) + 0x30 )
write_sysfile( 0 )
; //
停止中 設定 <GP_WRITE.C>
}
#pragma
page()
/****************************************************************
****
*
***
short conv_colorno( short pen )
*
**
*
*
ペン番号 変換処理 (色番号←ペン番号)
*
*
*
*
*
*
Parameter
*
*
short pen : ペン番号
*
*
Return Value
*
*
色番号
*
*
*
*
Version
1.00
*
*
Created Date Feb.25,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
short
conv_colorno( short
{
short
d
;
switch ( pen )
{
case 1 :
d = 15
break
case 2 :
d = 1
break
case 3 :
d = 4
break
case 4 :
d = 5
;
;
;
;
;
;
;
pen )
;
;
;
break
;
d = 2
break
;
;
case 5 :
default :
d = 15 ;
break ;
}
return( d )
;
}
#pragma
page()
/****************************************************************
****
*
***
short conv_penno( short col )
*
**
*
*
色番号 変換処理 (ペン番号←色番号)
*
*
*
*
*
*
Parameter
*
*
short col : 色番号
*
*
Return Value
*
*
ペン番号
*
*
*
*
Version
1.00
*
*
Created Date Feb.25,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
short
conv_penno( short
col )
{
short
d
;
switch ( col )
{
case 15 :
d = 1
break
case 1 :
d = 2
break
case 4 :
d = 3
break
case 5 :
d = 4
break
case 2 :
d = 5
break
default :
d = 1
break
}
return( d )
}
_
;
;
;
;
;
;
;
;
;
;
;
;
;
#pragma
optimize( "" , off )
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " データ演算装置 メニュー処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
データ演算装置 収録データ表示処理
*
*
*
*
*
*
Module Name
: GP_PDAT.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Jan. 16, 1998
*
*
*
*
Revised Date : Jan. 19, 1998
*
*
*
*
Auther
: N. Kamio
*
***
*
****
*************************************************************************/
/*********************************************************************
***
*
**
Ver 1.00
*
*
新規作成
Jan. 16, 1998
**
*
***
*
****
**********************************************************************/
#include
#include
#include
"GP_720.H"
"GP_DATA.H"
"GP_MENU.H"
#define
CODE_TE
0x03
/*
文字作図終了
*/
#pragma
page()
/****************************************
***
*
**
画面 定数
**
*
***
****************************************/
#define
PRN_MAX
double
double
sf_name ;
ef_name ;
57
FUNC_FORM fnc_prnkey[2] =
//
{
ファンクション・キ-情報
{ 11 , 0 , "中止" } , //
{ 12 , 0 , "戻る"
} //
}
;
#pragma
page()
/****************************************************************
F11
F12
**
****
*
***
void
file_print_main( void )
*
**
*
*
GP-720 型 データ演算装置 ファイルデータ表示処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void file_print_main ( void )
{
draw_function( fnc_prnkey , TRUE )
;
if ( cs_flag == 1 ) {
/* 演算値データ印刷 */
mean_data_print () ;
} else {
/* 瞬間値データ印字 */
inst_data_print () ;
}
}
#pragma
page()
/****************************************************************
****
*
***
void
mean_data_print ( void )
*
**
*
*
GP-720 型 データ演算装置 ファイルデータ表示処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
mean_data_print ( void )
{
time_t
char
short
s_time , c_time
fname[50] ;
t , f , sk ;
;
prn_stop = 0 ;
fname[0] = file_drv ;
memcpy ( &fname[1] , ":\\ANE_DATA\\MEAN\\" , 16 ) ;
memcpy ( &fname[17] , &disp_fname[2] , 12 ) ;
fname[29] = 0x00 ;
//
/* 演算データ オープン */
if ( ( disp_fp = fopen( fname , "r+b" ) ) != NULL ) {
if ( ( disp_fp = fopen( disp_fname , "r+b" ) ) != NULL ) {
for ( t = 0 ; t < 5 ; t++ ) {
print_cnt = 0 ;
/* データ表示列 = 0 */
sk = fseek ( disp_fp , 0 , SEEK_SET ) ;
if ( check_keybrd () == KEY_F11 ) {
fclose ( disp_fp ) ;
return ;
}
time( &s_time )
;
for ( ; ; ) {
while ( FOREVER )
{
time( &c_time )
;
if ( c_time - s_time > 1800 )
{
break ;
}
if ( ( printer_status() & 0x90 ) == 0x90 )
{
break ;
}
if ( check_keybrd () == KEY_F11 ) {
fclose ( disp_fp ) ;
return ;
}
}
f = fread( &disp_cfile_data , SIZE_CFILE , 1 , disp_fp ) ;
if ( f > 0 ) {
data_print ( t ) ;
if ( print_cnt > PRN_MAX ) {
printer_line ( "\f" , 1 ) ;
/* 改頁 */
page_cnt = 0 ;
print_cnt = 0 ;
time( &s_time ) ;
while ( FOREVER )
{
time( &c_time ) ;
if ( c_time - s_time > 10 )
{
break ;
}
}
}
} else {
if ( print_cnt > 0 ) {
printer_line ( "\f" , 1 ) ;
/* 改頁 */
time( &s_time ) ;
while ( FOREVER )
{
time( &c_time ) ;
if ( c_time - s_time > 10 )
{
break ;
}
}
}
break ;
}
}
}
fclose ( disp_fp ) ;
}
}
#pragma
page()
/****************************************************************
****
*
***
void
inst_data_print ( void )
*
**
*
*
GP-720 型 データ演算装置 ファイルデータ表示処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
inst_data_print ( void )
{
time_t
short
s_time , c_time
t , f , sk ;
;
prn_stop = 0 ;
/* 演算データ オープン */
if ( ( disp_fp = fopen( disp_fname , "r+b" ) ) != NULL ) {
for ( t = 0 ; t < 5 ; t++ ) {
print_cnt = 0 ;
/* データ表示列 = 0 */
sk = fseek ( disp_fp , 0 , SEEK_SET ) ;
if ( check_keybrd () == KEY_F11 ) {
fclose ( disp_fp ) ;
return ;
}
time( &s_time )
for ( ; ;
;
) {
while ( FOREVER )
{
time( &c_time )
;
if ( c_time - s_time > 1800 )
{
break ;
}
if ( ( printer_status() & 0x90 ) == 0x90 )
{
break ;
}
if ( check_keybrd () == KEY_F11 ) {
fclose ( disp_fp ) ;
return ;
}
}
f = fread( &disp_sfile_data , SIZE_SFILE , 1 , disp_fp ) ;
if ( f > 0 ) {
data_print ( t+5 ) ;
if ( print_cnt > PRN_MAX ) {
printer_line ( "\f" , 1 ) ;
/* 改頁 */
print_cnt = 0 ;
time( &s_time ) ;
while ( FOREVER )
{
time( &c_time ) ;
if ( c_time - s_time > 10 )
{
break ;
}
}
}
} else {
if ( print_cnt > 0 ) {
printer_line ( "\f" , 1 ) ;
/* 改頁 */
time( &s_time ) ;
while ( FOREVER )
{
time( &c_time ) ;
if ( c_time - s_time > 10 )
{
break ;
}
}
}
break ;
}
}
}
fclose ( disp_fp ) ;
}
}
#pragma
page()
/****************************************************************
****
*
***
void
data_head_print ( short )
*
**
*
*
GP-720 型 データ演算装置 ファイルデータ表示処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
data_head_print ( short
no )
{
switch ( no ) {
case 0 :
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
/* 水平風速/風向/温度 */
mwt_head_print () ;
break ;
/* XYW風速 */
mvw_head_print () ;
break ;
/* 標準偏差 水平風速/風向 */
wtsig_head_print () ; ;
break ;
/* 標準偏差 XYW 風速 */
vwsig_head_print () ; ;
break ;
/* 乱流強度 */
ssw_head_print () ; ;
break ;
/* 瞬間値風速/風向/温度 */
iwt_head_print () ; ;
break ;
/* 瞬間値XYW風速 */
ivw_head_print () ; ;
break ;
default :
break ;
}
}
#pragma
page()
/****************************************************************
****
*
***
void
data_print ( short )
**
*
*
GP-720 型 データ演算装置 ファイルデータ表示処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
data_print ( short
no )
*
{
//
if ( print_cnt == 0 ) {
data_head_print ( no ) ;
}
print_cnt ++ ;
switch ( no ) {
case 0 :
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
/* 水平風速/風向/温度 */
mwt_data_print () ;
break ;
/* XYW風速 */
mvw_data_print () ;
break ;
/* 標準偏差 水平風速/風向 */
wtsig_data_print () ; ;
break ;
/* 標準偏差 XYW 風速 */
vwsig_data_print () ; ;
break ;
/* 乱流強度 */
ssw_data_print () ; ;
break ;
/* 瞬間値風速/風向/温度 */
iwt_data_print () ; ;
break ;
/* 瞬間値XYW風速 */
ivw_data_print () ; ;
break ;
default :
break ;
}
}
#pragma
page()
/****************************************************************
****
*
***
void
print_space ( short sp )
*
**
*
*
GP-720 型 データ演算装置 ファイルヘッダ表示処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
print_space ( short sp )
{
char
str[50] ;
memset ( str , SPACE , sp ) ;
printer_line ( str , sp ) ;
}
_
/* スペース */
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " データ演算装置 メニュー処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
データ演算装置 収録データキー処理
*
*
*
*
*
Module Name
: GP_PKEY.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Jan. 16, 1998
*
*
*
*
Revised Date : Jan. 19, 1998
*
*
*
*
Auther
: N. Kamio
*
***
*
****
*************************************************************************/
*
**
/*********************************************************************
***
*
**
Ver 1.00
*
*
新規作成
Jan. 16, 1998
**
*
***
*
****
*********************************************************************
****
*/
#include
#include
#include
"GP_720.H"
"GP_DATA.H"
"GP_MENU.H"
FUNC_FORM pf_key[2] = {
{ 1 , 0 , "決定" } , //
{ 12 , 0 , "戻る" }
} ;
char
char
short
short
char
tim_buff[14] ;
tim_cnt ;
p_mon ;
tim_flag ;
p_mon_char[3] ;
観測メニュー時ファンクション・キ-情報
short
tim_p ;
#pragma
page()
/****************************************************************
****
*
***
void
param_menu ( void )
**
*
*
GP-720 型 データ演算装置 収録データ表示
*
*
パラメータ選択処理
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
*
void param_menu ( void )
{
if (menu_plot () == 1 ) {
if ( print_flag == 0 ) {
cs_flag = 2 ;
} else {
cs_flag = 1 ;
}
system_flag = SYS_DISP ;
} else {
system_flag = SYS_MENU ;
}
/* メインメニュー選択処理 */
/* 瞬間値 */
/* 演算値 */
}
#pragma
page()
/****************************************************************
****
*
***
void
param_data ( void )
**
*
*
GP-720 型 データ演算装置 収録データ表示
*
*
パラメータデータ表示処理
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
*
void param_data ( void )
{
head_dsp () ;
draw_function( pf_key , TRUE ) ;
_settextcolor( GLIGHTGREEN )
_settextposition( 2 , 3 ) ;
_outtext( "収録データ表示" )
/* プログラム装置名表示 */
;
;
param_data_disp ( 0 , MENU_ON ) ;
param_data_disp ( 1 , MENU_OFF ) ;
}
#pragma
page()
/****************************************************************
****
*
***
void
param_data_disp ( short , short )
*
**
*
*
GP-720 型 データ演算装置 収録データ表示
*
*
パラメータデータ表示処理
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void param_data_disp ( short no , short col )
{
short
c ;
if ( col == MENU_OFF ) {
c = GBRIGHTWHITE ;
} else {
c = GLIGHTYELLOW ;
}
_settextcolor ( c ) ;
_settextposition( MENUP_Y+no*2 , MENUP_X )
;
switch ( no ) {
case 0 :
case 1 :
/* 表示項目 */
_outtext( "表示項目(1:演算値 2:瞬間値)?" )
break ;
/* 表示日時 */
_outtext( "表示日時( YYYY/MM/DD/HH ) ?" ) ;
break ;
;
default :
break ;
}
}
#pragma
page()
/****************************************************************
****
*
***
short
param_key ( void )
**
*
*
GP-720 型 データ演算装置 収録データ表示
*
*
パラメータ選択キー入力処理
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
*
short param_key ( void )
{
short
key , n ;
tim_cnt = 0 ;
for ( n = 0 ; n < 14 ; n++ ) {
tim_buff[n] = SPACE ;
}
for ( ; ; ) {
key = check_keybrd () ;
if ( key == KEY_F12 ) {
return ( 1 ) ;
}
/* 戻る */
if ( key == KEY_F1 ) {
/* 決定 */
if ( ( cs_flag == 1 ¦¦ cs_flag == 2 ) && tim_flag == 1 ) {
memcpy ( &cs_file_name[0] , &tim_buff[2] , 2 ) ;
memcpy ( &cs_file_name[2] , &tim_buff[5] , 2 ) ;
memcpy ( &cs_file_name[4] , &tim_buff[8] , 2 ) ;
memcpy ( &cs_file_name[6] , &tim_buff[11] , 2 ) ;
cs_file_name[13] = 0x00 ;
return ( 0 ) ;
}
}
if (
key == KEY_UP ¦¦ key == KEY_DOWN ) { /* ↑か↓ */
pmenu_ud_key ( key ) ;
}
if ( menu_cnt == 0 ) {
/* 表示項目 */
if ( key == '1' ¦¦ key == '2' ) {
pmenu_num_key ( key ) ;
}
} else {
/* */
/* 0∼9、. */
if ( ( key >= '0' && key <= '9' ) ¦¦ key == SLASH ) {
tim_buff[tim_cnt] = ( char )key ;
tim_key () ;
} else if ( key == KEY_BAK ) {
tim_back () ;
}
}
}
}
#pragma
page()
/****************************************************************
****
*
***
void
pmenu_mun_key ( short )
*
**
*
*
GP-720 型 データ演算装置 収録データ表示
*
*
パラメータ選択キー入力処理
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void pmenu_num_key ( short key )
{
short
char
n = 0 ;
str[2] ;
_settextcolor ( GLIGHTYELLOW ) ;
sprintf ( str , "%c" , key ) ;
dnum_outtext( str , MENUP_Y+menu_cnt*2 , MENUP_X+42 )
cs_flag = key - 0x30 ;
;
param_data_disp ( menu_cnt , MENU_OFF ) ;
menu_cnt ++ ;
param_data_disp ( menu_cnt , MENU_ON ) ;
}
#pragma
page()
/****************************************************************
****
*
***
void
pmenu_ud_key ( short )
*
**
*
*
GP-720 型 データ演算装置 収録データ表示
*
*
パラメータ選択キー↑↓入力処理
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void pmenu_ud_key ( short key )
{
short
work ;
if ( menu_cnt == 1 && tim_p == 1 ) {/* 表示日時 */
tim_cnt = 0 ;
for ( work = 0 ; work < 14 ; work++ ) {
tim_buff[work] = SPACE ;
}
_settextposition ( MENUP_Y+menu_cnt*2 , MENUP_X+35 )
_outtext ( "
" ) ;
}
work = menu_cnt ;
if ( key == KEY_UP ) {
if ( menu_cnt > 0 ) {
menu_cnt -- ;
} else {
menu_cnt = 1 ;
}
} else {
if ( menu_cnt < 1 ) {
menu_cnt ++ ;
} else {
menu_cnt = 0 ;
}
}
/* ↑ */
/* ↓ */
param_data_disp ( work , MENU_OFF ) ;
param_data_disp ( menu_cnt , MENU_ON ) ;
}
#pragma
page()
/****************************************************************
****
*
***
void
tim_key ( void )
**
*
*
GP-720 型 データ演算装置 日時データキー入力処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void tim_key ( void )
{
short
char
short
key ;
work[5] ;
y , m , d ;
key = tim_buff[tim_cnt] ;
switch ( tim_cnt ) {
case 0 :
/* Xxxx年 */
tim_flag = 0 ;
tim_p = 1 ;
if ( key >= '1' && key <= '9' ) {
tim_cnt ++ ;
}
break ;
case 1 :
case 2 :
case 3 :
/* xXxx年 */
/* xxXx年 */
/* 4桁目 */
if ( key >= '0' && key <= '9' ) {
*
;
tim_cnt ++ ;
}
break ;
case 4 :
case 7 :
case 10 :
/* / */
/* / */
/* / */
if ( key == SLASH ) {
tim_cnt ++ ;
}
break ;
case 5 :
/* Xx月 */
if ( key == '0' ¦¦ key == '1' ) {
tim_cnt ++ ;
}
break ;
case 6 :
/* xX月 */
if ( ( tim_buff[5] == '0' && ( key >= '1' && key <= '9' ) ) ¦¦
( tim_buff[5] == '1' && ( key >= '0' && key <= '2' ) ) ) {
tim_cnt ++ ;
}
break ;
case 8 :
/* Xx日 */
memcpy ( work , tim_buff , 4 ) ;
work[4] = 0x00 ;
y = atoi ( work ) ;
memcpy ( work , &tim_buff[5] , 2 ) ;
/* 月 */
work[2] = 0x00 ;
m = atoi ( work ) ;
p_mon = mon_end_dat ( y , m ) ;
sprintf ( p_mon_char , "%02d" , p_mon ) ;
if ( key >= '0' && key <= p_mon_char[0] ) {
tim_cnt ++ ;
}
break ;
case 9 :
/* xX日 */
memcpy ( work , &tim_buff[8] , 2 ) ;
work[2] = 0x00 ;
d = atoi ( work ) ;
if ( key >= '0' && d <= p_mon ) {
tim_cnt ++ ;
}
break ;
case 11 :
/* Xx時 */
if ( key >= '0' && key <= '2' ) {
tim_cnt ++ ;
}
break ;
case 12 :
/* xX時 */
if ( ( tim_buff[11] >= '0' && ( key >= '0' && key <= '9' ) ) ¦¦
( tim_buff[11] == '1' && ( key >= '0' && key <= '9' ) ) ¦¦
( tim_buff[11] == '2' && ( key >= '0' && key <= '3' ) ) ) {
tim_cnt ++ ;
tim_flag = 1 ;
menu_cnt = 0 ;
tim_p = 0 ;
}
break ;
//
default :
break ;
}
//
/* 年 */
_settextcolor ( GLIGHTYELLOW ) ;
_settextposition( MENUP_Y+menu_cnt*2 , MENUP_X+35 )
_settextposition( MENUP_Y+2 , MENUP_X+35 ) ;
_outtext( "
" ) ;
tim_buff[tim_cnt] = 0x00 ;
;
//
_settextposition( MENUP_Y+menu_cnt*2 , MENUP_X+35 )
_settextposition( MENUP_Y+2 , MENUP_X+35 ) ;
_outtext ( tim_buff ) ;
;
if ( menu_cnt == 0 ) {
param_data_disp ( 1 , MENU_OFF ) ;
param_data_disp ( menu_cnt , MENU_ON ) ;
tim_cnt = 0 ;
}
}
#pragma
page()
/****************************************************************
****
*
***
void
tim_back ( void )
**
*
*
GP-720 型 データ演算装置 日時データBSキー入力処理 *
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
*
void tim_back ( void )
{
if ( tim_cnt > 0 ) {
tim_cnt -- ;
_settextcolor ( GLIGHTYELLOW ) ;
_settextposition( MENUP_Y+2 , MENUP_X+35 )
_outtext( "
" ) ;
tim_buff[tim_cnt] = 0x00 ;
_settextposition( MENUP_Y+2 , MENUP_X+35 )
_outtext ( tim_buff ) ;
;
;
}
}
#pragma
page()
/****************************************************************
****
*
***
void
mon_end_dat ( short , short )
**
*
*
GP-720 型 データ演算装置 月末判定処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.16,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
short
*
mon_end_dat ( short year_i , short mon_i )
{
short
matu = 0 ;
switch ( mon_i ) {
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 :
/* 月 */
matu = 31 ;
break ;
case
case
case
case
4 :
6 :
9 :
11 :
matu = 30 ;
break ;
case 2 :
/* 閏年チェック */
if ( ( year_i % 400 ) == 0 )
matu = 29 ;
else if ( ( year_i % 100 ) == 0 )
matu = 28 ;
else if ( ( year_i % 4 ) == 0 )
matu = 29 ;
else
ゃない */
matu = 28 ;
break ;
}
return ( matu ) ;
}
_
/* 閏年 */
/* 閏年じゃない */
/* 閏年 */
/* 閏年じ
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " ペンプロッタ 画面処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
ペンプロッタ 画面処理
*
*
*
*
*
*
Module Name
: GP_PPLOT.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Feb. 24, 1998
*
*
*
*
Revised Date : Mar. 16, 1998
*
*
*
*
Auther
: S. Yamashita
**
*
***
*
****
*************************************************************************/
/*********************************************************************
****
*
***
*
**
Ver 1.00
*
*
新規作成
Feb. 24, 1998
*
*
Windows95 用 ハード・コピー処理 追加
Mar. 3, 1998
**
*
***
*
****
*********************************************************************/
#include
#include
"GP_720.H"
"GP_DATA.H"
#pragma
page()
/****************************************
***
*
**
画面 定数
**
*
***
****************************************/
/*-----*
#define
#define
ペンプロッタ画面 タイトル
TITLE_SAMPL
TITLE_MEAN
const
char
*-----*/
"サンプリング間隔=
"平均時間= 分"
.
秒"
*plot_message[21] =
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
"平均風速 U(m/s)"
} ,
"平均風向 θ(度)"
} ,
"平均垂直風速 W(m/s)"
} ,
"水平風速 標準偏差 σU(m/s)" } ,
"水平風向 標準偏差 σθ(度)"
} ,
"垂直風速 標準偏差 σW(m/s)" } ,
"X 成分風速 標準偏差 σX(m/s)" } ,
"Y 成分風速 標準偏差 σY(m/s)" } ,
"X 成分風速 平均値 X(m/s)"
} ,
"Y 成分風速 平均値 Y(m/s)"
} ,
"水平風速 乱流強度 σU/U"
} ,
"X 成分風速 乱流強度 σX/X" } ,
"Y 成分風速 乱流強度 σY/Y" } ,
"W 成分風速 乱流強度 σW/W" } ,
"平均温度 T(℃)"
} ,
"瞬間 X 成分風速 X(m/s)"
} ,
{
{
{
{
{
}
FUNC_FORM fnc_pmkey[10] =
//
{
FUNC_FORM fnc_pskey[7] =
ファンクション・キ-情報 演算値(通常)
,
,
,
,
,
,
,
,
,
,
"U"
"θ"
"W"
"σU"
"σθ"
"σW"
"σX"
"σY"
"T"
"戻る"
}
}
}
}
}
}
}
}
}
}
, //
, //
, //
, //
, //
, //
, //
, //
, //
,
,
,
,
,
,
,
0
0
0
0
0
0
0
,
,
,
,
,
,
,
"X"
} , //
"Y"
} , //
"σU/U" } ,
"σX/X" } ,
"σY/Y" } ,
"σW/W" } ,
"戻る" }
,
,
,
,
,
,
,
0
0
0
0
0
0
0
,
,
,
,
,
,
,
"X"
"Y"
"W"
"U"
"V"
"T"
"戻る"
}
}
}
}
}
}
}
, //
, //
, //
, //
, //
, //
;
#pragma
page()
/****************************************************************
****
*
***
void draw_penplot( void )
*
**
*
*
ペンプロッタ画面 描画処理
*
*
*
*
*
*
Version
1.00
*
*
Created Date Feb.24,1998
**
*
Revised Date Mar.16,1998
***
*
****
****************************************************************/
draw_penplot( void )
{
FUNC_FORM *ptr
short
;
i
F12
F 1
F 2
//
//
//
//
//
F 3
F 4
F 5
F 6
F12
F 1
F 2
F 3
F 4
F 5
F 6
//
F12
ファンクション・キ-情報 瞬間値
{ 1
{ 2
{ 3
{ 4
{ 5
{ 6
{ 12
void
F 1
F 2
F 3
F 4
F 5
F 6
F 7
F 8
F 9
//
;
//
{
}
0
0
0
0
0
0
0
0
0
0
ファンクション・キ-情報 演算値(Shift)
{ 1
{ 2
{ 3
{ 4
{ 5
{ 6
{ 12
FUNC_FORM fnc_pikey[7] =
,
,
,
,
,
,
,
,
,
,
;
//
{
}
} ,
} ,
} ,
} ,
}
;
{ 1
{ 2
{ 3
{ 4
{ 5
{ 6
{ 7
{ 8
{ 9
{ 12
}
"瞬間 Y 成分風速 Y(m/s)"
"瞬間 W 成分風速 W(m/s)"
"瞬間水平風速 U(m/s)"
"瞬間風速 V(m/s)"
"瞬間温度 T(℃)"
;
_clearscreen( _GCLEARSCREEN )
;
ptr = print_flag ? fnc_pmkey : fnc_pikey
draw_function( ptr , TRUE ) ;
for ( i = 0 ; i < 3 ; i++ )
//
;
画面消去
{
draw_plotgraph( i )
;
}
}
#pragma
page()
/****************************************************************
****
*
***
short draw_plotdata( void )
*
**
*
*
ペンプロッタ・データ 描画処理
*
*
*
*
*
*
Return Value
*
*
FALSE : ペンプロッタ継続
*
*
TRUE :
終了
*
*
*
*
Version
1.00
*
*
Created Date Feb.24,1998
**
*
Revised Date Mar.14,1998
***
*
****
****************************************************************/
short
draw_plotdata( void )
{
short
i , tx , tw , ret
;
if ( print_flag )
{
ret = creat_plotmdata()
}
else
{
ret = creat_plotidata()
}
;
//
描画データ(演算値) 作成
;
//
描画データ(瞬間値) 作成
for ( i = 0 ; i < 600 ; i++ )
{
if ( data_plota[i].dt[0] != SPACE )
{
_setcolor( GBRIGHTWHITE ) ;
_moveto( i + 36 , 146 ) ;
_lineto( i + 36 , 156 ) ;
_moveto( i + 36 , 286 ) ;
_lineto( i + 36 , 296 ) ;
_moveto( i + 36 , 426 ) ;
_lineto( i + 36 , 436 ) ;
_setfont( "t'Tms Rmn'h10w5b" ) ;
tw = _getgtextextent( data_plota[i].dt )
if ( i != 599 )
{
tw /= 2 ;
}
tx = i + 36 - tw ;
_moveto ( tx , 445 ) ;
_outgtext( data_plota[i].dt ) ;
;
}
if ( data_plota[i].x >= 0 )
{
_setcolor( color_pena ) ;
_moveto( data_plota[i].x + 36 , 155 - data_plota[i].y1 )
_lineto( i + 36 , 156 - data_plota[i].y2 ) ;
}
if ( data_plotb[i].x >= 0 )
{
_setcolor( color_penb ) ;
_moveto( data_plotb[i].x + 36 , 295 - data_plotb[i].y1 )
_lineto( i + 36 , 296 - data_plotb[i].y2 ) ;
;
;
}
if ( data_plotc[i].x >= 0 )
{
_setcolor( color_penc ) ;
_moveto( data_plotc[i].x + 36 , 435 - data_plotc[i].y1 )
_lineto( i + 36 , 436 - data_plotc[i].y2 ) ;
}
}
return( ret )
;
}
#pragma
page()
/****************************************************************
****
*
***
void draw_plotarea( void )
*
**
*
*
ペンプロッタ画面 データ・エリア 消去処理
*
*
*
*
*
*
Version
1.00
*
*
Created Date Feb.27,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
draw_plotarea( void )
{
short
i
;
_setcolor( GBLACK ) ;
_rectangle( _GFILLINTERIOR , 36 , 36 , 635 , 155 ) ;
_rectangle( _GFILLINTERIOR , 36 , 176 , 635 , 295 ) ;
_rectangle( _GFILLINTERIOR , 36 , 316 , 635 , 435 ) ;
_rectangle( _GFILLINTERIOR , 10 , 445 , 639 , 455 )
for ( i = 0 ; i < 3 ; i++ )
{
draw_plotscale( i )
}
;
;
}
#pragma
page()
/****************************************************************
****
*
***
void draw_plotgraph( short no )
*
**
*
*
ペンプロッタ グラグ枠 描画処理
*
*
*
*
*
*
Parameter
*
*
short no : 描画データ番号
*
*
0 : 上段
*
*
1 : 中段
*
*
2 : 下段
*
*
*
*
Version
1.00
*
*
Created Date Feb.24,1998
**
*
Revised Date Mar.16,1998
***
*
****
****************************************************************/
void
draw_plotgraph( short
no )
{
double
short
m , n , wid , upp ;
i , y , tx , gy ;
;
char
str[4]
;
y = no * 140 + 35
;
_setcolor( GBRIGHTWHITE ) ;
_rectangle( _GBORDER , 34 , y - 1 , 637 , y + 122 )
_rectangle( _GBORDER , 35 , y , 636 , y + 121 ) ;
;
str[1] = ( char )NULL ;
if ( no == 0 )
{
str[0] = 'A' ;
}
else if ( no == 1 )
{
str[0] = 'B' ;
}
else
{
str[0] = 'C' ;
}
_setcolor( GBRIGHTWHITE ) ;
_setfont( "t'preview'h12w8b" )
_moveto( 0 , y + 44 ) ;
_outgtext( str ) ;
;
upp = inf_range[plot_mode].max ;
wid = upp - inf_range[plot_mode].min ;
if ( wid == 540.0 ¦¦ wid == 30.0 ¦¦ wid == 6.0 ¦¦ wid == 3.0 )
{
n = 6.0 ;
}
else if ( wid == 20.0 ¦¦ wid == 40.0 ¦¦ wid == 8.0 ¦¦ wid == 4.0 ¦¦ wid == 2.0 )
{
n = 4.0 ;
}
else
{
n = 5.0 ;
}
m = wid / n ;
_setcolor( GBRIGHTWHITE ) ;
_setfont( "t'Tms Rmn'h10w5b" )
;
for ( i = 0 ; i <= ( short )n ; i++ )
{
sprintf( str , "%.1f" , upp ) ;
tx = 33 - _getgtextextent( str )
gy = y + 120 / ( short )n * i ;
_moveto ( tx , gy - 3 ) ;
_outgtext( str ) ;
upp -= m
;
;
}
draw_plotscale( no )
;
}
#pragma
page()
/****************************************************************
****
*
***
void draw_plotscale( short no )
*
**
*
*
ペンプロッタ グラグ・メモリ 描画処理
*
*
*
*
*
*
Parameter
*
*
short no : 描画データ番号
*
*
0 : 上段
*
*
1 : 中段
*
*
2 : 下段
*
*
*
*
Version
1.00
*
*
Created Date Feb.27,1998
**
*
Revised Date Mar.16,1998
***
*
****
****************************************************************/
void
draw_plotscale( short
no )
{
short
i , y , n , wid , gy , upp
y = no * 140 + 35
;
;
upp = ( short )inf_range[plot_mode].max ;
wid = upp - ( short )inf_range[plot_mode].min ;
if ( wid == 540 ¦¦ wid == 30 ¦¦ wid == 6 ¦¦ wid == 3 )
{
n = 6 ;
}
else if ( wid == 20 ¦¦ wid == 40 ¦¦ wid == 8 ¦¦ wid == 4 ¦¦ wid == 2 )
{
n = 4 ;
}
else
{
n = 5 ;
}
_setcolor( GBRIGHTWHITE ) ;
_setlinestyle( 0xf0f0 ) ;
//
点線
for ( i = 0 ; i <= n ; i++ )
{
if ( i > 0 && i < n )
{
gy = y + 120 / n * i ;
_moveto( 36 , gy ) ;
_lineto( 635 , gy ) ;
}
}
_setlinestyle( 0xffff )
;
//
実線
}
#pragma
page()
/****************************************************************
****
*
***
short creat_plotmdata( void )
*
**
*
*
ペンプロッタ・データ(演算値) 作成処理
*
*
*
*
*
*
Return Value
*
*
FALSE : ペンプロッタ継続
*
*
TRUE :
終了
*
*
*
*
Version
1.00
*
*
Created Date Feb.24,1998
**
*
Revised Date Mar. 9,1998
***
*
****
****************************************************************/
short
creat_plotmdata( void )
{
size_t
short
short
char
n1 , n2 ;
i , ox ;
s = 0 , c = 0 , ret = FALSE
str[6] = "
" ;
;
for ( i = 0 ; i < 600 ; i++ )
{
data_plota[i].x = -1 ;
strcpy( data_plota[i].dt , "
data_plotb[i].x = -1 ;
strcpy( data_plotb[i].dt , "
data_plotc[i].x = -1 ;
strcpy( data_plotc[i].dt , "
}
plot_old = plot_ptr
/
_
" )
;
/
_
" )
;
/
_
" )
;
;
while ( c < 600 )
{
if ( plot_fp == NULL )
{
plot_sample = open_mfile()
}
;
//
演算値データ 読み込み
n1 = ( size_t )( 60 / plot_sample ) ;
//
データ・サイズ(1 時間)
n2 = fread( ( char * )buff_mfile , SIZE_CFILE , n1 , plot_fp ) ;
plot_ptr += ( long )n2
;
if ( n2 != 0 )
{
creat_plotmgraph( &c , &ox , n2 ) ;
//
ペンプロッタ・グラフ・データ(演算値) 作成処理
if ( s == 0 )
{
memcpy( str , buff_mfile[0].smpl , 5 ) ;
disp_plotcycle( atof( str ) , plot_sample ) ;
//
サンプリング、平均時間 描画処理
s++ ;
draw_plotarea()
;
}
}
if ( n1 != n2 )
{
ret = TRUE
break ;
}
;
}
if ( feof( plot_fp ) )
{
ret = TRUE ;
}
return( ret )
;
}
#pragma
page()
/****************************************************************
****
*
***
short creat_plotidata( void )
*
**
*
*
ペンプロッタ・データ(瞬間値) 作成処理
*
*
*
*
*
*
Return Value
*
*
FALSE : ペンプロッタ継続
*
*
TRUE :
終了
*
*
*
*
Version
1.00
*
*
Created Date Feb.26,1998
**
*
Revised Date Mar.14,1998
***
*
****
****************************************************************/
short
creat_plotidata( void )
{
size_t
short
char
n2 ;
i , s = 0 , c = 0 , ret = FALSE
str[6] = "
" ;
for ( i = 0 ; i < 600 ; i++ )
{
data_plota[i].x = -1 ;
strcpy( data_plota[i].dt , "
data_plotb[i].x = -1 ;
strcpy( data_plotb[i].dt , "
data_plotc[i].x = -1 ;
strcpy( data_plotc[i].dt , "
}
plot_old = plot_ptr
;
:
:
" )
;
:
:
" )
;
:
:
" )
;
;
while ( c < 600 && ret == FALSE )
{
if ( plot_fp == NULL )
{
open_ifile()
}
n2 = fread( ( char
;
//
演算値データ 読み込み
* )buff_ifile , SIZE_SFILE , 300 , plot_fp )
plot_ptr += ( long )n2
;
;
if ( n2 != 0 )
{
creat_plotigraph( n2 , &c )
;
if ( s == 0 )
{
memcpy( str , buff_ifile[0].smpl , 5 ) ;
disp_plotcycle( atof( str ) , 0 ) ;
//
サンプリング、平均時間 描画処理
s++ ;
draw_plotarea()
;
}
}
if ( n2 != 300 )
{
ret = TRUE
break ;
}
;
}
if ( feof( plot_fp ) )
{
ret = TRUE ;
}
return( ret )
;
}
#pragma
page()
/********************************************************************
****
*
***
void creat_plotmgraph( short *c , short *ot
*
**
, size_t n )
*
*
*
*
ペンプロッタ・グラフ・データ(演算値) 作成処理
*
*
*
*
*
*
Parameter
*
*
short
*c : X 座標 ポインタ
*
*
short
*ot : 前日付/時刻 表示位置 ポインタ
*
*
size_t n
: 読み込みデータ数
*
*
*
*
Version
1.00
*
*
Created Date Feb.26,1998
**
*
Revised Date Mar. 9,1998
***
*
****
********************************************************************/
void
creat_plotmgraph( short
*c , short
*ot , size_t
n )
{
double
short
da , db , dc , upp , low ;
f , fd , fm , i , y , m = 0
upp = inf_range[plot_mode].max
low = inf_range[plot_mode].min
;
;
;
for ( i = 0 ; i < ( short )n ; i++ , ( *c )++ )
{
fm = ( short )( buff_mfile[i].minute[0] - '0' ) * 10
+ ( short )( buff_mfile[i].minute[1] - '0' )
get_filemdata( i , &da , &db , &dc , upp , low )
;
;
//
風速計データ 抽出
if ( da <= upp )
{
y = ( short )( ( da - low ) / ( upp - low ) * 120.0 ) ;
//
座標 変換
data_plota[*c].y2 = y
;
if ( *c == 0 )
{
f = 0 ;
}
else
{
f = data_plota[*c-1].x != -1
}
?
1 : 0
;
if ( f )
{
data_plota[*c].x = *c - 1
;
data_plota[*c].y1 = data_plota[*c-1].y2
;
}
else
{
data_plota[*c].y1 = y
data_plota[*c].x = *c
;
;
}
}
if ( db <= upp )
{
y = ( short )( ( db - low ) / ( upp - low ) * 120.0 ) ;
//
座標 変換
data_plotb[*c].y2 = y
;
if ( *c == 0 )
{
f = 0 ;
}
else
{
f = data_plotb[*c-1].x != -1
}
?
1 : 0
;
if ( f )
{
data_plotb[*c].x = *c - 1 ;
data_plotb[*c].y1 = data_plotb[*c-1].y2
;
}
else
{
data_plotb[*c].y1 = y
data_plotb[*c].x = *c
;
;
}
}
if ( dc <= upp )
{
y = ( short )( ( dc - low ) / ( upp - low ) * 120.0 ) ;
//
座標 変換
data_plotc[*c].y2 = y
;
if ( *c == 0 )
{
f = 0 ;
}
else
{
f = data_plotc[*c-1].x != -1
}
?
1 : 0
;
if ( f )
{
data_plotc[*c].x = *c - 1 ;
data_plotc[*c].y1 = data_plotc[*c-1].y2
;
}
else
{
data_plotc[*c].y1 = y
data_plotc[*c].x = *c
;
;
}
}
if ( *c == 0 ¦¦ *c == 599 ¦¦ ( fm == 0 && *c - *ot > 45 ) )
{
fd = ( short )( buff_mfile[i].month[0] - '0' ) * 10
+ ( short )( buff_mfile[i].month[1] - '0' )
data_plota[*c].dt[0] = ( char )( fd / 10 + '0' ) ;
data_plota[*c].dt[1] = ( char )( fd % 10 + '0' ) ;
fd = ( short )( buff_mfile[i].day[0] - '0' ) * 10
+ ( short )( buff_mfile[i].day[1] - '0' )
data_plota[*c].dt[3] = ( char )( fd / 10 + '0' ) ;
data_plota[*c].dt[4] = ( char )( fd % 10 + '0' ) ;
fd = ( short )( buff_mfile[i].hour[0] - '0' ) * 10
+ ( short )( buff_mfile[i].hour[1] - '0' )
data_plota[*c].dt[6] = ( char )( fd / 10 + '0' ) ;
data_plota[*c].dt[7] = ( char )( fd % 10 + '0' ) ;
*ot = *c
;
}
}
}
#pragma
page()
/********************************************************************
****
*
***
void creat_plotigraph( size_t n , short *c )
*
**
*
*
ペンプロッタ・グラフ・データ(瞬間値) 作成処理
*
*
*
*
*
*
Parameter
*
*
size_t n : 読み込みデータ数
*
*
short *c : X 座標 ポインタ
*
*
*
*
Version
1.00
*
*
Created Date Feb.26,1998
**
*
Revised Date Mar.14,1998
***
*
****
;
;
;
********************************************************************/
void
creat_plotigraph( size_t
n , short
*c )
{
double
short
da , db , dc , upp , low ;
f , fd , i , y , m = 0 ;
upp = inf_range[plot_mode].max
low = inf_range[plot_mode].min
;
;
for ( i = 0 ; i < ( short )n ; i++ , ( *c )++ )
{
get_fileidata( i , &da , &db , &dc , upp , low )
;
//
風速計データ 抽出
if ( da <= upp )
{
y = ( short )( ( da - low ) / ( upp - low ) * 120.0 ) ;
//
座標 変換
data_plota[*c].y2 = y
;
if ( *c == 0 )
{
f = 0 ;
}
else
{
f = data_plota[*c-1].x != -1
}
?
1 : 0
;
if ( f )
{
data_plota[*c].x = *c - 1
;
data_plota[*c].y1 = data_plota[*c-1].y2
;
}
else
{
data_plota[*c].y1 = y
data_plota[*c].x = *c
;
;
}
}
if ( db <= upp )
{
y = ( short )( ( db - low ) / ( upp - low ) * 120.0 ) ;
//
data_plotb[*c].y2 = y
;
if ( *c == 0 )
{
f = 0 ;
}
else
{
f = data_plotb[*c-1].x != -1
}
?
1 : 0
;
if ( f )
{
data_plotb[*c].x = *c - 1 ;
data_plotb[*c].y1 = data_plotb[*c-1].y2
}
else
{
data_plotb[*c].y1 = y
data_plotb[*c].x = *c
}
}
if ( dc <= upp )
;
;
;
座標 変換
{
y = ( short )( ( dc - low ) / ( upp - low ) * 120.0 ) ;
//
data_plotc[*c].y2 = y
座標 変換
;
if ( *c == 0 )
{
f = 0 ;
}
else
{
f = data_plotc[*c-1].x != -1
}
?
1 : 0
;
if ( f )
{
data_plotc[*c].x = *c - 1 ;
data_plotc[*c].y1 = data_plotc[*c-1].y2
;
}
else
{
data_plotc[*c].y1 = y
data_plotc[*c].x = *c
;
;
}
}
if ( *c % 100 == 0 ¦¦ *c == 599 )
{
fd = ( short )( buff_ifile[i].hour[0] - '0' ) * 10
+ ( short )( buff_ifile[i].hour[1] - '0' )
data_plota[*c].dt[0] = ( char )( fd / 10 + '0' ) ;
data_plota[*c].dt[1] = ( char )( fd % 10 + '0' ) ;
fd = ( short )( buff_ifile[i].minute[0] - '0' ) * 10
+ ( short )( buff_ifile[i].minute[1] - '0' )
data_plota[*c].dt[3] = ( char )( fd / 10 + '0' ) ;
data_plota[*c].dt[4] = ( char )( fd % 10 + '0' ) ;
fd = ( short )( buff_ifile[i].second[0] - '0' ) * 10
+ ( short )( buff_ifile[i].second[1] - '0' )
data_plota[*c].dt[6] = ( char )( fd / 10 + '0' ) ;
data_plota[*c].dt[7] = ( char )( fd % 10 + '0' ) ;
}
}
}
#pragma
page()
/********************************************************************
****
*
***
void get_filemdata( short no , double *da ,
*
**
double *db , double *dc )
*
*
*
*
風速計データ(演算値) 抽出処理
*
*
*
*
*
*
Parameter
*
*
short
no : データ番号
*
*
double *da : 風速計 Aデータ 格納ポインタ
*
*
double *db :
Bデータ 格納ポインタ
*
*
double *dc :
Cデータ 格納ポインタ
*
*
double upp : 最大値
*
*
double low : 最小値
*
*
*
*
Version
1.00
*
*
Created Date Feb.25,1998
**
*
Revised Date
. ,
***
*
****
********************************************************************/
void
{
get_filemdata( short
no , double
*da , double
*db ,
double
*dc , double
upp , double
low )
;
;
;
short
char
char
/*-----*
n ;
*pa , *pb , *pc
str[7] ;
;
文字列 抽出
*-----*/
switch ( plot_mode )
{
case 0 :
//
n = 5 ;
pa = buff_mfile[no].ua ;
pb = buff_mfile[no].ub ;
pc = buff_mfile[no].uc ;
break ;
case
case
case
case
case
case
case
case
case
1 :
//
n = 3 ;
pa = buff_mfile[no].da ;
pb = buff_mfile[no].db ;
pc = buff_mfile[no].dc ;
break ;
2 :
//
n = 6 ;
pa = buff_mfile[no].wa ;
pb = buff_mfile[no].wb ;
pc = buff_mfile[no].wc ;
break ;
3 :
//
n = 5 ;
pa = buff_mfile[no].sua ;
pb = buff_mfile[no].sub ;
pc = buff_mfile[no].suc ;
break ;
4 :
//
n = 5 ;
pa = buff_mfile[no].sda ;
pb = buff_mfile[no].sdb ;
pc = buff_mfile[no].sdc ;
break ;
5 :
//
n = 5 ;
pa = buff_mfile[no].swa ;
pb = buff_mfile[no].swb ;
pc = buff_mfile[no].swc ;
break ;
6 :
//
n = 5 ;
pa = buff_mfile[no].sxa ;
pb = buff_mfile[no].sxb ;
pc = buff_mfile[no].sxc ;
break ;
7 :
//
n = 5 ;
pa = buff_mfile[no].sya ;
pb = buff_mfile[no].syb ;
pc = buff_mfile[no].syc ;
break ;
8 :
//
n = 6 ;
pa = buff_mfile[no].xa ;
pb = buff_mfile[no].xb ;
pc = buff_mfile[no].xc ;
break ;
9 :
//
n = 6 ;
pa = buff_mfile[no].ya ;
平均風速 U(m/s)
//
//
//
風速計 A
風速計 B
風速計 C
平均風向 θ(゚)
//
//
//
風速計 A
風速計 B
風速計 C
平均垂直風速 W(m/s)
//
//
//
風速計 A
風速計 B
風速計 C
水平風速 標準偏差 σU(m/s)
//
//
//
風速計 A
風速計 B
風速計 C
水平風向 標準偏差 σθ(゚)
//
//
//
風速計 A
風速計 B
風速計 C
垂直風速 標準偏差 σW(m/s)
//
//
//
風速計 A
風速計 B
風速計 C
X 成分風速 標準偏差 σX(m/s)
//
//
//
風速計 A
風速計 B
風速計 C
Y 成分風速 標準偏差 σY(m/s)
//
//
//
風速計 A
風速計 B
風速計 C
X 成分風速 平均値 X(m/s)
//
//
//
風速計 A
風速計 B
風速計 C
Y 成分風速 平均値 Y(m/s)
//
風速計 A
pb = buff_mfile[no].yb
pc = buff_mfile[no].yc
break ;
;
;
case 10 :
//
n = 5 ;
pa = buff_mfile[no].suua
pb = buff_mfile[no].suub
pc = buff_mfile[no].suuc
break ;
case 11 :
//
n = 5 ;
pa = buff_mfile[no].sxxa
pb = buff_mfile[no].sxxb
pc = buff_mfile[no].sxxc
break ;
case 12 :
//
n = 5 ;
pa = buff_mfile[no].syya
pb = buff_mfile[no].syyb
pc = buff_mfile[no].syyc
break ;
case 13 :
//
n = 5 ;
pa = buff_mfile[no].swwa
pb = buff_mfile[no].swwb
pc = buff_mfile[no].swwc
break ;
case 14 :
//
n = 6 ;
pa = buff_mfile[no].ta ;
pb = buff_mfile[no].tb ;
pc = buff_mfile[no].tc ;
break ;
default :
break
//
//
風速計 B
風速計 C
水平風速 乱流強度 σU/U
;
;
;
//
//
//
風速計 A
風速計 B
風速計 C
X 成分風速 乱流強度 σX/X
;
;
;
//
//
//
風速計 A
風速計 B
風速計 C
Y 成分風速 乱流強度 σY/Y
;
;
;
//
//
//
風速計 A
風速計 B
風速計 C
W 成分風速 乱流強度 σW/W
;
;
;
//
//
//
風速計 A
風速計 B
風速計 C
平均温度 T(℃)
//
//
//
風速計 A
風速計 B
風速計 C
;
}
str[n] = ( char )NULL
;
memcpy( str , pa , n ) ;
//
if ( str[0] == '*' )
{
*da = 999.9 ;
}
else
{
*da = atof( str ) ; //
if ( *da < low )
{
*da = low ;
}
else if ( *da > upp )
{
*da = upp ;
}
}
風速計 A
memcpy( str , pb , n ) ;
//
if ( str[0] == '*' )
{
*db = 999.9 ;
}
else
{
*db = atof( str ) ; //
if ( *db < low )
{
*db = low ;
}
風速計 B
数値データ変換
数値データ変換
else if ( *db > upp )
{
*db = upp
;
}
}
memcpy( str , pc , n ) ;
//
if ( str[0] == '*' )
{
*dc = 999.9 ;
}
else
{
*dc = atof( str ) ; //
if ( *dc < low )
{
*dc = low ;
}
else if ( *dc > upp )
{
*dc = upp ;
}
}
風速計 C
数値データ変換
}
#pragma
page()
/********************************************************************
****
*
***
void get_fileidata( short no , double *da ,
*
**
double *db , double *dc )
*
*
*
*
風速計データ(瞬間値) 抽出処理
*
*
*
*
*
*
Parameter
*
*
short
no : データ番号
*
*
double *da : 風速計 Aデータ 格納ポインタ
*
*
double *db :
Bデータ 格納ポインタ
*
*
double *dc :
Cデータ 格納ポインタ
*
*
double upp : 最大値
*
*
double low : 最小値
*
*
*
*
Version
1.00
*
*
Created Date Feb.26,1998
**
*
Revised Date
. ,
***
*
****
********************************************************************/
void
get_fileidata( short
no , double
*da , double
*db ,
double
*dc , double
{
short
char
char
/*-----*
n ;
*pa , *pb , *pc
str[7] ;
;
文字列 抽出
*-----*/
switch ( plot_mode )
{
case 15 :
//
n = 6 ;
pa = buff_ifile[no].xa ;
pb = buff_ifile[no].xb ;
pc = buff_ifile[no].xc ;
break ;
case
16 :
//
n = 6 ;
pa = buff_ifile[no].ya ;
pb = buff_ifile[no].yb ;
pc = buff_ifile[no].yc ;
break ;
瞬間 X 成分風速 X(m/s)
//
//
//
風速計 A
風速計 B
風速計 C
瞬間 Y 成分風速 Y(m/s)
//
//
//
風速計 A
風速計 B
風速計 C
upp , double
low )
case
case
case
17 :
//
n = 6 ;
pa = buff_ifile[no].wa ;
pb = buff_ifile[no].wb ;
pc = buff_ifile[no].wc ;
break ;
18 :
//
n = 5 ;
pa = buff_ifile[no].ua ;
pb = buff_ifile[no].ub ;
pc = buff_ifile[no].uc ;
break ;
19 :
//
n = 5 ;
pa = buff_ifile[no].va ;
pb = buff_ifile[no].vb ;
pc = buff_ifile[no].vc ;
break ;
case 20 :
//
n = 6 ;
pa = buff_ifile[no].ta ;
pb = buff_ifile[no].tb ;
pc = buff_ifile[no].tc ;
break ;
default :
break
瞬間 W 成分風速 W(m/s)
//
//
//
風速計 A
風速計 B
風速計 C
瞬間 水平風速 U(m/s)
//
//
//
風速計 A
風速計 B
風速計 C
瞬間風速 V(m/s)
//
//
//
風速計 A
風速計 B
風速計 C
瞬間温度 T(℃)
//
//
//
風速計 A
風速計 B
風速計 C
;
}
str[n] = ( char )NULL
;
memcpy( str , pa , n ) ;
//
if ( str[0] == '*' )
{
*da = 999.9 ;
}
else
{
*da = atof( str ) ; //
if ( *da < low )
{
*da = low ;
}
else if ( *da > upp )
{
*da = upp ;
}
}
風速計 A
memcpy( str , pb , n ) ;
//
if ( str[0] == '*' )
{
*db = 999.9 ;
}
else
{
*db = atof( str ) ; //
if ( *db < low )
{
*db = low ;
}
else if ( *db > upp )
{
*db = upp ;
}
}
風速計 B
memcpy( str , pc , n ) ;
if ( str[0] == '*' )
{
*dc = 999.9 ;
風速計 C
//
数値データ変換
数値データ変換
}
else
{
*dc = atof( str ) ; //
if ( *dc < low )
{
*dc = low ;
}
else if ( *dc > upp )
{
*dc = upp ;
}
数値データ変換
}
}
#pragma
page()
/****************************************************************
****
*
***
void disp_plotcycle( double st , short mt )
*
**
*
*
サンプリング、平均時間 描画処理
*
*
*
*
*
*
Parameter
*
*
double st : サンプリング時間
*
*
short
mt : 平均時間
*
*
*
*
Version
1.00
*
*
Created Date Feb.26,1998
**
*
Revised Date Mar.16,1998
***
*
****
****************************************************************/
void
disp_plotcycle( double
st , short
mt )
{
char
str[26] , sdt[6]
disp_plottitle( mt )
/*-----*
;
;
ペンプロッタ画面タイトル 表示
サンプリング間隔 表示
*-----*/
sprintf( sdt , "%5.2f" , st ) ;
strcpy( str , TITLE_SAMPL ) ;
memcpy( &str[18] , sdt , 5 ) ;
_setcolor( GBRIGHTWHITE ) ;
_settextposition( 1 , mt == 0
_outtext( str ) ;
/*-----*
//
?
52 : 38 )
;
サンプリング間隔 表示
*-----*/
if ( mt != 0 )
{
sprintf( sdt , "%2d" , mt ) ;
strcpy( str , TITLE_MEAN ) ;
memcpy( &str[10] , sdt , 2 ) ;
_settextposition( 1 , 64 )
_outtext( str ) ;
;
}
}
#pragma
page()
/****************************************************************
****
*
***
void disp_plottitle( short mt )
*
**
*
*
ペンプロッタ画面 タイトル 表示処理
*
*
*
*
*
*
Parameter
*
*
short mt : 平均時間
*
*
*
*
Version
1.00
*
*
Created Date Feb.24,1998
**
*
Revised Date Mar.16,1998
***
*
****
****************************************************************/
void
disp_plottitle( short
mt )
{
short
char
char
tx ;
*ptr ;
str[9] ;
ptr = print_flag
?
( char
* )&buff_mfile[0] : ( char
_setcolor( GBRIGHTWHITE ) ;
strcpy( str , "
年" ) ;
str[0] = *ptr++ ;
str[1] = *ptr++ ;
str[2] = *ptr++ ;
str[3] = *ptr++ ;
_settextposition( 1 , 1 ) ;
_outtext( str ) ;
if ( mt == 0 )
{
strcpy( str , "
str[0] = *ptr++
str[1] = *ptr++
str[4] = *ptr++
str[5] = *ptr ;
_outtext( str )
}
月
;
;
;
日" )
;
_outtext( "
" ) ;
_outtext( plot_message[plot_mode] )
switch
{
case
case
case
case
case
case
case
case
case
case
case
case
case
0 :
2 :
3 :
5 :
6 :
7 :
8 :
9 :
15 :
16 :
17 :
18 :
19 :
strcpy( str , "(m/s)" )
break ;
strcpy( str , "(゚)" )
break ;
;
10
11
12
13
:
:
:
:
strcpy( str , " " )
break ;
;
;
case 14 :
case 20 :
strcpy( str , "(゚C)" )
break ;
}
;
( plot_mode )
case 1 :
case 4 :
case
case
case
case
;
;
* )&buff_ifile
;
_setcolor( GBRIGHTWHITE ) ;
_setfont( "t'preview'h12w8b" ) ;
tx = 40 - _getgtextextent( str ) ;
_moveto ( tx , 17 ) ;
_outgtext( str ) ;
}
_
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " ペンプロッタ表示/印刷 メイン処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
ペンプロッタ表示/印刷 メイン処理
*
*
*
*
*
*
Module Name
: GP_PPMAN.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Feb. 23, 1998
*
*
*
*
Revised Date : Mar. 16, 1998
*
*
*
*
Auther
: S. Yamashita
**
*
***
*
****
*************************************************************************/
/*********************************************************************
****
*
***
*
**
Ver 1.00
*
*
新規作成
Feb. 23, 1998
*
*
Windows95 用 ハード・コピー処理 追加
Mar. 3, 1998
**
*
***
*
****
*********************************************************************/
#include
#include
"GP_720.H"
"GP_DATA.H"
#pragma
page()
/****************************************
***
*
**
画面 定数
**
*
***
****************************************/
#define
#define
#define
#define
PLOT_TITLE "ペンプロッタ表示・印刷"
FDSP_TITLE "収録データ表示"
PDAT_TITLE "収録データ印刷"
PDAT_MESS "表示項目(1:瞬間値 2:平均値)? "
FUNC_FORM fnc_pkey[3] =
//
{
ファンクション・キ-情報
{ 1 , 0 , "色指定" } ,
{ 2 , 0 , "レンジ" } ,
{ 12 , 0 , "戻る"
} //
}
FUNC_FORM fnc_fkey =
;
//
{
ファンクション・キ-情報
12 , 0 , "戻る"
}
extern
const
short
//
//
F12
//
F12
;
table_month[2][12]
;
#pragma
page()
/****************************************************************
****
*
***
void penplot_main( void )
*
**
*
*
ペンプロッタ表示/印刷 メイン処理
*
*
*
*
*
*
Version
1.00
*
*
Created Date Feb.23,1998
**
*
Revised Date Mar.14,1998
***
*
****
****************************************************************/
void
penplot_main( void )
{
short
key , rd , ret , rf
plot_fp = NULL
;
;
//
while ( FOREVER )
{
system_flag = SYS_PPRT
ペンプロッタ・ファイル ポインタ
;
if ( menu_plot() )
//
ペンプロッタ表示/印刷 メニュー
{
plot_ptr = plot_old = 0L ;
rf = TRUE
;
system_flag = SYS_PLOT
;
F 1
F 2
plot_mode = print_flag
?
0 : 15
;
while ( FOREVER )
{
if ( rf )
{
draw_penplot()
rf = FALSE ;
rd = TRUE ;
;
}
if ( rd )
{
ret = draw_plotdata()
rd = FALSE
;
key = check_keybrd()
;
;
//
ペンプロッタ・データ 描画
//
キー・ボード 入力チェック
}
if ( key == KEY_F12 )
{
if ( plot_fp != NULL )
{
fclose( plot_fp ) ;
plot_fp = NULL ;
}
break ;
}
else if ( key == KEY_ENT )
{
if ( ret == TRUE )
{
fseek( plot_fp , 0L , SEEK_SET )
ファイル先頭 移動
plot_ptr = 0L
}
rd = TRUE
;
}
if ( change_plotitem( key ) )
{
rf = TRUE ;
}
}
}
else
{
break
;
}
}
}
#pragma
page()
/****************************************************************
****
*
***
short menu_plot( void )
*
**
*
*
ペンプロッタ表示/印刷 メニュー処理
*
*
*
*
*
*
Return Value
*
*
TRUE : キー入力終了
*
*
FALSE :
中止
*
*
*
*
Version
1.00
*
*
Created Date Feb.23,1998
**
*
Revised Date Mar.13,1998
***
*
****
****************************************************************/
;
;
//
short
menu_plot( void )
{
short
char
key , f = -1 , flag = TRUE , ret = FALSE
str[2] = " "
;
print_flag = -1
;
//
;
選択ファイルなし
while ( FOREVER )
{
if ( flag )
{
disp_plotmenu( TRUE , f , str )
flag = FALSE
;
//
ファイル選択メニュー 表示
;
}
if ( ( key = check_keybrd() ) != KEY_NONE )
//
キー入力あり ?
{
if ( key == KEY_F12 )
{
//
中止
f = -1 ;
break ;
}
else if ( key == KEY_ENT )
{
//
Enter
if ( f != -1 )
{
//
キー入力正常
strcpy( disp_fname , table_fname[f] ) ; //
ret = TRUE ;
break
;
}
}
else
{
flag = select_datafile( &f , key , str ) ;
//
収録ファイル 選択
}
}
}
return( ret )
;
}
#pragma
page()
/****************************************************************
****
*
***
short select_datafile( short *no ,
*
**
short key , char *str )
*
*
*
*
収録ファイル 選択処理
*
*
*
*
*
*
Parameter
*
*
short *no : ファイル選択番号 ポインタ
*
*
short key : キー・コード
*
*
char
*str : ファイル種別 ポインタ
*
*
Return Value
*
*
TRUE : 画面変更 あり
*
*
FALSE :
なし
*
*
*
*
Version
1.00
*
*
Created Date Mar. 6,1998
**
*
Revised Date Mar.13,1998
***
*
****
****************************************************************/
short
{
select_datafile( short
*no , short
key , char
*str )
選択ファイル名
short
old , flag = FALSE , ret = FALSE
old = *no
;
;
switch ( key )
{
case KEY_F1 :
//
色指定
if ( system_flag == SYS_PPRT )
{
menu_pencolor() ;
//
ret = TRUE
}
break
;
;
case KEY_F2 :
//
レンジ設定
if ( system_flag == SYS_PPRT )
{
menu_range() ;
//
ret = TRUE
}
break
プロット色設定
レンジ設定
;
;
case KEY_PUP :
scroll_filelist( FALSE , no )
break ;
case KEY_PDOWN :
scroll_filelist( TRUE , no )
break ;
;
;
case KEY_DOWN :
if ( *no < num_datafile - 1 )
{
( *no )++ ;
flag = TRUE ;
}
break ;
case KEY_UP :
if ( *no > 0 )
{
( *no )-- ;
flag = TRUE ;
}
break ;
default :
if ( '1' <= key && key <= '2' )
{
//
数値キー
*str = ( char )key ;
*no = 0 ;
print_flag = key - '1' ;
disp_plotmenu( FALSE , *no , str )
}
break
;
}
if ( flag )
{
select_filelist( SELECT , *no )
select_filelist( RELEASE , old )
}
return( ret )
;
;
;
}
#pragma
page()
/****************************************************************
****
*
***
void disp_plotmenu( short mode ,
*
;
//
ファイル選択メニュー 表示
**
short no , char *buff )
*
*
*
*
収録ファイル 選択メニュー 表示処理
*
*
*
*
*
*
Parameter
*
*
short mode : 表示モード
*
*
TRUE : タイトル/データ表示
*
*
FALSE : データ表示
*
*
short no
: ファイル選択番号 ポインタ
*
*
char
*buff : ファイル種別 ポインタ
*
*
*
*
Version
1.00
*
*
Created Date Feb.23,1998
**
*
Revised Date Mar.13,1998
***
*
****
****************************************************************/
void
disp_plotmenu( short
mode , short
no , char
*buff )
{
char
FUNC_FORM *ptr
str[24]
;
;
if ( mode )
{
_clearscreen( _GCLEARSCREEN )
;
//
画面消去
if ( system_flag == SYS_PPRT )
{
strcpy( str , PLOT_TITLE ) ;
}
else if ( system_flag == SYS_DISP )
{
strcpy( str , FDSP_TITLE ) ;
}
else
{
strcpy( str , PDAT_TITLE ) ;
}
_settextcolor( GGREEN ) ;
_settextposition( 2 , 3 ) ;
_outtext( str ) ;
ptr = system_flag == SYS_PPRT ?
draw_function( ptr , TRUE ) ;
*buff = SPACE
fnc_pkey : &fnc_fkey
;
}
_settextposition( 5 , 5 ) ;
_settextcolor( GLIGHTYELLOW )
_outtext( PDAT_MESS ) ;
_outtext( buff ) ;
if ( *buff != SPACE )
{
search_datafile()
disp_filelist( no )
;
; //
;
収録ファイル名 検索
//
ファイル・リスト 表示
}
}
#pragma
page()
/********************************************************************
****
*
***
void scroll_filelist( short mode , short *no )
*
**
*
*
ファイル一覧 スクロール処理
*
*
*
;
*
*
*
Parameter
*
*
short mode : スクロール方向
*
*
TRUE : 上スクロール
*
*
FALSE : 下スクロール
*
*
short *no : 表示項目番号 ポインタ
*
*
*
*
Version
1.00
*
*
Created Date Mar. 9,1998
**
*
Revised Date Nar.13,1998
***
*
****
********************************************************************/
void
scroll_filelist( short
mode , short
*no )
{
short
n , i
;
if ( num_datafile > 14 )
{
n = mode ? 8 : -8
top_datafile += n
;
;
//
スクロール数セット
//
先頭番号 変更
if ( top_datafile < 0 )
{
n -= top_datafile ;
top_datafile = 0 ;
}
else if ( top_datafile + 14 > num_datafile )
{
i = top_datafile + 14 - num_datafile
n -= i ;
top_datafile -= i
;
;
}
*no += n
;
disp_filelist( *no )
;
//
}
}
#pragma
page()
/****************************************************************
****
*
***
void disp_filelist( short no )
*
**
*
*
収録ファイル 一覧表示処理
*
*
*
*
*
*
Parameter
*
*
short no : 表示項目番号
*
*
*
*
Version
1.00
*
*
Created Date Mar. 9,1998
**
*
Revised Date Mar.13,1998
***
*
****
****************************************************************/
void
disp_filelist( short
no )
{
short
i , n
;
_settextwindow( 7 , 1 , 20 , 80 ) ;
_scrolltextwindow( 14 ) ;
//
n = num_datafile > 14
?
14 行スクロール
14 : num_datafile
;
ファイル一覧表示
_settextcolor( GBRIGHTWHITE )
;
for ( i = top_datafile ; i < n ; i++ )
{
if ( i == no )
{
select_filelist( SELECT , i ) ;
}
else
{
select_filelist( RELEASE , i ) ;
}
}
_settextwindow( 1 , 1 , 25 , 80 )
;
}
#pragma
page()
/********************************************************************
****
*
***
void select_filelist( short flag , short no )
*
**
*
*
収録ファイル 選択項目 表示処理
*
*
*
*
*
*
Parameter
*
*
short flag : 表示色フラグ
*
*
RELEASE : 非選択表示
*
*
SELECT : 選択表示
*
*
short no
: 選択項目番号
*
*
*
*
Version
1.00
*
*
Created Date Mar. 9,1998
**
*
Revised Date Mar.13,1998
***
*
****
********************************************************************/
void
select_filelist( short
flag , short
no )
{
short
n
;
_settextwindow( 7 , 1 , 20 , 80 )
;
if ( flag == SELECT )
{
_settextcolor( GLIGHTYELLOW )
;
if ( no - top_datafile >= 14 )
{
_scrolltextwindow( 1 )
top_datafile++
;
//
選択表示
//
1 行スクロール
//
1 行スクロール
//
非選択表示
;
}
else if ( no - top_datafile < 0 )
{
_scrolltextwindow( -1 )
top_datafile--
;
;
}
}
else
{
_settextcolor( GBRIGHTWHITE )
}
n = no - top_datafile
;
_settextposition( n + 1 , 10 )
_outtext( table_fname[no] ) ;
;
_settextwindow( 1 , 1 , 25 , 80 )
;
;
}
#pragma
page()
/********************************************************************
****
*
***
short change_plotitem( short key )
*
**
*
*
ペンプロッタ表示/印刷メニュー 表示項目 変更処理
*
*
*
*
*
*
Parameter
*
*
short key : 入力キー・コード
*
*
Return Value
*
*
TRUE : 表示項目 変更あり
*
*
FALSE :
なし
*
*
*
*
Version
1.00
*
*
Created Date Feb.26,1998
**
*
Revised Date Mar.16,1998
***
*
****
********************************************************************/
short
change_plotitem( short
key )
{
long
short
off ;
old , ret = FALSE
old = plot_mode
;
;
switch ( key )
{
case KEY_F1 :
plot_mode = print_flag
break ;
?
0 : 15
;
case KEY_F2 :
plot_mode = print_flag
break ;
?
1 : 16
;
case KEY_F3 :
plot_mode = print_flag
break ;
?
2 : 17
;
case KEY_F4 :
plot_mode = print_flag
break ;
?
3 : 18
;
case KEY_F5 :
plot_mode = print_flag
break ;
?
4 : 19
;
case KEY_F6 :
plot_mode = print_flag
break ;
?
5 : 20
;
case KEY_F7 :
if ( print_flag )
{
plot_mode = 6
}
break ;
case KEY_F8 :
if ( print_flag )
{
plot_mode = 7
}
break ;
case KEY_F9 :
if ( print_flag )
;
;
{
plot_mode = 14
}
break
;
case KEY_SF1 :
if ( print_flag )
{
plot_mode = 8
}
break ;
case KEY_SF2 :
if ( print_flag )
{
plot_mode = 9
}
break ;
case KEY_SF3 :
if ( print_flag )
{
plot_mode = 10
}
break ;
case KEY_SF4 :
if ( print_flag )
{
plot_mode = 11
}
break ;
case KEY_SF5 :
if ( print_flag )
{
plot_mode = 12
}
break ;
case KEY_SF6 :
if ( print_flag )
{
plot_mode = 13
}
break ;
default :
break
;
;
;
;
;
;
;
;
}
if ( old != plot_mode )
{
off = print_flag
?
plot_old * ( long )SIZE_CFILE
: plot_old * ( long )SIZE_SFILE
fseek( plot_fp , off , SEEK_SET )
plot_ptr = plot_old
ret = TRUE
;
;
;
}
return( ret )
;
}
#pragma
page()
/****************************************************************
****
*
***
void search_datafile( void )
*
**
*
*
収録ファイル 検索処理
*
*
*
*
*
//
ファイル先頭 移動
;
*
Version
1.00
*
*
Created Date Mar. 9,1998
**
*
Revised Date Mar.13,1998
***
*
****
****************************************************************/
void
search_datafile( void )
{
short
struct
char
flag ;
find_t
buff ;
fname[13] = " :" ;
num_datafile = top_datafile = 0
change_directry( print_flag )
fname[0] = DRV_HDD2 ;
;
;
//
ファイル数 初期化
//
ディレクトリ変更 <GP_PPLOT.C>
if ( print_flag )
{
sprintf( &fname[2] , "*%s" , FILE_CAL ) ;
}
else
{
sprintf( &fname[2] , "*%s" , FILE_SMPL ) ;
}
flag = _dos_findfirst( fname , _A_NORMAL , &buff )
//
;
収録ファイル検索
while ( flag == 0 )
{
table_fname[num_datafile][0] = DRV_HDD2 ;
table_fname[num_datafile][1] = ':' ;
strcpy( &table_fname[num_datafile][2] , buff.name )
num_datafile++ ;
flag = _dos_findnext( &buff )
;
//
;
次ファイル 検索
}
}
_
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " 収録データ 印刷処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
収録データ 印刷処理
*
*
*
*
*
*
Module Name
: GP_MAIN.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Feb. 23, 1998
*
*
*
*
Revised Date : Mar. 16, 1998
*
*
*
*
Auther
: S. Yamashita
**
*
***
*
****
*************************************************************************/
/*********************************************************************
****
*
***
*
**
Ver 1.00
*
*
新規作成
Feb. 23, 1998
**
*
***
*
****
*********************************************************************/
#include
#include
"GP_720.H"
"GP_DATA.H"
#pragma
page()
#pragma
optimize( "egl" , off )
/****************************************************************
****
*
***
WORD printer_init( void )
*
**
*
*
パラレル・プリンタ 初期設定処理
*
*
*
*
*
*
Return Value
*
*
プリンタ・ステータス
*
*
Bit7 on : Printer not busy
*
*
Bit6 on : Acknowledgment form printer
*
*
Bit5 on : Out of paper
*
*
Bit4 on : Printer selected
*
*
Bit3 on : I/O error
*
*
Bit0 on : Time-out error
*
*
*
*
Version
1.00
*
*
Created Date Feb.23,1998
**
*
Revised Date Mar.10,1998
***
*
****
****************************************************************/
WORD
printer_init( void )
{
time_t
WORD
char
char
s_time , c_time ;
sts ;
str[3] = "\x1b@" ;
std[6] = "\f\x1cS\x4\x8"
;
_asm
{
mov
xor
int
ah , 01h
dx , dx
17h
xchg
xor
mov
ah , al
ah , ah
sts , ax
}
/*-----*
約 1 分 Wait
*-----*/
time( &s_time ) ;
while ( FOREVER )
{
time( &c_time )
;
if ( c_time - s_time > 20 )
{
break ;
}
if ( ( printer_status() & 0x90 ) == 0x90 )
{
printer_line ( std , 5 ) ;
break ;
}
}
return( sts )
;
}
#pragma
page()
/****************************************************************
****
*
***
WORD printer_line( LPBYTE fp , WORD n )
*
**
*
*
パラレル・プリンタ 1 行印刷処理
*
*
*
*
*
*
Parameter
*
*
LPBYTR fp
: 印刷文字列 ポインタ
*
*
WORD
n
: 印刷文字数
*
*
Return Value
*
*
プリンタ・ステータス
*
*
Bit7 on : Printer not busy
*
*
Bit6 on : Acknowledgment form printer
*
*
Bit5 on : Out of paper
*
*
Bit4 on : Printer selected
*
*
Bit3 on : I/O error
*
*
Bit0 on : Time-out error
*
*
*
*
Version
1.00
*
*
Created Date Feb.23,1998
**
*
Revised Date Mar.16,1996
***
*
****
****************************************************************/
WORD
printer_line( LPBYTE
fp , WORD
n )
{
time_t
WORD
short
BYTE
s_time , c_time
i ;
flag ;
data , sts ;
flag = FALSE
;
;
for ( i = 0 ; i < n ; i++ )
{
if ( flag )
{
break ;
}
data = *fp++
;
time( &s_time ) ;
while ( FOREVER )
{
time( &c_time )
;
if ( c_time - s_time > 600 )
{
flag = TRUE ;
break ;
}
if ( ( printer_status() & 0x90 ) == 0x90 )
{
break ;
}
}
_asm
{
}
}
mov
mov
xor
int
ah , 00h
al , data
dx , dx
17h
mov
sts , ah
return( ( WORD )sts )
;
}
#pragma
page()
/****************************************************************
****
*
***
WORD printer_status( void )
*
**
*
*
パラレル・プリンタ ステータス・チェック処理
*
*
*
*
*
*
Return Value
*
*
プリンタ・ステータス
*
*
Bit7 on : Printer not busy
*
*
Bit6 on : Acknowledgment form printer
*
*
Bit5 on : Out of paper
*
*
Bit4 on : Printer selected
*
*
Bit3 on : I/O error
*
*
Bit0 on : Time-out error
*
*
*
*
*
*
Version
1.00
*
*
Created Date Feb.23,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
WORD
printer_status( void )
{
WORD
sts
;
_asm
{
mov
xor
int
ah , 02h
dx , dx
17h
xchg
xor
mov
ah , al
ah , ah
sts , ax
}
return( sts )
;
}
_
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " ペンプロッタ レンジ設定メニュー処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
ペンプロッタ レンジ設定メニュー処理
*
*
*
*
*
*
Module Name
: GP_RANGE.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Feb. 25, 1998
*
*
*
*
Revised Date : Mar. 12, 1998
*
*
*
*
Auther
: S. Yamashita
**
*
***
*
****
*************************************************************************/
/*********************************************************************
****
*
***
*
**
Ver 1.00
*
*
新規作成
Feb. 25, 1998
*
*
Windows95 用 ハード・コピー処理 追加
Mar. 3, 1998
**
*
***
*
****
*********************************************************************/
#include
#include
"GP_720.H"
"GP_DATA.H"
#pragma
page()
/****************************************
***
*
**
画面 定数
**
*
***
****************************************/
#define
#define
RANGE_TITLE
"レンジ設定"
RANGE_MENU "min, max"
#define
RANGE_INIT "
#define
ICNT_RANGE 21
const
char
,
"
*range_message[ICNT_RANGE] =
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
}
char
buff_rangeinf[ICNT_RANGE][9]
extern
FUNC_FORM fnc_ckey
;
;
"平均風速
"平均風向
"平均垂直風速
"水平風速 標準偏差
"水平風向 標準偏差
"垂直風速 標準偏差
"X成分風速 標準偏差
"Y成分風速 標準偏差
"X成分風速 平均値
"Y成分風速 平均値
"水平風速 乱流強度
"X成分風速 乱流強度
"Y成分風速 乱流強度
"W成分風速 乱流強度
"平均温度
"瞬間 X成分風速
"瞬間 Y成分風速
"瞬間 W成分風速
"瞬間水平風速
"瞬間風速
"瞬間温度
;
//
//
U(m/s)
θ(゚)
W(m/s)
σU(m/s)
σθ(゚)
σW(m/s)
σX(m/s)
σY(m/s)
X(m/s)
Y(m/s)
σU/U
σX/X
σY/Y
σW/W
T(℃)
X(m/s)
Y(m/s)
W(m/s)
U(m/s)
V(m/s)
T(℃)
レンジ情報編集 バッファ
ファンクション・キ-情報
#pragma
page()
/****************************************************************
****
*
***
void menu_range( void )
*
**
*
*
ペンプロッタ レンジ設定メニュー処理
*
*
*
*
*
*
Version
1.00
*
*
Created Date Feb.25,1998
**
*
Revised Date Mar.12,1998
***
*
****
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
****************************************************************/
void
menu_range( void )
{
short
key , no = 0
load_rangeinf()
;
;
disp_rangemenu()
;
//
レンジ情報 編集データ 設定
//
レンジ情報 設定メニュー 表示
while( FOREVER )
{
if ( ( key = check_keybrd() ) != KEY_NONE )
{
if ( key == KEY_F12 )
{
//
終了 ?
break ;
}
else
{
select_rangeinf( &no , key )
}
}
}
save_rangeinf()
;
//
//
;
レンジ情報 編集データ 保存
}
#pragma
page()
/************************************************************************
****
*
***
void select_rangeinf( short *edit , short code )
*
**
*
*
レンジ情報 選択処理
*
*
*
*
*
*
Parameter
*
*
short *edit : 編集項目番号 ポインタ
*
*
short code : キー・コード
*
*
*
*
Version
1.00
*
*
Created Date Feb.26,1998
**
*
Revised Date Mar.12,1998
***
*
****
************************************************************************/
void
select_rangeinf( short
*edit , short
code )
{
short
old , flag = FALSE
old = *edit
;
//
;
編集項目番号 退避
switch ( code )
{
case KEY_ENT :
//
Enter
keyin_rangeinf( edit ) ;
flag = TRUE
break ;
//
レンジ情報データ キー入力
;
case KEY_UP :
//
↑キー
if ( *edit )
{
( *edit )-- ;
//
}
else
{
*edit = ICNT_RANGE - 1 ;
項目番号 -1
キー入力あり ?
//
レンジ情報 選択
}
flag = TRUE
break ;
;
case KEY_DOWN :
//
↓キー
if ( *edit < ICNT_RANGE - 1 )
{
( *edit )++ ;
}
else
{
*edit = 0 ;
}
flag = TRUE
break ;
default :
break
//
項目番号 +1
;
//
前選択項目 非選択表示
//
選択表示
;
;
}
if ( flag )
{
disp_selrange( RELEASE , old )
disp_selrange( SELECT , *edit )
;
}
}
#pragma
page()
/****************************************************************
****
*
***
void keyin_rangeinf( short *edit )
*
**
*
*
レンジ情報 選択処理
*
*
*
*
*
*
Parameter
*
*
short *edit : 編集項目番号 ポインタ
*
*
*
*
Version
1.00
*
*
Created Date Feb.26,1998
**
*
Revised Date Mar.12,1998
***
*
****
****************************************************************/
void
keyin_rangeinf( short
*edit )
{
char
short
str[9] ;
key , n ;
strcpy( str , buff_rangeinf[*edit] )
_settextcolor( GGREEN ) ;
_settextposition( *edit + 3 , 5 ) ;
_outtext( range_message[*edit] ) ;
_outtext( str ) ;
n = inf_range[*edit].flag != 1
?
;
0 : 1
;
while ( FOREVER )
{
set_cursor( TRUE , n + 40 , *edit + 3 , GGREEN )
key = check_keybrd()
;
//
;
キー・ボード 入力チェック
if ( key != KEY_NONE )
{
set_cursor( FALSE , n + 40 , *edit + 3 , GBLACK )
if ( key == KEY_F12 )
;
{
//
break
メニュー
;
}
{
else if ( key == KEY_ENT )
//
Enter
if ( change_rangeinf( *edit , str , n ) )
{
if ( *edit < ICNT_RANGE - 1 )
{
( *edit )++ ;
}
}
break ;
}
else if ( key == KEY_BAK ¦¦ key == KEY_LEFT )
{
set_last_cursor( &n , inf_range[*edit].flag ) ;
//
前カーソル位置 設定
}
else if ( key == KEY_RIGHT && n != 8 )
{
set_next_cursor( &n , inf_range[*edit].flag ) ;
//
次カーソル位置 設定
}
else
{
//
数値キー
set_num_code( key , &n , *edit , str )
;
}
}
}
}
#pragma
page()
/****************************************************************
****
*
***
short change_rangeinf( short edit ,
*
**
char *str , short n )
*
*
*
*
レンジ情報 変更処理
*
*
*
*
*
*
Parameter
*
*
short edit : 編集項目番号
*
*
char
*str : キー・入力データ
*
*
short n
: キー入力数
*
*
Return Value
*
*
TRUE : キー入力 正常
*
*
FALSE :
異常
*
*
*
*
Version
1.00
*
*
Created Date Feb.26,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
short
change_rangeinf( short
edit , char
*str , short
n )
{
char
double
short
buff[4] = "
"
upp , low ;
ret = FALSE ;
;
if ( n == 8 )
{
memcpy( buff , str , 3 ) ;
low = ( double )atoi( buff )
;
//
最小値 数値変換
memcpy( buff , &str[5] , 3 )
upp = ( double )atoi( buff )
;
;
//
最大値 数値変換
if ( low >= inf_range[edit].dmin &&
upp <= inf_range[edit].dmax && low < upp )
{
strcpy( buff_rangeinf[edit] , str )
ret = TRUE
;
;
}
}
return( ret )
;
}
#pragma
page()
/****************************************************************
****
*
***
void disp_rangemenu( void )
*
**
*
*
レンジ 選択メニュー 表示処理
*
*
*
*
*
*
Version
1.00
*
*
Created Date Feb.25,1998
**
*
Revised Date Mar. 3,1998
***
*
****
****************************************************************/
void
disp_rangemenu( void )
{
short
i
;
_clearscreen( _GCLEARSCREEN )
;
//
画面消去
_settextcolor( GCYAN ) ;
_settextposition( 1 , 3 ) ;
_outtext( RANGE_TITLE ) ;
_settextcolor( GGREEN ) ;
_settextposition( 2 , 40 )
_outtext( RANGE_MENU ) ;
;
for ( i = 0 ; i < ICNT_RANGE ; i++ )
{
if ( i == 0 )
{
disp_selrange( SELECT , i ) ;
}
else
{
disp_selrange( RELEASE , i ) ; //
}
}
draw_function( &fnc_ckey , TRUE )
;
}
#pragma
page()
/********************************************************************
****
*
***
void disp_selrange( short flag , short no )
*
**
*
*
レンジ選択項目 選択データ 表示処理
*
*
*
*
*
*
Parameter
*
*
short flag : 表示色フラグ
*
*
RELEASE : 非選択表示
*
*
SELECT : 選択表示
*
*
short no
: 選択項目番号
*
*
*
*
Version
1.00
*
*
Created Date Feb.26,1998
**
*
Revised Date
. ,
***
//
非選択表示
選択表示
*
****
********************************************************************/
void
disp_selrange( short
flag , short
no )
{
if ( flag == SELECT )
{
_settextcolor( GLIGHTYELLOW )
}
else
{
_settextcolor( GBRIGHTWHITE )
}
_settextposition( no + 3 , 5 ) ;
_outtext( range_message[no] ) ;
_settextcolor( GBRIGHTWHITE )
_outtext( buff_rangeinf[no] )
;
//
選択表示
;
//
非選択表示
;
;
}
#pragma
page()
/****************************************************************
****
*
***
void load_rangeinf( void )
*
**
*
*
レンジ情報 編集データ 設定処理
*
*
*
*
*
*
Version
1.00
*
*
Created Date Feb.26,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
load_rangeinf( void )
{
short
i
;
for ( i = 0 ; i < ICNT_RANGE ; i++ )
{
strcpy( buff_rangeinf[i] , RANGE_INIT )
;
memcpy( buff_rangeinf[i] , ( char * )file_sys.range[i].min , 3 ) ;
memcpy( &buff_rangeinf[i][5] , ( char * )file_sys.range[i].max , 3 )
}
}
#pragma
page()
/****************************************************************
****
*
***
void save_rangeinf( void )
*
**
*
*
レンジ情報 設定データ 書き込み処理
*
*
*
*
*
*
Version
1.00
*
*
Created Date Feb.26,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
save_rangeinf( void )
{
short
i
;
;
for ( i = 0 ; i < ICNT_RANGE ; i++ )
{
memcpy( ( char * )file_sys.range[i].min , buff_rangeinf[i] , 3 ) ;
memcpy( ( char * )file_sys.range[i].max , &buff_rangeinf[i][5] , 3 )
}
write_sysfile( 0 ) ; //
setup_rangeinf() ;
停止中 設定 <GP_WRITE.C>
}
#pragma
page()
/****************************************************************
***
void setup_rangeinf( void )
*
*
ペンプロッタ表示/印刷 レンジ情報 設定処理
*
****************************************************************/
void
setup_rangeinf( void )
{
short
i ;
char
str[4] = "
" ;
for ( i = 0 ; i < ICNT_RANGE ; i++ )
{
memcpy( str , ( char * )file_sys.range[i].min , 3 )
inf_range[i].min = ( double )atoi( str ) ;
memcpy( str , ( char * )file_sys.range[i].max , 3 )
inf_range[i].max = ( double )atoi( str ) ;
;
;
}
/*-----*
入力可能範囲 設定
inf_range[0].dmin = 0.0 ;
inf_range[0].dmax = 50.0 ;
inf_range[1].dmin = 0.0 ;
inf_range[1].dmax = 540.0 ;
inf_range[2].dmin = -30.0 ;
inf_range[2].dmax = 30.0 ;
inf_range[3].dmin
inf_range[3].dmax
inf_range[4].dmin
inf_range[4].dmax
inf_range[5].dmin
inf_range[5].dmax
inf_range[6].dmin
inf_range[6].dmax
inf_range[7].dmin
inf_range[7].dmax
=
=
=
=
=
=
=
=
=
=
0.0
99.0
0.0
99.0
0.0
99.0
0.0
99.0
0.0
99.0
inf_range[8].dmin
inf_range[8].dmax
inf_range[9].dmin
inf_range[9].dmax
=
=
=
=
-30.0
30.0
-30.0
30.0
inf_range[10].dmin
inf_range[10].dmax
inf_range[11].dmin
inf_range[11].dmax
inf_range[12].dmin
inf_range[12].dmax
inf_range[13].dmin
inf_range[13].dmax
=
=
=
=
=
=
=
=
0.0
50.0
0.0
50.0
0.0
50.0
0.0
50.0
;
*-----*/
//平均風速 U(m/s) 最小値
//平均風速 U(m/s) 最大値
//平均風向 θ(゚) 最小値
//平均風向 θ(゚) 最大値
//平均垂直風速 W(m/s) 最小値
//平均垂直風速 W(m/s) 最大値
;
//水平風速 標準偏差 σU(m/s) 最小値
//水平風速 標準偏差 σU(m/s) 最大値
//水平風向 標準偏差 σθ(゚) 最小値
//水平風向 標準偏差 σθ(゚) 最大値
//垂直風速 標準偏差 σW(m/s) 最小値
//垂直風速 標準偏差 σW(m/s) 最大値
//X 成分風速 標準偏差 σX(m/s) 最小値
//X 成分風速 標準偏差 σX(m/s) 最大値
//X 成分風速 標準偏差 σY(m/s) 最小値
//X 成分風速 標準偏差 σY(m/s) 最大値
;
;
;
;
//X 成分風速
//X 成分風速
//Y 成分風速
//Y 成分風速
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
平均値
平均値
平均値
平均値
X(m/s)
X(m/s)
Y(m/s)
Y(m/s)
最小値
最大値
最小値
最大値
//水平風速 乱流強度 σU/U(m/s) 最小値
//水平風速 乱流強度 σU/U(m/s) 最大値
//X 成分風速 乱流強度 σX/X(m/s) 最小値
//X 成分風速 乱流強度 σX/X(m/s) 最大値
//Y 成分風速 乱流強度 σY/Y(m/s) 最小値
//Y 成分風速 乱流強度 σY/Y(m/s) 最大値
//W 成分風速 乱流強度 σW/W(m/s) 最小値
//W 成分風速 乱流強度 σW/W(m/s) 最大値
inf_range[14].dmin = -50.0 ;
inf_range[14].dmax = 50.0 ;
//平均温度 T(℃) 最小値
//平均温度 T(℃) 最大値
inf_range[15].dmin
inf_range[15].dmax
inf_range[16].dmin
inf_range[16].dmax
inf_range[17].dmin
inf_range[17].dmax
inf_range[18].dmin
inf_range[18].dmax
inf_range[19].dmin
//瞬間 X 成分風速 X(m/s) 最小値
//瞬間 X 成分風速 X(m/s) 最大値
//瞬間 Y 成分風速 Y(m/s) 最小値
//瞬間 Y 成分風速 Y(m/s) 最大値
//瞬間 W 成分風速 W(m/s) 最小値
//瞬間 W 成分風速 W(m/s) 最大値
//瞬間水平風速 U(m/s) 最小値
//瞬間水平風速 U(m/s) 最大値
//瞬間風速 V(m/s) 最小値
=
=
=
=
=
=
=
=
=
-30.0 ;
30.0 ;
-30.0 ;
30.0 ;
-30.0 ;
30.0 ;
0.0 ;
50.0 ;
0.0 ;
;
inf_range[19].dmax = 50.0 ;
inf_range[20].dmin = -50.0 ;
inf_range[20].dmax = 50.0 ;
//瞬間風速 V(m/s) 最大値
//瞬間温度 T(℃) 最小値
//瞬間温度 T(℃) 最大値
/*-----*
入力データ・フラグ 設定
*-----*/
inf_range[0].flag = 1 ;
//平均風速 U(m/s) 2 桁 整数データ
inf_range[1].flag = 2 ;
//平均風向 θ(゚) 3 桁 正数データ
inf_range[2].flag = 0 ;
//平均垂直風速 W(m/s) 2 桁 整数データ
inf_range[3].flag
inf_range[4].flag
inf_range[5].flag
inf_range[6].flag
inf_range[7].flag
=
=
=
=
=
1
1
1
1
1
;
;
;
;
;
//水平風速 標準偏差 σU(m/s) 2 桁 正数データ
//水平風向 標準偏差 σθ(゚) 2 桁 正数データ
//垂直風速 標準偏差 σW(m/s) 2 桁 正数データ
//X 成分風速 標準偏差 σX(m/s) 2 桁 正数データ
//X 成分風速 標準偏差 σY(m/s) 2 桁 正数データ
inf_range[8].flag = 0
inf_range[9].flag = 0
;
;
//X 成分風速 平均値 X(m/s) 2 桁 整数データ
//Y 成分風速 平均値 Y(m/s) 2 桁 整数データ
inf_range[10].flag
inf_range[11].flag
inf_range[12].flag
inf_range[13].flag
=
=
=
=
1
1
1
1
;
;
;
;
//水平風速 乱流強度 σU/U(m/s) 2 桁 正数データ
//X 成分風速 乱流強度 σX/X(m/s) 2 桁 正数データ
//Y 成分風速 乱流強度 σY/Y(m/s) 2 桁 正数データ
//W 成分風速 乱流強度 σW/W(m/s) 2 桁 正数データ
inf_range[14].flag = 0
;
//平均温度 T(℃) 2 桁 整数データ
inf_range[15].flag
inf_range[16].flag
inf_range[17].flag
inf_range[18].flag
inf_range[19].flag
inf_range[20].flag
;
;
;
;
;
;
//瞬間 X 成分風速 X(m/s) 2 桁 整数データ
//瞬間 Y 成分風速 Y(m/s) 2 桁 整数データ
//瞬間 W 成分風速 W(m/s) 2 桁 整数データ
//瞬間水平風速 U(m/s) 2 桁 正数データ
//瞬間風速 V(m/s) 2 桁 正数データ
//瞬間温度 T(℃) 2 桁 整数データ
=
=
=
=
=
=
0
0
0
1
1
0
}
#pragma
page()
/********************************************************************
****
*
***
void set_num_code( short key , short *num
*
**
, short no , char *buff )
*
*
*
*
入力数値 格納処理
*
*
*
*
*
*
Parameter
*
*
short key
: 入力キー コード
*
*
short *num : 入力データ数 格納ポインタ
*
*
short no
: 編集項目番号
*
*
char
*buff : 入力データ 格納ポインタ
*
*
*
*
Version
1.00
*
*
Created Date Mar.12,1998
**
*
Revised Date
. ,
***
*
****
********************************************************************/
void
set_num_code( short
key , short
*num , short
no , char
*buff )
{
short
flag , f = FALSE
flag = inf_range[no].flag
;
;
if ( '0' <= key && key <= '9' && *num != 8 )
{
f = TRUE ;
}
else if ( ( key == '-' ¦¦ key == '+' ) && flag == 0
&& ( *num == 0 ¦¦ *num == 5 ) )
{
f = TRUE
}
if ( f )
;
{
//
数値キー
*( buff + *num ) = ( char )key
;
set_next_cursor( num , flag )
;
//
_settextcolor( GGREEN ) ;
_settextposition( no + 3 , 40 )
_outtext( buff ) ;
;
}
}
#pragma
page()
/************************************************************************
****
*
***
void set_next_cursor( short *column , short flag )
*
**
*
*
次カーソル位置 設定処理
*
*
*
*
*
*
Parameter
*
*
short *column : カーソル位置 ポインタ
*
*
short flag
: 入力データ・フラグ
*
*
0 : 2 桁 整数データ
*
*
1 :
正数データ
*
*
2 : 3 桁 正数データ
*
*
*
*
Version
1.00
*
*
Created Date Mar.12,1998
**
*
Revised Date
. ,
***
*
****
************************************************************************/
void
set_next_cursor( short
*column , short
flag )
{
( *column )++
;
if ( *column == 3 )
{
if ( flag != 1 )
{
*column += 2
}
else
{
*column += 3
}
}
;
;
}
#pragma
page()
/************************************************************************
****
*
***
void set_last_cursor( short *column , short flag )
*
**
*
*
前カーソル位置 設定処理
*
*
*
*
*
*
Parameter
*
*
short *column : カーソル位置 ポインタ
*
*
short flag
: 入力データ・フラグ
*
*
0 : 2 桁 整数データ
*
*
1 :
正数データ
*
*
2 : 3 桁 正数データ
*
*
*
*
Version
1.00
*
*
Created Date Mar.12,1998
**
*
Revised Date
. ,
***
*
****
************************************************************************/
次カーソル位置 設定
void
set_last_cursor( short
*column , short
flag )
{
if ( flag == 1 )
{
if ( *column > 1 )
{
( *column )--
;
if ( *column == 5 )
{
*column -= 3
}
;
}
}
else
{
if ( *column != 0 )
{
( *column )--
;
if ( *column == 4 )
{
*column -= 2
}
;
}
}
}
_
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " 収録データ 読み込み処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
収録データ 読み込み処理
*
*
*
*
*
*
Module Name
: GP_PPLOT.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Feb. 24, 1998
*
*
*
*
Revised Date : Mar. 10, 1998
*
*
*
*
Auther
: S. Yamashita
**
*
***
*
****
*************************************************************************/
/*********************************************************************
****
*
***
*
**
Ver 1.00
*
*
新規作成
Feb. 23, 1998
**
*
***
*
****
*********************************************************************/
#include
#include
"GP_720.H"
"GP_DATA.H"
#pragma
page()
/****************************************************************
****
*
***
void read_sysfile( void )
*
**
*
*
システム・ファイル 読み込み処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Feb.23,1998
**
*
Revised Date Mar. 5,1998
***
*
****
****************************************************************/
void
read_sysfile( void )
{
char
FILE
short
str[6] ;
*fp ;
f = FALSE
;
if ( ( fp = fopen( SYS_FILE , "r+b" ) ) != NULL )
{
if ( fread( ( char * )&file_sys , 1 , SIZE_SYSFILE , fp )
== SIZE_SYSFILE )
{
f = TRUE ;
}
else
{
fclose( fp )
}
;
}
if ( f == FALSE )
{
fp = fopen( SYS_FILE , "w+b" ) ;
memcpy( ( char * )&file_sys , INIT_SYSFILE , SIZE_SYSFILE )
fwrite( ( char * )&file_sys , 1 , SIZE_SYSFILE , fp ) ;
}
/*-----*
測定情報 設定
*----*/
memcpy( str , ( char * )file_sys.mean , 2 ) ;
str[2] = ( char )NULL ;
sampling_mean = atoi( str ) ; //
演算値 平均時間
memcpy( str , ( char * )file_sys.smpl , 5 ) ;
str[5] = ( char )NULL ;
sampling_rec = atof( str ) ; //
DA600 サンプリング間隔
write_sflag = ( short )( file_sys.ifile - '0' )
write_cflag = ( short )( file_sys.cfile - '0' )
/*----*
収録期間
*-----*/
strcpy( period_cdata.start.date
strcpy( period_cdata.end.date ,
strcpy( period_sdata.start.date
strcpy( period_sdata.end.date ,
,
(
,
(
( char
char *
( char
char *
str[4] = ( char )NULL ;
memcpy( str , ( char * )file_sys.csdt
period_cdata.start.year = atoi( str )
memcpy( str , ( char * )file_sys.cedt
period_cdata.end.year = atoi( str ) ;
memcpy( str , ( char * )file_sys.isdt
period_sdata.start.year = atoi( str )
memcpy( str , ( char * )file_sys.iedt
period_sdata.end.year = atoi( str ) ;
;
;
* )file_sys.csdt ) ;
)file_sys.cedt ) ;
* )file_sys.isdt ) ;
)file_sys.iedt ) ;
, 4 )
;
, 4 )
;
, 4 )
;
, 4 )
;
;
;
;
1 分/10 分
0.05∼10 秒
str[2] = ( char )NULL ;
memcpy( str , ( char * )&file_sys.csdt[5]
period_cdata.start.month = atoi( str ) ;
memcpy( str , ( char * )&file_sys.cedt[5]
period_cdata.end.month = atoi( str ) ;
memcpy( str , ( char * )&file_sys.isdt[5]
period_sdata.start.month = atoi( str ) ;
memcpy( str , ( char * )&file_sys.iedt[5]
period_sdata.end.month = atoi( str ) ;
memcpy( str , ( char * )&file_sys.csdt[8]
period_cdata.start.day = atoi( str ) ;
memcpy( str , ( char * )&file_sys.cedt[8]
period_cdata.end.day = atoi( str ) ;
memcpy( str , ( char * )&file_sys.isdt[8]
period_sdata.start.day = atoi( str ) ;
memcpy( str , ( char * )&file_sys.iedt[8]
period_sdata.end.day = atoi( str ) ;
memcpy( str , ( char *
period_cdata.start.hour
memcpy( str , ( char *
period_cdata.end.hour =
memcpy( str , ( char *
period_sdata.start.hour
memcpy( str , ( char *
period_sdata.end.hour =
)&file_sys.csdt[12]
= atoi( str ) ;
)&file_sys.cedt[12]
atoi( str ) ;
)&file_sys.isdt[12]
= atoi( str ) ;
)&file_sys.iedt[12]
atoi( str ) ;
period_sdata.flag = FALSE
period_cdata.flag = FALSE
/*-----*
, 2 )
;
, 2 )
;
, 2 )
;
, 2 )
;
, 2 )
;
, 2 )
;
, 2 )
;
, 2 )
;
, 2 )
;
, 2 )
;
, 2 )
;
, 2 )
;
;
;
ペンプロッタ 表示/印刷色
*-----*/
color_pena = conv_colorno( ( short )( file_sys.pena - 0x30 ) ) ;
//
風速計 A
color_penb = conv_colorno( ( short )( file_sys.penb - 0x30 ) ) ;
//
風速計 A
color_penc = conv_colorno( ( short )( file_sys.penc - 0x30 ) ) ;
//
風速計 A
setup_rangeinf()
fclose( fp )
;
//
レンジ情報 設定
;
}
#pragma
page()
/****************************************************************
****
*
***
short open_mfile( void )
*
**
*
*
演算値データ 読み込み処理
*
*
*
*
*
*
Return Value
*
*
平均時間
*
*
*
*
Version
1.00
*
*
Created Date Feb.24,1998
**
*
Revised Date Mar.10,1998
***
*
****
****************************************************************/
short
open_mfile( void )
{
short
d , d1 , d2 , ret = FALSE
change_directry( 1 )
;
plot_fp = fopen( disp_fname , "rb" )
fread( ( char
;
//
ディレクトリ変更(演算値) <GP_PPLOT.C>
;
* )buff_mfile , SIZE_CFILE , 2 , plot_fp )
;
d1 = ( short )( buff_mfile[0].minute[0] - '0' ) * 10
+ ( short )( buff_mfile[0].minute[1] - '0' ) ;
d2 = ( short )( buff_mfile[1].minute[0] - '0' ) * 10
+ ( short )( buff_mfile[1].minute[1] - '0' )
d = d2 - d1 ;
//
平均時間 設定
if ( d < 0 )
{
d += 60 ;
}
fseek( plot_fp , 0L , SEEK_SET )
return( d )
;
//
;
ファイル先頭 移動
;
}
#pragma
page()
/****************************************************************
****
*
***
void open_ifile( void )
*
**
*
*
瞬間値データ 読み込み処理
*
*
*
*
*
*
Version
1.00
*
*
Created Date Feb.26,1998
**
*
Revised Date Mar.10,1998
***
*
****
****************************************************************/
void
open_ifile( void )
{
short
d = -1 , ret = FALSE
change_directry( 0 )
;
;
//
plot_fp = fopen( disp_fname , "rb" )
ディレクトリ変更(瞬間値) <GP_PPLOT.C>
;
}
#pragma
page()
/****************************************************************
***
void change_directry( short mode )
*
*
収録データ ディレクトリ 変更処理
*
*
Parameter
*
*
short mode : 変更ディレクトリ
*
*
1 : 演算値データ
*
*
0 : 瞬間値データ
*
****************************************************************/
void
change_directry( short mode )
{
char
dstr1[12] , dstr2[8] ;
short
ret = FALSE ;
char
rstr[4] = " :\\" ;
strcpy( dstr1 , DIR_NAME ) ;
if ( mode )
{
strcpy( dstr2 , DIR_CNAME )
}
else
{
strcpy( dstr2 , DIR_SNAME )
}
;
;
rstr[0] = dstr1[0] = dstr2[0] = DRV_HDD2
_chdir( rstr ) ;
_chdir( dstr1 ) ;
_chdir( dstr2 ) ;
}
//
;
ルート ディレクトリ
_
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " 収録データ 読み込み処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
収録データ 読み込み処理
*
*
*
*
*
*
Module Name
: GP_PPLOT.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Feb. 24, 1998
*
*
*
*
Revised Date : Mar. 10, 1998
*
*
*
*
Auther
: S. Yamashita
**
*
***
*
****
*************************************************************************/
/*********************************************************************
****
*
***
*
**
Ver 1.00
*
*
新規作成
Feb. 23, 1998
**
*
***
*
****
*********************************************************************/
#include
#include
"GP_720.H"
"GP_DATA.H"
#pragma
page()
/****************************************************************
****
*
***
void read_sysfile( void )
*
**
*
*
システム・ファイル 読み込み処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Feb.23,1998
**
*
Revised Date Mar. 5,1998
***
*
****
****************************************************************/
void
read_sysfile( void )
{
char
str[6]
;
FILE
short
*fp ;
f = FALSE
;
if ( ( fp = fopen( SYS_FILE , "r+b" ) ) != NULL )
{
if ( fread( ( char * )&file_sys , 1 , SIZE_SYSFILE , fp )
== SIZE_SYSFILE )
{
f = TRUE ;
}
else
{
fclose( fp )
}
;
}
if ( f == FALSE )
{
fp = fopen( SYS_FILE , "w+b" ) ;
memcpy( ( char * )&file_sys , INIT_SYSFILE , SIZE_SYSFILE )
fwrite( ( char * )&file_sys , 1 , SIZE_SYSFILE , fp ) ;
}
/*-----*
測定情報 設定
*----*/
memcpy( str , ( char * )file_sys.mean , 2 ) ;
str[2] = ( char )NULL ;
sampling_mean = atoi( str ) ; //
演算値 平均時間
memcpy( str , ( char * )file_sys.smpl , 5 ) ;
str[5] = ( char )NULL ;
sampling_rec = atof( str ) ; //
DA600 サンプリング間隔
write_sflag = ( short )( file_sys.ifile - '0' )
write_cflag = ( short )( file_sys.cfile - '0' )
/*----*
収録期間
*-----*/
strcpy( period_cdata.start.date
strcpy( period_cdata.end.date ,
strcpy( period_sdata.start.date
strcpy( period_sdata.end.date ,
,
(
,
(
( char
char *
( char
char *
str[4] = ( char )NULL ;
memcpy( str , ( char * )file_sys.csdt
period_cdata.start.year = atoi( str )
memcpy( str , ( char * )file_sys.cedt
period_cdata.end.year = atoi( str ) ;
memcpy( str , ( char * )file_sys.isdt
period_sdata.start.year = atoi( str )
memcpy( str , ( char * )file_sys.iedt
period_sdata.end.year = atoi( str ) ;
;
, 4 )
;
, 4 )
;
memcpy( str , ( char * )&file_sys.csdt[8]
period_cdata.start.day = atoi( str ) ;
memcpy( str , ( char * )&file_sys.cedt[8]
period_cdata.end.day = atoi( str ) ;
memcpy( str , ( char * )&file_sys.isdt[8]
period_sdata.start.day = atoi( str ) ;
memcpy( str , ( char * )&file_sys.iedt[8]
period_sdata.end.day = atoi( str ) ;
memcpy( str , ( char *
period_cdata.start.hour
memcpy( str , ( char *
period_cdata.end.hour =
* )file_sys.csdt ) ;
)file_sys.cedt ) ;
* )file_sys.isdt ) ;
)file_sys.iedt ) ;
, 4 )
;
, 4 )
str[2] = ( char )NULL ;
memcpy( str , ( char * )&file_sys.csdt[5]
period_cdata.start.month = atoi( str ) ;
memcpy( str , ( char * )&file_sys.cedt[5]
period_cdata.end.month = atoi( str ) ;
memcpy( str , ( char * )&file_sys.isdt[5]
period_sdata.start.month = atoi( str ) ;
memcpy( str , ( char * )&file_sys.iedt[5]
period_sdata.end.month = atoi( str ) ;
;
;
;
;
, 2 )
;
, 2 )
;
, 2 )
;
, 2 )
;
, 2 )
;
, 2 )
;
, 2 )
;
, 2 )
;
)&file_sys.csdt[12] , 2 )
= atoi( str ) ;
)&file_sys.cedt[12] , 2 )
atoi( str ) ;
;
;
;
1 分/10 分
0.05∼10 秒
memcpy( str , ( char *
period_sdata.start.hour
memcpy( str , ( char *
period_sdata.end.hour =
)&file_sys.isdt[12] , 2 )
= atoi( str ) ;
)&file_sys.iedt[12] , 2 )
atoi( str ) ;
period_sdata.flag = FALSE
period_cdata.flag = FALSE
/*-----*
;
;
;
;
ペンプロッタ 表示/印刷色
*-----*/
color_pena = conv_colorno( ( short )( file_sys.pena - 0x30 ) ) ;
//
風速計 A
color_penb = conv_colorno( ( short )( file_sys.penb - 0x30 ) ) ;
//
風速計 A
color_penc = conv_colorno( ( short )( file_sys.penc - 0x30 ) ) ;
//
風速計 A
setup_rangeinf()
fclose( fp )
;
//
レンジ情報 設定
;
}
#pragma
page()
/****************************************************************
****
*
***
short open_mfile( void )
*
**
*
*
演算値データ 読み込み処理
*
*
*
*
*
*
Return Value
*
*
平均時間
*
*
*
*
Version
1.00
*
*
Created Date Feb.24,1998
**
*
Revised Date Mar.10,1998
***
*
****
****************************************************************/
short
open_mfile( void )
{
short
d , d1 , d2 , ret = FALSE
change_directry( 1 )
;
//
plot_fp = fopen( disp_fname , "rb" )
fread( ( char
;
ディレクトリ変更(演算値) <GP_PPLOT.C>
;
* )buff_mfile , SIZE_CFILE , 2 , plot_fp )
;
d1 = ( short )( buff_mfile[0].minute[0] - '0' ) * 10
+ ( short )( buff_mfile[0].minute[1] - '0' ) ;
d2 = ( short )( buff_mfile[1].minute[0] - '0' ) * 10
+ ( short )( buff_mfile[1].minute[1] - '0' )
d = d2 - d1 ;
//
平均時間 設定
if ( d < 0 )
{
d += 60 ;
}
fseek( plot_fp , 0L , SEEK_SET )
return( d )
;
//
;
}
#pragma
page()
/****************************************************************
****
*
***
void open_ifile( void )
*
**
*
*
瞬間値データ 読み込み処理
*
*
*
ファイル先頭 移動
;
*
*
*
Version
1.00
*
*
Created Date Feb.26,1998
**
*
Revised Date Mar.10,1998
***
*
****
****************************************************************/
void
open_ifile( void )
{
short
d = -1 , ret = FALSE
change_directry( 0 )
;
;
//
plot_fp = fopen( disp_fname , "rb" )
ディレクトリ変更(瞬間値) <GP_PPLOT.C>
;
}
#pragma
page()
/****************************************************************
****
*
***
void change_directry( short mode )
*
**
*
*
収録データ ディレクトリ 変更処理
*
*
*
*
*
*
Parameter
*
*
short mode : 変更ディレクトリ
*
*
1 : 演算値データ
*
*
0 : 瞬間値データ
*
*
*
*
Version
1.00
*
*
Created Date Mar.10,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
change_directry( short
mode )
{
char
short
char
dstr1[12] , dstr2[8]
ret = FALSE ;
rstr[4] = " :\\" ;
;
strcpy( dstr1 , DIR_NAME ) ;
if ( mode )
{
strcpy( dstr2 , DIR_CNAME )
}
else
{
strcpy( dstr2 , DIR_SNAME )
}
;
;
rstr[0] = dstr1[0] = dstr2[0] = DRV_HDD2
_chdir( rstr ) ;
_chdir( dstr1 ) ;
_chdir( dstr2 ) ;
}
_
//
;
ルート ディレクトリ
#pragma
title( "GP-720 風向風速データ演算装置(高圧ガス保安協会向け)" )
#pragma
subtitle( " データ収録処理" )
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
データ収録処理
*
*
*
*
*
*
Module Name
: GP_WRITE.C
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Jan. 19, 1998
*
*
*
*
Revised Date : Mar. 10, 1998
*
*
*
*
Auther
: S. Yamashita
**
*
***
*
****
*************************************************************************/
/*********************************************************************
****
*
***
*
**
Ver 1.00
*
*
新規作成
Jan. 19, 1998
**
*
***
*
****
*********************************************************************/
#include
#include
"GP_720.H"
"GP_DATA.H"
#pragma
page()
/****************************************************************
****
*
***
void creat_sdata( short no )
*
**
*
*
収録/表示データ(瞬間) 作成処理
*
*
*
*
*
*
Parameter
*
*
short no : 収録データ番号
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.19,1998
**
*
Revised Date Mar. 5,1998
***
*
****
****************************************************************/
void
creat_sdata( short
no )
{
DEF_SCAL
DEF_DA600
DEF_SDATA
DEF_SFILE
*cp
*cpa
*dpa
*fp
;
, *cpb , *cpc
, *dpb , *dpc
;
cp = &data_cals ;
cpa = &cp->da ;
;
;
cpb = &cp->db
cpc = &cp->dc
;
;
dpa = &data_disps.da
dpb = &data_disps.db
dpc = &data_disps.dc
;
;
;
fp = &data_sfile[no]
;
memcpy( ( char
*)fp , INIT_SDATA , SIZE_SFILE )
;
//
/*-----*
/*-----*
日付
*-----*/
fp->year[0] = str_datetime[0] ;
fp->year[1] = str_datetime[1] ;
fp->year[2] = str_datetime[2] ;
fp->year[3] = str_datetime[3] ;
fp->month[0] = str_datetime[5] ;
fp->month[1] = str_datetime[6] ;
fp->day[0] = str_datetime[8] ; //
fp->day[1] = str_datetime[9] ;
時刻
*-----*/
data_disps.time[0]
data_disps.time[1]
data_disps.time[2]
data_disps.time[3]
data_disps.time[4]
data_disps.time[5]
=
=
=
=
=
=
fp->hour[0] =
fp->hour[1] =
fp->minute[0]
fp->minute[1]
fp->second[0]
fp->second[1]
/*-----*
/*-----*
/*----*
/*----*
//
日付(年)
//
日付(月)
日付(日)
str_datetime[11] ;
str_datetime[12] ;
= str_datetime[14]
= str_datetime[15]
= str_datetime[17]
= str_datetime[18]
if ( flag_com1 == TRUE )
{
//
/*-----*
X 成分風速
*-----*/
ftoas2( fp->xa , cpa->x )
ftoas1( dpa->x , cpa->x )
/*-----*
瞬間値ファイル
//
;
;
;
;
;
;
//
//
収録データ
表示データ
Y 成分風速
*-----*/
ftoas2( fp->ya , cpa->y )
ftoas1( dpa->y , cpa->y )
;
;
//
//
収録データ
表示データ
W 成分風速
*-----*/
ftoas2( fp->wa , cpa->w )
ftoas1( dpa->w , cpa->w )
;
;
//
//
収録データ
表示データ
Ts 温度
*-----*/
ftoas2( fp->ta , cpa->t )
ftoas1( dpa->t , cpa->t )
;
;
//
//
収録データ
表示データ
時刻(分)
//
時刻(秒)
水平風速
*-----*/
ftoa2( fp->ua , cp->ua , FALSE )
ftoa1( dpa->u , cp->ua , FALSE )
;
;
//収録データ < GP_WRITE.C >
//表示データ < GP_WRITE.C >
風速
*-----*/
ftoa2( fp->va , cp->va , FALSE )
ftoa1( dpa->v , cp->va , FALSE )
;
;
//
収録データ
//表示データ < GP_WRITE.C >
else
{
init_da600_data( dpa )
;
//瞬間値 観測値 A <Main>
}
if ( flag_com2 == TRUE )
{
//
/*-----*
X 成分風速
*-----*/
ftoas2( fp->xb , cpb->x )
ftoas1( dpb->x , cpb->x )
/*-----*
//
A データ作成
}
/*-----*
時刻(時)
B データ作成
;
;
//
//
収録データ
表示データ
Y 成分風速
*-----*/
ftoas2( fp->yb , cpb->y )
ftoas1( dpb->y , cpb->y )
;
;
//
//
収録データ
表示データ
W 成分風速
*-----*/
ftoas2( fp->wb , cpb->w )
ftoas1( dpb->w , cpb->w )
;
;
//
//
収録データ
表示データ
/*-----*
/*----*
/*----*
Ts 温度
*-----*/
ftoas2( fp->tb , cpb->t )
ftoas1( dpb->t , cpb->t )
;
;
//
//
収録データ
表示データ
水平風速
*-----*/
ftoa2( fp->ub , cp->ub , FALSE )
ftoa1( dpb->u , cp->ub , FALSE )
;
;
//
//
収録データ
表示データ
風速
*-----*/
ftoa2( fp->vb , cp->vb , FALSE )
ftoa1( dpb->v , cp->vb , FALSE )
;
;
//
//
収録データ
表示データ
}
else
{
init_da600_data( dpb )
;
//瞬間値 観測値 A <Main>
}
if ( flag_com3 == TRUE )
{
//
/*-----*
X 成分風速
*-----*/
ftoas2( fp->xc , cpc->x )
ftoas1( dpc->x , cpc->x )
/*-----*
/*-----*
/*-----*
/*----*
/*----*
C データ作成
;
;
//
//
収録データ
表示データ
Y 成分風速
*-----*/
ftoas2( fp->yc , cpc->y )
ftoas1( dpc->y , cpc->y )
;
;
//
//
収録データ
表示データ
W 成分風速
*-----*/
ftoas2( fp->wc , cpc->w )
ftoas1( dpc->w , cpc->w )
;
;
//
//
収録データ
表示データ
Ts 温度
*-----*/
ftoas2( fp->tc , cpc->t )
ftoas1( dpc->t , cpc->t )
;
;
//
//
収録データ
表示データ
水平風速
*-----*/
ftoa2( fp->uc , cp->uc , FALSE )
ftoa1( dpc->u , cp->uc , FALSE )
;
;
//
//
収録データ
表示データ
風速
*-----*/
ftoa2( fp->vc , cp->vc , FALSE )
ftoa1( dpc->v , cp->vc , FALSE )
;
;
//
//
収録データ
表示データ
}
else
{
init_da600_data( dpc )
;
//瞬間値 観測値 A <Main>
}
ftoa2( fp->smpl , sampling_rec , FALSE )
;
}
#pragma
page()
/****************************************************************
***
void creat_mdata( void )
*
*
収録/表示データ(平均値) 作成処理
*
****************************************************************/
void
creat_mdata( void )
{
DEF_CFILE *fp ;
DEF_MEAN *cpa , *cpb , *cpc ;
DEF_MDATA *dpa , *dpb , *dpc ;
cpa = &data_calm.ma
cpb = &data_calm.mb
cpc = &data_calm.mc
;
;
;
dpa = &data_dispm[disp_ptrm].da
dpb = &data_dispm[disp_ptrm].db
dpc = &data_dispm[disp_ptrm].dc
fp = &data_cfile
;
//演算データ A
//
B
//
C
;
;
;
//収録データ
//表示データ A
//
B
//
C
memcpy( ( char
*)&data_cfile , INIT_CDATA , SIZE_CFILE )
/*-----*
日付
*-----*/
fp->year[0] = str_datetime[0] ;
fp->year[1] = str_datetime[1] ;
fp->year[2] = str_datetime[2] ;
fp->year[3] = str_datetime[3] ;
fp->month[0] = str_datetime[5] ;
fp->month[1] = str_datetime[6] ;
fp->day[0] = str_datetime[8] ;
fp->day[1] = str_datetime[9] ;
/*-----*
時刻
*-----*/
data_dispm[disp_ptrm].time[0]
data_dispm[disp_ptrm].time[1]
data_dispm[disp_ptrm].time[2]
data_dispm[disp_ptrm].time[3]
=
=
=
=
//日付(年)
//日付(月)
//日付(日)
fp->hour[0] =
fp->hour[1] =
fp->minute[0]
fp->minute[1]
str_datetime[11] ;
str_datetime[12] ;
= str_datetime[14] ;
= str_datetime[15] ;
if ( flag_cal1 == TRUE )
{
//A データ作成
/*-----*
水平風速
*-----*/
ftoa2( fp->ua , cpa->u , FALSE ) ;
ftoa1( dpa->u , cpa->u , FALSE ) ;
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
水平風向
*-----*/
itoa3( fp->da , cpa->d )
itoa3( dpa->d , cpa->d )
;
;
;
//収録データ
//表示データ
//収録データ
//表示データ
垂直風速
*-----*/
ftoas2( fp->wa , cpa->w )
ftoas1( dpa->w , cpa->w )
;
;
//収録データ
//表示データ
X 成分風速
*-----*/
ftoas2( fp->xa , cpa->x )
ftoas1( dpa->x , cpa->x )
;
;
//収録データ
//表示データ
Y 成分風速
*-----*/
ftoas2( fp->ya , cpa->y )
ftoas1( dpa->y , cpa->y )
;
;
//収録データ
//表示データ
水平風速 標準偏差
*-----*/
ftoa2( fp->sua , cpa->su , FALSE )
ftoa1( dpa->su , cpa->su , FALSE )
;
;
//収録データ
//表示データ
水平風向 標準偏差
*-----*/
ftoa2( fp->sda , cpa->sd , FALSE )
ftoa1( dpa->sd , cpa->sd , FALSE )
;
;
//収録データ
//表示データ
垂直風速 標準偏差
*-----*/
ftoa2( fp->swa , cpa->sw , FALSE )
ftoa1( dpa->sw , cpa->sw , FALSE )
;
;
//収録データ
//表示データ
X 成分風速 標準偏差
*-----*/
ftoa2( fp->sxa , cpa->sx , FALSE )
ftoa1( dpa->sx , cpa->sx , FALSE )
;
;
//収録データ
//表示データ
Y 成分風速 標準偏差
*-----*/
ftoa2( fp->sya , cpa->sy , FALSE )
ftoa1( dpa->sy , cpa->sy , FALSE )
;
;
//収録データ
//表示データ
水平風速 乱流強度差
*-----*/
ftoa2( fp->suua , cpa->suu , FALSE )
ftoa1( dpa->suu , cpa->suu , FALSE )
;
;
//収録データ
//表示データ
X 成分風速 乱流強度
*-----*/
ftoa2( fp->sxxa , cpa->sxx , FALSE )
ftoa1( dpa->sxx , cpa->sxx , FALSE )
;
;
//収録データ
//表示データ
Y 成分風速 乱流強度
*-----*/
ftoa2( fp->syya , cpa->syy , FALSE )
ftoa1( dpa->syy , cpa->syy , FALSE )
;
;
//収録データ
//表示データ
垂直風速 乱流強度差
*-----*/
ftoa2( fp->swwa , cpa->sww , FALSE )
;
//収録データ
//時刻(時)
//時刻(分)
ftoa1( dpa->sww , cpa->sww , FALSE )
/*-----*
温度
*-----*/
ftoas2( fp->ta , cpa->t )
ftoas1( dpa->t , cpa->t )
;
;
;
//
//
//表示データ
収録データ
表示データ
}
else
{
init_mean_data( &data_dispm[disp_ptrm].da )
;
}
if ( flag_cal2 == TRUE )
{
//B データ作成
/*-----*
水平風速
*-----*/
ftoa2( fp->ub , cpb->u , FALSE ) ;
ftoa1( dpb->u , cpb->u , FALSE ) ;
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
}
else
{
水平風向
*-----*/
itoa3( fp->db , cpb->d )
itoa3( dpb->d , cpb->d )
;
;
//収録データ
//表示データ
//収録データ
//表示データ
垂直風速
*-----*/
ftoas2( fp->wb , cpb->w )
ftoas1( dpb->w , cpb->w )
;
;
//収録データ
//表示データ
X 成分風速
*-----*/
ftoas2( fp->xb , cpb->x )
ftoas1( dpb->x , cpb->x )
;
;
//収録データ
//表示データ
Y 成分風速
*-----*/
ftoas2( fp->yb , cpb->y )
ftoas1( dpb->y , cpb->y )
;
;
//収録データ
//表示データ
水平風速 標準偏差
*-----*/
ftoa2( fp->sub , cpb->su , FALSE )
ftoa1( dpb->su , cpb->su , FALSE )
;
;
//収録データ
//表示データ
水平風向 標準偏差
*-----*/
ftoa2( fp->sdb , cpb->sd , FALSE )
ftoa1( dpb->sd , cpb->sd , FALSE )
;
;
//収録データ
//表示データ
垂直風速 標準偏差
*-----*/
ftoa2( fp->swb , cpb->sw , FALSE )
ftoa1( dpb->sw , cpb->sw , FALSE )
;
;
//収録データ
//表示データ
X 成分風速 標準偏差
*-----*/
ftoa2( fp->sxb , cpb->sx , FALSE )
ftoa1( dpb->sx , cpb->sx , FALSE )
;
;
//収録データ
//表示データ
Y 成分風速 標準偏差
*-----*/
ftoa2( fp->syb , cpb->sy , FALSE )
ftoa1( dpb->sy , cpb->sy , FALSE )
;
;
//収録データ
//表示データ
水平風速 乱流強度差
*-----*/
ftoa2( fp->suub , cpb->suu , FALSE )
ftoa1( dpb->suu , cpb->suu , FALSE )
;
;
//収録データ
//表示データ
X 成分風速 乱流強度
*-----*/
ftoa2( fp->sxxb , cpb->sxx , FALSE )
ftoa1( dpb->sxx , cpb->sxx , FALSE )
;
;
//収録データ
//表示データ
Y 成分風速 乱流強度
*-----*/
ftoa2( fp->syyb , cpb->syy , FALSE )
ftoa1( dpb->syy , cpb->syy , FALSE )
;
;
//収録データ
//表示データ
垂直風速 乱流強度差
*-----*/
ftoa2( fp->swwb , cpb->sww , FALSE )
ftoa1( dpb->sww , cpb->sww , FALSE )
;
;
//収録データ
//表示データ
温度
*-----*/
ftoas2( fp->tb , cpb->t )
ftoas1( dpb->t , cpb->t )
;
;
//収録データ
//表示データ
//平均値 演算値 A <Main>
init_mean_data( &data_dispm[disp_ptrm].db )
;
//平均値 演算値 B <Main>
}
if ( flag_cal3 == TRUE )
{
//C データ作成
/*-----*
水平風速
*-----*/
ftoa2( fp->uc , cpc->u , FALSE ) ;
ftoa1( dpc->u , cpc->u , FALSE ) ;
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
/*-----*
水平風向
*-----*/
itoa3( fp->dc , cpc->d )
itoa3( dpc->d , cpc->d )
;
;
//収録データ
//表示データ
//収録データ
//表示データ
垂直風速
*-----*/
ftoas2( fp->wc , cpc->w )
ftoas1( dpc->w , cpc->w )
;
;
//収録データ
//表示データ
X 成分風速
*-----*/
ftoas2( fp->xc , cpc->x )
ftoas1( dpc->x , cpc->x )
;
;
//収録データ
//表示データ
Y 成分風速
*-----*/
ftoas2( fp->yc , cpc->y )
ftoas1( dpc->y , cpc->y )
;
;
//収録データ
//表示データ
水平風速 標準偏差
*-----*/
ftoa2( fp->suc , cpc->su , FALSE )
ftoa1( dpc->su , cpc->su , FALSE )
;
;
//収録データ
//表示データ
水平風向 標準偏差
*-----*/
ftoa2( fp->sdc , cpc->sd , FALSE )
ftoa1( dpc->sd , cpc->sd , FALSE )
;
;
//収録データ
//表示データ
垂直風速 標準偏差
*-----*/
ftoa2( fp->swc , cpc->sw , FALSE )
ftoa1( dpc->sw , cpc->sw , FALSE )
;
;
//収録データ
//表示データ
X 成分風速 標準偏差
*-----*/
ftoa2( fp->sxc , cpc->sx , FALSE )
ftoa1( dpc->sx , cpc->sx , FALSE )
;
;
//収録データ
//表示データ
Y 成分風速 標準偏差
*-----*/
ftoa2( fp->syc , cpc->sy , FALSE )
ftoa1( dpc->sy , cpc->sy , FALSE )
;
;
//収録データ
//表示データ
水平風速 乱流強度差
*-----*/
ftoa2( fp->suuc , cpc->suu , FALSE )
ftoa1( dpc->suu , cpc->suu , FALSE )
;
;
//収録データ
//表示データ
X 成分風速 乱流強度
*-----*/
ftoa2( fp->sxxc , cpc->sxx , FALSE )
ftoa1( dpc->sxx , cpc->sxx , FALSE )
;
;
//収録データ
//表示データ
Y 成分風速 乱流強度
*-----*/
ftoa2( fp->syyc , cpc->syy , FALSE )
ftoa1( dpc->syy , cpc->syy , FALSE )
;
;
//収録データ
//表示データ
垂直風速 乱流強度差
*-----*/
ftoa2( fp->swwc , cpc->sww , FALSE )
ftoa1( dpc->sww , cpc->sww , FALSE )
;
;
//収録データ
//表示データ
温度
*-----*/
ftoas2( fp->tc , cpc->t )
ftoas1( dpc->t , cpc->t )
;
;
//収録データ
//表示データ
}
else
{
init_mean_data( &data_dispm[disp_ptrm].dc )
}
ftoa2( fp->smpl , sampling_rec , FALSE )
disp_ptrm++ ;
disp_num++ ;
if ( sampling_mean == 1 )
;
//表示データ・ポインタ
//表示データ数
;
//平均値 演算値 C <Main>
{
if ( disp_ptrm >= 120 )
{
disp_ptrm = disp_num = 0
}
;
}
else
{
if ( disp_ptrm >= 144 )
{
disp_ptrm = disp_num = 0
}
;
}
}
#pragma
page()
/****************************************************************
***
void creat_filename( short mode )
*
*
収録ファイル 作成処理
*
*
Parameter
*
*
short mode : 作成モード
*
*
TRUE : 強制作成
*
*
FALSE : 自動作成
*
****************************************************************/
void
creat_filename( short mode )
{
long
len ;
FILE
*fp ;
char
dstr1[12] , dstr2[8] ;
char
rstr[4] = " :\\" ;
if ( ( write_cflag == MFILE_DAY && old_day != curr_day ) ¦¦
( write_cflag == MFILE_MONTH && old_month != curr_month )
¦¦ mode == TRUE )
{
/*-----*
演算ファイル 作成
*-----*/
strcpy( dstr1 , DIR_NAME ) ;
strcpy( dstr2 , DIR_CNAME ) ;
file_cname[0] = rstr[0] = dstr1[0] = dstr2[0] = DRV_HDD2
;
_chdir( rstr ) ;
//ルート ディレクトリ
if ( _chdir( dstr1 ) != 0 )
{
_mkdir( dstr1 ) ;
_chdir( dstr1 ) ;
}
if ( _chdir( dstr2 ) != 0 )
{
_mkdir( dstr2 ) ;
_chdir( dstr2 ) ;
}
if ( file_cname[2] != SPACE )
{
if ( ( fp = fopen( file_cname , "a+b" ) ) != NULL )
{
len = _filelength( _fileno( fp ) ) ;
fclose( fp ) ;
if ( len < SIZE_CFILE )
{
_unlink( file_cname ) ;
//データ・ファイル 削除
}
}
}
file_cname[2]
file_cname[3]
file_cname[4]
file_cname[5]
file_cname[6]
file_cname[7]
file_cname[8]
=
=
=
=
=
=
=
str_datetime[ 2]
str_datetime[ 3]
str_datetime[ 5]
str_datetime[ 6]
str_datetime[ 8]
str_datetime[ 9]
str_datetime[11]
;
;
;
;
;
;
;
//日付(年)
//日付(月)
//日付(日)
//時刻(時)
file_cname[9] = str_datetime[12]
;
if ( period_cdata.flag == TRUE )
{
if ( ( fp = fopen( file_cname , "w+b" ) ) != NULL )
{
fclose( fp ) ;
}
}
}
if ( ( write_sflag == SFILE_DAY && old_day != curr_day ) ¦¦
( write_sflag == SFILE_MONTH && old_month != curr_month ) ¦¦
( write_sflag == SFILE_HOUR && old_hour != curr_hour )
¦¦ mode == TRUE )
{
/*-----*
瞬間ファイル 作成
*-----*/
strcpy( dstr1 , DIR_NAME ) ;
strcpy( dstr2 , DIR_SNAME ) ;
file_sname[0] = rstr[0] = dstr1[0] = dstr2[0] = DRV_HDD2
;
_chdir( rstr ) ;
//ルート ディレクトリ
if ( _chdir( dstr1 ) != 0 )
{
_mkdir( dstr1 ) ;
_chdir( dstr1 ) ;
}
if ( _chdir( dstr2 ) != 0 )
{
_mkdir( dstr2 ) ;
_chdir( dstr2 ) ;
}
if ( file_sname[2] != SPACE )
{
if ( ( fp = fopen( file_sname , "a+b" ) ) != NULL )
{
len = _filelength( _fileno( fp ) ) ;
fclose( fp ) ;
if ( len < SIZE_SFILE )
{
_unlink( file_sname ) ;
//データ・ファイル 削除
}
}
}
file_sname[2]
file_sname[3]
file_sname[4]
file_sname[5]
file_sname[6]
file_sname[7]
file_sname[8]
file_sname[9]
=
=
=
=
=
=
=
=
str_datetime[ 2]
str_datetime[ 3]
str_datetime[ 5]
str_datetime[ 6]
str_datetime[ 8]
str_datetime[ 9]
str_datetime[11]
str_datetime[12]
;
;
;
;
;
;
;
;
//日付(年)
//日付(月)
//日付(日)
//時刻(時)
if ( period_sdata.flag == TRUE )
{
if ( ( fp = fopen( file_sname , "w+b" ) ) != NULL )
{
fclose( fp ) ;
}
}
}
}
#pragma
page()
/****************************************************************
****
*
***
void write_sdata( void )
*
**
*
*
瞬間値データ 収録処理
*
*
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.19,1998
**
*
Revised Date Mar.10,1998
***
*
****
****************************************************************/
void
write_sdata( void )
{
FILE
*fp
;
if ( period_sdata.flag == TRUE )
{
change_directry( 0 ) ;
//
fp = fopen( file_sname , "a+b" )
ディレクトリ変更(瞬間値) <GP_PPLOT.C>
;
if ( period_sdata.flag == TRUE )
{
if ( fwrite( ( char * )&data_sfile[0] , SIZE_SFILE , ( size_t )sampling_num , fp )
!= ( size_t )sampling_num )
{
_settextcolor( GRED ) ;
_settextposition( 24 , 5 ) ;
_outtext( "ディスクが満杯です。" )
;
}
}
fclose( fp )
;
}
}
#pragma
page()
/****************************************************************
***
void write_mdata( void )
*
*
平均値データ 収録処理
*
****************************************************************/
void
write_mdata( void )
{
FILE
*fp ;
if ( period_cdata.flag == TRUE )
{
change_directry( 1 ) ;
//ディレクトリ変更(演算値) <GP_PPLOT.C>
if ( ( fp = fopen( file_cname , "a+b" ) ) != NULL )
{
if ( fwrite( ( char * )&data_cfile , 1 , SIZE_CFILE , fp )
!= SIZE_CFILE )
{
_settextcolor( GRED ) ;
_settextposition( 24 , 5 ) ;
_outtext( "ディスクが満杯です。" )
}
fclose( fp )
;
}
}
}
#pragma
page()
/****************************************************************
****
*
***
void write_sysfile( short mode )
*
**
*
*
システム・ファイル 書き込み処理
*
*
*
*
*
*
Parameter
*
*
short mode : 動作モード
*
;
*
0 : 停止中
*
*
1 : 観測中
*
*
*
*
Vervion
1.00
*
*
Created Date Feb.23,1998
**
*
Revised Date Mar. 5,1998
***
*
****
****************************************************************/
void
write_sysfile( short
mode )
{
FILE
char
*fp ;
str[6]
sprintf( str ,
memcpy( ( char
sprintf( str ,
memcpy( ( char
file_sys.ifile
file_sys.cfile
strcpy(
strcpy(
strcpy(
strcpy(
(
(
(
(
;
"%02d" , sampling_mean )
* )file_sys.mean , str ,
"%05.2f" , sampling_rec )
* )file_sys.smpl , str ,
= ( char )( write_sflag +
= ( char )( write_cflag +
char
char
char
char
*
*
*
*
)file_sys.isdt
)file_sys.iedt
)file_sys.csdt
)file_sys.cedt
_chdir( exe_directry )
;
,
,
,
,
period_sdata.start.date ) ;
period_sdata.end.date ) ;
period_cdata.start.date ) ;
period_cdata.end.date ) ;
//
fp = fopen( SYS_FILE , "w+b" )
fclose( fp )
起動ディレクトリ名
;
file_sys.meas = ( char )( mode ¦ 0x30 )
fwrite( ( char
;
2 ) ;
;
5 ) ;
'0' ) ;
'0' ) ;
;
* )&file_sys , 1 , SIZE_SYSFILE , fp )
;
}
#pragma
page()
/****************************************************************
****
*
***
void ftoas1( char *ptr , double d )
*
**
*
*
小数データ → ASCII 変換処理
*
*
( **.*、-**.* )
*
*
*
*
*
*
Parameter
*
*
char
*ptr : 文字列 格納ポインタ
*
*
double d
: 小数データ
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.27,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
ftoas1( char
*ptr , double
{
short
f = FALSE
if ( d < 0.0 )
{
f = TRUE
;
;
d = fabs( d )
}
*ptr++ = SPACE
;
;
d )
;
ftoa1( ptr , d , f )
;
}
#pragma
page()
/****************************************************************
****
*
***
void ftoas2( char *ptr , double d )
*
**
*
*
小数データ → ASCII 変換処理
*
*
( **.**、-**.** )
*
*
*
*
*
*
Parameter
*
*
char
*ptr : 文字列 格納ポインタ
*
*
double d
: 小数データ
*
*
*
*
Vervion
1.00
*
*
Created Date Feb.23,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
ftoas2( char
*ptr , double
d )
{
short
f = FALSE
if ( d < 0.0 )
{
f = TRUE
;
;
d = fabs( d )
;
}
*ptr++ = SPACE
;
ftoa2( ptr , d , f )
;
}
#pragma
page()
/************************************************************************
***
void ftoa1( char *ptr , double d , short flag )
*
*
小数データ → ASCII 変換処理
*
*
( **.* )
*
*
Parameter
*
*
char
*ptr : 文字列 格納ポインタ
*
*
double d
: 小数データ
*
*
short
flag : 符号
*
************************************************************************/
void
ftoa1( char *ptr , double d , short flag )
{
short
n , w , f = FALSE ;
n = ( short )( ( d + 0.05 ) * 10.0 )
;
//整数変換
if ( 0 <= n && n < 1000 )
{
w = n / 100 ;
//x*.*
if ( w == 0 )
{
*ptr++ = SPACE ;
}
else
{
if ( flag == TRUE )
{
*( ptr - 1 ) = MINUS ;
}
f = TRUE ;
*ptr++ = ( char )( w ¦ 0x30 ) ;
//x*.*
}
w = n % 100 / 10 ;
if ( flag == TRUE && f == FALSE )
{
*( ptr - 1 ) = MINUS ;
}
*ptr++ = ( char )( w ¦ 0x30 ) ;
*ptr++ = PERIOD ;
*ptr
= ( char )( n % 10 ¦ 0x30 )
;
//
*x.*
//
**.x
}
else
{
*ptr++
*ptr++
*ptr++
*ptr
=
=
=
=
'*'
'*'
'*'
'*'
;
;
;
;
}
}
#pragma
page()
/************************************************************************
***
void ftoa2( char *ptr , double d , short flag )
*
*
小数データ → ASCII 変換処理
*
*
( **.** )
*
*
Parameter
*
*
char
*ptr : 文字列 格納ポインタ
*
*
double d
: 小数データ
*
*
short
flag : 符号
*
************************************************************************/
void
ftoa2( char *ptr , double d , short flag )
{
short
n , w , f = FALSE ;
n = ( short )( ( d + 0.005 ) * 100.0 )
; //整数変換
if ( 0 <= n && n < 10000 )
{
w = n / 1000 ;
//x*.**
if ( w == 0 )
{
*ptr++ = SPACE ;
}
else
{
if ( flag == TRUE )
{
*( ptr - 1 ) = MINUS ;
}
f = TRUE ;
*ptr++ = ( char )( w ¦ 0x30 ) ;
}
w = n % 1000 / 100 ;
if ( flag == TRUE && f == FALSE )
{
*( ptr - 1 ) = MINUS ;
}
*ptr++ = ( char )( w ¦ 0x30 ) ;
*ptr++ = PERIOD ;
*ptr++ = ( char )( n % 100 / 10 ¦ 0x30 )
*ptr
= ( char )( n % 10 ¦ 0x30 ) ;
//
*x.**
;
//
//
**.*x
}
else
{
*ptr++
*ptr++
*ptr++
*ptr++
*ptr
=
=
=
=
=
'*'
'*'
'*'
'*'
'*'
//
;
;
;
;
;
}
}
#pragma
page()
/****************************************************************
x*.**
**.x*
****
*
***
void itoa4s( char *ptr , double d )
*
**
*
*
整数データ → ASCII 変換処理
*
*
( ****、-**** )
*
*
*
*
*
*
Parameter
*
*
char
*ptr : 文字列 格納ポインタ
*
*
double d
: 小数データ
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.19,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
itoa4s( char
*ptr , double
d )
{
short
f = FALSE
;
if ( d < 0 )
{
d = fabs( d )
f = TRUE
;
;
}
*ptr++ = SPACE
;
itoa4( ptr , d , f )
;
}
#pragma
page()
/************************************************************************
****
*
***
void itoa4( char *ptr , double d , short flag )
*
**
*
*
整数データ → ASCII 変換処理
*
*
( **** )
*
*
*
*
*
*
Parameter
*
*
char
*ptr : 文字列 格納ポインタ
*
*
double d
: 小数データ
*
*
short
flag : 符号
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.19,1998
**
*
Revised Date
. ,
***
*
****
************************************************************************/
void
itoa4( char
*ptr , double
d , short
flag )
{
short
char
s , len , dt ;
buff[5] , str[5] = "
"
;
dt = ( short )( ( d + 0.005 ) * 100.0 )
;
if ( 0 <= dt && dt < 10000 )
{
sprintf( buff , "%d" , dt )
len = strlen( buff ) ;
;
memcpy( &str[4-len] , buff , len )
memcpy( ptr , str , 4 ) ;
;
if ( flag == TRUE )
{
s = 4 - len - 1 ;
*( ptr + s ) = MINUS
}
;
}
else
{
*ptr++
*ptr++
*ptr++
*ptr
=
=
=
=
'*'
'*'
'*'
'*'
;
;
;
;
}
}
#pragma
page()
/****************************************************************
****
*
***
void itoa3( char *ptr , double d )
*
**
*
*
整数データ → ASCII 変換処理
*
*
( *** )
*
*
*
*
*
*
Parameter
*
*
char
*ptr : 文字列 格納ポインタ
*
*
double d
: 小数データ
*
*
*
*
Vervion
1.00
*
*
Created Date Jan.27,1998
**
*
Revised Date
. ,
***
*
****
****************************************************************/
void
itoa3( char
*ptr , double
d )
n , w , f = FALSE
;
{
short
n = ( short )( d + 0.5 )
;
if ( 0 <= n && n < 1000 )
{
w = n / 100 ;
if ( w != 0 )
{
*ptr++ = ( char )( w ¦ 0x30 )
f = TRUE ;
}
else
{
*ptr++ = SPACE ;
}
;
//
w = n % 100 / 10 ;
*ptr++ = w == 0 && f == FALSE ?
SPACE : ( char )( w ¦ 0x30 )
*ptr
= ( char )( n % 10 ¦ 0x30 )
}
else
{
*ptr++ = '*'
*ptr++ = '*'
*ptr
= '*'
}
}
_
;
;
;
;
//
//
x**
**
; //
**x
*x*
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
共有データ 定義ファイル
*
*
*
*
*
*
Module Name
: COMMON.H
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Jan. 14, 1998
*
*
*
*
Revised Date : Mar. 2, 1998
*
*
*
*
Auther
: S. Yamashita
**
*
***
*
****
*************************************************************************/
/*********************************************************************
****
*
***
*
**
Ver 1.00
*
*
新規作成
Jan. 14, 1998
**
*
***
*
****
*********************************************************************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
<stdio.h>
<stdlib.h>
<string.h>
<graph.h>
<conio.h>
<dos.h>
<bios.h>
<math.h>
<time.h>
<direct.h>
<io.h>
<errno.h>
<malloc.h>
/******************************************
***
*
**
主要定数 定義
**
*
***
******************************************/
#define VOID
#define
#define
#define
#define
#define
#define
void
FAR
NEAR
__near
PASCAL
__pascal
CDECL
__cdecl
INTERRUPT __interrupt
EXPORT
__export
typedef
unsigned char
typedef unsigned short
typedef unsigned long DWORD
typedef
typedef
typedef
typedef
typedef
typedef
typedef
BYTE
WORD
__far
;
;
;
void FAR *
void __huge *
const void __huge *
BYTE FAR *
BYTE __huge *
WORD FAR *
WORD __huge *
LPVOID
;
LPBYTE
;
LPWORD
;
HPVOID ;
HPCVOID ;
HPBYTE
;
HPWORD
;
typedef
void
( INTERRUPT FAR CDECL *IHDL )( void )
#define
#define
#define
FOREVER
FALSE
TRUE
1
0
1
//
//
偽
真
#define
#define
SELECT
RELEASE
1
0
//
//
選択
非選択
#define
PAI
3.141592654
#define
RAD
180.0
/*******************************************
***
*
**
ASCIIコード 定義
**
*
***
*******************************************/
#define
#define
#define
#define
STX
ETX
LF
FF
0x02
0x04
0x0a
0x0c
;
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
CR
XON
XOFF
SPACE
COLON
PERIOD
MINUS
PLUS
ASTRISK
SLASH
DOLLER
COMMA
U_LINE
0x0d
0x11
0x13
' '
':'
'.'
'-'
'+'
'*'
'/'
'$'
','
'_'
/******************************************
***
*
**
ビット制御 定義
**
*
***
******************************************/
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
BIT_0
BIT_1
BIT_2
BIT_3
BIT_4
BIT_5
BIT_6
BIT_7
BIT_8
BIT_9
BIT_10
BIT_11
BIT_12
BIT_13
BIT_14
BIT_15
0x0001
0x0002
0x0004
0x0008
0x0010
0x0020
0x0040
0x0080
0x0100
0x0200
0x0400
0x0800
0x1000
0x2000
0x4000
0x8000
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
_
BIT_R0
BIT_R1
BIT_R2
BIT_R3
BIT_R4
BIT_R5
BIT_R6
BIT_R7
BIT_R8
BIT_R9
BIT_R10
BIT_R11
BIT_R12
BIT_R13
BIT_R14
BIT_R15
0xfffe
0xfffd
0xfffb
0xfff7
0xffef
0xffdf
0xffbf
0xff7f
0xfeff
0xfdff
0xfbff
0xf7ff
0xefff
0xdfff
0xbfff
0x7fff
/*************************************************************************
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
共有データ 定義ファイル
*
*
Module Name
: GP_720.H
*
*************************************************************************/
#include
#include
#include
"COMMON.H"
"GP_WRITE.H"
"IBM_AT.H"
/******************************************
**
動作モード 定義
**
******************************************/
/*-----* システム・モード
*-----*/
#define
SYS_START
0
//起動中
#define
SYS_IDLE
1
//停止状態
#define
SYS_MEASURE
2
//観測中
#define
SYS_DISP
3
//収録データ表示
#define
SYS_DPRT
4
//収録データ印刷
#define
SYS_PPRT
5
//プロッタ表示・印刷
#define
SYS_MENU
6
//メニュー画面
#define
SYS_DATE
7
//収録期間 入力中
#define
SYS_PLOT
8
//ペンプロッタ・データ表示
#define
SYS_EXIT
9
//システム終了
#define
#define
#define
#define
#define
#define
/*-----*
DISP_MWT
DISP_MVW
DISP_SIG
DISP_SSW
DISP_IWT
DISP_IVW
画面番号
define
#define
#define
#define
#define
#define
#define
/*-----*
収録ファイル
SFILE_HOUR 1
SFILE_DAY
SFILE_MONTH
MFILE_DAY
MFILE_MONTH
MAX_RECBF
MAX_COMBF
0
1
2
3
4
5
*-----*/
//平均 風速/風向/温度 演算結果画面
//平均 成分風速 演算結果画面
//標準偏差 演算結果画面
//乱流強度 演算結果画面
//瞬間 風速/風向/温度 演算結果画面
//瞬間 成分風速
*-----*/
//瞬間値 1 時間/1ファイル
2
//
1 日/1ファイル
3
//
1 ヶ月/1ファイル
1
//平均値 1 日/1ファイル
2
//
1 ヶ月/1ファイル
40
//DA-600 受信バッファ数(数値)
60
//DA-600 受信バッファ数(文字列)
/*****************************************
**
キー・コード 定義
**
*****************************************/
#define KEY_NONE
0
//入力なし
#define
KEY_F1
1
//F1
#define
KEY_F2
2
//F2
#define
KEY_F3
3
//F3
#define
KEY_F4
4
//F4
#define
KEY_F5
5
//F5
#define
KEY_F6
6
//F6
#define
KEY_F7
7
//F7
#define
KEY_F8
8
//F8
#define
KEY_F9
9
//F9
#define
KEY_F10
10
//F10
#define
KEY_F11
11
//F11
#define
KEY_F12
12
//F12
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
KEY_SF1
KEY_SF2
KEY_SF3
KEY_SF4
KEY_SF5
KEY_SF6
KEY_SF7
KEY_SF8
KEY_SF9
KEY_SF10
KEY_SF11
KEY_SF12
21
22
23
24
25
26
27
28
29
30
31
32
//Shift
//Shift
//Shift
//Shift
//Shift
//Shift
//Shift
//Shift
//Shift
//Shift
//Shift
//Shift
+
+
+
+
+
+
+
+
+
+
+
+
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
#define
#define
#define
KEY_ENT
KEY_PUP
KEY_PDOWN
14
15
16
//Enter
//Page Up
//Page Down
#define
#define
#define
#define
#define
KEY_UP
17
KEY_DOWN
18
KEY_LEFT
19
KEY_RIGHT 20
KEY_BAK
255
/****************************************
**
ドライブ 定義
**
****************************************/
#define
DRV_FDD
'A'
#define
DRV_HDD1 'C'
#define
DRV_HDD2 'D'
#define
DRV_MOD
'E'
#define
NO_FDD
1
#define
NO_HDD1
3
#define
NO_HDD2
4
#define
NO_MOD
5
//↑
//↓
//←
//→
//Back Space、Delete
//FDドライブ
//HDドライブ
//HDドライブ
//MOドライブ
//FDドライブ
//HDドライブ
//HDドライブ
//MOドライブ
/******************************************
**
受信データ 定義
**
******************************************/
typedef
struct
{
char
x[6]
char
y[6]
char
w[6]
char
t[6]
char
cr ;
char
lf ;
} DEF_RECDA ;
;
;
;
;
/******************************************
**
演算データ 定義
**
******************************************/
/*-----*
平均値データ
*-----*/
typedef
struct
{
double
u ;
double
d ;
double
w ;
double
x ;
double
y ;
double
t ;
double
su ;
double
sd ;
double
sw ;
double
sx ;
double
sy ;
double
suu ;
double
sww ;
double
sxx ;
double
syy ;
} DEF_MEAN ;
typedef
/*-----*
struct
DA-600 観測値データ
//X 軸 成分風速
//Y 軸 成分風速
//W 軸 成分風速
//Ts 温度
//CR
//LF
//平均水平風速(U)
//平均水平風向(θ)
//平均垂直風速(W)
//X 成分風速 平均値(X)
//Y 成分風速 平均値(Y)
//平均温度
//水平風速 標準偏差(σU)
//水平風向 標準偏差(σθ)
//垂直風速 標準偏差(σW)
//X 成分風速 標準偏差(σX)
//Y 成分風速 標準偏差(σY)
//水平風速 乱流強度(σU/U)
//W 成分風速 乱流強度(σW/W)
//X 成分風速 乱流強度(σX/X)
//Y 成分風速 乱流強度(σY/Y)
*-----*/
{
}
typedef
/*-----*
struct
double
double
double
double
DEF_DA600 ;
平均値 演算データ
x
y
w
t
;
;
;
;
//X 成分風速
//Y 成分風速
//W 成分風速
//Ts 温度
*-----*/
{
}
short
short
short
short
short
DEF_MEAN
DEF_MEAN
DEF_MEAN
DEF_MCAL ;
year ;
month ;
day ;
hour ;
minute ;
ma
mb
mc
;
;
;
//日付(年)
//
(月)
//
(日)
//時刻(時)
//
(分)
//平均値 演算データ A
//平均値 演算データ B
//平均値 演算データ C
typedef
/*-----*
struct
瞬間値 演算データ
*-----*/
{
}
typedef
/*-----*
struct
short
short
short
short
short
short
DEF_DA600 da
DEF_DA600 db
DEF_DA600 dc
double
double
double
double
double
double
DEF_SCAL ;
観測値 積算データ
year ;
month ;
day ;
hour ;
minute ;
second ;
;
;
;
ua
ub
uc
va
vb
vc
;
;
;
;
;
;
//日付(年)
//
(月)
//
(日)
//時刻(時)
//
(分)
//
(秒)
//DA-600 観測値 A
//DA-600 観測値 B
//DA-600 観測値 C
//水平風速 A
//水平風速 B
//水平風速 C
//風速 A
//風速 B
//風速 C
*-----*/
{
}
typedef
/*-----*
struct
double
double
double
double
double
double
double
double
double
DEF_SUM ;
レンジ・データ
n
x
y
w
t
xx
yy
ww
xy
;
;
;
;
;
//瞬間値 演算データ数
//X 成分風速 積算値
//Y 成分風速 積算値
//W 成分風速 積算値
//Ts 温度 積算値
//X 成分風速の 2 乗 積算値
//Y 成分風速の 2 乗 積算値
//W 成分風速の 2 乗 積算値
//X 成分風速 × Y 成分風速 積算値
;
;
;
;
*-----*/
{
short
}
double
double
double
double
DEF_RANGE ;
flag
;
min ;
max ;
dmin ;
dmax ;
/******************************************
**
表示データ 定義
**
******************************************/
/*-----*
平均値 演算値
*-----*/
typedef
struct
{
char
u[5] ;
char
d[4] ;
char
w[6] ;
char
x[6] ;
char
y[6] ;
char
su[5] ;
char
sd[5] ;
char
sw[5] ;
char
sx[5] ;
char
sy[5] ;
char
suu[5]
;
char
sxx[5]
;
char
syy[5] ;
char
sww[5] ;
char
t[6] ;
} DEF_MDATA ;
typedef
/*-----*
struct
瞬間値 観測値
//入力データ・フラグ
//
//
//
//最小値(設定値)
//最大値(設定値)
//設定可能最小値
//
最大値
0 : 2 桁 整数データ
1 :
正数データ
2 : 3 桁 正数データ
//水平風速 xx.x
//水平風向 xxx
//垂直風速 ±xx.x
//X 成分風速
±xx.x
//Y 成分風速
±xx.x
//水平風速 標準偏差 xx.x
//水平風向 標準偏差 xx.x
//垂直風速 標準偏差 xx.x
//X 成分風速 標準偏差 xx.x
//Y 成分風速 標準偏差 xx.x
//水平風速 乱流強度(σU/U)
//X 成分風速 乱流強度(σX/X)
//Y 成分風速 乱流強度(σY/Y)
//W 成分風速 乱流強度(σW/W)
//平均温度 ±xx.x
*-----*/
{
char
x[6]
;
//X 成分風速
±xx.x
xx.x
xx.x
xx.x
xx.x
}
typedef
/*-----*
struct
char
char
char
char
char
DEF_SDATA ;
y[6]
w[6]
u[5]
v[5]
t[6]
平均値 表示データ
;
;
;
;
;
//Y 成分風速
//W 成分風速
//水平風速 xx.x
//風速
xx.x
//Ts 温度 ±xx.x
±xx.x
±xx.x
*-----*/
{
}
typedef
/*-----*
struct
char
DEF_MDATA
DEF_MDATA
DEF_MDATA
DEF_MDISP ;
瞬間値 表示データ
time[5]
da ;
db ;
dc ;
; //時刻
hhmm
//平均値 演算値 A
//平均値 演算値 B
//平均値 演算値 C
; //時刻
hhmmss
//瞬間値 観測値 A
//瞬間値 観測値 B
//瞬間値 観測値 C
*-----*/
{
}
typedef
/*-----*
struct
char
DEF_SDATA
DEF_SDATA
DEF_SDATA
DEF_SDISP ;
ペンプロッタ・データ
time[7]
da ;
db ;
dc ;
*-----*/
{
}
char
short
short
short
DEF_PLOT ;
dt[10]
x ;
y1 ;
y2 ;
;
/**********************************************
**
収録期間データ 定義
**
**********************************************/
typedef
struct
{
char
date[17]
short
year ;
short
month ;
short
day ;
short
hour ;
} DEF_PDATE ;
typedef
//日付/時刻
//開始 X 座標
//
Y 座標
// 終了 Y 座標
;
//収録 日付、時刻(文字列)
//収録日付(年)
//
(月)
//
(日)
//
時刻(時)
struct
{
short
}
flag
DEF_PDATE start ;
DEF_PDATE end ;
DEF_PERIOD ;
/********************************************
**
ファンクション・キ- 宣言
**
********************************************/
typedef
struct
{
short
no ;
short
flag ;
}
char
FUNC_FORM ;
*str
;
;
//保存開始フラグ
//
TRUE : 保存フラグ
//
FALSE : 期間指定なし
//収録開始 日付、時刻
//収録終了 日付、時刻
//ボタン 番号
//漢字/半角フラグ
//
0 : 漢字
//
1 : 半角
//表示 文字列
/******************************************
**
共用関数 宣言
**
******************************************/
#define ESC
"\x1b"
#define
beep()
putchar( 0x07 )
#define LOCATE( l , c )
printf( ESC"[%d;%dH" , l , c )
/****************************************************
yyyy/mm/dd
hh
**
共用外部参照関数 型宣言
**
****************************************************/
/*-----*
GP_MAIN.C (データ演算装置 メイン処理)
*-----*/
void CDECL main( void ) ;
void
measure_main( void ) ;
void
sys_init( void ) ;
void
sys_down( void ) ;
time_t
measure_init( void ) ;
void
measure_second( void ) ;
void
measure_mean( void ) ;
void
measure_stop( void ) ;
void
disp_datetime( void ) ;
void
init_data_area( void ) ;
void
init_mean_data( DEF_MDATA *ptr ) ;
void
init_da600_data( DEF_SDATA *ptr ) ;
VOID FAR handle_err( WORD deverror , WORD errcode , LPWORD
VOID INTERRUPT FAR CDECL
int_ctrl_c( void ) ;
//GP-720 型 データ演算装置 メイン処理
//観測 メイン処理
//システム 初期設定処理
//システム 終了処理
//観測 初期設定処理
//瞬間値 観測処理
//1/10 分 観測処理
//観測 停止処理
//日付、時刻 表示処理
//データ・エリア 初期設定処理
//表示データ(平均値 演算値) 初期設定処理
//表示データ(瞬間値 観測値) 初期設定処理
devhdr ) ;
//INT 24H (例外エラー処理ハンドラ)
//INT 23H (Ctrl+C 割り込み処理ハンドラ)
void
void
/*-----*
GP_CAL.C (風向、風速 演算処理)
*-----*/
calcu_da600_sec( short pa , short pb , short pc ) ;
calcu_sdata( short mode , double x , double y, double
void
void
double
void
calcu_mean( void ) ;
calcu_mean_data( short mode ) ;
calcu_theta( double x , double y )
clear_sum_data( DEF_SUM *ptr ) ;
void
void
void
void
void
void
void
void
/*-----*
GP_MEAS.C
draw_title( void ) ;
draw_mean_wt( void )
draw_mean_vw( void )
draw_mean_sigma( void
draw_mean_ssw( void )
draw_instant_wt( void
draw_instant_vw( void
disp_save_date( short
void
void
void
void
void
void
void
void
void
void
void
void
void
/*-----*
GP_WRITE.C (データ収録処理)
creat_sdata( short no ) ;
creat_mdata( void ) ;
creat_filename( short mode ) ;
write_sdata( void ) ;
write_mdata( void ) ;
write_sysfile( short mode ) ;
ftoas1( char *ptr , double d ) ;
ftoas2( char *ptr , double d ) ;
ftoa1( char *ptr , double d , short
ftoa2( char *ptr , double d , short
itoa4s( char *ptr , double d ) ;
itoa4( char *ptr , double d , short
itoa3( char *ptr , double d ) ;
void
short
void
void
/*-----*
GP_READ.C (収録データ 読み込み処理)
read_sysfile( void ) ;
open_mfile( void ) ;
open_ifile( void ) ;
change_directry( short mode ) ;
void
short
short
/*-----*
GP_KEY.C (キーボード 入力処理)
*-----*/
draw_function( FUNC_FORM *btn , short mode ) ;
//ファンクション・キ- 描画処理
check_function( void ) ;
//ファンクション・キー 入力チェック処理
check_keybrd( void ) ;
//キー・ボード 入力チェック処理
void
void
short
short
short
short
short
short
short
//DA-600 型風速計データ 成分風速(1 秒) 演算処理
w , double t ) ;
//瞬間値データ 演算処理
//平均値 演算処理
//平均値 演算処理(1チャネル)
//θ(水平風向) 演算処理(deg)
//瞬間値 積算データ クリア処理
;
(観測データ 表示処理)
//観測画面
;
;
) ;
;
) ;
) ;
mode ) ;
*-----*/
タイトル 描画処理
//平均風速/風向/温度画面 タイトル 描画処理
//平均成分風速画面 タイトル 描画処理
//標準偏差画面 タイトル 描画処理
//乱流強度画面 タイトル 描画処理
//瞬間風速/風向/温度画面 タイトル 描画処理
//瞬間成分風速画面 タイトル 描画処理
//平均値/瞬間値 収録期間 表示処理
*-----*/
flag )
flag )
;
;
flag )
;
//収録/表示データ(瞬間) 作成処理
//収録/表示データ(平均値) 作成処理
//収録ファイル 作成処理
//瞬間値データ 収録処理
//平均値データ 収録処理
//システム・ファイル 書き込み処理
//小数データ → ASCII 変換処理( **.*、-**.* )
//小数データ → ASCII 変換処理( **.**、-**.** )
//小数データ → ASCII 変換処理( **.* )
//小数データ → ASCII 変換処理( **.** )
//整数データ → ASCII 変換処理( ****、-**** )
//整数データ → ASCII 変換処理( **** )
//整数データ → ASCII 変換処理( *** )
*-----*/
//システム・ファイル 読み込み処理
//演算値データ 読み込み処理
//瞬間値データ 読み込み処理
//収録データ ディレクトリ 変更処理
/*-----*
GP_DATE.C (収録期間 設定処理)
*-----*/
set_file_date( short mode ) ;
//収録期間 設定処理
check_file_date( short mode ) ;
//収録期間 チェック処理
set_date_time( DEF_PDATE *ptr , short colum , short row ) ;
//収録期間 キー入力処理
key_date_time( short colum , short row , DEF_PDATE *buff , short *num ) ;
//収録開始/終了期間 キー入力チェック処理
key_yesno( short row ) ;
//収録開始/終了期間 入力終了 確認処理
check_date_time( short mode , DEF_PERIOD *ptr ) ;
//収録開始/終了 チェック処理
set_date_year( short colum , short row , DEF_PDATE *buff ) ;
//収録期間(年) キー入力処理
//収録期間(月) キー入力処理
set_date_month( short colum , short row , DEF_PDATE *buff ) ;
set_date_day( short colum , short row , DEF_PDATE *buff ) ; //収録期間(日) キー入力処理
void
void
short
void
short
short
void
void
void
void
short
void
set_time_hour( short colum , short row , DEF_PDATE *buff ) ;
set_cursor( short mode , short column , short row , short col ) ;
next_date_time( short flag , short *year , short *month , short *day
short *hour , short *minute , short *second ) ;
//収録期間(時) キー入力処理
//カーソル 設定処理
,
//次日付、時刻 設定処理
/*-----*
GP_PPMAN.C (ペンプロッタ表示/印刷 メイン処理)
*-----*/
penplot_main( void ) ;
//ペンプロッタ表示/印刷 メイン処理
menu_plot( void ) ;
//ペンプロッタ表示/印刷 メニュー処理
select_datafile( short *no , short key , char *str ) ;
//収録ファイル 選択処理
disp_plotmenu( short mode , short no , char *buff ) ;
//収録ファイル 選択メニュー 表示処理
scroll_filelist( short mode , short *no ) ;
//収録ファイル 一覧表示処理
disp_filelist( short no ) ;
//収録ファイル 一覧表示処理
select_filelist( short flag , short no ) ;
//収録ファイル 選択項目 表示処理
change_plotitem( short key ) ;
//ペンプロッタ表示/印刷メニュー 表示項目 変更処理
search_datafile( void ) ;
//収録ファイル 検索処理
/*-----*
GP_PPLOT.C (ペンプロッタ 画面処理)
*-----*/
void
short
void
void
void
short
short
void
void
void
draw_penplot( void ) ;
draw_plotdata( void ) ;
draw_plotarea( void ) ;
draw_plotgraph( short no ) ;
draw_plotscale( short no ) ;
creat_plotmdata( void ) ;
creat_plotidata( void ) ;
creat_plotmgraph( short *c , short *ot , size_t n
creat_plotigraph( size_t n , short *c ) ;
get_filemdata( short no , double *da , double *db
void
get_fileidata( short
void
void
disp_plotcycle( double st , short
disp_plottitle( short mt ) ;
void
void
void
void
void
void
void
short
short
/*-----*
GP_PCOL.C (プロット色 設定メニュー処理)
*-----*/
menu_pencolor( void ) ;
edit_pencolor( short *no , short *num , short code ) ;
disp_colormenu( short *num ) ;
disp_coloritem( short flag , short no , short *num ) ;
creat_colmessage( short no , char *mes ) ;
change_pencolor( short no ) ;
save_pencolor( void ) ;
conv_colorno( short pen ) ;
conv_penno( short col ) ;
void
void
void
short
void
void
void
void
void
void
void
void
/*-----*
GP_RANGE.C (ペンプロッタ レンジ設定メニュー処理)
*-----*/
menu_range( void ) ;
//ペンプロッタ レンジ設定メニュー処理
select_rangeinf( short *edit , short code ) ;
//レンジ情報 選択処理
keyin_rangeinf( short *edit ) ;
//レンジ情報 選択処理
change_rangeinf( short edit , char *str , short n ) ;
//レンジ情報 変更処理
disp_rangemenu( void ) ;
//レンジ 選択メニュー 表示処理
disp_selrange( short flag , short no ) ;
//レンジ選択項目 選択データ 表示処理
load_rangeinf( void ) ;
//レンジ情報 編集データ 設定処理
save_rangeinf( void ) ;
//レンジ情報 設定データ 書き込み処理
setup_rangeinf( void ) ;
//ペンプロッタ表示/印刷 レンジ情報 設定処理
set_num_code( short key , short *num , short no , char *buff ) ;
//入力数値 格納処理
set_next_cursor( short *column , short flag ) ;
//次カーソル位置 設定処理
set_last_cursor( short *column , short flag ) ; //前カーソル位置 設定処理
WORD
WORD
WORD
/*-----*
GP_PRINT.C (収録データ 印刷処理)
printer_init( void ) ;
printer_line( LPBYTE fp , WORD n ) ;
printer_status( void ) ;
/*-----*
no , double
*da , double
mt )
;
GP_COMBD.C (シリアルI/Oボード 制御処理)
void
setup_comboard( void ) ;
void
setup_comint( void ) ;
void
setup_format( char ch ) ;
void
comio_workset( void ) ;
void
comio_init( char ch ) ;
void
comio_end( void ) ;
void
receive_da600( void ) ;
void
conv_da600( char ch ) ;
VOID INTERRUPT FAR CDECL
int_comio1( void )
//ペンプロッタ画面 描画処理
//ペンプロッタ・データ 描画処理
//ペンプロッタ画面 データ・エリア 消去処理
//ペンプロッタ グラグ枠 描画処理
//ペンプロッタ グラグ・メモリ 描画処理
//ペンプロッタ・データ(演算値) 作成処理
//ペンプロッタ・データ(瞬間値) 作成処理
) ;//ペンプロッタ・グラフ・データ(演算値) 作成処理
//ペンプロッタ・グラフ・データ(瞬間値) 作成処理
, double *dc , double upp , double low ) ;
//風速計データ(演算値) 抽出処理
*db ,double *dc , double upp , double low ) ;
//風速計データ(瞬間値) 抽出処理
//サンプリング、平均時間 表示処理
//ペンプロッタ画面 タイトル 表示処理
//プロッタ色 設定 メニュー処理
//プロット色 選択/変更処理
//プロッタ色 選択メニュー 表示処理
//プロット色 選択項目 表示処理
//プロッタ色 選択メッセージ 作成処理
//プロッタ色 変更処理
//プロッタ色 設定データ 書き込み処理
//ペン番号 変換処理 (色番号←ペン番号)
//色番号 変換処理 (ペン番号←色番号)
*-----*/
//パラレル・プリンタ 初期設定処理
//パラレル・プリンタ 1 行印刷処理
//パラレル・プリンタ ステータス・チェック処理
*-----*/
//シリアルI/Oボード(COM-2S(PC)) 設定処理
//シリアルI/Oボード 割り込みハンドラ 設定処理
//シリアルI/Oボード(COM-2S(PC)) 受信フォーマット設定処理
//シリアルI/Oボード(COM-2S(PC)) ワーク 設定処理
//チャネル 通信条件 設定処理
//シリアルI/Oボード(COM-2S(PC)) 終了処理
//DA-600 型 超音波風速計データ 受信処理
//DA-600 受信データ 数値変換処理
; //シリアルI/Oボード(COM-2S(PC) 1 枚目) 割り込みハンドラ
VOID INTERRUPT FAR CDECL
_
int_comio2( void )
; //シリアルI/Oボード(COM-2S(PC) 2 枚目) 割り込みハンドラ
/*************************************************************************
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
シリアルI/Oボード( COM-2S(PC) ) 定義ファイル
*
*
Module Name
: GP_COMBD.H
*
*************************************************************************/
#include <H104C.H>
/*****************************************************************
**
シリアルI/OモジュールCOM-2S(PC) 動作モード定義
**
*****************************************************************/
#define
#define
#define
COM_ADDR 0x01a0
COM_QUANT 2
COM_TYPE 0
//COM-2S(PC)ボード I/Oアドレス
//COM-2S(PC)ボード 枚数
//COM-2S(PC)ボード タイプ
/*-----*
#define
#define
データ長
COM_BIT7
COM_BIT8
//7ビット
//8ビット
/*-----*
#define
#define
#define
パリティ・チェック、パリティ・ビット
COM_NON
0x00
COM_EVEN 0x02
COM_ODD
0x82
/*-----*
#define
#define
ストップ・ビット長
COM_STP1 0x00
COM_STP2 0x01
#define
COM_BORT
0x02
#define
COM_CTRL
COM_BIT8 + COM_NON + COM_STP2
#define
COM_MODE
*-----*/
0x00
0x04
*-----*/
//なし
//偶数
//奇数
*-----*/
//1ビット
//2ビット
//COM-2S(PC)ボード ボーレート
//
1:19200bps 5:1200bps
//
2: 9600bps 6: 600bps
//
3: 4800bps 7: 300bps
//
4: 2400bps
0x80
//COM-2S(PC)ボード 通信コントロール
//x0000xxxB
//¦
¦¦¦
//¦
¦¦+-//¦
¦+--//¦
+---//+---------
//COM-2S(PC)ボード 制御モード
//
x00000xxB
//
¦
¦¦
//
¦
¦+-- フロー制御モード
//
¦
+--- ローカル・エコーバック
//
+--------- 割り込み制御
/****************************************
**
戻り値 定義
**
****************************************/
#define
RTN_NRML 0
//正常終了
#define
RTN_INIT 1
//初期化済みエラー、初期化未処理エラー
#define
RTN_PARM 2
//パラメータ・エラー
//#define RTN_WAIT 3
//送信処理 受け付け済みエラー、受信処理 受け付け済みエラー
#define
RTN_SERR 4
//送信エラー発生中、受信エラー発生中
#define
RTN_SEND 5
//送信中エラー
#define
RTN_NONE 6
//受信完了データなしエラー
#define
RTN_DEMT 7
//デリミタ・コード未処理エラー
#define
RTN_BOAD 8
//ボード未実装エラー
/******************************************
**
エラー・リセット 定義
**
******************************************/
#define
RST_SEND 0
//送信エラー リセット
#define
RST_REC
1
//受信エラー リセット
#define
RST_BUFF 2
//バッファ・データ クリア
/*********************************************
**
センス通知内容 定義
**
*********************************************/
/*-----*
#define
#define
#define
/*-----*
コマンド
SNS_SEND
SNS_REC
SNS_INT
ポスト・コード
*-----*/
0
1
2
//送信状態センス
//受信状態センス
//割り込み状態センス
*-----*/
ストップ・ビット長
0:1ビット、1:2ビット
パリティ・チェック 0:なし、1:あり
データ長
0:7ビット、1:8ビット
パリティ・ビット 0:偶数、1:奇数
0:なし、1:あり
0:なし、1:あり
0:なし、1:あり
#define
SNS_NRML
/*-----*
#define
#define
センス種別 0:送信状態センス
*-----*/
SNSS_SEND 1
//送信中
SNSS_TOVR 2
//タイム・オーバー
/*-----*
#define
#define
センス種別 1:受信状態センス
*-----*/
SNSR_REC 1
//受信中
SNSR_TOVR 2
//タイム・オーバー
/*-----*
#define
#define
#define
/*-----*
0
//正常終了
センス種別 2:割り込み状態センス
*-----*/
//00000xxxB
//
¦¦¦
//
¦¦+--コマンド応答 0:なし、1:あり
//
¦+---送信終了 0:なし、1:あり
//
+----受信終了 0:なし、1:あり
SNSI_ANS 0x01
SNSI_SEND 0x02
SNSI_REC 0x04
ステータス
//コマンド応答あり
//送信終了あり
//受信終了あり
*-----*/
//0xxx0xxxB
// ¦¦¦ ¦¦¦
// ¦¦¦ +++--エラー・コード
// ¦¦¦
000:正常終了
// ¦¦¦
010:タイム・オーバー
// ¦¦¦
011:伝送エラー発生
// ¦¦¦
100:受信バッファ・オーバー発生
// +++------伝送エラー詳細
//
001:フレーミング・エラー
//
010:パリティ・エラー
//
100:オーバーラン・エラー
#define
#define
#define
#define
#define
#define
#define
_
STS_NRML
STS_TOVR
STS_ERR
STS_ROVR
STS_FRAM
SYS_PRTY
STS_OVRN
0x00
0x02
0x03
0x04
0x10
0x20
0x40
//正常終了
//タイム・オーバー
//伝送エラー
//受信バッファ・オーバー
//フレーミング・エラー
//パリティ・エラー
//オーバーラン・エラー
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
シリアルI/Oボード( COM-2S(PC) ) 定義ファイル
*
*
*
*
*
*
Module Name
: GP_COMBD.H
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Jan. 14, 1998
*
*
*
*
Revised Date : Jan. 20, 1998
*
*
*
*
Auther
: S. Yamashita
**
*
***
*
****
*************************************************************************/
/*********************************************************************
****
*
***
*
**
Ver 1.00
*
*
新規作成
Jan. 14, 1998
**
*
***
*
****
*********************************************************************/
#include
<H104C.H>
/*****************************************************************
***
*
**
シリアルI/OモジュールCOM-2S(PC) 動作モード定義
**
*
***
*****************************************************************/
#define
COM_ADDR
#define
#define
0x01a0
//
COM-2S(PC)ボード I/Oアドレス
COM_QUANT 2
COM_TYPE 0
//
//
COM-2S(PC)ボード 枚数
COM-2S(PC)ボード タイプ
/*-----*
#define
#define
データ長
COM_BIT7
COM_BIT8
7ビット
8ビット
/*-----*
#define
#define
#define
パリティ・チェック、パリティ・ビット
COM_NON
0x00
COM_EVEN 0x02
//
COM_ODD
0x82
*-----*/
0x00
//
0x04
//
*-----*/
//
偶数
//
なし
奇数
/*-----*
#define
#define
ストップ・ビット長
COM_STP1 0x00
COM_STP2 0x01
#define
COM_BORT
*-----*/
//
//
0x02
//
1ビット
2ビット
COM-2S(PC)ボード ボーレート
//
//
//
//
1:19200bps 5:1200bps
2: 9600bps 6: 600bps
3: 4800bps 7: 300bps
4: 2400bps
#define
COM_CTRL
COM_BIT8 + COM_NON + COM_STP2
//
#define
COM_MODE
0x80
COM-2S(PC)ボード 制御モード
//
x00000xxB
//
¦
¦¦
//
¦
¦+-- フロー制御モード
//
¦
+--- ローカル・エコーバック
//
+--------- 割り込み制御
//
COM-2S(PC)ボード 通信コントロール
//
x0000xxxB
//
¦
¦¦¦
//
¦
¦¦+-- ストップ・ビット長
0:1ビット、1:2ビット
//
¦
¦+--- パリティ・チェック 0:なし、1:あり
//
¦
+---- データ長
0:7ビット、1:8ビット
//
+--------- パリティ・ビット 0:偶数、1:奇数
/****************************************
***
*
**
戻り値 定義
**
*
***
****************************************/
#define
#define
#define
//#define
#define
#define
#define
#define
#define
RTN_NRML
RTN_INIT
RTN_PARM
RTN_WAIT
RTN_SERR
RTN_SEND
RTN_NONE
RTN_DEMT
RTN_BOAD
0
1
2
3
4
5
6
7
8
//
//
//
//
//
//
//
//
//
正常終了
初期化済みエラー、初期化未処理エラー
パラメータ・エラー
送信処理 受け付け済みエラー、受信処理 受け付け済みエラー
送信エラー発生中、受信エラー発生中
送信中エラー
受信完了データなしエラー
デリミタ・コード未処理エラー
ボード未実装エラー
/******************************************
***
*
**
エラー・リセット 定義
**
*
***
******************************************/
#define
#define
#define
RST_SEND
RST_REC
RST_BUFF
0
//
1
//
2
送信エラー リセット
//
受信エラー リセット
バッファ・データ クリア
/*********************************************
***
*
**
センス通知内容 定義
**
*
***
*********************************************/
/*-----*
コマンド
#define
#define
#define
SNS_SEND
SNS_REC
SNS_INT
/*-----*
*-----*/
0
ポスト・コード
//
1
2
送信状態センス
//
受信状態センス
//
割り込み状態センス
*-----*/
#define
SNS_NRML
0
//
正常終了
#define
/*-----*
センス種別 0:送信状態センス
*-----*/
SNSS_SEND 1
//
送信中
0:なし、1:あり
0:なし、1:あり
0:なし、1:あり
#define
SNSS_TOVR 2
#define
#define
/*-----*
センス種別 1:受信状態センス
*-----*/
SNSR_REC 1
//
受信中
SNSR_TOVR 2
//
タイム・オーバー
/*-----*
#define
#define
#define
/*-----*
//
センス種別 2:割り込み状態センス
SNSI_ANS 0x01
SNSI_SEND 0x02
SNSI_REC 0x04
ステータス
タイム・オーバー
//
//
//
STS_NRML
STS_TOVR
STS_ERR
STS_ROVR
STS_FRAM
SYS_PRTY
STS_OVRN
00000xxxB
¦¦¦
¦¦+-- コマンド応答 0:なし、1:あり
¦+--- 送信終了 0:なし、1:あり
+---- 受信終了 0:なし、1:あり
コマンド応答あり
送信終了あり
受信終了あり
*-----*/
//
//
//
//
//
//
//
//
//
//
//
#define
#define
#define
#define
#define
#define
#define
_
*-----*/
//
//
//
//
//
0x00
0x02
0x04
0x10
0x20
0x40
//
//
0x03
//
//
//
//
0xxx0xxxB
¦¦¦ ¦¦¦
¦¦¦ +++-- エラー・コード
¦¦¦
¦¦¦
¦¦¦
¦¦¦
+++------ 伝送エラー詳細
正常終了
タイム・オーバー
//
伝送エラー
受信バッファ・オーバー
フレーミング・エラー
パリティ・エラー
オーバーラン・エラー
000:正常終了
010:タイム・オーバー
011:伝送エラー発生
100:受信バッファ・オーバー発生
001:フレーミング・エラー
010:パリティ・エラー
100:オーバーラン・エラー
/*************************************************************************
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
共有データ ファイル
*
*
Module Name
: GP_DATA.H
*
*************************************************************************/
/********************************************
**
観測コントロール データ
**
********************************************/
short
system_flag ;
//システム状態フラグ
//
SYS_START
//
SYS_IDLE
//
SYS_MEASURE
//
SYS_DISP
//
SYS_DPRT
//
SYS_PPRT
//
SYS_MENU
//
SYS_DATE
//
SYS_PLOT
//
SYS_EXIT
short
short
short
short
double
short
short
display_flag
write_sflag
write_cflag
;
;
:
:
:
:
:
:
;
;
;
1 日/1ファイル
1 ヶ月/1ファイル
//瞬間値データ 収録期間
//演算値データ 収録期間
temp_year ;
temp_month ;
temp_day ;
temp_hour ;
//収録期間
//
//
//収録期間
short
func_key
//ファンクション・キー・フラグ
short
measure_flag
;
1 時間/1ファイル
1 日/1ファイル
1 ヶ月/1ファイル
//演算値 平均時間
1 分/10 分
//DA600 サンプリング間隔 0.05∼10 秒
//データ表示 行数
//表示データ 先頭ポインタ
short
short
short
short
;
起動中
停止状態
観測中
収録データ表示
収録データ印刷
プロッタ表示・印刷
メニュー画面
収録期間 入力中
ペンプロッタ・データ表示
システム終了
平均 風速/風向/温度 演算結果画面
平均 成分風速 演算結果画面
標準偏差 演算結果画面
乱流強度 演算結果画面
瞬間 風速/風向/温度 演算結果画面
瞬間 成分風速
//瞬間値データ 保存フラグ
//
FILE_HOUR :
//
FILE_DAY
:
//
FILE_MONTH :
//演算値データ 保存フラグ
//
FILE_DAY
:
//
FILE_MONTH :
sampling_mean ;
sampling_rec ;
display_row ;
display_top ;
DEF_PERIOD period_sdata
DEF_PERIOD period_cdata
//観測画面フラグ
//
DISP_MWT
//
DISP_MVW
//
DISP_SIG
//
DISP_SSW
//
DISP_IWT
//
DISP_IVW
:
:
:
:
:
:
:
:
:
:
日付(年)
(月)
(日)
時刻(時)
//観測フラグ
//
TRUE : 観測中
//
FALSE : 待機中
/**************************************
**
表示 データ
**
**************************************/
DEF_MDISP data_dispm[144] ;
//平均値 表示データ
DEF_SDISP data_disps ;
//瞬間値 表示データ
short
short
disp_ptrm ;
disp_num ;
//表示データ・ポインタ
//表示データ数
char
str_datetime[20]
short
short
short
short
short
short
curr_year ;
curr_month ;
curr_day ;
curr_hour ;
curr_minute ;
curr_second ;
//現日付(年)
//
(月)
//
(日)
//現時刻(時)
//
(分)
//
(秒)
short
short
short
short
short
short
old_year ;
old_month ;
old_day ;
old_hour ;
old_minute ;
old_second ;
//前日付(年)
//
(月)
//
(日)
//前時刻(時)
//
(分)
//
(秒)
;
//現日付、時刻(文字列)
yyyy/mm/dd hh:mm:ss
/***************************************************
**
ペンプロッタ 表示/印刷データ
**
***************************************************/
short
print_flag ;
//表示項目
short
plot_mode ;
//表示項目番号
long
plot_ptr ;
long
plot_old ;
short
psta_year ;
//表示開始日付(年)
short
psta_month ;
//
(月)
short
psta_day ;
//
(日)
short
psta_hour ;
//表示開始時刻(時)
short
pend_year ;
//表示終了日付(年)
short
pend_month ;
//
(月)
short
pend_day ;
//
(日)
short
pend_hour ;
//表示終了時刻(時)
short
short
short
color_pena
color_penb
color_penc
;
;
;
DEF_RANGE inf_range[21]
DEF_PLOT
DEF_PLOT
DEF_PLOT
//風速計 A 表示色
//風速計 B 表示色
//風速計 C 表示色
;
data_plota[600]
data_plotb[600]
data_plotc[600]
//レンジ情報
;
;
;
//風速計 A 表示データ(1 画面)
//風速計 B 表示データ(1 画面)
//風速計 C 表示データ(1 画面)
/**************************************
**
収録 データ
**
**************************************/
char
file_cname[15] ;
char
file_sname[15] ;
//演算値 ファイル名
//瞬間値 ファイル名
DEF_CFILE data_cfile ;
DEF_SFILE data_sfile[20] ;
DEF_SYSFILE
file_sys
DEF_CFILE buff_mfile[60] ;
DEF_SFILE buff_ifile[300] ;
;
//演算値 収録データ
//瞬間値 収録データ
//システム・ファイル
//演算値データ 読み込みバッファ(1 時間)
//瞬間値データ 読み込みバッファ(1 分)
FILE
*plot_fp
;
//ペンプロッタ・ファイル ポインタ
short
char
char
short
short
plot_sample ;
disp_fname[15] ;
//選択ファイル名
table_fname[200][15] ;
//選択ファイル名テーブル
num_datafile ;
//収録ファイル数
top_datafile ;
//表示ファイル名 先頭番号
/*******************************************************
**
DA-600 型 超音波風速計 データ
**
*******************************************************/
short
flag_com1 ;
// COM-2S(チャネル1) 動作フラグ
short
flag_cal1 ;
//
平均演算フラグ
TRUE:動作中、FALSE:ハンドシェイク中
TRUE:データあり、FALSE:データなし
short
short
short
flag_com2
flag_cal2
flag_com3
;
;
;
DEF_DA600 da600a[MAX_RECBF]
DEF_DA600 da600b[MAX_RECBF]
DEF_DA600 da600c[MAX_RECBF]
short
short
short
// COM-2S(チャネル2) 動作フラグ
//
平均演算フラグ
// COM-2S(チャネル3) 動作フラグ
;
;
;
TRUE:動作中、FALSE:ハンドシェイク中
TRUE:データあり、FALSE:データなし
TRUE:動作中、FALSE:ハンドシェイク中
//DA-600(A) 受信データ・バッファ
//DA-600(B) 受信データ・バッファ
//DA-600(C) 受信データ・バッファ
ptr_da600a
ptr_da600b
ptr_da600c
;
;
;
DEF_RECDA buff_da600a[MAX_COMBF]
DEF_RECDA buff_da600b[MAX_COMBF]
DEF_RECDA buff_da600c[MAX_COMBF]
//DA-600(A) 受信データ・バッファ ポインタ
//DA-600(B) 受信データ・バッファ ポインタ
//DA-600(C) 受信データ・バッファ ポインタ
;
;
;
//DA-600(A) シリアル・データ受信 バッファ
//DA-600(B) シリアル・データ受信 バッファ
//DA-600(C) シリアル・データ受信 バッファ
short
short
short
short
short
short
in_da600a ;
in_da600b ;
in_da600c ;
out_da600a ;
out_da600b ;
out_da600c ;
//DA-600(A)
//DA-600(B)
//DA-600(C)
//DA-600(A)
//DA-600(B)
//DA-600(C)
short
short
short
num_da600a
num_da600b
num_da600c
//DA-600(A) 受信データ数
//DA-600(B) 受信データ数
//DA-600(C) 受信データ数
;
;
;
受信バッファ
受信バッファ
受信バッファ
受信バッファ
受信バッファ
受信バッファ
入力ポインタ
入力ポインタ
入力ポインタ
出力ポインタ
出力ポインタ
出力ポインタ
/**************************************
**
演算 データ
**
**************************************/
DEF_SCAL data_cals ;
DEF_MCAL data_calm ;
DEF_SUM
data_suma ;
DEF_SUM
data_sumb ;
DEF_SUM
data_sumc ;
//瞬間値
//平均値
//瞬間値
//瞬間値
//瞬間値
time_t
double
//瞬間値 演算周期
//瞬間値 サンプリング・データ数
sampling_stime ;
sampling_num ;
演算データ
演算データ
積算データ A
積算データ B
積算データ C
/******************************************
**
割り込みハンドラ
**
******************************************/
IHDL
handle_irq3 ;
//IRQ3
IHDL
handle_irq5 ;
//IRQ5
IHDL
handle_int23 ;
//Ctrl+C
IHDL
handle_int24 ;
//例外処理
short
char
error_flag ;
exe_directry[128]
//エラー・フラグ
//起動ディレクトリ名
;
/*************************************************************************
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
共有データ ファイル
*
*
Module Name
: GP_MENU.H
*
*************************************************************************/
/********************************************
**
観測コントロール データ
**
********************************************/
#define
MENU_ON
1
#define
MENU_OFF
0
#define
MENU_X
3
#define
MENU_Y
5
#define
MENUP_X
5
#define
MENUP_Y
5
typedef
struct
{
short
short
year ;
month ;
//日付(年)
//
(月)
}
short
short
DEF_PTIM ;
short
char
short
short
short
short
short
char
menu_cnt ;
filename[255][13] ;
file_cnt ;
disp_file_cnt ;
cs_flag ;
cs_disp_file ;
cs_disp_flag ;
file_drv ;
FILE
FILE
long
DEF_PTIM
char
char
char
short
short
short
*open_fp ;
*disp_fp ;
display_cnt ;
param_time ;
cs_file_name[13] ;
prn_s_fname[14] ;
prn_e_fname[14] ;
prn_s_flag ;
prn_e_flag ;
prn_stop ;
DEF_CFILE disp_cfile_data
DEF_SFILE disp_sfile_data
int
int
/*-----*
;
;
day ;
hour ;
//
(日)
//時刻(時)
/* 演算値 ファイルデータ */
/* 瞬間値 ファイルデータ */
print_cnt ;
page_cnt ;
GP_MENU.C (メニュー選択処理)
*-----*/
void
void
void
void
void
void
menu_main ( void ) ;
// メニューメイン処理
menu_select ( void ) ;
// メニュー選択メイン処理
head_dsp ( void ) ;
// メニューヘッダ表示処理
menu_data_dsp ( void ) ;
// メインメニューデータ表示処理
measure_menu ( void ) ;
// 観測メニューデータ表示メイン処理
kansoku_data_dsp ( short , short ) ;
// 観測メニューデータ個別表示処理
/*-----*
void
short
void
void
void
void
void
void
void
GP_MKEY.C (メニューキー入力選択処理)
*-----*/
mmenu_key ( void ) ;
//
kmenu_key ( void ) ;
//
kmenu_num_key ( short ) ;
//
kmenu_ud_key ( short ) ;
//
sam_key ( void ) ;
//
sam_check ( void ) ;
//
dnum_outtext ( char * , short , short ) ; //
sam_back ( void ) ;
//
sam_put ( void ) ;
//
/*-----*
GP_MDSP.C (演算・瞬間データ画面表示処理)
void
void
void
void
void
void
void
void
void
scdata_disp ( void ) ;
sc_data_out ( short ) ;
mwt_data_out ( short ) ;
mvw_data_out ( short ) ;
sig_data_out ( short ) ;
ssw_data_out ( short ) ;
iwt_data_out ( short ) ;
ivw_data_out ( short ) ;
scdata_back_disp ( void ) ;
/*-----*
void
void
void
void
void
GP_DISP.C (収録データ表示メイン処理)
disp_main ( void ) ;
file_disp_head ( void ) ;
c_data_disp ( void ) ;
s_data_disp ( void ) ;
file_disp_main ( void ) ;
//void
//void
//void
//void
save_mwt_data_out
save_mvw_data_out
save_sig_data_out
save_ssw_data_out
/*-----*
(
(
(
(
void
void
void
void
)
)
)
)
*-----*/
//
//
//
//
//
//
//
//
演算・瞬間データ表示メイン処理
演算・瞬間データ表示関数呼出し処理
平均風向風速、温度
平均成分風速
標準偏差
乱流強度
瞬間風速、温度
瞬間成分風速
*-----*/
// 収録データ表示メイン処理
// ファイルデータ表示メイン処理
;
;
;
;
GP_FDSP.C (収録データ表示メイン処理)
メインメニューキー入力選択メイン処理
観測メニューキー入力選択メイン処理
観測メニュー数値キー入力処理
観測メニュー↑↓キー入力処理
観測メニューサンプリング間隔データキー入力処理
観測メニューサンプリング間隔データ確認処理
2バイト文字表示処理
観測メニューバックスペースキー入力処理
観測サンプリングデータ表示処理
*-----*/
void
void
void
void
void
void
void
void
void
void
void
void
mwt_disp_head
mvw_disp_head
sig_disp_head
ssw_disp_head
iwt_disp_head
ivw_disp_head
mwt_fdata_out
mvw_fdata_out
sig_fdata_out
ssw_fdata_out
iwt_fdata_out
ivw_fdata_out
(
(
(
(
(
(
(
(
(
(
(
(
void
void
void
void
void
void
void
void
void
void
void
void
)
)
)
)
)
)
)
)
)
)
)
)
;
;
;
;
;
;
;
;
;
;
;
;
// 平均風向風速、温度
// 平均成分風速
/*-----*
void
void
void
void
short
void
void
void
short
void
GP_PKEY.C (収録データ表示パラメータ選択処理)
param_menu ( void ) ;
disp_main ( void ) ;
param_data ( void ) ;
param_data_disp ( short , short ) ;
param_key ( void ) ;
pmenu_num_key ( short ) ;
pmenu_ud_key ( short ) ;
tim_key ( void ) ;
mon_end_dat ( short , short ) ;
tim_back ( void ) ;
/*-----*
void
void
void
void
void
short
void
GP_FRAD.C (収録データ表示ファイルデータ読込み処理)
first_disp ( void ) ;
//
save_data_out ( void ) ;
//
save_data_head ( void ) ;
//
save_data_put ( void ) ;
//
sc_fdata_out ( void ) ;
file_fread ( short , short ) ;
page_ud_disp ( void ) ;
//
//
*-----*/
収録データ初期表示処理
収録データ表示
収録データヘッダ表示処理
収録1データ表示処理
/*-----*
void
void
void
void
GP_FKEY.C (収録データ表示ファイルデータ読込み処理)
fcdata_down ( void ) ;
//
fcdata_up ( void ) ;
//
fcdata_pdown ( void ) ;
//
fcdata_pup ( void ) ;
//
*-----*/
収録データ表示↓キー入力処理
収録データ表示↑キー入力処理
収録データ表示 Page Down キー入力処理
収録データ表示 Page UP キー入力処理
/*-----*
void
void
void
void
GP_FPRN.C (収録データ表示ファイルデータ読込み処理)
dprt_main ( void ) ;
print_menu ( void ) ;
print_data ( void ) ;
prnparam_data_disp ( short , short ) ;
*-----*/
/*-----*
void
void
void
void
void
void
GP_FDAT.C (収録データ表示ファイルデータ読込み処理)
file_print_main ( void ) ;
mean_data_print ( void ) ;
inst_data_print ( void ) ;
print_space ( short ) ;
data_head_print ( short
) ;
data_print ( short ) ;
*-----*/
/*-----*
void
void
void
void
void
void
void
void
void
void
void
void
void
void
GP_DPRN.C (収録データ表示ファイルデータ読込み処理)
mwt_head_print ( void ) ;
mvw_head_print ( void ) ;
wtsig_head_print ( void ) ;
vwsig_head_print ( void ) ;
ssw_head_print ( void ) ;
iwt_head_print ( void ) ;
ivw_head_print ( void ) ;
mwt_data_print ( void ) ;
mvw_data_print ( void ) ;
wtsig_data_print ( void ) ;
vwsig_data_print ( void ) ;
ssw_data_print ( void ) ;
iwt_data_print ( void ) ;
ivw_data_print ( void ) ;
*-----*/
//
//
//
//
//
//
平均風向風速、温度
平均成分風速
標準偏差
乱流強度
瞬間風速、温度
瞬間成分風速
*-----*/
// パラメータ選択メイン処理
// パラメータ選択表示処理
// パラメータメニュー表示メイン処理
// パラメータメニュー表示処理
// パラメータキー入力メイン処理
// 表示項目選択処理
// ↑↓キー入力処理
// 表示日時選択処理
// 月末判定処理
// バックスペースキー入力処理
収録データ表示ページアップ・ダウンデータ表示処理
演算・瞬間データ表示関数呼出し処理
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
収録データ 定義ファイル
*
*
*
*
*
*
Module Name
: GP_WRITE.H
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Jan. 16, 1998
*
*
*
*
Revised Date : Mar. 12, 1998
*
*
*
*
Auther
: S. Yamashita
**
*
***
*
****
*************************************************************************/
/*********************************************************************
****
*
***
*
**
Ver 1.00
*
*
新規作成
Jan. 16, 1998
**
*
***
*
****
*********************************************************************/
/****************************************
***
*
**
ファイル・フォーマット
**
*
***
****************************************/
/*-----*
typedef
演算値
*-----*/
struct
{
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
year[4] ;
month[2] ;
day[2] ;
hour[2] ;
minute[2] ;
term_0 ;
ua[5] ;
term_1 ;
ub[5] ;
term_2 ;
uc[5] ;
term_3 ;
da[3] ;
term_4 ;
db[3] ;
term_5 ;
dc[3] ;
term_6 ;
wa[6] ;
term_7 ;
wb[6] ;
term_8 ;
wc[6] ;
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
日付(年)
//
(日)
時刻(時)
(分)
','
平均水平風速
','
平均水平風速
','
平均水平風速
','
平均水平風向
','
平均水平風向
','
平均水平風向
','
平均垂直風速
','
平均垂直風速
','
平均垂直風速
(月)
A
B
C
A
B
C
A
B
C
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
term_9 ;
xa[6] ;
term_10 ;
xb[6] ;
term_11 ;
xc[6] ;
term_12 ;
ya[6] ;
term_13 ;
yb[6] ;
term_14 ;
yc[6] ;
term_15 ;
sua[5] ;
term_16 ;
sub[5] ;
term_17 ;
suc[5] ;
term_18 ;
sda[5] ;
term_19 ;
sdb[5] ;
term_20 ;
sdc[5] ;
term_21 ;
swa[5] ;
term_22 ;
swb[5] ;
term_23 ;
swc[5] ;
term_24 ;
sxa[5] ;
term_25 ;
sxb[5] ;
term_26 ;
sxc[5] ;
term_27 ;
sya[5] ;
term_28 ;
syb[5] ;
term_29 ;
syc[5] ;
term_30 ;
suua[5] ;
term_31 ;
suub[5] ;
term_32 ;
suuc[5] ;
term_33 ;
sxxa[5] ;
term_34 ;
sxxb[5] ;
term_35 ;
sxxc[5] ;
term_36 ;
syya[5] ;
term_37 ;
syyb[5] ;
term_38 ;
syyc[5] ;
term_39 ;
swwa[5] ;
term_40 ;
swwb[5] ;
term_41 ;
swwc[5] ;
term_42 ;
ta[6] ;
term_43 ;
tb[6] ;
term_44 ;
tc[6] ;
term_45 ;
smpl[5] ;
cr ;
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
','
X 成分風速 平均値 A
','
X 成分風速 平均値 B
','
X 成分風速 平均値 C
','
Y 成分風速 平均値 A
','
Y 成分風速 平均値 B
','
Y 成分風速 平均値 C
','
水平風速 標準偏差 A
','
水平風速 標準偏差 B
','
水平風速 標準偏差 C
','
水平風向 標準偏差 A
','
水平風向 標準偏差 B
','
水平風向 標準偏差 C
','
垂直風速 標準偏差 A
','
垂直風速 標準偏差 B
','
垂直風速 標準偏差 C
','
X 成分風速 標準偏差 A
','
X 成分風速 標準偏差 B
','
X 成分風速 標準偏差 C
','
Y 成分風速 標準偏差 A
','
Y 成分風速 標準偏差 B
','
Y 成分風速 標準偏差 C
','
水平風速 乱流強度 A
','
水平風速 乱流強度 C
','
水平風速 乱流強度 B
','
X 成分風速 乱流強度 A
','
X 成分風速 乱流強度 B
','
X 成分風速 乱流強度 C
','
Y 成分風速 乱流強度 A
','
Y 成分風速 乱流強度 B
','
Y 成分風速 乱流強度 C
','
W 成分風速 乱流強度 A
','
W 成分風速 乱流強度 B
','
W 成分風速 乱流強度 C
','
平均温度 A
','
平均温度 B
','
平均温度 C
','
サンプリング時間
//
復帰コード
}
/*-----*
typedef
char
DEF_CFILE ;
瞬間値
lf
;
//
改行コード
*-----*/
struct
{
}
/*-----*
typedef
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
DEF_SFILE ;
year[4] ;
month[2] ;
day[2] ;
hour[2] ;
minute[2] ;
second[2] ;
term_0 ;
xa[6] ;
term_1 ;
xb[6] ;
term_2 ;
xc[6] ;
term_3 ;
ya[6] ;
term_4 ;
yb[6] ;
term_5 ;
yc[6] ;
term_6 ;
wa[6] ;
term_7 ;
wb[6] ;
term_8 ;
wc[6] ;
term_9 ;
ua[5] ;
term_10 ;
ub[5] ;
term_11 ;
uc[5] ;
term_12 ;
va[5] ;
term_13 ;
vb[5] ;
term_14 ;
vc[5] ;
term_15 ;
ta[6] ;
term_16 ;
tb[6] ;
term_17 ;
tc[6] ;
term_18 ;
smpl[5] ;
cr ;
lf ;
システム・ファイル(レンジ・データ)
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
日付(年)
//
(月)
(日)
時刻(時)
(分)
(秒)
','
X 成分風速 A
','
X 成分風速 B
','
X 成分風速 C
','
Y 成分風速 A
','
Y 成分風速 B
','
Y 成分風速 C
','
W 成分風速 A
','
W 成分風速 B
','
W 成分風速 C
','
水平風速 A
','
水平風速 B
','
水平風速 C
','
風速 A
','
風速 B
','
風速 C
','
Ts 温度 A
','
Ts 温度 B
','
Ts 温度 C
','
サンプリング時間
//
復帰コード
//
改行コード
*-----*/
struct
{
}
/*-----*
typedef
char
char
char
char
FILE_RANGE ;
システム・ファイル
min[3]
term_0
max[3]
term_1
;
;
;
;
//
//
//
//
最小値
','
最大値
','
*-----*/
struct
{
FILE_RANGE range[21] ;
char
pena
char
penb
char
penc
//
;
;
;
レンジ・データ
//
//
//
風速計 A 表示色
風速計 B 表示色
風速計 C 表示色
}
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
char
DEF_SYSFILE ;
cr1 ;
lf1 ;
meas ;
term_1 ;
cfile ;
term_2 ;
ifile ;
term_3 ;
smpl[5] ;
term_4 ;
mean[2] ;
term_5 ;
csdt[17] ;
term_6 ;
cedt[17] ;
term_7 ;
isdt[17] ;
term_8 ;
iedt[17] ;
cr2 ;
lf2 ;
//
//
//
//
//
//
//
//
//
//
//
//
//
復帰コード
//
改行コード
//
動作情報
','
演算値収録フォード
','
瞬間値収録モード
','
サンプリング時間
','
平均時間
','
//
演算値 収録開始時間
','
//
演算値 収録終了時間
','
//
瞬間値 収録開始時間
','
//
瞬間値 収録終了時間
//
復帰コード
//
改行コード
/******************************************
***
*
**
収録ファイル・サイズ
**
*
***
******************************************/
#define
#define
SIZE_CFILE
SIZE_SFILE
sizeof( DEF_CFILE )
sizeof( DEF_SFILE )
//
//
演算値ファイル
瞬間値ファイル
#define
SIZE_SYSFILE
sizeof( DEF_SYSFILE )
//
システム・ファイル
/*******************************************
***
*
**
収録データ初期値
**
*
***
*******************************************/
#define
INIT_CDATA
"199801010000,**.**,**.**,**.**,***,***,***,***.**,***.**,***.**,***.**,***.**,***.**,***.**,***.**,***.**,**.**,**.
**,**.**,**.**,**.**,**.**,**.**,**.**,**.**,**.**,**.**,**.**,**.**,**.**,**.**,**.**,**.**,**.**,**.**,**.**,**.**,**.**,**.
**,**.**,**.**,**.**,**.**,***.**,***.**,***.**,**.**\r\n"
#define
INIT_SDATA
"19980101000000,***.**,***.**,***.**,***.**,***.**,***.**,***.**,***.**,***.**,**.**,**.**,**.**,**.**,**.**,**.**,*
**.**,***.**,***.**,**.**\r\n"
#define
INIT_SYSFILE
" 00, 10,000,540,-00,+10, 00, 10, 00, 10, 00, 10, 00, 10, 00, 10,-00,+10,-00,+10, 00, 10, 00,
10, 00, 10, 00, 10,-00,+40,-00,+10,-00,+10,-00,+10, 00, 10, 00, 10,-00,+40,111\r\n0,1,1,00.50,10,----/--/-- --時\0,----/--/---時\0,----/--/-- --時\0,----/--/-- --時\0\r\n"
/***********************************************
***
*
**
収録ディレクトリ/拡張子
**
*
***
***********************************************/
#define
SYS_FILE
#define
#define
#define
#define
#define
_
"GP720.DAT"
//
システム・ファイル名
DIR_NAME " :ANE_DATA"
DIR_CNAME " :MEAN"
DIR_SNAME " :INST"
//
//
//
演算値 データ収録 ディレクトリ名
演算値 データ収録 ディレクトリ名
瞬間値 データ収録 ディレクトリ名
FILE_CAL ".MEN"
FILE_SMPL ".INS"
演算値ファイル 拡張子
瞬間値ファイル 拡張子
//
//
/*************************************************************************
****
*
***
*
**
GP-720 型 風向風速データ演算装置
*
*
(高圧ガス保安協会向け)
*
*
IBM-PC/AT 定義ファイル
*
*
*
*
*
*
Module Name
: IBM_AT.H
*
*
*
*
Version
: 1.00
*
*
*
*
Created Date : Jan. 14, 1998
*
*
*
*
Revised Date :
.
,
*
*
*
*
Auther
: S. Yamashita
**
*
***
*
****
*************************************************************************/
/*********************************************************************
****
*
***
*
**
Ver 1.00
*
*
新規作成
Jan. 14, 1998
**
*
***
*
****
*********************************************************************/
/**************************************************
***
*
**
割り込みベクタ番号 定義
**
*
***
**************************************************/
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
IRQ0
IRQ1
IRQ2
IRQ3
IRQ4
IRQ5
IRQ6
IRQ7
IRQ8
IRQ9
IRQ10
IRQ11
IRQ12
IRQ13
IRQ14
IRQ15
0x08
0x09
0x0a
0x0b
0x0c
0x0d
0x0e
0x0f
0x70
0x71
0x72
0x73
0x74
0x75
0x76
0x77
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
インターバル・タイマ (55msec)
キーボード
スレーブ割り込み
シリアル・ポート #2
シリアル・ポート #1
パラレル・ポート #2
フロッピー・ディスク・ドライブ コントローラ
パラレル・ポート #1
リアルタイム・クロック
INT 0AH
予約
予約
PS/2 マウス
80387 数値演算プロセッサ
ハード・ディスク・ドライブ コントローラ
予約
#define
#define
INT23
INT24
0x23
0x24
//
//
Ctrl+C 割り込み
例外処理ハンドラ
/*********************************************************
***
*
**
uPD71059 割り込みコントローラ 定義
**
*
***
*********************************************************/
/*-----*
I/Oポート
*-----*/
#define
#define
#define
#define
PIC1_OCW1
PIC1_OCW2
PIC1_ISR
PIC1_IMR
0x0021
0x0020
0x0020
0x0021
//
//
//
//
マスタ側
#define
#define
#define
#define
#define
PIC2_OCW1
PIC2_OCW2
PIC2_OCW3
PIC2_ISR
PIC2_IMR
0x00a1
0x00a0
0x00a0
0x00a0
0x00a1
//
//
//
//
//
スレーブ側
/*-----*
割り込み制御
#define
#define
PIC_EOI
PIC_REQISR 0x0b
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
PIC_CLISR2 0x62
PIC_CLISR3 0x63
PIC_CLISR4 0x64
PIC_CLISR5 0x65
PIC_CLISR6 0x66
PIC_CLISR7 0x67
PIC_CLISR9 0x61
PIC_CLISR10
PIC_CLISR11
PIC_CLISR12
PIC_CLISR14
PIC_CLISR15
OCW1
OCW2
ISR
IMR
OCW1
OCW2
OCW3
ISR
IMR
*-----*/
0x20
//
//
//
//
//
//
//
//
0x62
0x63
0x64
0x66
0x67
//
EOIコマンド
ISRリード・コマンド
IRQ2
IRQ3
IRQ4
IRQ5
IRQ6
IRQ7
IRQ9
//
//
//
//
//
ISRクリア・コマンド
ISRクリア・コマンド
ISRクリア・コマンド
ISRクリア・コマンド
ISRクリア・コマンド
ISRクリア・コマンド
ISRクリア・コマンド
IRQ10 ISRクリア・コマンド
IRQ11 ISRクリア・コマンド
IRQ12 ISRクリア・コマンド
IRQ14 ISRクリア・コマンド
IRQ15 ISRクリア・コマンド
/*************************************************
***
*
**
8250B シリアル・ポート 定義
**
*
***
*************************************************/
/*-----*
#define
#define
#define
#define
/*-----*
データ・ビット長
MD_BIT5
MD_BIT6
MD_BIT7
MD_BIT8
MD_STP1
MD_STP2
/*-----*
パリティ
#define
#define
#define
#define
#define
MD_P0
MD_P1
MD_PEVN
MD_PODD
MD_PNON
#define
#define
0x00
0x01
0x02
0x03
ストップ・ビット長
#define
#define
/*-----*
*-----*/
//
//
//
//
5ビット
6ビット
7ビット
8ビット
0x00
0x04
//
//
1ビット
2ビット
0x38
0x28
0x18
0x08
0x00
//
//
//
//
//
0 固定
1 固定
偶数
奇数
なし
//
CH1(未使用) モード設定
//
CH2(未使用) モード設定
*-----*/
*-----*/
シリアル・ポート 設定データ
*-----*/
COMM_MODE0 MD_BIT8 + MD_STP2 + MD_PODD
//
Stop Bit 2
//
奇数パリティ
//
データ 8Bit
COMM_MODE1 MD_BIT8 + MD_STP2 + MD_PNON
//
Stop Bit 2
//
パリティなし
//
データ 8Bit
/*****************************************
***
*
**
キー・コード 定義
**
*
***
*****************************************/
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
SCAN_F1
SCAN_F2
SCAN_F3
SCAN_F4
SCAN_F5
SCAN_F6
SCAN_F7
SCAN_F8
SCAN_F9
SCAN_F10
SCAN_F11
SCAN_F12
#define
#define
#define
#define
#define
#define
#define
#define
SCAN_SF1
SCAN_SF2
SCAN_SF3
SCAN_SF4
SCAN_SF5
SCAN_SF6
SCAN_SF7
SCAN_SF8
0x44
0x85
0x86
0x3b
0x3c
0x3d
0x3e
0x3f
0x40
0x41
0x42
0x43
//
//
//
//
//
//
//
//
//
//
//
//
F10キー
F11キー
F12キー
0x54
0x55
0x56
0x57
0x58
0x59
0x5a
0x5b
//
//
//
//
//
//
//
//
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
F1キー
F2キー
F3キー
F4キー
F5キー
F6キー
F7キー
F8キー
F9キー
+
+
+
+
+
+
+
+
F1キー
F2キー
F3キー
F4キー
F5キー
F6キー
F7キー
F8キー
#define
#define
#define
#define
SCAN_SF9
SCAN_SF10
SCAN_SF11
SCAN_SF12
0x5c
0x5d
0x87
0x88
//
//
//
//
Shift
Shift
Shift
Shift
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
SCAN_CF1
SCAN_CF2
SCAN_CF3
SCAN_CF4
SCAN_CF5
SCAN_CF6
SCAN_CF7
SCAN_CF8
SCAN_CF9
SCAN_CF10
SCAN_CF11
SCAN_CF12
0x5e
0x5f
0x60
0x61
0x62
0x63
0x64
0x65
0x66
0x67
0x89
0x8a
//
//
//
//
//
//
//
//
//
//
//
//
Ctrl
Ctrl
Ctrl
Ctrl
Ctrl
Ctrl
Ctrl
Ctrl
Ctrl
Ctrl
Ctrl
Ctrl
#define
#define
#define
#define
SCAN_UP
SCAN_LEFT 0x4b
SCAN_RIGHT 0x4d
SCAN_DOWN 0x50
0x48
//
//
//
//
←
→
↓
#define
#define
#define
SCAN_PUP
SCAN_PDN
SCAN_DEL
//
//
//
Page Up
Page Down
Delete
#define
#define
#define
#define
SCAN_ESC 0x01
SCAN_BS
SCAN_ENT 0x1c
SCAN_NENT 0xe0
//
0x0e
//
//
ESCキー
//
Enter
Enter
#define
#define
#define
#define
SCAN_ALT
SCAN_CTRL
SCAN_LSFT
SCAN_RSFT
0x08
0x04
0x02
0x01
//
//
//
//
Alt
Ctrl
左 Shift
右 Shift
#define
#define
ASC_FUNC
ASC_NULL
0xe0
0x00
//
//
特殊キー
特殊キー
0x49
0x51
0x53
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
F9キー
F10キー
F11キー
F12キー
F1キー
F2キー
F3キー
F4キー
F5キー
F6キー
F7キー
F8キー
F9キー
F10キー
F11キー
F12キー
↑
Back Space
/****************************************
***
*
**
表示色 定義
**
*
***
****************************************/
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
_
GBLACK
GBLUE
GGREEN
GCYAN
GRED
GMAGENTA
GBROWN
GWHITE
GGRAY
GLIGHTBLUE
GLIGHTGREEN
GLIGHTCYAN
GLIGHTRED
GLIGHTMAGENTA
GLIGHTYELLOW
GBRIGHTWHITE
5
9
11
12
13
14
15
0
1
2
3
4
//
6
7
8
//
10
//
//
//
//
//
//
//
//
//
//
紫色
//
//
//
淡青色
//
淡水色
淡赤色
淡紫色
淡黄色
明白色
黒色
青色
緑色
水色
赤色
茶色
白色
灰色
淡緑色
Fly UP