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

📄 gprs.txt

📁 不知道程序是不是有问题
💻 TXT
📖 第 1 页 / 共 2 页
字号:
         
        for(i=0;i<size;i++){ 
                 
                        if(cmdstr[i]==0x3 || cmdstr[i]==0x10){ 
                                f=SFIFO_push(&gprs_senddate_f,(INT8U)0x10); 
                                if(f)//full 
                                systemExit(ERROR_USR+8); 
                        } 
                         
                        if(cmdstr[i]=='+')//0x2b 
                                OSTimeDlyHMSM(0, 0, 1,0); 
                f=SFIFO_push(&gprs_senddate_f,(INT8U)cmdstr[i]); 
                if(f)//full 
                        systemExit(ERROR_USR+8); 
        } 
        OS_EXIT_CRITICAL(); 
         
        //clear  
        cmd_head[GPRS_HEAD_FIX_SIZE]='\0'; 
} 
//need data escape & + process 
/* 
1 not online 
2        空间不够 
*/ 

/*封装DATA*/ 
static INT8U gprshelp(char* cmdstr,INT8U size) 
{ 

#if OS_CRITICAL_METHOD == 3                
    OS_CPU_SR    cpu_sr; 
#endif 
        INT8U i,f,ch,cl; 
        INT8U err; 
        INT32U state,s; 
         
        OSSemPend(globalEvent,0,&err); 
        state=g_gvv.gprs_state; 
        OSSemPost(globalEvent); 
         
        if(state!=GPRS_STATE_ONLINE) return 1; 
        if(gprs_date_flag==0) return 1; 
        gprsfillp(cmdstr,size); 

        OS_ENTER_CRITICAL();         
        s=SFIFO_size(&gprs_senddate_f); 

        if((GPRS_SENDDATE_SIZE-s)<(size*2+2)){//not date escape 
                                OS_EXIT_CRITICAL(); 
                                return 2; 
                        } 
                         

         
         
        //date                Q26 需要转义和+处理  XXX 见rawhelp 
        f=SFIFO_push(&gprs_senddate_f,'<'); 
        if(f)//full 
                        systemExit(ERROR_USR+8); 
        for(i=0;i<size;i++){ 
                ch=(INT8U)cmdstr[i]; 
                cl=ch & 0xf;    ///低4位 
                ch>>=4;                ///高4位 
                 
                if(cl<10) 
                                cl+='0'; 
                else{ 
                                cl-=10; 
                                cl+='A'; 
                        } 
                                 
                if(ch<10) 
                                ch+='0'; 
                else{ 
                                ch-=10; 
                                ch+='A'; 
                        } 
                 
                f=SFIFO_push(&gprs_senddate_f,ch); 
                if(f)//full 
                        systemExit(ERROR_USR+8); 
                f=SFIFO_push(&gprs_senddate_f,cl); 
                if(f)//full 
                        systemExit(ERROR_USR+8); 
        } 
        f=SFIFO_push(&gprs_senddate_f,'>'); 
        if(f)//full 
                        systemExit(ERROR_USR+8); 
        OS_EXIT_CRITICAL(); 
         
        //clear  
        cmd_head[GPRS_HEAD_FIX_SIZE]='\0'; 
         
         
        return 0; 
} 

static void gprsg(void *p)                        ///接收 
{ 
#if OS_CRITICAL_METHOD == 3                
    OS_CPU_SR    cpu_sr; 
#endif 
                INT32U s,f,full; 
                INT8U c; 
        for(;;){ 
                OSTimeDlyHMSM(0, 0, 0,1); 
                 
                selfcount[GPRSG_PRIO]=0; 
                 
                OS_ENTER_CRITICAL();         
                for(;;){ 
                         if(!(U1LSR & (0x01<<0)))  ///如果接收数据就绪 
                                  break; 
                                c=U1RBR;        ///接收器缓存寄存器 包含UART1 Rx FIFO当中最早接收到的字节                 
                                full=SFIFO_push(&gprs_rec_f,c); 
                                //if(full)//full 
                                        //systemExit(ERROR_USR+8); 
                                        //discard overflow char 
                        } 
                s=SFIFO_size(&gprs_rec_f);///接收到缓冲区的字符长度 
                OS_EXIT_CRITICAL(); 
                 

                if(s!=0 ){ 
                                f=tetunsetFlag(&reccmdflag); 
                                if(f==MSG_FLA_ALLOW){ 
                                        recmsg.cmd=GPRS_CMD_GETCHAR; 
                                        sendMsg(&recmsg,gprsEvent , NULL, MSG_BACKTYPE_FLAG,&reccmdflag); 
                                } 
                } 
        } 
} 
//XXX need 流控  
static void gprssendfifo(pSFIFO sfifo) 
{ 
         
#if OS_CRITICAL_METHOD == 3                
    OS_CPU_SR    cpu_sr; 
#endif 

        INT8U c,err; 
        OS_ENTER_CRITICAL();                 
        for(;;){ 
                if(U1LSR & (0x01<<5)) { 
                        c=SFIFO_pop(sfifo,&err); 
                        if(err==1)//empty 
                                break; 
                        U1THR = c; 
                }else 
                        break; 
        } 
        OS_EXIT_CRITICAL(); 

} 

static void gprss(void*p) 
{ 
#if OS_CRITICAL_METHOD == 3                
    OS_CPU_SR    cpu_sr; 
#endif 
        INT32U d; 

        for(;;){ 
                OSTimeDlyHMSM(0, 0, 0,10); 
                selfcount[GPRSS_PRIO]=0; 
                OS_ENTER_CRITICAL();                 
                d=SFIFO_size(&gprs_senddate_f);//0 empty 
                OS_EXIT_CRITICAL(); 
                         
                if(d) 
                                gprssendfifo(&gprs_senddate_f); 
        } 
} 

static void gprs_login(void); 

static INT8U gprs_pkg(INT8U reason) 
{ 
         
        INT32U  id; 
        INT8U err; 
        V1_GPIOSTATE gp; 
        OSSemPend(globalEvent,0,&err); 
        id=g_gvv.id; 
        OSSemPost(globalEvent);         
                                                         
                                                         
//bug 011 
                                         
        gprsbackContent[0]=0x55;//rlen-1 
        gprsbackContent[1]=id; 
        gprsbackContent[2]=id>>8; 
        gprsbackContent[3]=0x55;//head check 
                         
        gprsbackContent[4]=0x8;//cmd 
        gprsbackContent[5]=reason;//reason 
         
        if(reason==1){ 
                 
                OSSemPend(globalEvent,0,&err); 
                                gp.aval=g_gvv.gen_gpio_in_state.aval; 
                                gp.state=g_gvv.gen_gpio_in_state.state; 
                OSSemPost(globalEvent); 
                                 
                                gprsbackContent[6]=gp.aval; 
                                gprsbackContent[7]=gp.aval>>8; 
                                gprsbackContent[8]=gp.aval>>16; 
                                gprsbackContent[9]=gp.aval>>24; 
                                gprsbackContent[10]=gp.state; 
                                gprsbackContent[11]=gp.state>>8; 
                                gprsbackContent[12]=gp.state>>16; 
                                gprsbackContent[13]=gp.state>>24; 
                                 
                                gprsbackContent[14]=0x55;//date check 
                return gprshelp((char*)gprsbackContent,15);//login 
        } 
        else{ 
                gprsbackContent[6]=0x55;//date check 
                return gprshelp((char*)gprsbackContent,7);//login 
        } 
                                                 
                                                 

         
} 

INT32U getnum(INT8U * st,INT8U ** end); 

/* 
cmd process 
GPRS_STATE_INIT[n]-> ->GPRS_STATE_READY 

GPRS_STATE_TRYONLINE[n]->GPRS_STATE_ONLINE 

*/ 
void gprsGETCMDhander() 
{ 
         

                INT8U err; 
                 
        INT32U gprs_state; 
         
        OSSemPend(globalEvent,0,&err); 
        gprs_state=g_gvv.gprs_state; 
        OSSemPost(globalEvent); 
         
                 
                gprsorgContent[gprsorgCmdSize-1]='\0'; 
                DPRINTS("G "); 
                DPRINTSN((char*)gprsorgContent,gprsorgCmdSize); 
                DPRINTS("\r\n"); 
                 
                if(        gprs_state==GPRS_STATE_INIT){ 
                                if(!strstr((char*)gprsorgContent,"OK")) 
                                                return; 
                                else{ 
                                                 
                                                gprsCMDhelp("at+wipcfg=1",11);  ///开始TCP/IP协议 
                                                gprs_state=GPRS_STATE_INIT+1; 
                                } 
                }else                 if(        gprs_state==GPRS_STATE_INIT+1){ 
                                if(!strstr((char*)gprsorgContent,"OK")) 
                                                return; 
                                else{ 
                                                 
                                                gprsCMDhelp("at+wipbr=1,6",12);///设置bearer为GPRS 
                                                gprs_state=GPRS_STATE_INIT+2; 
                                                 
                                } 
                }else                 if(        gprs_state==GPRS_STATE_INIT+2){ 
                                if(!strstr((char*)gprsorgContent,"OK")) 
                                                return; 
                                else{ 
                                                gprsCMDhelp("at+wipbr=2,6,11,\"cmnet\"",23);///设置GPRS APN name为cmnet 

                                                gprs_state=GPRS_STATE_INIT+3; 
                                } 
                }else                 if(        gprs_state==GPRS_STATE_INIT+3){ 
                                if(!strstr((char*)gprsorgContent,"OK")) 
                                                return; 
                                else{ 
                                                gprsCMDhelp("at+wipbr=4,6,0",14);///start GPRS    wip login 
                                                gprs_mon++; 
                                                gprs_state=GPRS_STATE_INIT+4; 
                                                 
                                } 
                }else                 if(        gprs_state==GPRS_STATE_INIT+4){// 1 没钱的时候  2sim300c B06 3次 会报error 
                                if(!strstr((char*)gprsorgContent,"OK")){ 
                                                if(!strstr((char*)gprsorgContent,"ERROR")){ 
                                                        return;  
                                                }else{ 
                                                        //no sim card , money , or not ready 
                                                                 
                                                                 
                                                                if(gprs_mon<10){//重发命令 
                                                                                OSTimeDlyHMSM(0,0,2,0);// 避免大量的调试信息 
                                                                                gprsCMDhelp("at+wipbr=4,6,0",14);///start GPRS    wip login 
                                                                                gprs_mon++; 
               &  
   

⌨️ 快捷键说明

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