📄 process.c
字号:
#include "Process.h"
#include "flash.h"
#include "const.h"
int nATlen = 0;
int nBuf1 = 0;
int nBuf2 = 0;
int nBuf3 = 0;
void Init_Process(void)
{
//////////////////////////////////////////
// 为了提高算法的搜索效率,这里采利用 AT
// 命令的长度和3个关键字符来识别AT命令
int *pAtLen;
int *pAtBuf1;
int *pAtBuf2;
int *pAtBuf3;
pAtLen = (int*)AT_LEN;
FLASH_clr(pAtLen);
pAtBuf2 = (int*)AT_BUFA2;
FLASH_clr(pAtBuf2);
pAtLen = (int*)AT_LEN;
pAtBuf1 = (int*)AT_BUFA1;
pAtBuf2 = (int*)AT_BUFA2;
pAtBuf3 = (int*)AT_BUFA3;
// 0 AT命令的长度,检查通信链路正常命令
FLASH_ww(pAtLen,3);
FLASH_ww(pAtBuf1,'A');
FLASH_ww(pAtBuf2,'T');
FLASH_ww(pAtBuf3,13);
// 1 读出设置的号码AT+PHONENUM=?(enter)
pAtLen += 1;
pAtBuf1 += 1;
pAtBuf2 += 1;
pAtBuf3 += 1;
FLASH_ww(pAtLen,14);
FLASH_ww(pAtBuf1,'P');
FLASH_ww(pAtBuf2,'H');
FLASH_ww(pAtBuf3,'O');
// 2 AT+PHONENUM=Xxxxxxxxx(Enter)
pAtLen += 1;
pAtBuf1 += 1;
pAtBuf2 += 1;
pAtBuf3 += 1;
FLASH_ww(pAtLen,22);
FLASH_ww(pAtBuf1,'P');
FLASH_ww(pAtBuf2,'H');
FLASH_ww(pAtBuf3,'O');
return;
}
int ProcessUART0(char *pBuf,int nLen)
{
int nTemp = -1;
int i;
// 处理拨号后的响应
for(i = 0;i < nLen;i++)
{
if(pBuf[i] == 0x37 && pBuf[i + 1] == 0x39)
{
nTemp = 1;
break;
}
}
// 处理初始化后的响应和发送+++以及ATH0的响应
if(pBuf[0] == 0x30 && pBuf[1] == 13)
nTemp = 4;
// 处理拨号后的响应
if(pBuf[0] == 0x31 && pBuf[1] == 0x32 && pBuf[2] == 13)
nTemp = 1;
// 处理是否已经在拨
if(pBuf[0] == 0x33 && pBuf[1] == 13)
nTemp = 3;
// 处理拨号后的响应
if(pBuf[0] == 0x33 && pBuf[1] == 0x30 && pBuf[2] == 13)
nTemp = 1;
// 处理拨号后的响应
if(pBuf[0] == 0x35 && pBuf[1] == 0x30 && pBuf[2] == 0x20
&& pBuf[3] == 0x20 && pBuf[4] == 0x37 && pBuf[5] == 0x39
&& pBuf[6] == 13)
nTemp = 1;
if(pBuf[0] == 0x35 && pBuf[1] == 0x31 && pBuf[2] == 0x20
&& pBuf[3] == 0x20 && pBuf[4] == 0x37 && pBuf[5] == 0x39
&& pBuf[6] == 13)
nTemp = 1;
if(pBuf[0] == 0x32 && pBuf[1] == 0x30 && pBuf[2] == 0x20
&& pBuf[3] == 0x20 && pBuf[4] == 0x37 && pBuf[5] == 0x39
&& pBuf[6] == 13)
nTemp = 1;
// 没有接电话线的情况
if(pBuf[0] == 0x36 && pBuf[1] == 13)
nTemp = 5;
// 对方挂断的情况
if(pBuf[0] == 0x37 && pBuf[1] == 13)
nTemp = 6;
// 2表示发送+++,3表示收到+++响应
if(pBuf[0] == 13)
nTemp = 7;
return nTemp;
}
/////////////////////////////////////
// 正确返回各个命令对应的值,
// 错误返回 -1
int ProcessUART1(char *pBuf,int nLen)
{
int *pAtLen;
int *pAtBuf1;
int *pAtBuf2;
int *pAtBuf3;
int nTemp = -1;
int i;
if(nLen <= 2) return -1;
if(nLen == 3)
{
if((pBuf[0] == 'A') && (pBuf[1] == 'T') && (pBuf[2] == 13))
return 0;
}
pAtLen = (int*)AT_LEN;
pAtBuf1 = (int*)AT_BUFA1;
pAtBuf2 = (int*)AT_BUFA2;
pAtBuf3 = (int*)AT_BUFA3;
for(i = 0;i < 3;i++)
{
nATlen = *(pAtLen + i);
if(nLen == nATlen)
{
nBuf1 = *(pAtBuf1 + i);
nBuf2 = *(pAtBuf2 + i);
nBuf3 = *(pAtBuf3 + i);
if((pBuf[3] == nBuf1) && (pBuf[4] == nBuf2) && (pBuf[5] == nBuf3))
{
nTemp = i;
}
}
}
return nTemp;
}
// 将结果由参数返回
char ReadPhoneNum(char strPhone[8])
{
int *pFlash;
int nTemp;
int i;
char chrRes;
pFlash = (int*)PHONE_ADDR;
// 第一个数用来确定号码的位数
chrRes = (char)(*pFlash - 0x30);
// 缁昂怕
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -