⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mbbase.c

📁 基于嵌入式linux下
💻 C
字号:
/*   File name : mbbase.h   Content   : basic funtion   Author    : mubin   Date      : 2004-06-03*/#include "mbbase.h"void MbDoNothing(void){}void MbAssert(char *FileName, int LineNo){   fflush(stdout);   fprintf(stderr, "Assertion failed: %s,line %d\n", FileName, LineNo);   fflush(stderr);   abort();}void MbDeb(char *FileName, int LineNo, char *str, ...){	va_list vargs;	va_start(vargs, str );	fflush(stdout);	printf("***GPRS Communication!!*****DEBUG: (%s %d)", FileName,LineNo);	vprintf(str, vargs);	printf("\n");	fflush(stdout);	va_end(vargs);	return;}void MbPrt(char *FileName, int LineNo, char *str, ...){	va_list vargs;	va_start(vargs, str);	fflush(stdout);	printf("\n####INFOR: (%s  %d)", FileName, LineNo);	vprintf(str, vargs);	printf("\n");	fflush(stdout);	va_end(vargs);	return;}void MbErr(char *FileName, int LineNo, char *str, ...){	va_list vargs;	va_start(vargs, str );	fflush(stdout);	printf("\n!!!!!!!!ERROR: (%s  %d)", FileName, LineNo);	vprintf(str, vargs);	printf("\n");	fflush(stdout);	va_end(vargs);	return;}void MbSysErr(char *FileName, int LineNo, int ErrNo , char *str,...){	va_list vargs;	va_start(vargs, str );	fflush(stdout);	printf("\n!!!!!!!!SYSTEM ERROR (%s) : (%s  %d)", \		strerror(ErrNo), FileName, LineNo);	vprintf(str, vargs);	printf("\n");	fflush(stdout);	va_end(vargs);	return;}void MbDump(unsigned char *data, int count){    int i;    for (i = 0; i < count; i++){        printf("0x%02X", data[i]);        if (((i + 1) % 0x10) == 0){            printf("\n");        }else{            printf(" ");	}    }    printf("\n");}void MbDumpStr(char *data, int count){	char *tmp_data;	tmp_data = (char*)malloc( sizeof(char) * (count+1));	memcpy(tmp_data, data, count);	tmp_data[count] = '\0';	printf("%s\n", tmp_data);	free(tmp_data);	return;}int MbGetSeqNo(char *FileName){	FILE *f;	int i, c1,c2,c3, SeqNoTemp;	static int SeqNo[SEQ_CACHE];	static int arrIndex =SEQ_CACHE;	MB_ASSERT(FileName != NULL);	if(arrIndex == SEQ_CACHE){		arrIndex = 0;		f = fopen(FileName, "rt");		if(f != NULL){			c1 = fgetc(f);			c2 = fgetc(f);			c3 = fgetc(f);			SeqNoTemp = ((c1*256)+c2)*256 + c3;			fclose(f);		}else{			SeqNoTemp = 1;		}		for(i=0;i<SEQ_CACHE; i++){			if (SeqNoTemp > SEQ_MAX)				SeqNoTemp = 1;			SeqNo[arrIndex+i] = SeqNoTemp++;		}			f = fopen(FileName, "wt");		if(SeqNoTemp > SEQ_MAX)			SeqNoTemp = 1;		c1 = SeqNoTemp/(256*256);		c2 = SeqNoTemp/256;		c3 = SeqNoTemp % 256;		fputc(c1, f);		fputc(c2, f);		fputc(c3, f);		fclose(f);		return SeqNo[arrIndex++];	}else{		return SeqNo[arrIndex++];	}}int MbGetInvoiceNo(char *FileName){	FILE *f;	int i, c1,c2,c3, SeqNoTemp;	static int SeqNo[INVOICE_CACHE];	static int arrIndex =INVOICE_CACHE;	MB_ASSERT(FileName != NULL);	if(arrIndex == INVOICE_CACHE){		arrIndex = 0;		f = fopen(FileName, "rt");		if(f != NULL){			c1 = fgetc(f);			c2 = fgetc(f);			c3 = fgetc(f);			SeqNoTemp = ((c1*256)+c2)*256 + c3;			fclose(f);		}else{			SeqNoTemp = 1;		}		for(i=0;i < INVOICE_CACHE; i++){			if (SeqNoTemp > INVOICE_MAX)				SeqNoTemp = 1;			SeqNo[arrIndex+i] = SeqNoTemp++;		}			f = fopen(FileName, "wt");		if(SeqNoTemp > INVOICE_MAX)			SeqNoTemp = 1;		c1 = SeqNoTemp/(256*256);		c2 = SeqNoTemp/256;		c3 = SeqNoTemp % 256;		fputc(c1, f);		fputc(c2, f);		fputc(c3, f);		fclose(f);		return SeqNo[arrIndex++];	}else{		return SeqNo[arrIndex++];	}}void MbLocalTime(time_t *t, struct tm *tm){   MB_ASSERT( t != NULL && tm != NULL );   #ifdef _REENTRANT      localtime_r(t, tm);   #else      memcpy(tm, localtime(t), sizeof(struct tm));   #endif}void MbToday(char *s){   time_t     t;   struct tm  tm;   MB_ASSERT( s != NULL );   t = time(NULL);   MbLocalTime(&t, &tm);   sprintf(s, "%4d%02d%02d", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday);}static void AmtCat(char *AmtStr, char *s, size_t len, size_t *CurLen,   size_t MaxLen){   if( MaxLen % 2 != 0 )      MaxLen--;   if( *CurLen == MaxLen )      return;   if( len + *CurLen > MaxLen ){      memcpy(AmtStr + *CurLen, s, MaxLen - *CurLen);      *CurLen = MaxLen;   }   else{      memcpy(AmtStr + *CurLen, s, len);      *CurLen += len;   }}void MbCapAmt(double amt, char *AmtStr, int MaxLen){   static char *text1 = "壹贰叁肆伍陆柒捌玖";   static char *text2 = "拾万仟佰拾亿仟佰拾万仟佰拾元";   char TmpStr[100];   int i, j, flag;   size_t CurLen;   MB_ASSERT( amt >= 0 && amt < 1e15 && AmtStr != NULL && MaxLen > 0 );   memset(AmtStr, ' ', MaxLen);   AmtStr[MaxLen] = MB_EOS;   CurLen = 0;   sprintf(TmpStr, "%017.2f", amt);   if( memcmp(TmpStr, "00000000000000.00", 17) == 0 ){      AmtCat(AmtStr, "零元整", 6, &CurLen, MaxLen);      return;   }   if( memcmp(TmpStr, "00000000000000", 14) != 0 ){      for(j = 0, flag = 1, i = 0; i < 14; i++){         if( flag == 1 && TmpStr[i] == '0' )            continue;         flag = 0;         if( TmpStr[i] != '0' ){            if( j > 0 ){               AmtCat(AmtStr, "零", 2, &CurLen, MaxLen);               j = 0;            }            AmtCat(AmtStr, text1 + ( TmpStr[i] - '1' ) * 2, 2, &CurLen, MaxLen);            AmtCat(AmtStr, text2 + i * 2, 2, &CurLen, MaxLen);         }         else{            if( i == 1 || i == 5 || i == 13 || ( i == 9 && j < 3 ) )               AmtCat(AmtStr, text2 + i * 2, 2, &CurLen, MaxLen);            j++;         }      }   }   i = 15;   if( TmpStr[i] != '0' ){      AmtCat(AmtStr, text1 + ( TmpStr[i] - '1') * 2, 2, &CurLen, MaxLen);      AmtCat(AmtStr, "角", 2, &CurLen, MaxLen);   }   i++;   if( TmpStr[i] != '0' ){      AmtCat(AmtStr, text1 + ( TmpStr[i] - '1' ) * 2, 2, &CurLen, MaxLen);      AmtCat(AmtStr, "分", 2, &CurLen, MaxLen);   }   else      AmtCat(AmtStr, "整", 2, &CurLen, MaxLen);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -