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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dbproc.c.bak

?? 用于小商品消費的SMS消費機程序
?? BAK
?? 第 1 頁 / 共 2 頁
字號:
#include <console.h>
#include <database.h>
#include "dbproc.h"

#define SYS_VERSION 1020

unsigned char cDateTimeBuf[10];
extern unsigned char gcPSAMNo[4];
extern unsigned long glChargeMoney;
extern unsigned long glTradeCounter;
extern unsigned char gcChargeType;

/*
 * 數字轉換為壓縮BCD碼
 * in:unsigned short value, unsigned short base
 *                           base:10^N表示低N位
 * return:  
 */
unsigned char *toBCD(unsigned short value, unsigned short base)
{
    unsigned char i=0;

    value %= base;
    base /= 10;

    while( base > 0 )
    {
        cDateTimeBuf[i>>1] &= 0xF0;  //低四位清零
        while( value >= base )//用減法得到該位的值
        {
            value -= base;
            cDateTimeBuf[i>>1] ++;
        }
        if( !(i&0x01) ) //如果i為偶數,壓縮BCD碼
            cDateTimeBuf[i>>1] <<= 4;
        i++;
        base /= 10;
    }
    return cDateTimeBuf;
}


/*
 * 得到日期時間的BCD碼,格式為:yyyymmddhhmmss 占7個byte
 */
void getBCDDateTime(unsigned char *dt)
{
	typ_RTC_time_rec t;
	typ_RTC_date_rec d;
	
	t.l_word = RTC_read_time();
	d.l_word = RTC_read_date();
	
	memcpy( (void *)(dt+0), (void *)toBCD(d.fields.year,10000), 2);
	memcpy( (void *)(dt+2), (void *)toBCD(d.fields.month,100), 1);
	memcpy( (void *)(dt+3), (void *)toBCD(d.fields.day,100), 1);
	memcpy( (void *)(dt+4), (void *)toBCD(t.fields.hour,100), 1);
	memcpy( (void *)(dt+5), (void *)toBCD(t.fields.minute,100), 1);
	memcpy( (void *)(dt+6), (void *)toBCD(t.fields.second,100), 1);
}

/*
 * 從BCD碼日期時間字符竄得到日期
 * in:      const unsigned char *dt as format "yyyymmddhhmmss"
 * return:  date's long
 */ 
unsigned long getDateFromBCD(const unsigned char *dt)
{
	typ_RTC_date_rec date;
	
	date.fields.year  = (dt[0]>>4)*1000 + (dt[0]&0x0f)*100 + 
	                    (dt[1]>>4)*10 + (dt[1]&0x0f);
	date.fields.month = (dt[2]>>4)*10 + (dt[2]&0x0f);
	date.fields.day   = (dt[3]>>4)*10 + (dt[3]&0x0f);
	
	return date.l_word;
}

/*
 * 從BCD碼日期時間字符竄得到時間
 * in:      const unsigned char *dt as format "yyyymmddhhmmss"
 * return:  time's long
 */
unsigned long getTimeFromBCD(const unsigned char *dt)
{
	typ_RTC_time_rec time;
	
	time.fields.hour   = (dt[4]>>4)*10 + (dt[4]&0x0f);
	time.fields.minute = (dt[5]>>4)*10 + (dt[5]&0x0f);
	time.fields.second = (dt[6]>>4)*10 + (dt[5]&0x0f);
	
	return time.l_word;
}

/*
 * 異或校驗
 */
unsigned char XOR_calc(unsigned char *buf, int len)
{
	unsigned char result=0; 
	int i=0;
	
	for(;i<len;i++)
	{
		result ^= buf[i];
	}
	return result;
}


// CRC Caculator			
// Parameters:
// 	pData: Data need to caculate CRC
//	uLen: Data Length
// Return:	CRC 
// Download from http://www.mcu51.com/index.asp?page=2&typeid=2&txtitle=
//
unsigned int uCalCrc(unsigned char *pData,  unsigned int uLen) 
{
  unsigned int crc;
  unsigned char da;
  unsigned int crc_ta[256]={               /* CRC余式表 */
    0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
	0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
    0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
    0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
    0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
    0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
    0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
    0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
    0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
    0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
    0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
    0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
    0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
    0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
    0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
    0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
    0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
    0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
    0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
    0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
    0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
    0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
    0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
    0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
    0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
    0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
    0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
    0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
    0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
    0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
    0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
    0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
	};

  crc=0;
  while(uLen--!=0) {
    da=(unsigned char) (crc/256);    /* 以8位二進制數的形式暫存CRC的高8位 */
    crc<<=8;              /* 左移8位,相當于CRC的低8位乘以  */
    crc^=crc_ta[da^*pData];   /* 高8位和當前字節相加后再查表求CRC ,再加上以前的CRC */
    pData++;
  }
  return(crc);
}


/*
 * 初始化數據庫,在剩余的flash空間中創建編號為1,10,100的三塊空間
 * 分別用來存放系統狀態信息、黑名單(要求>5000條)、交易記錄(要求>5000條)
 * (這里每塊flash是64kBytes),對于1M的FLASH,要求手持機程序代碼<256k
 * return:  0     successed
 *          other fail 
 */
short initDb()
{
  	sttSysRunTime srt;
  	unsigned long lOldTradeCounter = 0;
  	int i;
  	
  	get_db_sys_param(&dsp);

 	if(dsp.blocks < 9)   //不夠最小size (9*64K)
  		return 1;
  	
  	if( (file_sys_cnt = DB_check_db(filesys)) == 5 )
  	{
		if( filesys[0].db_id == 1     && filesys[0].block_cnt == 0 &&
		    filesys[1].db_id == 10    && filesys[1].block_cnt == 1 &&
		    filesys[2].db_id == 100   && filesys[2].block_cnt == 1 &&
		    filesys[3].db_id == 1000  && filesys[3].block_cnt == 1 &&
		    filesys[4].db_id == 10000 && filesys[4].block_cnt == 1 )
		{
			getSysRunTime(&srt);
			if(srt.sSysVersion == SYS_VERSION)
				return 0;
			if(abs(SYS_VERSION - srt.sSysVersion)<100)			
				lOldTradeCounter = srt.lTradeCounter;
		}
  	}
  	
  	clr_scr();	
	move_cursor(0,0);
	puts("正在初始化數據庫");
	move_cursor(0,2);
	puts("請稍等...");

	erase_db_sys();
	DB_format_db(1, 1, 200);                                   //系統狀態信息數據庫,占64K,每個200個byte
	DB_format_db(10, 2, 8);                                    //黑名單數據庫,占128K,每個黑名單8個byte
	DB_format_db(100, 2, sizeof(sttChargeRecord) ); //交易記錄數據庫1,占128K,每條交易紀錄40個byte
	DB_format_db(1000, 2, sizeof(sttChargeRecord) ); //交易記錄數據庫2,占128K,每條交易紀錄40個byte
	DB_format_db(10000, 2, sizeof(sttChargeRecord) ); //交易記錄數據庫3,占128K,每條交易紀錄40個byte
	
	file_sys_cnt = DB_check_db(filesys);		
	
	memset( (void *)&srt, 0, sizeof(srt) );
	srt.sSysVersion = SYS_VERSION;        //版本號
	srt.cLastTradeHandleDb = TD_DB_INDEX1;
	srt.lLastTradeHandle = 0;
	srt.cLastGatherFromDb = TD_DB_INDEX1;
	srt.lLastGatherFrom = 0;
	srt.cLastGatherToDb = TD_DB_INDEX1;
	srt.lLastGatherTo = 0;
	srt.cLastSendFromDb = TD_DB_INDEX1;
	srt.lLastSendFrom = 0;
	srt.cLastSendToDb = TD_DB_INDEX1;
	srt.lLastSendTo = 0;
	srt.lWorkerNo = 0;
	memcpy(srt.cPassword, "12345678", 8);
	getBCDDateTime(srt.cLastGatherDateTime);
	getBCDDateTime(srt.cLastBLDateTime);
	memcpy(srt.SMSCenterNo, "+8613800755500", 14);
	memcpy(srt.CenterNo, "06800", 5);
	srt.lTradeCounter = lOldTradeCounter;
	DB_add_record(RT_DB_INDEX, (void *)&srt);
	return 0;
}

/*
 * 得到系統運行時參數
 * out:     sttSysRunTime *srt
 * return:  0     successed
 *          other fail  
 */
short getSysRunTime(sttSysRunTime *srt)
{
	char flag;
	void *p;
	
	memset( (void *)srt, 0, sizeof(sttSysRunTime) );
	p = DB_jump_to_record(RT_DB_INDEX, DB_count_records(RT_DB_INDEX) - 1, &flag);
	if (p)
	{
		memcpy( (void *)srt, p, sizeof(sttSysRunTime) );
		return 0;
	}

	return 1;
}

/*
 * 更新系統運行時參數
 * in:      sttSysRunTime *srt
 * return:  0     successed
 *          other fail 
 */
short updateSysRunTime(sttSysRunTime *srt)
{
	if (DB_add_record(RT_DB_INDEX, (void *)srt) == 0)
	{
		if( DB_erase_filesys(RT_DB_INDEX) != 0 )
			return 1;
		DB_add_record(RT_DB_INDEX, (void *)srt);	
	}
	return 0;
}

/*
 * 更新黑名單
 * 輸入參數:   從服務器下來的黑名單數據包
 * 返回    :   0    成功
 *             -1   失敗
 */
short updateBlackList(unsigned char * blPacket)
{
	sttBlackListHead blHead;
	sttSysRunTime srt;
	unsigned char *p;
	short count=0;
	unsigned short serialNo;
	unsigned long  blackNum;

	if( getSysRunTime(&srt) == 0 )
	{
		memcpy( (void *)&blHead, (void *)blPacket, sizeof(blHead) );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99精品国产麻豆婷婷| 欧美高清精品3d| 一区二区三区精品| 欧美日韩午夜精品| 日韩av电影免费观看高清完整版 | 3751色影院一区二区三区| 美日韩一级片在线观看| 国产日韩欧美精品在线| 99久久精品国产一区| 亚洲h精品动漫在线观看| 欧美tickle裸体挠脚心vk| 国产激情视频一区二区三区欧美| 亚洲欧洲精品成人久久奇米网| 欧美日韩中文字幕一区| 美女性感视频久久| 中文字幕乱码亚洲精品一区 | 日韩免费高清电影| 丁香另类激情小说| 亚洲男人的天堂网| 日韩午夜三级在线| 成人精品在线视频观看| 亚洲成av人综合在线观看| 精品成人私密视频| 91麻豆国产福利精品| 人人超碰91尤物精品国产| 久久精品视频免费观看| 在线精品视频一区二区三四 | 日本高清成人免费播放| 免费人成精品欧美精品| 国产精品久久久久久久久免费丝袜 | 亚洲成av人片| 欧美精品一区二区不卡| 99精品黄色片免费大全| 石原莉奈在线亚洲三区| 久久嫩草精品久久久精品| 色综合久久中文综合久久97| 日本不卡123| 国产精品萝li| 欧美一区二区视频观看视频| fc2成人免费人成在线观看播放| 偷拍与自拍一区| 国产日韩v精品一区二区| 欧美日韩国产一级片| 粉嫩av一区二区三区在线播放| 亚洲国产裸拍裸体视频在线观看乱了| 26uuuu精品一区二区| 一本到不卡精品视频在线观看| 久久er精品视频| 亚洲乱码一区二区三区在线观看| 欧美大片一区二区| 日本精品免费观看高清观看| 国产综合色精品一区二区三区| 亚洲一二三四在线观看| 国产午夜久久久久| 欧美一二三区精品| 色欧美片视频在线观看在线视频| 国产一区欧美二区| 五月天一区二区| 综合av第一页| 久久精品欧美日韩精品 | 欧美成人性战久久| 色菇凉天天综合网| 成人午夜av影视| 裸体健美xxxx欧美裸体表演| 一区二区三区精品久久久| 国产欧美一区二区精品性| 日韩一区二区视频| 欧美午夜精品免费| 99re热这里只有精品视频| 国产精品综合久久| 日韩精品电影一区亚洲| 亚洲一区二区三区小说| 亚洲欧洲美洲综合色网| 欧美韩日一区二区三区| 欧美一卡二卡在线| 欧美日韩免费电影| 日本精品裸体写真集在线观看 | 久久久久久一级片| 日韩美女视频在线| 91精品视频网| 欧美日韩国产小视频| 色综合久久88色综合天天| eeuss国产一区二区三区| 国产一区二区三区久久久 | 欧美日本精品一区二区三区| 91免费精品国自产拍在线不卡| 国产不卡视频在线播放| 国产美女av一区二区三区| 久久国产尿小便嘘嘘尿| 日韩av一二三| 日本三级韩国三级欧美三级| 亚洲bt欧美bt精品| 一片黄亚洲嫩模| 亚洲精品自拍动漫在线| 亚洲免费观看视频| 亚洲女性喷水在线观看一区| 国产精品美女www爽爽爽| 国产偷国产偷亚洲高清人白洁 | 亚洲成人高清在线| 亚洲一区二区三区小说| 亚洲最大的成人av| 亚洲一区二区3| 亚洲成av人片在线观看无码| 亚洲成人高清在线| 日韩经典一区二区| 美女免费视频一区二区| 久久精品99久久久| 麻豆传媒一区二区三区| 国内精品伊人久久久久影院对白| 久久精品国产成人一区二区三区 | 色哟哟在线观看一区二区三区| 91麻豆精品秘密| 色88888久久久久久影院野外| 色国产综合视频| 欧美日韩免费高清一区色橹橹| 欧美三级中文字幕在线观看| 欧美喷潮久久久xxxxx| 欧美一区二区视频免费观看| 精品国产露脸精彩对白| 久久久久久影视| 中文字幕在线观看一区| 亚洲免费av网站| 亚洲成人高清在线| 蜜桃视频一区二区三区| 国内精品伊人久久久久av一坑| 国产精品综合在线视频| 99久久综合99久久综合网站| 色妹子一区二区| 91.成人天堂一区| 久久综合久久鬼色| 国产女主播一区| 亚洲欧美日韩国产另类专区| 亚洲成年人影院| 经典三级一区二区| 成人福利在线看| 91成人在线精品| 91精品欧美一区二区三区综合在| 精品成人一区二区| 最新久久zyz资源站| 亚洲五码中文字幕| 老司机精品视频导航| 国产一区二区不卡在线| youjizz国产精品| 在线免费观看视频一区| 欧美日韩一区在线观看| 日韩欧美区一区二| 欧美—级在线免费片| 一区二区三区精品在线| 麻豆专区一区二区三区四区五区| 粉嫩av一区二区三区在线播放| 欧美综合一区二区三区| 欧美xfplay| 亚洲视频中文字幕| 日本欧美一区二区在线观看| 国产成a人无v码亚洲福利| 欧洲精品一区二区三区在线观看| 精品三级av在线| 亚洲欧美偷拍三级| 久久福利资源站| 99re成人精品视频| 日韩亚洲欧美高清| 亚洲婷婷在线视频| 蜜桃视频在线观看一区二区| 99视频精品在线| 日韩欧美123| 亚洲欧美偷拍卡通变态| 精品一区二区三区免费视频| 一本色道久久综合亚洲精品按摩| 欧美成人伊人久久综合网| 亚洲欧美在线观看| 久久国产麻豆精品| 在线观看日韩电影| 久久久亚洲国产美女国产盗摄| 亚洲综合色成人| 国产成人精品网址| 欧美老肥妇做.爰bbww| 国产精品久99| 久久99日本精品| 91精品办公室少妇高潮对白| 久久亚洲春色中文字幕久久久| 亚洲午夜在线视频| 成人一区二区三区中文字幕| 日韩色在线观看| 一区二区三区在线视频播放| 国产成人综合精品三级| 91麻豆精品国产91久久久使用方法| 国产精品素人一区二区| 捆绑紧缚一区二区三区视频| 91国在线观看| 欧美国产国产综合| 激情av综合网| 欧美欧美欧美欧美| 亚洲精品国产视频| 成人av网站免费| www激情久久| 奇米色777欧美一区二区| 色偷偷成人一区二区三区91| 日本一区二区三区电影| 精品一区二区三区在线观看国产| 欧美日韩1234|