亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? fits_cmdh.cpp

?? 本源碼是一個(gè)用于衛(wèi)星數(shù)據(jù)處理的程序
?? CPP
字號(hào):

#include <stdio.h>
#include "stdafx.h"
#include "ccsds_pro.h"
#include "fits_cmdh.h"
/********此文件中函數(shù)前都有詳細(xì)說(shuō)明,函數(shù)中具體實(shí)現(xiàn)參照f(shuō)its_asf.cpp中的注釋******/

/*****************************************************
** 函數(shù)名: LoadCMDH
** 輸入: hxmtfile, s
**        hxmtfile    --- 文件名結(jié)構(gòu) 
**        s           --- 存放多個(gè)容器的結(jié)構(gòu)體
** 輸出: 
**           函數(shù)執(zhí)行成功返回0
** 調(diào)用說(shuō)明:	
**			strUTC2time() .......把年月日是時(shí)分秒格式的時(shí)間字符串轉(zhuǎn)換成對(duì)應(yīng)的秒	
**			close_fits_cmdh()....關(guān)閉fits文件
**			get_fits_filename()..取得fits文件名和保存路徑
**          open_fits_cmdh() ....生成fits文件并在fits肉中寫(xiě)入關(guān)鍵字
**			write_fits_cmdh() ...寫(xiě)fits文件
** 功能描述:輸入一個(gè)命令歷史文件,把文件中的每行數(shù)據(jù)的各個(gè)字段讀入結(jié)構(gòu)體中,并生成fits文件,然后寫(xiě)入fits文件中
****************************************************************************************/
int LoadCMDH( const hxmt_file_t *hxmtfile , struct sci_intern *s )
{
	FILE *fp = NULL;
	char *buffer = NULL;
	fitsfile *fptr = NULL;
	int modetype;
	std::string fits_name;
	if( !hxmtfile || (fp = fopen(hxmtfile->filename.c_str(), "r")) == NULL  )//打開(kāi)文件
		return -1;
	
	hxmt_file_t hxmt = *hxmtfile;
	std::string prev_fitsname;
	
	if( (buffer = (char *)malloc(FREAD_BUFFER_SIZE)) == NULL )	{
		fclose(fp); close_fits_cmdh( fptr );
		return -ERROR_NOT_ENOUGH_MEMORY;
	}

	while( fgets(buffer, FREAD_BUFFER_SIZE, fp) )//從文件中逐行讀取數(shù)據(jù)
	{
		CMDH_t cmdh;//定義一個(gè)命令歷史數(shù)據(jù)結(jié)構(gòu),用于存放文件中一行數(shù)據(jù)的各個(gè)字段
		
		char *p = NULL;
		if( (p = strchr(buffer, '\t')) == NULL )//找到第1個(gè)空格
			continue;
		*p = '\0';
		sscanf( buffer, "%d", &cmdh.cir );//第一個(gè)字段賦值給cmdh.cir
        char* temp = ++p;
		if( (p = strchr( p, '\t')) == NULL )	continue;
		strUTC2time( temp, &cmdh.e_time );//第2個(gè)字段賦值給cmdh.e_time
        temp = ++p;
		if( (p = strchr( p, '\t')) == NULL )	continue;
		*p = '\0';
		cmdh.event = temp;//第3個(gè)字段賦值給cmdh.event
		
		sscanf( ++p, "%d", &cmdh.param );//第4個(gè)字段賦值給cmdh.param
		if( (p = strchr( p, '\t')) == NULL )	continue;
		temp = ++p;
		if( (p = strchr( p, '\n')) == NULL )	continue;
		*p = '\0';
		cmdh.cmd = temp;//第5個(gè)字段賦值給cmdh.cmd

		hxmt.start.time = cmdh.e_time.time;
		hxmt.start.usec = cmdh.e_time.usec;
		{
			std::string new_fitsname;
			std::string pathname;
			get_fits_filename( &hxmt, new_fitsname, pathname, modetype,fits_name );//得到fits文件名和路徑
			if( new_fitsname != prev_fitsname ) {
				prev_fitsname = new_fitsname;
				close_fits_cmdh( fptr );
				fptr = NULL;
				if( 0 != open_fits_cmdh( &hxmt, &fptr) ) {
					fclose( fp ); 
					free( buffer );
					return -3;
				}
			}
		}
		
		write_fits_cmdh( fptr, &cmdh, 1 );//寫(xiě)fits文件
	}
	
	free( buffer );
	close_fits_cmdh( fptr );
	fclose( fp );

	return 0;	
}

/*****************************************************
** 函數(shù)名: open_fits_cmdh
** 輸入: hxmtfile, 
**        hxmtfile    --- 文件名結(jié)構(gòu) 
** 輸出: *fptr
**        *fptr       ---
** 調(diào)用說(shuō)明:	
**			get_fits_filename() .......得到文件名和保存路徑以及模式
**			DirExist1()         .......判斷路徑是否存在
**			CreateFilePath()    .......創(chuàng)建一個(gè)新路徑
**			time2strUTC_fitshead() ....秒時(shí)間轉(zhuǎn)換成對(duì)應(yīng)的年月日時(shí)分秒格式的字符串
** 功能描述: 輸入一個(gè)命令歷史文件,生成fits文件,并寫(xiě)入fits頭中的關(guān)鍵字,通過(guò)fptr返回生成fits文件的結(jié)構(gòu)
****************************************************************************************/
int open_fits_cmdh( const hxmt_file_t *hxmtfile, fitsfile **fptr )
{
	fitsfile *fp;
	int status = 0;
	std::string filename;
	std::string pathname;
	int modetype;
	std::string fits_name;
	if( get_fits_filename(hxmtfile, filename, pathname, modetype, fits_name) )
		return -1;
	{
		extern std::string product_dest_dir;
		std::string path = product_dest_dir + pathname + "\\";
		if( !DirExist1(path.c_str()) )		{
			extern FILE *arch_filep;
			pathname += "\n";
			fwrite(pathname.c_str(), sizeof(char), pathname.length(), arch_filep);
		}
		
	}
	if( !CreateFilePath(filename.c_str()) )
		return -2;
	if( fits_open_file(&fp, filename.c_str(), READWRITE, &status) )
	{
		status = 0;
		if( fits_create_file(&fp, filename.c_str(), &status) )
			return status;

		if( fits_create_img(fp,  BYTE_IMG, 0, NULL, &status) )
			return status;
		timespec_t t;
		time( &t.time );
		t.usec = 0;
		char buf[40];
		time2strUTC( buf, sizeof(buf), &t );
		if ( fits_update_key(fp, TSTRING , "DATE_CRT", buf, "FITS file creation date", &status) )
			 return status; 
		if ( fits_update_key(fp, TSTRING , "TELESCOP", "HXMT", "Telescope or mission name", &status) )
			 return status;
		if ( fits_update_key(fp, TSTRING , "ORIGIN", "HDPS", "Origin of FITS file", &status) )
			 return status;
		if ( fits_update_key(fp, TSTRING , "TIME_SYS", "UTC", "HDPS level of data processing", &status) )
			 return status;
		if ( fits_update_key(fp, TSTRING , "EPOCH", buf, "program that create this FITS file", &status) )                                                                                                                                   
			 return status;

		status = 0;
		int tfields   = 5;       /* table will have 5 columns */
		long nrows    = 0;
		char extname[] = " CMDH_Binary ";           /* extension name */
		char *ttype[] = { "REVLUT", "E_TIME", "EVENT", "PARAM", "COMMAND" };
		char *tform[] = { "1J", "27A", "10A", "1J","10A" };
		char *tunit[] = { "\0", "\0", "\0", "\0", "\0" };
		if ( fits_create_tbl( fp, BINARY_TBL, nrows, tfields, ttype, tform,	tunit, extname, &status) ) {
			fits_close_file( fp, &status );
			return status;
		}
	}
	
	*fptr = fp;
	return 0;
}
/*****************************************************
** 函數(shù)名: write_fits_cmdh
** 輸入: fptr, zt,n
**        hxmtfile    --- 文件名結(jié)構(gòu) 
**        cmdh          --- 命令歷史數(shù)據(jù)結(jié)構(gòu)
**		  n           ---
** 輸出: 
**        函數(shù)執(zhí)行成功返回0
** 調(diào)用說(shuō)明:	
**			time2strUTC_fitshead() ....秒時(shí)間轉(zhuǎn)換成對(duì)應(yīng)的年月日時(shí)分秒格式的字符串
** 功能描述: 輸入先前生成的fits文件結(jié)構(gòu)和命令歷史數(shù)據(jù),把文件中數(shù)據(jù)寫(xiě)入fits文件中
****************************************************************************************/
int write_fits_cmdh( fitsfile *fptr, const CMDH_t *cmdh, int n )
{
	if( fptr == NULL )
		return -1;

	int status = 0;
	unsigned int nrows = 0;
	int hdutype;
    if ( fits_movabs_hdu(fptr, 2, &hdutype, &status) ) 
		 return status;
	if( fits_read_key(fptr, TINT, "NAXIS2", &nrows, NULL, &status) )
		return status;

//	for( int i = 0; i < n; i++, nrows++ )
	{
		if (fits_insert_rows(fptr, nrows, 1, &status))
			  return status;
    
		int firstrow = nrows + 1;
		int firstelem = 1;

		void *var[1];
		status = 0;
		fits_write_col(fptr, TINT, 1, firstrow, firstelem, n, (void *)&cmdh->cir, &status);
		
		
		char strUTC[40];
		time2strUTC_fitshead( strUTC, sizeof(strUTC), &cmdh->e_time);
		var[0] = (void *)strUTC;
		
		fits_write_col(fptr, TSTRING, 2, firstrow, firstelem, n, var, &status);
		var[0] = (void *)cmdh->event.c_str();
		fits_write_col(fptr, TSTRING, 3, firstrow, firstelem, n, var, &status);
		fits_write_col(fptr, TINT, 4, firstrow, firstelem, n, (void *)&cmdh->param, &status);
		var[0] = (void *)cmdh->cmd.c_str();
		fits_write_col(fptr, TSTRING, 5, firstrow, firstelem, n, var, &status);
		
		
	}
	return 0;
}

int close_fits_cmdh( fitsfile *fptr )//此函數(shù)用于關(guān)閉
{
	int status = 0;
	if( fits_close_file( fptr, &status) )
		return status;
	return 0;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲美女精品一区| 国产精品网站在线| aaa亚洲精品一二三区| 亚洲va国产天堂va久久en| 国产亚洲精品aa| 欧美日韩大陆在线| 97久久超碰国产精品| 麻豆国产精品一区二区三区| 亚洲精品免费播放| 国产日本欧美一区二区| 日韩欧美一区二区视频| 欧美午夜一区二区三区免费大片| 国产激情一区二区三区桃花岛亚洲| 亚洲国产成人av| 综合自拍亚洲综合图不卡区| 久久美女高清视频| 91精品国产综合久久久久久漫画 | 亚洲一区二区五区| 久久精品一区二区三区四区| 欧美一区二区三区四区视频| 91黄色小视频| 91免费精品国自产拍在线不卡| 国产精品一区二区三区99| 久久国产精品99久久久久久老狼| 亚洲国产精品综合小说图片区| 亚洲丝袜美腿综合| 中文字幕国产一区| 国产丝袜美腿一区二区三区| 欧美大尺度电影在线| 在线综合亚洲欧美在线视频| 欧美日韩在线三区| 在线精品观看国产| 色88888久久久久久影院按摩| 99久久99久久精品国产片果冻| 懂色中文一区二区在线播放| 国产露脸91国语对白| 韩国女主播一区| 久久国产精品99久久人人澡| 久久99久久久欧美国产| 另类小说一区二区三区| 美女脱光内衣内裤视频久久网站| 日韩精品色哟哟| 裸体一区二区三区| 麻豆精品一区二区av白丝在线| 日韩精品福利网| 免费高清不卡av| 精品一区二区久久| 国产风韵犹存在线视精品| 成人激情校园春色| 色噜噜狠狠色综合欧洲selulu| 91久久精品一区二区三| 欧美无砖砖区免费| 91精品黄色片免费大全| 欧美成人aa大片| 国产精品视频麻豆| 亚洲美女一区二区三区| 亚洲一二三四在线观看| 首页国产欧美久久| 久久99精品国产91久久来源| 国产美女精品在线| 99精品欧美一区二区三区小说| 色老汉av一区二区三区| 欧美精品视频www在线观看| 欧美v国产在线一区二区三区| 国产午夜精品一区二区三区嫩草| 国产精品久久久久久久岛一牛影视| 亚洲男人的天堂在线aⅴ视频| 亚洲成人免费在线| 激情综合色综合久久| 成人av电影在线播放| 欧美亚洲动漫制服丝袜| 日韩精品专区在线影院观看| 日本一区二区三区久久久久久久久不 | 一区二区三区四区在线播放 | 久久久国产精华| 亚洲精品乱码久久久久久黑人| 日韩精品福利网| 成人国产精品免费观看视频| 欧美视频一区二区三区四区 | xnxx国产精品| 亚洲欧美偷拍卡通变态| 免费日本视频一区| 91视频91自| 精品久久久久一区| 樱花草国产18久久久久| 蜜臀久久久久久久| 99视频有精品| 日韩欧美国产精品| 亚洲精品一二三| 国内成人免费视频| 欧美亚男人的天堂| 欧美国产精品中文字幕| 午夜欧美在线一二页| 国产成人8x视频一区二区| 在线播放中文一区| 1024成人网| 国产大片一区二区| 欧美一级xxx| 一区二区理论电影在线观看| 国产自产2019最新不卡| 欧美日韩视频不卡| 国产精品高清亚洲| 国产一区不卡视频| 日韩欧美激情在线| 亚洲成人高清在线| 成人精品视频一区| 亚洲精品一区二区在线观看| 亚洲一二三四久久| a亚洲天堂av| 久久久久久**毛片大全| 日韩不卡一区二区| 在线视频你懂得一区| 国产精品久久99| 国产成人精品亚洲午夜麻豆| 日韩一区二区精品| 午夜精品一区在线观看| 在线国产电影不卡| 中文字幕亚洲视频| 成人一区二区三区视频在线观看 | 日韩一区二区三区av| 亚洲第四色夜色| 91久久国产综合久久| 日韩毛片高清在线播放| 国产不卡免费视频| 久久久精品国产免大香伊| 韩国v欧美v日本v亚洲v| 91精品国产综合久久久蜜臀图片| 偷窥少妇高潮呻吟av久久免费| 欧美影片第一页| 亚洲成人先锋电影| 欧美日韩国产区一| 天堂va蜜桃一区二区三区漫画版| 欧美在线一二三| 一区二区免费在线| 欧美日韩国产天堂| 日韩—二三区免费观看av| 91精品在线观看入口| 日韩国产欧美在线观看| 欧美精品aⅴ在线视频| 日韩和欧美一区二区| 欧美一区二区福利在线| 精品一区二区在线播放| 亚洲精品在线三区| 国产69精品久久777的优势| 久久婷婷成人综合色| 国产一区二区福利| 国产精品久久久久久久久快鸭| 成a人片亚洲日本久久| 亚洲欧洲日韩综合一区二区| 99久久99久久综合| 亚洲一区av在线| 欧美电影免费观看高清完整版在线 | 91九色最新地址| 日韩成人一级大片| 久久久久久久精| 色综合久久88色综合天天免费| 一区二区三区日本| 9191成人精品久久| 精品中文字幕一区二区| 欧美国产一区二区| 色婷婷久久久亚洲一区二区三区 | 久久久www成人免费毛片麻豆| 国产不卡在线一区| 夜色激情一区二区| 日韩欧美国产综合一区 | 九一九一国产精品| 欧美经典三级视频一区二区三区| 91视频xxxx| 久久国产精品72免费观看| 国产色爱av资源综合区| 色婷婷国产精品综合在线观看| 日韩精品一二三四| 国产精品素人一区二区| 欧美日韩一区二区三区四区五区| 久久国内精品自在自线400部| 国产精品福利一区二区| 在线不卡欧美精品一区二区三区| 国产麻豆视频一区| 亚洲一级二级三级| 国产日韩视频一区二区三区| 欧美视频一区二区| 国产69精品久久久久777| 无吗不卡中文字幕| 成人免费在线视频观看| 日韩一区二区三区高清免费看看| 成人h动漫精品一区二| 爽好多水快深点欧美视频| 国产精品天美传媒沈樵| 日韩一级欧美一级| 在线视频你懂得一区二区三区| 国产精品一区二区在线观看网站| 夜夜嗨av一区二区三区中文字幕| 久久久久国产精品免费免费搜索| 欧美在线综合视频| 成人动漫一区二区在线| 久久99精品久久久久久久久久久久| 亚洲永久精品大片| 国产精品久久久久久久久搜平片 | 在线观看视频欧美| 懂色av一区二区夜夜嗨|