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

📄 gsm.c

📁 GPS驱动集合
💻 C
📖 第 1 页 / 共 4 页
字号:
//*************************************************************** 
// VoxsonCom.c 
// 
// By: SG Date: 2003/03/18 
//*************************************************************** 
#include "805xALL.h" // 定义51系列常用定义 

//---------------------------------------------------------------- 
// 引用的外部函数 
//---------------------------------------------------------------- 
extern void StationRun(BYTE,BYTE); 
extern BYTE SeekCharInString(BYTE,BYTE idata *); // Pxsb.c 在字符串中查找某个字符 
extern void FillTempBuf(void); // Pxsb.c TempBuf中填入0xFF 
extern BYTE CmpString(BYTE code *,BYTE idata *); // Pxsb.c 比较两个字符串是否相等 

extern BYTE DecToHexByte(BYTE); // Pxsb.c 单字节dec变换成单字节hex 
extern void Delay20ms(BYTE); // Pxsb.c 延时20*DelayCnt毫秒 
extern void RefreshDispTime(void); // RealTime.c 重新全部刷新Idle下时钟 
extern BOOL EepromWrite(BYTE Len,BYTE data *DATAAddr,WORD EepromAddr); //Eeprom.c 把内部RAM块写到EEPROM 
extern BOOL EepromRead(BYTE Len,BYTE data *DATAAddr,WORD EepromAddr); //Eeprom.c 把EEPROM块读到内部RAM 
extern WORD LoadEEpromAddr(BYTE); // EEprom.c 从EEprom地址表读取参数存放地址 
extern BOOL EepromReadX(BYTE Len,BYTE pdata *XDATAAddr,WORD EepromAddr); //EepromB.c 把EEPROM块读到外部RAM 
extern WORD LoadATCmdParaEEpAddr(BYTE ATcmdParaNo); // EEpTab.c 取AT命令的参数在EEp中的地址,占用EEp的cnRevAreaAddr1 
extern BYTE LoadATCmdParaEEpNo(void); // EEpTab.c 查找AT命令参数在EEp中的空地址的序号,1~8有效,0无效 
extern void ReleaseATCmdParaEEpNo(BYTE ATCmdParaNo); // EEpTab.c 释放AT命令参数存储区 

extern void ResetATcmdRx(void); //清除收到的缓冲 

//extern void RvCallID(BYTE idata *); // VoxsonCom.c 接收到来电号码的出来(显示,存储到EEprom中) 

//---------------------------------------------------------------- 
// 引用的全局变量 
//---------------------------------------------------------------- 
extern BYTE idata KeyBuffer[cnKeyBufferLen];// 临时数据缓冲区(如平时按键的键值保留区等) 
extern BYTE data KeyBufWritePtr; // 数据缓冲区写指针 
extern BYTE data KeyBufReadPtr; // 数据缓冲区读指针 

extern BYTE idata TempBuf[]; 
extern struct RealTimeFormat
{ 
    BYTE Year; //年 
    BYTE Month; //月 
    BYTE Day; //日 
    BYTE Hour; //小时 
    BYTE Minute; //分钟 
    BYTE Second; //秒 
    BYTE Week; //星期 
}
idata RealTime; 

BOOL bWaitOKAck; // 某些AT命令的应答分为两部分:参数和OK ==> 需要等到收到OK应答,才能弃除该AT命令 
BOOL bATcmdNeedResend; // 必须重新发送AT命令 
BOOL bATcmdAckType; // =1 模块主动输出的参数,如:RING,+CLIP:(振铃,来电号码); 

//---------------------------------------------------------------- 
// 外部可引用的函数 
//---------------------------------------------------------------- 
void VocSonReset(void); // VoxsonApp.c Voxson模块复位 
void VoxsonInit(void); // VoxsonApp.c VoxsonInit初始化程序 
void ModelInitNext(void); // VoxsonApp.c 继续模块初始化 

void SBUFTx(BYTE); // VoxsonCom.c 从串口发送单字节数据 
BYTE JudgeJinXing(BYTE); // VoxsonCom.c 转换待发送的十六进制数为ASCII字符 
void HdlATAckTask(BYTE,BYTE); // VoxsonCom.c AT命令分析散装函数 
void SendATcmd(BYTE,BYTE); // VoxsonCom.c 发送AT命令 
void AnalyseATcmdTask(void); // VoxsonCom.c AT命令分析函数 
void SendATcmdReset(void); // VoxsonCom.c AT命令发送任务的参数初始化 
void SendATcmdTask(void); // VoxsonCom.c AT命令发送任务 
void WaitATcmdAck1sTask(void); // VoxsonCom.c 等待AT命令应答任务 
void PostATcmd(BYTE,BYTE); // VoxsonCom.c 建立AT命令发送任务 

void DelCurAtcmd(void); // WaveCom.c 删除当前AT-Cmd 

extern struct PhoneStateFormat
{ 
    BYTE bCallOut:1; // =1 去电; =0 来电 
    BYTE bIsTalking:1; // =1 为通话状态; =0 为非通话状态 
    BYTE bHookState:1; // 手柄摘挂机标志 --> =1 手柄摘机; =0 手柄挂机 
    BYTE bHandFree:1; // 免提摘挂机标志 --> =1 免提摘机; =0 免提挂机 
    BYTE bPhoneState:1; // 话机摘挂机状态(包括免提和手柄) --> =1 摘机; =0 挂机 
    BYTE bIsDialing:1; // =1 正在拨号; 
}
PhoneFlag; 

extern BOOL bComTxD1On; //=1 串口正在发送数据 
//--------------------------------------------------------------- 
// 定义变量 
//--------------------------------------------------------------- 
/* 
typedef struct 
{ 
    BYTE ATcmdNo; 
    BYTE ATcmdParaPtr; 
}
ATcmdArrayDef; 
*/ 
ATcmdArrayDef data ATcmdTxArray[cnATcmdTxArrayLen]; // AT命令发送队列 

BYTE data ATcmdTxPara; // 发送AT命令参数 --> 高4 bit该命令发送的次数;低4 bit发送后没有得到应答的时间 

BYTE idata ATcmdRxBuf0[cnATcmdRxBufLen]; // AT命令接收缓存0 
BYTE idata ATcmdRxBuf1[cnATcmdRxBufLen]; // AT命令接收缓存1 
BYTE pdata SMSBuf[cnSMSRecordLen]; // 短信接收缓存 
//--------------------------------------------------------------- 
BYTE code CMGI[] = 
{
    "AT+CGMI\r"
}
; // 读取厂家ID 
BYTE code ATA[] = 
{
    "ATA\r"
}
; // 接听电话 
BYTE code ATH[] = 
{
    "ATH\r"
}
; // 挂断电话 
BYTE code ATD[] = 
{
    "ATD"
}
; // 拨号命令 
BYTE code VTS[] = 
{
    "AT+VTS="
}
; // 发DTMF命令 
BYTE code IPR[] = 
{
    "AT+IPR=9600\r"
}
; // 设置波特率 
BYTE code CSQ[] = 
{
    "AT+CSQ\r"
}
; // 查询信号强度 
BYTE code CLIP[] = 
{
    "AT+CLIP=1\r"
}
; // 允许来电输出 
BYTE code CCLK[] = 
{
    "AT+CCLK?\r"
}
; // 读取模块的时间 
BYTE code SendCCLK[] = 
{
    "AT+CCLK=\"\n\"\r"
}
; // 调整模块的时间 
BYTE code ATM[] = 
{
    "AT+SPEAKER=1\r"
}
; // 挂机时打开SPEAKER通道 
BYTE code AUDIO[] = 
{
    "AT+VGT=0\r"
}
; // 选择主音频通道 
BYTE code CCID[] = 
{
    "AT+CCID\r"
}
; // 读取SIM卡ID号 
BYTE code TestAT[] = 
{
    "AT&amt;T0\r"
}
; // 测试模块软件 

BYTE code SPSPKR0[] = 
{
    "AT+SPEAKER=1;+VGR=0;+VGT=0;+SIDET=0,0\r"
}
; // 手柄音量4 
BYTE code SPSPKR1[] = 
{
    "AT+SPEAKER=1;+VGR=40;+VGT=0;+SIDET=0,0\r"
}
; // 手柄音量3 
BYTE code SPSPKR2[] = 
{
    "AT+SPEAKER=1;+VGR=70;+VGT=0;+SIDET=0,0\r"
}
; // 手柄音量2 
BYTE code SPSPKR3[] = 
{
    "AT+SPEAKER=1;+VGR=90;+VGT=0;+SIDET=0,0\r"
}
; // 手柄音量1 
BYTE code HFSPKR0[] = 
{
    "AT+SPEAKER=1;+VGR=30;+VGT=0;+SIDET=0,0\r"
}
; // 免提音量4 
BYTE code HFSPKR1[] = 
{
    "AT+SPEAKER=1;+VGR=90;+VGT=0;+SIDET=0,0\r"
}
; // 免提音量3 
BYTE code HFSPKR2[] = 
{
    "AT+SPEAKER=1;+VGR=120;+VGT=0;+SIDET=0,0\r"
}
; // 免提音量2 
BYTE code HFSPKR3[] = 
{
    "AT+SPEAKER=1;+VGR=150;+VGT=0;+SIDET=0,0\r"
}
; // 免提音量1 
BYTE code MIC[] = 
{
    "AT+VGT=0\r"
}
; // MIC参数 
BYTE code SID[] = 
{
    "AT+SID=0,0\r"
}
; // 侧音参数 
BYTE code ECHO[] = 
{
    "AT+ECHO=1,3,30,8000,256\r"
}
; // 回响参数 
BYTE code CMGF[] = 
{
    "AT+CMGF=0\r"
}
; // 选择PDU格式 
BYTE code CSMS[] = 
{
    "AT+CSMS=1\r"
}
; // 符合Phase II标准 
BYTE code CNMI[] = 
{
    "AT+CNMI=1,1;+CMGF=0\r"
}
; // 新短消息输出位置信息 
BYTE code CREG[] = 
{
    "AT+CREG=1\r"
}
; // 输出网络注册信息 
BYTE code CMGR[] = 
{
    "AT+CMGR=\n\r"
}
; // 读取短消息 
BYTE code CMGD[] = 
{
    "AT+CMGD=\n\r"
}
; // 删除短消息 
BYTE code CMGS[] = 
{
    "AT+CMGS=\n\r"
}
; // 发送短消息 
BYTE code CSCA[] = 
{
    "AT+CSCA?\r"
}
; // 读取短信中心号码 
BYTE code CMGL[] = 
{
    "AT+CMGL=4\r"
}
; // 罗列所有短消息 
BYTE code ATE[] = 
{
    "ATE1\r"
}
; // 禁止AT命令数据回送 

BYTE code NeedPIN[] = 
{
    "AT+CPIN?\r"
}
; // 查询SIM卡PIN码状态 
BYTE code PINClck[] = 
{
    "AT+CLCK=\"SC\",1,1234\r"
}
; // 设置SIM卡锁PIN码 
BYTE code InputPIN[] = 
{
    "AT+CPIN=\n\r"
}
; // 输入SIM卡PIN码 
BYTE code ChangePIN[] = 
{
    "AT+CPWD=\"SC\",1234,\n\r"
}
; // 更改SIM卡PIN码 
BYTE code PINUnClck[] = 
{
    "AT+CLCK=\"SC\",0,1234\r"
}
; // SIM卡PIN码解锁 
BYTE code CHGBackPIN[] = 
{
    "AT+CPWD=\"SC\",\n,1234\r"
}
; // 该SIM卡PIN码为默认的‘1234’ 

BYTE code SaveCfg[] = 
{
    "AT&amt;W\r"
}
; // 存储用户设置参数 
BYTE code PowerOff[] = 
{
    "AT+CPOF\r"
}
; // 关机 
BYTE code CheckBatt[] = 
{
    "AT+WBCM=2\r"
}
; // 检查电池电压 

BYTE code SetCallWaitting[] = 
{
    "AT+CCWA=1,1,1\r"
}
; // 呼叫等待设置 
BYTE code CancelCallWaittng[] = 
{
    "AT+CCWA=1,0,7\r"
}
; // 取消呼叫等待设置 
BYTE code Answer2ndCall[] = 
{
    "AT+CHLD=1\r"
}
; // 接听呼叫等待的第二个电话 
BYTE code Cancel2ndCall[] = 
{
    "AT+CHLD=0\r"
}
; // 挂断呼叫等待的第二个电话 
BYTE code SetCallForward0[] = 
{
    "AT+CCFC=0,3,\"\n\"\r"
}
; // 呼叫转移设置 
BYTE code SetCallForward1[] = 
{
    "AT+CCFC=1,3,\"\n\"\r"
}
; // 呼叫转移设置 
BYTE code SetCallForward2[] = 
{
    "AT+CCFC=2,3,\"\n\"\r"
}
; // 呼叫转移设置 
BYTE code SetCallForward3[] = 
{
    "AT+CCFC=3,3,\"\n\"\r"
}
; // 呼叫转移设置 
BYTE code CancelCallForward[] = 
{
    "AT+CCFC=4,4\r"
}
; // 取消呼叫转移设置 

BYTE code CCEDMain[] = 
{
    "AT+CCED=0,1\r"
}
; // 查询主基站号 
BYTE code CCEDSub[] = 
{
    "AT+CCED=0,2\r"
}
; // 查询从属基站号 


WORD code ATCmd_TX_Tab[] = 
{ 
    &amt;CMGI, 
    &amt;ATA, 
    &amt;ATH, 
    &amt;ATD, 
    &amt;VTS, 
    &amt;IPR, 
    &amt;CSQ, 
    &amt;CLIP, 
    &amt;CCLK, 
    &amt;ATM, 
    &amt;AUDIO, 
    &amt;CCID, 
    &amt;TestAT, 
    &amt;SPSPKR0, 
    &amt;SPSPKR1, 
    &amt;SPSPKR2, 
    &amt;SPSPKR3, 
    &amt;HFSPKR0, 
    &amt;HFSPKR1, 
    &amt;HFSPKR2, 
    &amt;HFSPKR3, 
    &amt;MIC, 
    &amt;SID, 
    &amt;ECHO, 
    &amt;CMGF, 
    &amt;CSMS, 
    &amt;CNMI, 
    &amt;CREG, 
    &amt;CMGR, 
    &amt;CMGD, 
    &amt;CMGS, 
    &amt;CSCA, 
    &amt;CMGL, 
    &amt;ATE, 
    &amt;NeedPIN, 
    &amt;PINClck, 
    &amt;InputPIN, 
    &amt;ChangePIN, 
    &amt;PINUnClck, 
    &amt;CHGBackPIN, 
    &amt;SaveCfg, 
    &amt;PowerOff, 
    &amt;CheckBatt, 
    &amt;SetCallWaitting, 
    &amt;CancelCallWaittng, 
    &amt;Answer2ndCall, 
    &amt;Cancel2ndCall, 
    &amt;SetCallForward0, 
    &amt;SetCallForward1, 
    &amt;SetCallForward2, 
    &amt;SetCallForward3, 
    &amt;CancelCallForward, 
    &amt;SendCCLK, 
    &amt;CCEDMain, 

⌨️ 快捷键说明

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