3.发送数据
通信的双方建立GPRS连接以后,就可以发送和接收数据了,具体方法为:
等待模块返回“>”后,将要发送的数据送入GPRS模块中,然后再发送回车,数据即可发送出去。发送部分的程序流程图如下图所示。
函数send_gprs_data()实现发送指定长度数据的功能,本例中程序实现过程如下:
程序中使用了seri_poll()函数,功能是在一定时间内查询判断有无数据返回。若有数据返回则判断是否与指定的字符串相同,同时判断返回值是否超时。当返回值超时则报(TIME_OUT);当数据返回但返回的字符串中没有指定字符串,则报出错(FALSE)信息;当有数据返回且返回的字符串中有指定的字符串,则报正确(OK)信息。
4.接收数据
GPRS接收数据时,在GPRS传输状态下,检测串口上是否有接收的数据,程序流程图如下图所示。
函数recv_gprs_data()主要完成对串行口接收数据简单处理的功能,seri_poll()函数的功能是在一段时间内查询串行口上是否有数据的功能。本例中程序如下:
程序中定义了数据的帧头格式,C语言中用结构体表示如下:
程序中调用gprs_recv_data()函数后,如果返回值为GPRS_RECV_FRAME_OK,则使用接收的GPRS数据,由GPRS_DATA_FRAME;结构中的data_p得到数据的指针,data_len得到已经接收到的GPRS数据的长度。
在使用SIM300C时,需要注意的是,SIM300C在数据传送时电源电流峰值可达3A,会因线路阻抗压降使VBAT电压不稳,因此电源必须能够提供足够的电流,同时在电源线上对地加一旁路电容,容量通常在l00μF以上,PCB布线时尽可能靠近SIM300C VBAT的引脚。
进行GPRS数据传输的双方建立连接之后,若长时间没有发送数据,建立的连接可能会被断开,若想继续传输数据,必须重新建立连接;另外可采用的方法是在数据传输空闲时,发送心跳包(每间隔一段时间发送数据),以保持建立连接不断开。
为保证数据通信的正常进行,防止射频接口的干扰,在进行PCB线路设计时,一定要先阅读有关的布线指导,尤其是系统中用到模拟信号通道时,更应注意射频信号带来的干扰。
本文关键字:单片机 数字通信,通信技术 - 数字通信
上一篇:社交网络聚合器应用