欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1135|回復: 0
打印 上一主題 下一主題
收起左側

SIM900通訊程序設計

[復制鏈接]
跳轉到指定樓層
樓主
ID:440084 發表于 2018-12-5 15:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
//sim900a發送命令后,檢測接收到的應答
//str:期待的應答結果
//返回值:0,沒有得到期待的應答結果
//    其他,期待應答結果的位置(str的位置)
u8* sim900a_check_cmd(u8 *str)
{
        char *strx=0;
        if(USART3_RX_STA&0X8000)                //接收到一次數據了
        {
                USART3_RX_BUF[USART3_RX_STA&0X7FFF]=0;//添加結束符
                strx=strstr((const char*)USART3_RX_BUF,(const char*)str);
        }
        return (u8*)strx;
}
//向sim900a發送命令
//cmd:發送的命令字符串(不需要添加回車了),當cmd<0XFF的時候,發送數字(比如發送0X1A),大于的時候發送字符串.
//ack:期待的應答結果,如果為空,則表示不需要等待應答
//waittime:等待時間(單位:10ms)
//返回值:0,發送成功(得到了期待的應答結果)
//       1,發送失敗
u8 sim900a_send_cmd(u8 *cmd,u8 *ack,u16 waittime)
{
        u8 res=0;
        USART3_RX_STA=0;
        if((u32)cmd<=0XFF)
        {
                while((USART3->SR&0X40)==0);//等待上一次數據發送完成  
                USART3->DR=(u32)cmd;
        }else u3_printf("%s\r\n",cmd);//發送命令
        if(ack&&waittime)                //需要等待應答
        {
                while(--waittime)        //等待倒計時
                {
                        delay_ms(10);
                        if(USART3_RX_STA&0X8000)//接收到期待的應答結果
                        {
                                if(sim900a_check_cmd(ack))break;//得到有效數據
                                USART3_RX_STA=0;
                        }
                }
                if(waittime==0)res=1;
        }
        return res;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表