资源简介
SIM7600单片机C测试代码,含基站定位,2G3G4G全网通,项目成功应用
代码片段和文件信息
/*代码说明:用SIM900A或SIM2000C的GPRS服务*/
/*SIM900A;SIM2000C代码调用相同,程序会自动区分模块*/
#include “sim900a.h“
#include
#include
#include
#include “delay.h“
#include “hal.h“
#include
volatile unsigned long Sim900a_TimerOut;//全局变量,SIM900A超时变量,ms单位
volatile unsigned char TcpMuxConnectState[5];
volatile unsigned char Sim900aState=0;//标记初始化状态,Bit0~Bit7,LBS启动
volatile unsigned char Sim900a_Rcv_Buf[SIM900_MAX_LEN];//SIM900A数据接收缓存
volatile unsigned int Sim900aRdPt=0Sim900aWrpt=0;//串口数据读写指针
volatile unsigned char cops_mode=0xff;//运营商名称,默认非CDMA2000
unsigned char g_ucSMSCNumber[14];
void (*PutsData2Sim900A)(unsigned char cmd[]);//函数指针,指向底层字符串发送函数。在系统初始化时需要指向底层硬件发送函数。
void (*PutcData2Sim900A)(unsigned char cmd);//指向底层单字符发送函数
unsigned char TempParseBuf[SIM900_MAX_LEN];
//发送命令到SIM900A
//参数:cmd--要发送的命令flag--期望得到的回复timerout--超时时长ms单位
unsigned char SendCmd2SIM900A(unsigned char cmd[]unsigned char flag[]unsigned int timerout)
{
//unsigned char buf[SIM900_MAX_LEN];
unsigned char len=0;
char* pointer;
Sim900aRdPt=Sim900aWrpt=0;//命令发送之前清除读写指针
Sim900a_TimerOut=timerout;
if(PutsData2Sim900A!=0x00)
PutsData2Sim900A(cmd);
else return FALSE;
memset(TempParseBuf0SIM900_MAX_LEN);
if(flag==0)return 1;
while(Sim900a_TimerOut)
{
if(Sim900aWrpt!=Sim900aRdPt)//如果有新数据
{
TempParseBuf[len++]=Sim900a_Rcv_Buf[Sim900aRdPt++];
if(Sim900aRdPt>=SIM900_MAX_LEN)Sim900aRdPt=0;
}
if(len>2)//前后各有一个回车换行,所以至少要有4个数据
{
pointer=strstr(TempParseBuf“ERROR“);//先找ERROR
if(pointer!=NULL)//返回字符串包含了ERROR,此时也需要退出
{
return 0;
}
else
{
pointer=strstr(TempParseBufflag);//查找匹配字符串
if(pointer!=NULL)//找到了匹配的返回字符串
{
return 1;
}
}
}
}
return 0;
}
unsigned char GetSMSCNumber(unsigned char Number[])
{
unsigned int len=0;
char* pointer;
unsigned int i=0;
memset(TempParseBuf0SIM900_MAX_LEN);
Sim900aRdPt=Sim900aWrpt=0;//命令发送之前清除读写指针
if(PutsData2Sim900A!=0x00)
PutsData2Sim900A(“AT+CSCA?\r\n“);
else return FALSE;
len=0;
Sim900a_TimerOut=1000;
while(Sim900a_TimerOut>0)//超时时间未到
{
if(Sim900aWrpt!=Sim900aRdPt)//如果有新数据
{
TempParseBuf[len++]=Sim900a_Rcv_Buf[Sim900aRdPt++];
if(Sim900aRdPt>=SIM900_MAX_LEN)Sim900aRdPt=0;
}
if(len>=2)//前后各有一个回车换行,所以至少要有4个数据
{
if(TempParseBuf[len-2]==‘O‘&&TempParseBuf[len-1]==‘K‘)
{
pointer=strstr(TempParseBuf“+CSCA“);
if(pointer!=NULL)//找到了匹配的返回字符串
{
for(i=0;i<13;i++)Number[i]=*(pointer+9+i);
Number[13]=‘\0‘;
return 1;
}
else
{return 0;}//未找到匹配的字符串
}
}
}
return 0;
}
//获取SIM卡类型
//0~11
//0xff获取失败
unsigned char GetIMSI()
{
unsigned int len=0;
unsigned char str[20];
uns
- 上一篇:数据库系统概述第四版课后习题答案
- 下一篇:呼叫中心tw等文件播放器
相关资源
- SIM7100_SIM7500_SIM7600 Series_LBS_Application
- SIM7600 应用例程
- SIM7600CE-4G模块资料.rar
- SIM7600CE 硬件设计手册
- SIM7600CE_硬件设计手册_V1.04
- SIM7600硬件设计中文
- 全国基站lbs定位库 基站定位 lbs定位数
- sim7600原理图pcb.zip
- LBS论文 基于安卓的LBS系统开发
- 安卓平台下关于地理位置信息获得并
- 基于位置的社交网络数据foursquare
- LBS核心技术揭秘(高清带书签)
- AR室内导航Demo
- SIM7600C-4G开发板用户手册和源码
- 地理社交数据集
- SIM7600ce参考资料
- SIM7600CE资料
- STM32通过GPRS(SIM7600CE模块)进行IAP远
- SIM7600CE-PCIE_硬件设计手册_V1.00
- EC20模块封装SIM7600CE模块原理图和封装
- SIMcom7600开发使用流程
- SIM7600 Open Linux 开发指南
- Lbs定位功能的实现
评论
共有 条评论