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

📄 sk.c

📁 本程序在S3C44B0 uClinux的嵌入式GUI
💻 C
📖 第 1 页 / 共 5 页
字号:
   err = ReceiveComData(idComm1,returnBuf,800);  //接收数据   if( !err )      for(i=0;i<3;i++)       if(returnBuf[i] != commandContent[i])       { err = 0x95;  break;       }     #ifdef debug         printf("ReceiveComData Return Value = %d\n",err);     #endif  close(idComm1);  //关闭串口  usleep(100);   return err;}//---------------------------------------------------------------------------//---------------------------------------------------------------------------//SmFunc.c // 以下为公用函数 void   Copy_Mem(unsigned char *ss,unsigned char *bb,int len) {	int i;		for(i=0;i<len;i++) *bb++=*ss++; } /*******************************************************/ /*	比较mem1 &mem2					*/ /*	return:	0 = mem1 == mem2			*/ /*		1 = mem1 != mem2			*/ /*******************************************************/ int	CompData(unsigned char *mem1,unsigned char *mem2,int L) {	int i;	for(i=0;i<L;i++)	  {	  if(*(mem1+i) != *(mem2+i)) return 1;	  }	return 0; }//功能: BCD码转换为ASCLL数字字符void BCDtoChar(unsigned char *CharStr,unsigned char BCDcode){  *CharStr++ = (BCDcode >> 4) + 0x30;  *CharStr = (BCDcode & 0x0f) + 0x30;}//---------------------------------------------------------------------------//功能: 将单个字符转换为两个可见的十六进制字符 newvoid HexToDoubleASCII(unsigned char *CharStr,unsigned char BCDcode[],int len){  unsigned char StandardHexAscii[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F',0};            int i;  for(i=0;i<len;i++)  {    *CharStr = BCDcode[i] >> 4;    *CharStr = StandardHexAscii[*CharStr];    CharStr++;    *CharStr = (BCDcode[i] & 0x0f);    *CharStr = StandardHexAscii[*CharStr];    CharStr++;  }}//---------------------------------------------------------------------------//功能: ASCLL数字字符转换为BCD码unsigned char CharToBCD(unsigned char *Str){ unsigned char bcd, cc; bcd = *Str++; bcd -= '0'; if( bcd > 9 )  return 0xff; bcd <<= 4; cc = *Str; cc -= '0'; if( cc > 9 )  return 0xff; bcd += cc; return bcd;}//---------------------------------------------------------------------------//功能: 计算长整型的位数unsigned char digit_num(unsigned long num){ unsigned char i,temp; temp = 0; //  for(i=0;i<8;i++) for(i=0;i<12;i++) {  num /= 10; temp++;  if(num == 0) break; } return(temp);}//---------------------------------------------------------------------------//功能: 将长整型转为字符型//输入: cc   长整型//      str  字符型//返回: int  转换的长度int LongToStr(long cc,unsigned char *str){ int i,j; if(cc<0)  cc = -cc; j = digit_num(cc); /* 计算cc的位数 */ *(str+j)=0; str = str + j -1; for (i=0;i<j;i++) {  *str-- = cc%10+0x30;  cc=cc/10; } return j;}//---------------------------------------------------------------------------//功能: 将字符型转换为整型//输入:  str   字符串//返回:  int   数字unsigned long StrToInteger(unsigned char* str){ int i;  unsigned long l=0,ret_temp=0;  l=strlen(str);  for(i=0;i<l;i++)  {    ret_temp=ret_temp*10+(str[i]%0x30);    //if(i!=l-1||i!=0)    //ret_temp=ret_temp*10;  }  return ret_temp;}//---------------------------------------------------------------------------//功能: 将字符型转换为长整型//输入:  str   字符串//返回:  int   数字unsigned long StrToLong(unsigned char* str){ int i; long l,ret_temp=0; l=strlen(str); for(i=0;i<l;i++) {  ret_temp=ret_temp*10+(str[i]%0x30);  //if(i!=l-1||i!=0)  ret_temp=ret_temp*10; } return ret_temp;}//---------------------------------------------------------------------------//功能: 长整型转换为ASC字符型数字//参数: *s  字符数组//      num 要转换的长整形//      L   长度//返回: 无返回void UnsignedLongToAsc(unsigned char *s,unsigned long num,int L){int i; for(i=L-1;i>=0;i--) {  *(s+i) = (unsigned char)(num % 10) +0x30;  num /= 10; } *(s+L)=0;}//---------------------------------------------------------------------------//功能:  整型转换为ASC字符型数字//参数:  *s  字符数组//       num 要转换的长整形//       L   长度//返回:  无返回void UnsignedIntToAsc(unsigned char *s,unsigned int num,unsigned char L){ unsigned char i; /*i = num >> 8; num = (num << 8) | i;*/ for(i=L;i>0;i--) {  *(s+i-1) = (unsigned char)(num % 10) + 0x30;  num /= 10; }}//---------------------------------------------------------------------------//功能:  COPY字符串//输入:  t[]      目标字符//       s[]      源字符//       L        COPY长度// 例:   ByteMove(offset,(unsigned char *)&OffsetValue,4);  !!!  整型值到char型值的转换void stByteMove(unsigned char t[],unsigned char s[],int L){ int i; for(i=0;i<L;i++)  t[i] = s[i];}//---------------------------------------------------------------------------void ByteMoveMask_char(unsigned char t[],unsigned char s[],int Len){ int i;  for(i=0;i<Len;i++)  { if(s[i]=='_') t[i]=' ';    else t[i]=s[i];  }}//---------------------------------------------------------------------------//功能: 十六近制数(小模式)到计算机识别的整型的字节移动//输入: t[]      目标字符//      s[]      源字符//       L        COPY长度// 例:   a[] = {0x0,0x0,0x0,0x01}; int b;//       ByteMoveHexToCount((unsigned char *)&b,a,4);  !!!  整型值到char型值的转换void ByteMoveHexToCount(unsigned char t[],unsigned char s[],int L){ int i,cnt=L-1; for(i=0;i<L;i++)  t[i] = s[cnt--];}//ByteMoveNumberToHex函数与ByteMoveHexToNumber函数执行相同的动作,//但是为了在应用中便于区分使用意图,所以就多声明了一次void ByteMoveCountToHex(unsigned char t[],unsigned char s[],int L){ ByteMoveHexToCount(t,s,L);}//---------------------------------------------------------------------------  const unsigned char BIGNUM[] = {"零壹贰叁肆伍陆柒捌玖整"};  const unsigned char BIGUNT[] = {"万圆仟佰拾  角分"};/*int Get10nPower(int n){int rev = 1;    while(n--)	rev *= 10;    return rev;}*/long Get10nPower(int n){ long rev = 1;    while(n--)	rev *= 10;    return rev;}//---------------------------------------------------------------------------void MenoyToBigMenoy(long Menoy,unsigned char *BigMenoy){ unsigned char len; long tmp; long shang; int WanFlag = 0,ZeroFlag = 0; unsigned char *ps,*pd; unsigned char *dest = BigMenoy; if(!Menoy)  return; tmp = Menoy; len = 0; pd = (unsigned char *)&BIGUNT[12]; while(tmp) { len++;tmp /= 10; } if(len > 6)  WanFlag = 1; ps = (unsigned char *)&BIGUNT[2*(2+6-(len%7))]; if(WanFlag)  ps-=6; tmp = Menoy; while(len) {  if(ps == pd)  {   dest -= 2;   if(WanFlag == 1)   { *dest++ = BIGUNT[0]; *dest++ = BIGUNT[1];     WanFlag = 0; ps =(unsigned char *)&BIGUNT[4];   }   else   { *dest++ = BIGUNT[2]; *dest++ = BIGUNT[3]; }   if(ZeroFlag)   { *dest++ = BIGNUM[0]; *dest++ = BIGNUM[1]; }  }  else  ;  len--;  shang = tmp / Get10nPower(len);  tmp = tmp % Get10nPower(len);  if(shang == 0 && ZeroFlag == 1)  { ps++;ps++; continue; }  *dest++ = BIGNUM[2*shang];  *dest++ = BIGNUM[2*shang+1];  if(shang == 0)  { ZeroFlag = 1; ps++;ps++; }  else  { ZeroFlag = 0; *dest++ = *ps++;*dest++ = *ps++;} } dest -= 2; if(*dest == BIGNUM[0]) { *dest++ = BIGNUM[20]; *dest++ = BIGNUM[21]; } else { dest++; dest++; } *dest = 0;}//---------------------------------------------------------------------------//功能:  数据检查和//输入:  *s   被检查字符串//       Len  被检查数据长度//       flag 此函数执行状态     1->建立; 0->检查;//返回:  数据和unsigned char CheckSum(unsigned char *s,unsigned char Len,unsigned char flag){ unsigned char i; unsigned char sum=0; for(i=0;i<Len;i++)  sum += *(s++); if(flag)  *s = sum; return(sum);}//---------------------------------------------------------------------------//功能:增加金额字符串中的'.'字符                  //2001.10.27增加void Add_Decimal(unsigned char *s,int *length){ unsigned char temp; int s_length; s_length=*length; if(s_length>2) {s[s_length]=s[s_length-1];    //最后两个子节右移一个字节 2001.9.29  s[s_length-1]=s[s_length-2];  s[s_length-2]='.';  *length = *length+1;  } else {if(s_length==1)  {temp=s[0];   s[0]='0';  s[1]='.';   s[2]='0';  s[3]=temp;  }  if(s_length==2)  {s[2]=s[0]; s[3]=s[1];        //最后两个子节右移一个字节 2001.9.29   s[0]='0';  s[1]='.';  }  if(s_length<1)  {s[0]='0';  s[1]='.';   s[2]='0';  s[3]='0';  }  *length=4; }}//---------------------------------------------------------------------------/*struct tm{int tm_sec;int tm_min;int tm_hour;int tm_mday;int tm_mon;int tm_year;int tm_wday;int tm_yday;int tm_isdst;};*///功能:  得到当前系统时间并且转换为BCD码//参数:  DATE:用于返回生成的6位BCD码(年月日)void SystemDateToBcd(unsigned char *DATE){           int length; unsigned char DT_buf[20]; unsigned char Data_Buf[7]; time_t timeDT; struct tm *DT;  time(&timeDT);  //Linux get now date DT=localtime(&timeDT);  //将当前时间转入DT'tm结构'中 memset(DT_buf,0x0,20); memset(Data_Buf,0x0,7); length = LongToStr((1900+DT->tm_year),Data_Buf); DT_buf[0]=CharToBCD(Data_Buf);   DT_buf[1]=CharToBCD(&Data_Buf[2]);  //? memset(Data_Buf,0x0,7); length = LongToStr((1+DT->tm_mon),Data_Buf); if(length<2) { Data_Buf[1] = Data_Buf[0];  Data_Buf[0] = 0x30;} DT_buf[2]=CharToBCD(Data_Buf);  //月 memset(Data_Buf,0x0,7); length = LongToStr(DT->tm_mday,Data_Buf); if(length<2) { Data_Buf[1] = Data_Buf[0];  Data_Buf[0] = 0x30;} DT_buf[3]=CharToBCD(Data_Buf);  //日  memset(Data_Buf,0x0,7); length = LongToStr(DT->tm_hour,Data_Buf); if(length<2) { Data_Buf[1] = Data_Buf[0];  Data_Buf[0] = 0x30;} DT_buf[4]=CharToBCD(Data_Buf);  //小时 memset(Data_Buf,0x0,7);

⌨️ 快捷键说明

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