summer12121 2015-05-26 02:38 采纳率: 0%
浏览 1706

凌阳SPCE061A控制GTM900B发短信的程序老是搞不好,有哪位大神可以帮我看看

#include
char ATE0[]="ATE0\r\n";
char CREG_CMD[]="AT+CREG?\r\n";
char SMS_send[]="AT+CMGS=18\r\n";
char ATCN[]="AT+CNMI=2,1\r\n";
char CMGF[]="AT+CMGF=1\r\n";
char CMGR[12]="AT+CMGR=1\r\n";
char CMGD[12]="AT+CMGD=1\r\n";

char info[]="the temperature is too high";
//char AT[]="AT\r\n";

//char CMGF[]="AT+CMGF=1\r\n"; // 设置短信为TEXT:1格式,PDU:0
//char CMGS[]="AT+CMGS=\"18233557958\"\r\n";
//*P_IR_Ctrl = 0x0000; //红外通信控制单元P_IR_Ctrl仅使用b2位RXEN为1禁止接收;为0允许接收
//========================================================================
// 语法格式: int cmpstr(char string1[],char string2[])
// 实现功能: 比较两个字符串
// 参数: i

// 返回值: *s-*t
//========================================================================
/*int strcmp(char *s, char *t)
{

for(;*s==*t;s++,t++) 1
if(*s==0)

return 0;

return *s-*t;}

*/

//========================================================================
// 语法格式: void Delay(unsigned int i)
// 实现功能: 延时一段时间(不精确)
// 参数: i 延时的长短
// 返回值: 无
//========================================================================
void Delay(int ms)// 延时子程序
{
char i;
while(ms--)
{
for(i=0;i<120;i++)
*P_Watchdog_Clear = 0x1;
}
}

//=============================================================
// 语法格式: void UART_Init(void);
// 实现功能: UART初始化
// 参数: 无
// 返回值: 无
//=============================================================
void UART_Init(void)
{
*P_UART_Data = 0x0000;
*P_IOB_Dir = 0x0400; //0000 0100 0000 0000,IOB10设为同向输出口1(TX),IOB7设为悬浮输入口0(RX),RX指receive,TX是指transmit,0为输入,1为输出
*P_IOB_Attrib |= 0x0480; //0000 0100 1000 0000,设置为1具有唤醒功能

// *P_IOB_Dir &= 0xff7f; //1111 1111 0111 1111

// *P_IOB_Buffer &= 0xfb7f; //1111 1011 0111 1111
// *P_IR_Ctrl=0x0000;

*P_UART_BaudScalarLow = 0x00;
*P_UART_BaudScalarHigh = 0x14;                      // 波特率设为2400

*P_UART_Command1 =0xc0;                         
*P_UART_Command2 =0xc0; 

}

//=============================================================
// 语法格式: void UART_SendChar(char cData);
// 实现功能: 通过UART的数据发送端口,串行发送一个字符数据
// 参数: cData: 待发送的字符数据
// 返回值: 无
//=============================================================
void UART_SendChar( char cData)
{
int i=0x0040,s;
*P_UART_Data = cData;
s=*P_UART_Command2&i;
while(s=0)
{
*P_UART_Data = cData;
s=P_UART_Command2&&i;
}
*P_UART_Data = cData;
*P_Watchdog_Clear = 0x1;

}

//P_UART_Data (7023H) (读/写)单元可以用于接收和发送缓冲数据,向该单元写入数据,可以将要发送的数据送入寄存器;从该单元读取,可以从寄存器读出数据字节。

//=============================================================
// 语法格式: void UART_SendCommand(char * cmd)
// 实现功能: 利用UART发送一个字符串
// 参数: cmd 待发送的字符串
// 返回值: 无
//=============================================================
void UART_SendCommand(char * cmd)
{
while(*cmd!='\0') //'\0'字符串结束标志,字符串是系统自动加上结束符的
{
UART_SendChar(*cmd);
cmd++; //一个字符一个字符地发送,直到发送完毕
Delay(8);
}
Delay(8);
}

//====================================================
// 语法格式:void GPRS_Init(void)
// 功能描述: GPRS初始化函数
// 入口参数: 无
// 出口参数: 无
//====================================================

void GPRS_Init(void)
{
UART_SendCommand(ATE0);
Delay(10);

    UART_SendCommand(ATCN);
    Delay(10);

    UART_SendCommand(CMGF);
    Delay(10);


    UART_SendCommand(CREG_CMD);
    Delay(10);

// int i=0;
// UART_SendCommand("AT+IPR=2400\r\n");
// UART_SendCommand(AT);
// UART_SendCommand(CMGF);

/* while(i<5)
{
i++;
UART_SendCommand("AT+CSMP=17,167,0,0\r\n"); // 发送ASCII短信
Delay(1000);
}*/
}

//====================================================
// 语法格式:void Info_Send()
// 功能描述: 短信发送函数
// 入口参数: 无
// 出口参数: 无
//====================================================
void Info_Send(void)
{
UART_SendCommand(SMS_send); //发送中文短信
Delay(10);

// UART_SendCommand(Sms2_Pdu); //发短信内容
// delay(10);

UART_SendChar(0x1A);      //发送结束符号
Delay(500);

UART_SendCommand("ATD18233557958;\r\n"); //打电话

// while(1);
/* UART_SendCommand(CMGS);

Delay(10);
UART_SendCommand(info); //发送短信
UART_SendChar(0x1A); //发送结束符号
Delay(20);*/
}

//====================================================
// 语法格式:void main(void)
// 功能描述: 主函数
// 入口参数: 无
// 出口参数: 无
//====================================================
void main (void)

{
*P_SystemClock = C_Fosc_49M | C_Fosc;
UART_Init();
GPRS_Init();
Info_Send();
*P_Watchdog_Clear = 0x1;
}

  • 写回答

2条回答 默认 最新

  • devmiao 2015-05-26 02:42
    关注

    这种硬件的程序,最好请开发厂商派几个工程师帮你们一起调试。

    评论

报告相同问题?

悬赏问题

  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导
  • ¥15 docker模式webrtc-streamer 无法播放公网rtsp
  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥15 基于图神经网络的COVID-19药物筛选研究
  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?
  • ¥15 Jenkins+k8s部署slave节点offline
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题