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 // // // // // // // // // // 紫色 // // // 淡青色 // 淡水色 淡赤色 淡紫色 淡黄色 明白色 黒色 青色 緑色 水色 赤色 茶色 白色 灰色 淡緑色