杂事太多啊。不能坚持每天玩这个,今晚就先整理下TC35驱动的思路吧,简单测试了一下,都通过了。最痛苦的是我用按键控制发送的相应命令,可是在添加按键这个文件时候遇到了问题,本来是自己写好的驱动,可是搬过来却不能用,折腾了好久。后来发现我对.h文件的包含调用还是不太清楚(加入UCOS之后),虽然现在调试好了,但是不是我想要的,也没时间整这个了,以后再研究吧(逃避?,哎,没办法,现在日子难熬啊,把这个弄完交差再说吧)。如果有人对移植操作系统后,对每个.C文件调用#include "myinclude.h"很熟悉的话,可以请教一下。
//#include "TC35Drive.h"
#define GSM_GLOBALS
#include "myinclude.h"
//定义接收中断相关变量
u8 RxBuffer1[1000];
u8 RxCounter1=0;
u8 count=0;
u8 flag=0;
u8 ReceiveFlag=0;
u8 sendflag;
u8 Cmd_At[] = "AT\r";
/*发送:41 54 0d
接收到:41 54 0D 0D 0A 4F 4B 0D 0A
对应字符:
AT<CR>
OK
*/
上面的这种写法跟别人学的,感觉不错。在MDK里仿真的时候验证了每个接收到的对应字符和转化成的HEX。
/方便以后编程使用~~
u8 Cmd_Csq[] = "AT+CSQ\r"; // 信号强度测试
/*发送:41 54 2B 43 53 51 0d
接收到:41 54 2B 43 53 51 0D 0D 0A 2B 43 53 51 3A 20 33 31 2C 39 39 0D 0A 0D 0A 4F 4B 0D 0A
对应字符:
AT+CSQ<CR>
+CSQ: 31,99
OK
*/
/
u8 Cmd_CPIN[] = "AT+CPIN?\r";
u8 Cmd_COPS[] = "AT+COPS?\r";
u8 Cmd_ATE1[] = "ATE1\r"; //Signal quality test
u8 Cmd_ATV1[] = "ATV1\r";
/// //Signal quality test
u8 Cmd_Cmgf1[] = "AT+CMGF=1\r";
u8 Cmd_Cmgf0[] = "AT+CMGF=0\r";
//选择短消息信息格式,设置为文本模式。若 "AT+CMGF=0\r",设置为PDU 模式
/*发送:41 54 2B 43 4D 47 46 3D 31 0D
接收到:41 54 2B 43 4D 47 46 3D 31 0D 0D 0A 4F 4B 0D 0A
对应字符:
AT+CMGF=1<CR>
OK
*/
u8 Cmd_Cscs[] = "AT+CSCS=GSM\r"; //设置为GSM 字符集
/*发送:41 54 2B 43 53 43 53 3D 47 53 4D 0D
接收到:41 54 2B 43 53 43 53 3D 47 53 4D 0D 0D 0A 4F 4B 0D 0A
对应字符:
AT+CSCS=GSM<CR>
OK
*/
u8 Cmd_Cnmi[] = "AT+CNMI=2,1\r"; //设置新短信提示
/*发送:41 54 2B 43 4E 4D 49 3D 32 2C 31 0D
接收到:41 54 2B 43 4E 4D 49 3D 32 2C 31 0D 0D 0A 4F 4B 0D 0A
对应字符:
AT+CNMI=2,1<CR>
OK
*/
u8 Cmd_Cmgr[] = "AT+CMGR=1\r"; //读取短消息
/*发送:41 54 2B 43 4D 47 52 3D */
u8 Cmd_Cmgd[] = "AT+CMGD=1\r"; //删除短消息
/*发送:41 54 2B 43 4D 47 44 3D */
u8 Cmd_CmgsT1[] = "AT+CMGS=13565809332\r";//给用户1 发送文本短消息
/*发送:41 54 2B 43 4D 47 53 3D 31 33 34 38 35 33 34 34 36 33 34 0D
接收到:41 54 2B 43 4D 47 53 3D 31 33 32 33 33 36 34 37 31 34 33 0D 0D 0A 3E 20
对应字符:
AT+CMGS=13233647143<CR>
><SP>
*/
u8 Cmd_CmgsT2[] = "AT+CMGS=13669908108\r";//给用户2 发送文本短消息
/*发送:41 54 2B 43 4D 47 53 3D 31 33 32 33 33 36 34 37 31 34 33 0D
接收到:41 54 2B 43 4D 47 53 3D 31 33 32 33 33 36 34 37 31 34 33 0D 0D 0A 3E 20
对应字符:
AT+CMGS=13233647143<CR>
><SP>
*/
static void Delay_ms(__IO uint32_t nTime)
{
/// time_delay=nTime;
// while(time_delay!=0);
int i,j;
for(i=0;i<nTime;i++)
for(j=0;j<60000;j++);
}
/测试 AT 联通性
void TC35_AT()
{
RxCounter1=0;
UartPrintf(USART1,Cmd_At);
}
/// TC35信号强度测试
void TC35_CSQ()
{
RxCounter1=0;
UartPrintf(USART1,Cmd_Csq);
}
/// TC35信息格式 text or PDU
void TC35_CMGF(unsigned char Data)
{
RxCounter1=0;
if(Data)
UartPrintf(USART1,Cmd_Cmgf1);
else
UartPrintf(USART1,Cmd_Cmgf0);
}
/// TC35删除信息
void TC35_CMGD(unsigned char Data)
{
RxCounter1=0;
UartPrintf(USART1,Cmd_Cmgd);
}
/// TC35来信息显示格式
void TC35_CNMI(void)
{
RxCounter1=0;
UartPrintf(USART1,Cmd_Cnmi);
}
/// TC35发送信息
void TC35_CMGS(unsigned char * String)
{
RxCounter1=0;
UartPrintf(USART1,Cmd_CmgsT1);
Delay_ms(500);
UartPrintf(USART1,String);
Delay_ms(500);
UartPutchar(USART1,0x1A);
}
/// TC35读取信息
void TC35_CMGR(unsigned char Data)
{
RxCounter1=0;
UartPrintf(USART1,Cmd_Cmgr);
}
/// TC35拨打电话
void TC35_ATD(unsigned char * String)
{
RxCounter1=0;
UartPrintf(USART1,"ATD");
UartPrintf(USART1,String);
UartPrintf(USART1,";\r");
}
<未完 待续>