zoukankan      html  css  js  c++  java
  • 物流追踪

    源码1:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<termios.h>
    #include<signal.h>
    #include<fcntl.h>
    #include<semaphore.h>
    #include<sys/sem.h>
    #include<pthread.h>
    #include<locale.h>

    #define SIZE 500
    pthread_t pth1,pth2;
    int fd_gprs = 0;
    int fd_gps = 0;
    int fd_read = 0;
    char * gga_start;
    char * gga_end;
    char * rmc_start;
    char * rmc_end;

    char * buf;
    char * GGA;
    char * RMC;
    char msg_gps[100] = {''};

    //pthread_mutex_t mp=PTHREAD_MUTEX_INITIALIZER;

    //signal function
    void handler(int sig);
    //pthread 1 (send message)
    void * pthread_send(void * arg);
    //pthread 2 (recive message)
    void * pthread_recive(void * arg);
    //exchange parity
    char * change(char a[]);
    //change chinese to PDU
    int utf_unicode(char * output,char * input,int x);
    //change PDU to chinese
    char * unicode_utf8(char ch[]);
    char * get_gps_info(char * gga,char * rmc);

    int main()
    {   
       
        struct termios old_gprs;
        struct termios new_gprs;
        
        struct termios old_gps;
        struct termios new_gps;
        
        int flag_getattr_gprs = 0;
        int flag_setattr_gprs = 0;
        
        int flag_getattr_gps = 0;
        int flag_setattr_gps = 0;
        
       // pthread_mutex_init(&mp,NULL);
        
        signal(SIGALRM,handler);
        
        //open GPRS
        fd_gprs = open("/dev/ttyUSB0",O_NONBLOCK|O_RDWR);
        if(fd_gprs < 0)
        {
            perror("open GPRS error");
            return 1;
        }
       
        //open GPS
        fd_gps = open("/dev/ttyUSB1",O_RDONLY);
        if(fd_gps < 0)
        {
            perror("open GPS error");
            return 1;
        }
       
        //set attribute of serial GPRS
        flag_getattr_gprs = tcgetattr(fd_gprs,&old_gprs);
        if(flag_getattr_gprs != 0)
        {
            perror("get attribute of serial GPRS error");
            return 1;
        }
        new_gprs = old_gprs;
        cfsetispeed(&new_gprs,B9600);
        cfsetospeed(&new_gprs,B9600);
        new_gprs.c_cflag&=~CSIZE;
        new_gprs.c_cflag|=CS8;
        new_gprs.c_cflag&=~CSTOPB;
        new_gprs.c_cflag&=~PARENB;
        flag_setattr_gprs=tcsetattr(fd_gprs,TCSANOW,&new_gprs);
        if(flag_setattr_gprs != 0)
        {
           perror("set attribute of serial GPRS error");
           return 1;
        }
       
        //set attribute of serial GPS
        flag_getattr_gps = tcgetattr(fd_gps,&old_gps);
        if(flag_getattr_gps != 0)
        {
            perror("get attribute of serial GPS error");
            return 1;
        }
        new_gps = old_gps;
        cfsetispeed(&new_gps,B4800);
        cfsetospeed(&new_gps,B4800);
        new_gps.c_cflag&=~CSIZE;
        new_gps.c_cflag|=CS8;
        new_gps.c_cflag&=~CSTOPB;
        new_gps.c_cflag&=~PARENB;
        flag_setattr_gps=tcsetattr(fd_gps,TCSANOW,&new_gps);
        if(flag_setattr_gps != 0)
        {
           perror("set attribute of serial GPRS error");
           return 1;
        }
       
        //create pthread(recive)
        pthread_create(&pth2,NULL,pthread_recive,NULL);
        
        raise(SIGALRM);
        
        //wait pthread
        pthread_join(pth2,NULL);
        
        //pthread_mutex_destroy(&mp);
        
        //close file
        close(fd_gprs);
        close(fd_gps);
        return 0;
    }

    //create pth1
    void handler(int sig)
    {
        if(sig == SIGALRM)
        {   
            pthread_create(&pth1,NULL,pthread_send,NULL);
        
            pthread_join(pth1,NULL);
           
        }
        alarm(90);
     
    }

    //send message
    void * pthread_send(void * arg)
    {   
       // pthread_mutex_lock(&mp);
        buf = (char *)malloc(SIZE * (sizeof(char)));
        if(NULL == buf)
        {
            printf("apply buf_memory error ");
            return ;
        }
        GGA = (char *)malloc(100 * (sizeof(char)));
        if(NULL == GGA)
        {
            printf("apply GGA_memory error ");
            return ;
        }
        RMC = (char *)malloc(100 * (sizeof(char)));
        if(NULL == RMC)
        {
            printf("apply RMC_memory error ");
            return ;
        }
        
        char PDU[400] = {''};
        char core_pre[10] = "089168";  //中心号码前缀
        char core_tle_num[20] = "13800907500";//"13800290500";   //中心号码
        char usr_pre[12] = "11000D9168";   //用户前缀
        char usr_tle_num[20] = "18629535392";    //用户号码
        char form[5] = "0008";      //格式
        char msg_len[10];//信息长度
        char msg[70];   //信息内容
        char *output = (char *)malloc(300);
        char * gps_msg = (char *)malloc(300 * sizeof(char));
        //读取GPS信息
        while(1)
        {
            //read information from serial
            memset(buf,'',SIZE);
            tcflush(fd_gps,TCIOFLUSH);
            fd_read = 0;
            while(fd_read < SIZE)
            {  
                fd_read += read(fd_gps,buf + fd_read,SIZE - fd_read);
            }
        
            gga_start = strstr(buf,"GPGGA");
            if(NULL == gga_start)
            {
                continue;
            }
         
            gga_end = strchr(gga_start + 1,'*');
            if(NULL == gga_end)
            {
                continue;
            }

            rmc_start = strstr(buf,"GPRMC");
            if(NULL == rmc_start)
            {
                continue;
            }

            rmc_end = strchr(rmc_start + 1,'*');
            if(NULL == rmc_end)
            {
                continue;
            }
        
            memset(GGA,'',100);
            memset(RMC,'',100);
            
            memcpy(GGA,gga_start,gga_end - gga_start);
            memcpy(RMC,rmc_start,rmc_end - rmc_start);

            gps_msg = get_gps_info(GGA,RMC);
            if(gps_msg != NULL)
            {
                break;
            }
            
        }
        
        strcat(PDU,core_pre);
       // printf("请输入中心号码: ");
       // printf("%s ",core_tle_num);
        
        change(core_tle_num);
        strcat(PDU,core_tle_num);
        strcat(PDU,usr_pre);
       // printf("请输入用户号码: ");
        //gets(usr_tle_num);
       // printf("%s ",usr_tle_num);
        change(usr_tle_num);
        strcat(PDU,usr_tle_num);
        strcat(PDU,form);
        //printf("请输入新信息内容: ");
       // printf("%s ",gps_msg);
        int len = 0;
       // char *input =(char *)malloc(70);
        
        
        //gets(input);
        len = utf_unicode(output,gps_msg,300);
        printf("%s ",output);
       // printf("%d ",sizeof(gps_msg));
        sprintf(msg_len,"%04X",len/2);
        strcat(PDU,msg_len);
        strcat(PDU,output);
        
        char com1[20] = "at+cmgf=0";
        com1[strlen(com1)] = ' ';
        com1[strlen(com1)] = '';
        write(fd_gprs,com1,strlen(com1));
        sleep(1);
        
        char com2[20] = "at+cmgs=";
        printf("%d ",strlen(PDU));
        sprintf(msg_len,"%d",(strlen(PDU)-18)/2);
        strcat(com2,msg_len);
       
        com2[strlen(com2)] = ' ';
        com2[strlen(com2)] = '';
        write(fd_gprs,com2,strlen(com2));
        sleep(1);
        
        printf("%s ",PDU);
        
        
        write(fd_gprs,PDU,strlen(PDU));
        sleep(1);
        
        char com3[4] = {''};
        com3[0] = 0x1a;
        com3[1] = ' ';
        
        write(fd_gprs,com3,strlen(com3));
        sleep(1);
        if(NULL != buf)
        {
            free(buf);
            buf=NULL;
        }
        
        if(NULL != GGA)
        {
            free(GGA);
            GGA=NULL;
        }
        
        if(NULL != RMC)
        {
           free(RMC);
           RMC=NULL;
        }
       // pthread_mutex_unlock(&mp);
        pthread_exit(&pth1);
    }

    //recive message
    void * pthread_recive(void * arg)
    {
        //pthread_mutex_lock(&mp);
        while(1)
        {   
        char * propt;
        char * point;
        struct TIME
        {
            char year[3];
            char mon[3];
            char day[3];
            char hour[3];
            char min[3];
            char sec[3];
            char minsec[3];
        }tm={0,0,0,0,0,0,0};
         char position[4] = {''};
         int i;
         char com[20] = "at+cmgr=";
         char a[10];
         char core_tle_num[20] = {''};   //中心号码
         char usr_tle_num[20] = {''};    //用户号码
         char time[15] = {''};
         char msg[70];   //信息内容
         char * utf;
        char ch[256] = {''};
        
        
             printf("Wait... ");
                    //sleep(1);
            memset(ch,'',256);
            read(fd_gprs,ch,255);
            printf("%s ",ch);
            sleep(1);  
            propt = strstr(ch,"+CMTI");
            if(NULL == propt)
            {
                continue;
            }
           
            point = strchr(ch,',');
            if(NULL == point)
            {
                continue;
            }
           
            memcpy(position,point+1,ch+strlen(ch)-point);  
            strcat(com,position);
            com[strlen(com)] = ' ';
            com[strlen(com)] = '';
            write(fd_gprs,com,strlen(com));
            sleep(1);  
            memset(ch,'',256);
            read(fd_gprs,ch,sizeof(ch));
            printf("%s ",ch);
            sleep(1);  
            
            propt = strstr(ch,"+CMGR");
            if(NULL == propt)
            {
                continue;
            }
            point = strstr(propt,"0891");
            if(NULL == point)
            {
                continue;
            }
             sscanf(point,"%6s%12s%8s%12s%4s%14s%2s%s",a,core_tle_num,a,usr_tle_num,a,time,a,msg);
            // sscanf(ch+26,"%12s%4s%14s%2s%s",usr_tle_num,a,time,a,msg);
        
       
            change(usr_tle_num);
            printf("用户号码: ");
            for(i = 0;i < 11;i++)
            {
               printf("%c",usr_tle_num[i]);
            }
            printf(" ");
        
            change(time);
            sscanf(time,"%2s%2s%2s%2s%2s%2s%2s",tm.year,tm.mon,tm.day,tm.hour,tm.min,tm.sec,tm.minsec);
            printf("时间: ");
            printf("%s年%s月%s日%s时%s分%s秒%s毫秒 ",tm.year,tm.mon,tm.day,tm.hour,tm.min,tm.sec,tm.minsec);
        
            utf = unicode_utf8(msg);
            printf("信息内容: ");
            printf("%s ",utf);
            sleep(2);
            if(strcmp(usr_tle_num,"18629535392") == 0)
            {   
                raise(SIGALRM);
                sleep(1);
            }
        
        }
        //pthread_mutex_unlock(&mp);
    }

    //exchange parity
    char * change(char a[])
    {
        int len;
        int temp;
        int i = 0;
        len = strlen(a);
        
        if(len%2 == 0)
        {
            for(i = 0;i < len;i = i+2)
            {
                temp = a[i];
                a[i] = a[i+1];
                a[i+1] = temp;
            }
        }
        else
        {
            a[len] = 'F';
            for(i = 0;i <= len;i = i+2)
            {
                temp = a[i];
                a[i] = a[i+1];
                a[i+1] = temp;
            }
        }
        return a;
    }

    //change chinese to PDU
    int utf_unicode(char * output,char * input,int x)
    {
        int i;
        int n;
        
        wchar_t wt[300] = L"";
        setlocale(LC_ALL,"zh_CN.UTF-8");
        n = mbstowcs(wt,input,x);
        
        for(i = 0;i < n;i++)
        {
            sprintf(output+4*i,"%04X",wt[i]);
        }
        
        return strlen(output);
    }

    //change PDU to chinese
    char * unicode_utf8(char ch[])  
    {
        int x=0;
        int n;
        int unicode_len=strlen(ch);
        wchar_t wch[70]=L"";
        char *utf=(char *)malloc(70);
        setlocale(LC_ALL,"zh_CN.UTF-8");
        for(x=0;x<unicode_len-1;x++)
        {
            sscanf(ch+4*x,"%04X",wch+x);  
        }
        *(wch+x)='';             
        n=wcstombs(utf,wch,unicode_len);   
        *(utf+x)='';

    return utf;   
    }

    char * get_gps_info(char * gga,char * rmc)
    {
        
        struct GPS
        {
            int hour;
            int minite;
            int second;
            float longitude;    //经度
            char tag_longitude;
            float latitude;     //纬度
            char tag_latitude;
            float high;
            float speed;
            int year;
            int month;
            int day;
            char flag;
        }gps={0,0,0,0,'',0,'',0,0,0,0,0,''};
        char tag[20] = {''};
        float a = 0;

        sscanf(gga,"GPGGA,%2d%2d%2d%4s,%f,%c,%f,%c,%1s,%2s,%3s,%f,%1s,%f,M,,0000*4F",&gps.hour,&gps.minite,&gps.second,tag,&gps.longitude,&gps.tag_longitude,&gps.latitude,&gps.tag_latitude,tag,tag,tag,&gps.high,tag,&gps.speed);
      //速度小于0的默认为0
        if(gps.speed < 0)
        {
            gps.speed = 0;
        }

        sscanf(rmc,"GPRMC,%f,%c,%f,%1s,%f,%1s,%f,%f,%2d%2d%2d,,,A*70",&a,&gps.flag,&a,tag,&a,tag,&a,&a,&gps.day,&gps.month,&gps.year);
     

        #if 1//时间转换
        gps.year += 2000;
        gps.hour += 8;
        if(gps.hour > 24)
        {
            gps.hour -= 24;
            gps.day++;
        }
        switch(gps.month)
        {
            case 1:;
            case 3:;
            case 5:;
            case 7:;
            case 8:;
            case 10:if(gps.day>31)  
                    {
                        gps.day-=31;
                        gps.month++;
                    }  
                    break;

            case 2:if(((gps.year%4==0)&&(gps.year%100!=0))||(gps.year%400==0))
                   {
                        if(gps.day>29)
                        {
                            gps.day-=29;
                            gps.month++;
                        }   
                   }
                   else
                   {
                        if(gps.day>28)
                        {
                            gps.day-=28;
                            gps.month++;
                        }  
                   }
                   break;
            case 4:;
            case 6:;
            case 9:;
            case 11:if(gps.day>30)  
                    {
                        gps.day-=30;
                        gps.month++;
                    }  
                    break;
          
            case 12:if(gps.day>31)  
                    {
                        gps.day-=31;
                        gps.month++;
                        gps.month-=12;
                        gps.year++;
                    }
                    break;                
        }
        #endif

      //判断数据是否有效
        if(gps.flag == 'A')
        {
           // printf("数据有效! ");
           // printf("时间:%d:%d:%d 经度:%.2f 半球:%c 纬度:%.2f 半球:%c 高度:%.2f 速度:%.2f 日期:%d年%d月%d日 ",gps.hour,gps.minite,gps.second,gps.longitude,gps.tag_longitude,gps.latitude,gps.tag_latitude,gps.high,gps.speed,gps.year,gps.month,gps.day);
            sprintf(msg_gps,"%d:%d:%d %d-%d-%d 经度:%.2f 半球:%c 纬度:%.2f 半球:%c速度:%.2f",gps.hour,gps.minite,gps.second,gps.year,gps.month,gps.day,gps.longitude,gps.tag_longitude,gps.latitude,gps.tag_latitude,gps.speed);
            return msg_gps;
        }

        if(gps.flag == 'V');
        {
           // printf("数据无效! ");
            //printf("时间:%d:%d:%d 日期:%d年%d月%d日 ",gps.hour,gps.minite,gps.second,gps.year,gps.month,gps.day);
            return NULL;
        }

    }

    源码2:

    #include<stdio.h>
    #include<stdlib.h>
    #include<fcntl.h>
    #include<signal.h>
    #include<pthread.h>
    #include<termios.h>
    #include<locale.h>
    #include<string.h>
    #include<sys/types.h>
    void   getgps(int a);//alarm函数
    char * gpsprintf(char * rmc,char *gga);//gps读取
    int    utf_unicode(char *output,char* input,int x);//汉字转换内容
    void   zhuanhuan(char*a);//奇偶位交换
    void * thread1(void * arg);
    char * zuhe(char*pp);
    void   send(char * pdu);
    pthread_mutex_t mp=PTHREAD_MUTEX_INITIALIZER;
    int gprsid,gpsid;
    int j=0;
    int main()
    {    
        pthread_mutex_init(&mp,NULL);
        signal(SIGALRM,getgps);
        //signal(SIGUSR1,getmsg);
        pthread_t thd;
        //打开gprs
        gprsid=open("/dev/ttyUSB2",O_RDWR|O_NONBLOCK);
        if(gprsid<0)
        {
            perror("open gprs error");
            return 1;
        }
        //设置属性
        struct termios tgprs;
        tcgetattr(gprsid,&tgprs);
        cfsetspeed(&tgprs,B9600);
        tgprs.c_cflag &= ~CSIZE;    
        tgprs.c_cflag |= CS8;
        tgprs.c_cflag &= ~CSTOPB;
        tgprs.c_cflag &= ~PARENB;
        tcsetattr(gprsid,TCSANOW,&tgprs);
        //打开gps
        gpsid=open("/dev/ttyUSB1",O_RDONLY);
        if(gpsid<0)
        {
            perror("open gps error");
            return 1;
        }
        //设置属性
        struct termios tgps;
        tcgetattr(gpsid,&tgps);
        cfsetspeed(&tgps,B4800);
        tgps.c_cflag &= ~CSIZE;    
        tgps.c_cflag |= CS8;
        tgps.c_cflag &= ~CSTOPB;
        tgps.c_cflag &= ~PARENB;
        tcsetattr(gpsid,TCSANOW,&tgps);
        write(gprsid,"at+cmgf=0 ",10);
        pthread_create(&thd,NULL,thread1,NULL);    //创建线程
        raise(SIGALRM);    
        //alarm(60);//300秒后触发alarm信号
        
        pthread_join(thd,NULL);//等待
        pthread_mutex_destroy(&mp);
        close(gprsid);//关闭
        close(gpsid);    
    }
    void  getgps(int a)
    {
        pthread_mutex_lock(&mp);
        char buf[300];
        int len=0,k=0;
        char *pcs,*pce,*pas,*pae;
        char *wish;
        char *pdu;
        char *rmc;
        char *gga;
        while(1)
        {
            memset(buf,'',300);
            setbuf(stdin,NULL);
            len=0;        
            
            while(len<300)
            {
                len+=read(gpsid,buf+len,300-len);
            }
        
            pcs=strstr(buf,"$GPRMC");
            if(pcs==NULL)
            {
                continue;
            }
            pce=strchr(pcs+1,'*');
            if(pce==NULL)
            {
                continue;
            }
            pas=strstr(buf,"$GPGGA");
            if(pas==NULL)
            {
                continue;
            }
            pae=strchr(pas+1,'*');
            if(pae==NULL)
            {
                continue;
            }
            rmc=(char*)malloc(pce-buf);
            gga=(char*)malloc(pae-buf);
            memset(rmc,'',pce-buf);
            memset(gga,'',pae-buf);
            
            strncpy(rmc,pcs,pce-pcs);
            strncpy(gga,pas,pae-pas);

            if(rmc[18]=='A')
            {    
                wish=gpsprintf(rmc,gga);
                if(k!=0)strcat(wish,"刚才GPS信号中断,此短信为检测到信号后第一时间发送。");
            }
            if(rmc[18]=='V')
            {
                k=1;
                continue;
            }
            
            //发送 内容是wish.
            printf("wish=%s ",wish);
            pdu=zuhe(wish);
            printf("%s ",pdu);
            //pdu出来了
            send(pdu);                    //调用send函数

            if(rmc!=NULL)
            {
                free(rmc);
                rmc=NULL;
            }
            if(gga!=NULL)
            {
                free(gga);
                gga=NULL;
            }
            if(wish!=NULL)
            {
                free(wish);
                wish=NULL;
            }
            if(pdu!=NULL)
            {
                free(pdu);
                pdu=NULL;
            }
            break;
        }
        alarm(300);    
        pthread_mutex_unlock(&mp);
    }

    char* gpsprintf(char * rmc,char *gga)
    {
        char * xx=(char*)malloc(300);
        memset(xx,'',300);
        char x,we,ns;
        float jd,wd,l;
        int sudu,gao,i;
        char laji[30];
        char day[10]="";
        char jing[20]="";
        char wei[20]="";
        char gaoo[20]="";
        char suduu[20]="";
        char *p,*q;
        
        
        sscanf(rmc+18,"%c,%f,%c,%f,%c,%f,%f,%6s",&x,&jd,&ns,&wd,&we,&l,&l,day);
        sscanf(gga+18,"%f,%1s,%f,%1s,%1s,%f,%f,%d.%f,M,%d",&l,laji,&l,laji,laji,&l,&l,&gao,&l,&sudu);

            
            if(sudu<0)sudu=0;
            sprintf(jing,"%f",jd);//float 转字符串
            sprintf(wei,"%f",wd);
            sprintf(gaoo,"%d",gao);//int 转字符串
            sprintf(suduu,"%d",sudu);
            
            jing[strlen(jing)-2]='';
            wei[strlen(wei)-2]='';
            gaoo[strlen(gaoo)]='M';
            strcat(suduu,"M/S");
            strcpy(xx,"经度:");
            strcat(xx,jing);
            xx[strlen(xx)]=ns;
            strcat(xx," 纬度:");
            strcat(xx,wei);
            xx[strlen(xx)]=we;
            strcat(xx," 高度:");
            strcat(xx,gaoo);
            strcat(xx," 速度:");
            strcat(xx,suduu);
            strcat(xx," 一切正常请放心!");
            return xx;
    }
    int utf_unicode(char *output,char* input,int x)//汉字转换函数
    {
        int i;
        int n;
        wchar_t wt[300]=L"";//定义宽字符型数组
        setlocale(LC_ALL,"zh_CN.UTF-8");//本地字符编码
        n=mbstowcs(wt,input,x);//将汉字转换成宽字符类型
        for(i=0;i<n;i++)
        sprintf(output+4*i,"%04X",wt[i]);//将宽字符型转换成十六进制
        return strlen(output);
    }

    void zhuanhuan(char*a)//奇偶位交换
    {
        
        int ret=0;
        int i=0;
        char x;    
        ret=strlen(a);
        
        if(ret%2!=0)
        {
            a[ret]='F';
        }
        ret=strlen(a);
        
        for(i=0;i<ret;i=i+2)
        {
            x=a[i];
            a[i]=a[i+1];
            a[i+1]=x;
        }

    }
    char* zuhe(char*pp)
    {
        char c[10]="";
        char cc[30]="0891683108808905F011000D9168";
        char s[15]="18191255873";
        char n[300]="";
        char *output=(char*)malloc(300);
        memset(output,'',300);
        char q[4]="";
        int ret=0,x;
        char *z=(char*)malloc(300);
        memset(z,'',300);
        zhuanhuan(s);
        strcat(s,"0008");
        strncpy(n,pp,290);
        x=strlen(n);
        ret=utf_unicode(output,n,x);
        printf("%d ",ret);
        sprintf(q,"%04X",ret/2);
        strcat(z,cc);
        strcat(z,s);
        strcat(z,q);
        strcat(z,output);
        free(output);
        return z;
        
    }
    void * thread1(void * arg)
    {
        char du[30]="";
        char dd[300]="";
        int i=0,ret=0;
        char cmid[5]="";
        char dakai[20]="";
        char * bf;
        char * cmti;
        char * cmtie;
        char haoma[20]="";
        while(1)
        {
            pthread_mutex_lock(&mp);
            pthread_mutex_unlock(&mp);
            memset(du,'',30);
            setbuf(stdin,NULL);
            read(gprsid,du,29);
            printf("du=%s ",du);
            sleep(1);
            cmti=strstr(du,"+CMTI");
            if(cmti==NULL)
            {
                continue;
            }
            cmtie=strstr(cmti+1,"SM");
            if(cmtie==NULL)
            {
                continue;
            }
            //读到+CMTI: "SM",x
            ret=strlen(du);//把后面的数字,放进at+cmgr中
            for(i=0;i<ret-14;i++)
            {
                cmid[i]=du[14+i];
            }
            strcpy(dakai,"at+cmgr=");
            strcat(dakai,cmid);
            printf("dakai=%s ",dakai);
            ret=strlen(dakai);    
            write(gprsid,dakai,ret);//打开新短信    
            sleep(1);
            read(gprsid,dd,299);
            sleep(1);
            cmti=strstr(dd,"+CMGR");
            if(cmti==NULL)
            {
                continue;
            }
            cmtie=strstr(cmti+1,"0891");
            if(cmtie==NULL)
            {
                continue;
            }
            memcpy(haoma,cmtie+26,12);
            haoma[12]='';
            zhuanhuan(haoma);
            
            haoma[11]='';
            printf("haoma=%s ",haoma);
            if(strcmp(haoma,"18191255873")==0)
            {
                raise(SIGALRM);
                sleep(3);
            }        
        }    
    }
    void send(char * pdu)
    {
        int len=0;
        write(gprsid,"at+cmgf=0 ",10);
        sleep(1);
        len=(strlen(pdu)-18)/2;
        char length[15]="at+cmgs=";
        sprintf(length+8,"%d",len);
        strcat(length," ");
        write(gprsid,length,strlen(length));
        sleep(1);
        strcat(pdu,"x1A ");
        write(gprsid,pdu,strlen(pdu));
        sleep(1);
    }

  • 相关阅读:
    性能监控(5)–JAVA下的jstat命令
    内存分析工具-MAT(Memory Analyzer Tool)
    性能监控(4)–linux下的pidstat命令
    性能监控(3)–linux下的iostat命令
    性能监控(2)–linux下的vmstat命令
    性能监控(1)--linux下的top命令
    了解java虚拟机—在TALB上分配对象(10)
    了解java虚拟机—G1回收器(9)
    js 长按鼠标左键实现溢出内容左右滚动滚动
    html标签设置contenteditable时,去除粘贴文本自带样式
  • 原文地址:https://www.cnblogs.com/riskyer/p/3324814.html
Copyright © 2011-2022 走看看