为什么要发2次挂机指令啊? 哪位大仙知道?
[mw_shl_code=c,true]在GSM模块的例子中: sim900a.c的函数u8 sim900a_call_test(void)中:
if(key==14)
{
if(cmode==0)
{
callbuf[pohnenumlen]=0;
u2_printf("ATD%s;\r\n",callbuf);
delay_ms(10);
cmode=1;
}else
{
sim900a_send_cmd("ATH","OK",100);// 挂机
sim900a_send_cmd("ATH","OK",100);// 挂机
cmode=0;
}
}[/mw_shl_code]
此外,用了原子例子,为何在拨打10086时,发布出去拨号音? 下面的代码看起来没有错误啊???
(下面的代码与上述代码处于同一个函数内)
[mw_shl_code=c,true] if(key<13)
{
if( Current_Mode == 0 && Tel_Num_Lenth <15 ) //
{
Tel_Num_Buf[Tel_Num_Lenth++] = kbd_tbl[key-1][0];
//u3_printf("AT+CLDTMF=2,\"%c\"\r\n",kbd_tbl[key-1][0]);
memset(Uart3_TX_BUF, 0x00, USART3_MAX_SEND_LEN);
sprintf(Uart3_TX_BUF,"AT+CLDTMF=2,\"%c\"\r\n",kbd_tbl[key-1][0]);
Uart3_Send(Uart3_TX_BUF, strlen_u8((u8 *)Uart3_TX_BUF));
}
else if(Current_Mode == 2) // 处于通话中
{
//u3_printf("AT+CLDTMF=2,\"%c\"\r\n",kbd_tbl[key-1][0]);
memset(Uart3_TX_BUF, 0x00, USART3_MAX_SEND_LEN);
sprintf(Uart3_TX_BUF,"AT+CLDTMF=2,\"%c\"\r\n",kbd_tbl[key-1][0]);
Uart3_Send(Uart3_TX_BUF, strlen_u8((u8 *)Uart3_TX_BUF));
delay_ms(100);
//u3_printf("AT+VTS=%c\r\n",kbd_tbl[key-1][0]);
memset(Uart3_TX_BUF, 0x00, USART3_MAX_SEND_LEN);
sprintf(Uart3_TX_BUF, "AT+VTS=%c\r\n",kbd_tbl[key-1][0]); // CREAT DTMF TONE
Uart3_Send(Uart3_TX_BUF, strlen_u8((u8 *)Uart3_TX_BUF));
LCD_ShowChar(40+96,90,kbd_tbl[key-1][0],16,0);
}
}[/mw_shl_code]
是这个GSM模块本身的缺陷么?如果要升级的话?这个模块最新的升级版本在哪里下载?
|