600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 解决sim800c模块不能连续给多个手机号码发短信问题

解决sim800c模块不能连续给多个手机号码发短信问题

时间:2021-07-28 17:41:47

相关推荐

解决sim800c模块不能连续给多个手机号码发短信问题

首先sim800c模块主要是通过AT指令操作发短信和打电话的,一般在串口助手上调试,但是这种方法并不适合我们实际做项目。所以我们通常通过MCU控制串口发送字符串(注意:换行(\r\n)和双引号(\"))来操作sim800c模块。

以下是我在做项目时遇到的问题和解决方法。

for(m=0; m < phone_count; m++) /*phone_count是号码的个数*/{for (i = 0;i < 11;i++){b[i][0] = 0;b[i][1] = 0;b[i][2] = 3;b[i][3] = (int)read_iphone[m][i]; /*read_iphone二维数组里存放的多组号码*/}u3_printf("AT+CMGF=1\n");//发送短信内容到GSM模块delay_ms(1000); /*要想连续发送短信,必须在AT指令执行后加上1s左右的延迟*/u3_printf("AT+CSMP=17,167,2,25\n");delay_ms(1000);u3_printf("AT+CSCS=\"UCS2\"\n");delay_ms(1000);u3_printf("AT+CMGS=");u3_printf("\"");for (i = 0;i < 11;i++)for(j=0; j<4; j++)u3_printf("%d", b[i][j]);u3_printf("\"");u3_printf("\n");delay_ms(1000);u3_printf("7740706B4E86");/*短信内容:着火了*/delay_ms(1000);USART_SendData(USART3,0X1A);memset(b ,0, sizeof(b));delay_ms(1000);}

首先,phone_count是flash中存储的号码个数,通过一个for循环连续给手机发送信息。由于发短信需要将手机号码转成unicode编码,但我发现手机号码转成unicode编码时有一个规律,比如,手机号码为12345678900转化成unicode编码就是"0031003300340035003600370038003900300030"。发现规律了嘛。就是在我们输入的手机号每一位前面加上003!!!所以我将二维数组read_iphone内保存的手机号码转化成unicode编码保存在二维数组b中(就是将手机号码每一位的前面加上003)

最重要的来了!接下来就是发送AT指令,我之前写的每发送一条AT指令后延迟200ms,但是出现了错误,就是模块会隔一个手机号发送一次短信(只会发第1,3,5个手机号的短信)。最后调试发现在每条AT指令后都得延迟1s左右的时间,(注意是每条AT指令后都得加延迟)最终实现的连续发送短信的功能。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。