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

📄 gsm.c

📁 GPS驱动集合
💻 C
📖 第 1 页 / 共 4 页
字号:
                    StationRun(MsgPINState,cnChangePINError); 
                    break; 
                } 
                //============================================ 
                case cnATcmd_PINUnClck: // 设置SIM卡PIN码解锁'ERROR'应答 
                { 
                    StationRun(MsgPINState,cnUnClckPINError); 
                    break; 
                } 
                //============================================ 
                case cnATcmd_CHGBackPIN: // 更改SIM卡PIN码为默认值'ERROR'应答 
                { 
                    StationRun(MsgPINState,cnCHGBackPINError); 
                    break; 
                } 
                //============================================ 
                case cnATcmd_CCID: // 查询SIM卡ID号'ERROR',重发了7次 
                { 
                    if ((ATcmdTxPara &amt; 0xf0) > 0xa0) 
                    StationRun(MsgNoSIMCard,false); //重发了7次,认为无SIMCard 
                    else 
                    bATcmdNeedResend = true;; // 普通指令出现ERROR,重发该命令 
                    break; 
                } 
                //============================================ 
                default: 
                { 
                    if ((ATcmdTxPara &amt; 0xf0) > 0x40) 
                    StationRun(MsgModelError,false); //重发了3次,认为系统出错,需要复位WAVCOM 
                    else 
                    bATcmdNeedResend = true;; // 普通指令出现ERROR,重发该命令 
                } 
            } 
            break; 
        } 
        /* 
        { 
            case cnATcmd_CMGI: // 查询厂家代码'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_ATA: // 接听电话'ERROR'应答 
            { 
                StationRun(MsgATACall,false); // 接听电话失败,发失败消息 
                break; 
            } 
            //============================================ 
            case cnATcmd_ATH: // 挂断电话'ERROR'应答 
            { 
                StationRun(MsgATHCall,false); // 挂断电话失败,发失败消息 
                break; 
            } 
            //============================================ 
            case cnATcmd_ATD: // 拨号'ERROR'应答 
            { 
                StationRun(MsgDialACall,false); 
                break; 
            } 
            //============================================ 
            case cnATcmd_VTS: // 发DTMF 'ERROR'应答 
            { 
                StationRun(MsgDTMF,false); 
                break; 
            } 
            //============================================ 
            case cnATcmd_IPR: // 设置波特率'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_CSQ: // 查询信号强度'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_CLIP: // 设置允许输出来电号码'ERROR'应答 
            { 
                StationRun(MsgModelOk,false); 
                break; 
            } 
            //============================================ 
            case cnATcmd_CCLK: // 设置实时时钟'ERROR'应答 
            { 
                StationRun(MsgModelOk,false); 
                break; 
            } 
            //============================================ 
            case cnATcmd_ATM: 
            case cnATcmd_AUDIO: 
            { 
                StationRun(MsgModelOk,false); 
                break; 
            } 
            //============================================ 
            case cnATcmd_CCID: // 查询SIM卡ID号'ERROR'应答 
            { 
                //bATcmdNeedResend = true; 
                StationRun(MsgRvSIMID,false); 
                break; 
            } 
            //============================================ 
            case cnATcmd_TestAT: // 测试模块'ERROR'应答 
            { 
                StationRun(MsgModelOk,false); 
                break; 
            } 
            //============================================ 
            case cnATcmd_SPSPKR0: 
            case cnATcmd_SPSPKR1: 
            case cnATcmd_SPSPKR2: 
            case cnATcmd_SPSPKR3: 
            case cnATcmd_HFSPKR0: 
            case cnATcmd_HFSPKR1: 
            case cnATcmd_HFSPKR2: 
            case cnATcmd_HFSPKR3: // 设置音量等级'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_MIC: // 设置MIC参数'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_SID: // 设置侧音参数'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_ECHO: // 设置回响参数'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_CMGF: // 选择PDU格式'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_CSMS: // 设置符合Phase II标准'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_CNMI: // 设置短消息输出位置信息'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_CREG: // 查询注册信息'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_CMGR: // 读取短消息'ERROR'应答 
            { 
                //StationRun(MsgReadSMS,false); 
                break; 
            } 
            //============================================ 
            case cnATcmd_CMGD: // 删除短消息'ERROR'应答 
            { 
                StationRun(MsgDelSMS,false); 
                break; 
            } 
            //============================================ 
            case cnATcmd_CMGS: // 发送短消息'ERROR'应答 
            { 
                StationRun(MsgSendSMS,false); 
                break; 
            } 
            //============================================ 
            case cnATcmd_CSCA: // 设置短信中心号码'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_CMGL: // 罗列所以短消息'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_ATE: // 设置AT命令不回送'ERROR'应答 
            { 
                StationRun(MsgModelOk,false); 
                break; 
            } 
            //============================================ 
            case cnATcmd_NeedPIN: // 查询SIM卡PIN码状态'ERROR'应答 
            { 
                StationRun(MsgPINState,cnReadPINStateError); 
                break; 
            } 
            //============================================ 
            case cnATcmd_PINClck: // 设置SIM卡锁PIN码'ERROR'应答 
            { 
                StationRun(MsgPINState,cnClckPINError); 
                break; 
            } 
            //============================================ 
            case cnATcmd_InputPIN: // SIM卡输入PIN码'ERROR'应答 
            { 
                StationRun(MsgPINState,cnInputPINError); 
                break; 
            } 
            //============================================ 
            case cnATcmd_ChangePIN: // SIM卡更改PIN码'ERROR'应答 
            { 
                StationRun(MsgPINState,cnChangePINError); 
                break; 
            } 
            //============================================ 
            case cnATcmd_PINUnClck: // 设置SIM卡PIN码解锁'ERROR'应答 
            { 
                StationRun(MsgPINState,cnUnClckPINError); 
                break; 
            } 
            //============================================ 
            case cnATcmd_CHGBackPIN: // 更改SIM卡PIN码为默认值'ERROR'应答 
            { 
                StationRun(MsgPINState,cnCHGBackPINError); 
                break; 
            } 
            //============================================ 
            case cnATcmd_SaveCfg: // 用户设置参数存储'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_PowerOff: // 用户关机'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_CheckBatt: // 检查电池电压'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_SetCallWaitting: // 设置呼叫等待'ERROR'应答 
            { 
                StationRun(MsgSetCallWait,false); 
                break; 
            } 
            //============================================ 
            case cnATcmd_CancelCallWaittng: // 取消呼叫等待设置'ERROR'应答 
            { 
                StationRun(MsgCancelCallWait,false); 
                break; 
            } 
            //============================================ 
            case cnATcmd_Answer2ndCall: // 接听呼叫等待的第2个电话'ERROR'应答 
            { 
                StationRun(MsgAnswer2ndCall,false); 
                break; 
            } 
            //============================================ 
            case cnATcmd_Cancel2ndCall: // 挂断呼叫等待的第2个电话'ERROR'应答 
            { 
                StationRun(MsgCancel2ndCall,false); 
                break; 
            } 
            //============================================ 
            case cnATcmd_SetCallForward0: // 设置呼叫转移'ERROR'应答 
            case cnATcmd_SetCallForward1: // 设置呼叫转移'OK'应答 
            case cnATcmd_SetCallForward2: // 设置呼叫转移'OK'应答 
            case cnATcmd_SetCallForward3: // 设置呼叫转移'OK'应答 
            { 
                StationRun(MsgSetCallForward,false); 
                break; 
            } 
            //============================================ 
            case cnATcmd_CancelCallForward: // 取消呼叫转移设置'ERROR'应答 
            { 
                StationRun(MsgCancelCallForward,false); 
                break; 
            } 
            //============================================ 
            case cnATcmd_SendCCLK: // 设置模块时钟'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_CCEDMain: // 查询主基站好'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            case cnATcmd_CCEDSub: // 查询从属基站好'ERROR'应答 
            { 
                break; 
            } 
            //============================================ 
            default: break; 
        } 
        break; 
    } 
    */ 
    //<><><><><><><><><><><><><><><><><><><><><><><><><><><><> 
    //信号强度分析 +CSQ: x,99或许+CSQ: xy,99 (x,y为ASCII字符的数字数值(31,32...)) 
    case cnRxATcmd_ATAck_CSQ: // +CSQ: 31,99 
    { 
        ATcmdAckIdataPtr = SeekCharInString(' ',ATcmdAckIdataPtr); // 找+CSQ:后空格 
        ATcmdAckData = *(++ATcmdAckIdataPtr) &amt; 0x0F; //取31的低4位,表示信号强度 
        if(*(++ATcmdAckIdataPtr) != ',') //如果下一个字符,非逗号,表示当前信号强度为2个字节数据 
        { 
            ATcmdAckData = (ATcmdAckData << 4) | (*ATcmdAckIdataPtr &amt; 0x0F); //合并2个字节数据(每个字节取低4位) 
        } 
        
        StationRun(MsgRvCSQ,ATcmdAckData); //往上层发信号强度消息 
        
        bWaitOKAck = true; 
        break; 
    } 
    
    //<><><><><><><><><><><><><><><><><><><><><><><><><><><><> 
    //读取SIM卡ID号 
    case cnRxATcmd_ATAck_SCKS: // +CCID: "89860062135002061687" 
    { 
        ATcmdAckIdataPtr = SeekCharInString('"',ATcmdAckIdataPtr); // 找+CCID:后的双引号 
        
        i = 0x00; 
        FillTempBuf(); 
        F0 = true; 
        while(*(++ATcmdAckIdataPtr) != '"') 
        { 
            ATcmdAckData = *ATcmdAckIdataPtr &amt; 0x0F; 
            F0 = !F0; 
            if(F0) 
            { 
                ATcmdAckData |= 0xF0; 
                TempBuf[i] &amt;= ATcmdAckData; 
                ++i; 
            } 
            else 
            { 
                ATcmdAckData <<= 4; 
                ATcmdAckData |= 0x0F; 
                TempBuf[i] &amt;= ATcmdAckData; 
            } 
        } 
        
        ATcmdAckData = &amt;TempBuf[0]; 
        StationRun(MsgRvSIMID,ATcmdAckData); 
        bWaitOKAck = true; 
        break; 
    } 
    
    //<><><><><><><><><><><><><><><><><><><><><><><><><><><><> 
    //查询SIM卡PIN状态 
    case cnRxATcmd_ATAck_CPIN: 
    { 
        ATcmdAckCodePtr = &amt;PIN_READY; 
        ATcmdAckIdataPtrTemp = ATcmdAckIdataPtr; 
        if(CmpString(ATcmdAckCodePtr,ATcmdAckIdataPtr)) 
        { 
            StationRun(MsgPINState,cnPINReady); // 不需要输入PIN码 
        } 
        else 
        { 
            ATcmdAckCodePtr = &amt;PIN_SIMPIN; 
            ATcmdAckIdataPtr = ATcmdAckIdataPtrTemp; 
            if(CmpString(ATcmdAckCodePtr,ATcmdAckIdataPtr)) 
            { 
                StationRun(MsgPINState,cnPINNeed); // 需要输入PIN码 
            } 
            else 
            { 
                StationRun(MsgPINState,cnPINError); // PIN码错误(需要输入PUK码) 
            } 
        } 
        break; 
    } 
    
    //<><><><><><><><><><><><><><><><><><><><><><><><><><><><> 
    case cnRxATcmd_ATAck_CCWA: // 呼叫等待设置 
    {
        // +CCWA: "05925186318",129,1 
        goto RvNewCID; 
        break; 
    } 
    
    //<><><><><><><><><><><><><><><><><><><><><><><><><><><><> 
    case cnRxATcmd_ATAck_CREG: // 注册信息查询 
    {
        // +CREG: 0,1 
        ATcmdAckIdataPtr = SeekCharInString(',',ATcmdAckIdataPtr); // 找串中的',' 
        ATcmdAckData = *(++ATcmdAckIdataPtr); // 网络注册标志数据 
        StationRun(MsgModelReg,ATcmdAckData); 
        
        bWaitOKAck = true; // 需要等待'OK' 
        break; 
    } 
    //<><><><><><><><><><><><><><><><><><><><><><><><><><><><> 
    case cnRxATcmd_ATAck_CMTI: // 新短消息位置信息输出 
    {
        // +CMTI: "SM",2 +CMTI: "SM",12 
        ATcmdAckIdataPtr = SeekCharInString(',',ATcmdAckIdataPtr); // 找串中的',' 
        ATcmdAckData = *(++ATcmdAckIdataPtr) &amt; 0x0F; 
        if(*(++ATcmdAckIdataPtr) != '\r') 
        { 
            ATcmdAckData = (ATcmdAckData << 4) | (*ATcmdAckIdataPtr &amt; 0x0F); 
        } 
        ATcmdAckData = DecToHexByte(ATcmdAckData); 
        StationRun(MsgRvSMSPos,ATcmdAckData); // 短消息的位置信息数据 
        
        bATcmdAckType = true; // 模块主动输出的参数 
        break; 
    } 
    //<><><><><><><><><><><><><><><><><><><><><><><><><><><><> 
    case cnRxATcmd_ATAck_CMGR: // 读取短消息 
    { 
        break; 
    } 
    //<><><><><><><><><><><><><><><><><><><><><><><><><><><><> 
    case cnRxATcmd_ATAck_CMGS: // 发送短消息 
    { 
        bWaitOKAck = true; // 需要等待'OK' 
        break; 
    } 
    //<><><><><><><><><><><><><><><><><><><><><><><><><><><><> 
    case cnRxATcmd_ATAck_CMGL: // 罗列短消息 
    { 
        break; 
    } 
    //<><><><><><><><><><><><><><><><><><><><><><><><><><><><> 
    case cnRxATcmd_ATAck_WBCI: // 检查电池电压 
    {
        // +WBCI: 3,4149 
        ATcmdAckIdataPtr = SeekCharInString(',',ATcmdAckIdataPtr); // 找串中的',' 
        ATcmdAckData = ((*(++ATcmdAckIdataPtr) &amt; 0x0F) << 4) | (*(++ATcmdAckIdataPtr) &amt; 0x0F); // 取电压数值 
        StationRun(MsgCheckBatt,ATcmdAckData); 
        
        bWaitOKAck = true; // 需要等待'OK' 
        break; 
    } 
    //<><><><><><><><><><><><><><><><><><><><><><><><><><><><> 
    default: break; 
} 
}

⌨️ 快捷键说明

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