📄 gsm.h
字号:
/* 文 件 名:gsm.h 作 者:丁宏伟 创建时间:2008年10月 修改时间:2008年11月26日 */#ifndef _GSM_H#define _GSM_Htypedef struct { char *cmgf_cmd; char cmgs_cmd[12]; char *len_tpdu; char *addr_smsc; char *obj_tpdu; char *phone; char *use_tpdu; char len_msg[2]; //max = 256 char *unicode_msg; char send_cmd; char *MSG; int len2_tpdu; int len_smsc;}GSM;struct parse{ char phone[15]; char msg[1024]; char date[20]; char head[20]; char len[4]; char stat; char utf8_msg[2048];}msg_all;/*这个函数的作用是把一个16进制的字符串转换成INT型的整数; */int xatoi(char *p,int n){ int t; int i,j=1,k; int sum=0,v=1; if(!strncmp(p,"0x",2) || !strncmp(p,"0X",2)){//判断格式是否以0X开头; i=2;//忽略前导0x; while(p[i] == '0') i++;//忽略前导0; k=n-i;//获得从第一个不为0的字符个数; while(p[i]!='\0'){ if(p[i]>='0'&& p[i] <= '9'){//判断p[i]是否为0-9之间的字符; t=p[i]-'0';//将字符转换成ASSIC码值; } if(p[i]>='A' && p[i] <= 'F'){ t=p[i]-'A'+10; } if(p[i]>='a'&& p[i] <= 'f'){ t=p[i]-'a'+10; } // else printf("False Character !\n"); for(v=1,j=1;j<k;j++) {//K代表位数; v*=16;//V是16进制数的位权; } sum+=(t*v);//计算出每一位的值; k--;i++;//K--表示从高位到低位; } return sum;/* if(!strncmp(p,"0",1){ } else strcpy(s,p); return atoi(s);*/ }}/* 此函数的作为是把一个INT型数转换成16进制的字符串格式; T是一个小于255的INT型数;*/void itoa(int t,char *a,int n){ int l,h; if(t>=256 && t<0){ perror("int value >255 !"); } l=t%16;//获得T的低4位 h=t/16;//获得T的高4位 if(h>=10){ a[0]=h%10+'A';//高位大于10 即A-F; }else a[0]=h+'0'; if(l>=10){ a[1]=l%10+'A'; }else a[1]=l+'0'; a[2]='\0';}/*tochar 这个函数是把接收到的GSM查询信息分成两个字符串段;to_head与to_msg;*/int tochar(char *buf,char *to_head,char *to_msg,int *n){ /* --------------------------- -----------------------------*/ static int i=0; int j=0; n[1]+=1; /* --------------------------- -----------------------------*/ if(i==0){ while(buf[i]!='\n') i++; i++; }// getchar(); /* --------------------------- -----------------------------*/ memset(to_head,0,sizeof(to_head)); while(buf[i]!='\n') to_head[j++]=buf[i++]; to_head[j]='\0';// printf("### to_head ###:%s\n",to_head); /* --------------------------- -----------------------------*/ if(!strncmp(to_head,"OK",2)) { printf("短信解码成功!\n"); n[1]-=1; return i; } /* --------------------------- -----------------------------*/ i++; n[0]=j; j=0;// getchar(); /* --------------------------- -----------------------------*/ memset(to_msg,0,sizeof(to_msg)); while(buf[i]!='\n') to_msg[j++]=buf[i++]; to_msg[j]='\0';// printf("###to_msg###: %s\n",to_msg); /* --------------------------- -----------------------------*/ if(!strncmp(to_msg,"OK",2)) { printf("短信解码成功!\n"); --(n[1]); return i; } i++; /* --------------------------- -----------------------------*/ return i;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -