无线通讯模块的数据上传方法

文档序号:9436133阅读:702来源:国知局
无线通讯模块的数据上传方法
【技术领域】
[0001]本发明主要涉及无线通信技术,特别地,涉及一种无线通讯模块的数据上传方法。
【背景技术】
[0002]随着无线通信技术的发展,无线通讯模块在各个行业的应用越来越广泛,主要用来实现设备与外部设备之间无线通信。在某些情况下,无线通讯模块可能需要向FTP(FileTransfer Protocol,文件传输协议)服务器上传数据,传统的无线通讯模块主要是通过AT命令,比如FTPST0R命令和FTPPUT命令,向FTP服务器上传数据。由于无线通讯模块上传的速率限制,对于采用FTPST0R命令一次性发送大数据(比如2MB以上的大数据)或者采用FTPPUT命令执行大字节和高速率(比如3072字节每秒的上传速率)的上传操作时,容易在数据上传过程中出现数据丢失的情况,也即是数据无法正确地上传到FTP服务器。
[0003]有鉴于此,有必要提供一种可以解决数据丢失的无线通讯模块的数据上传方法。

【发明内容】

[0004]本发明的主要目的在于为解决上述问题而提供了一种无线通讯模块的数据上传方法。
[0005]本发明提供的无线通讯模块的数据上传方法,包括:(A)无线通讯模块跟FTP服务器建立FTP数据连接之后,动态分配一个全局的发送缓存,并控制所述无线通讯模块进入ODM模式;(B)所述无线通讯模块接收上层应用程序发送的ODM数据,并将所述ODM数据放入所述发送缓存;(C)所述无线通讯模块将所述发送缓存的数据通过所述FTP数据连接上传给所述FTP服务器。
[0006]作为本发明提供的无线通讯模块的数据上传方法的一种改进,在步骤(A)中,所述无线通讯模块通过函数FTP_Enter_0DM来控制模块进入ODM模式,并且,所述函数FTP_Enter_0DM 定义有函数指针 FTP_Data_Push_ODM。
[0007]作为本发明提供的无线通讯模块的数据上传方法的一种改进,在步骤(B)中,所述无线通讯模块在接收到来自上层应用程序的ODM数据时,调用所述函数指针FTP_Data_Push_0DM ;并且,如果在所述函数指针FTP_Data_Push_ODM中所述发送缓存的剩余长度大于所述ODM数据的数据长度,则所述无线通讯模块将所述ODM数据放入所述发送缓存之中。
[0008]作为本发明提供的无线通讯模块的数据上传方法的一种改进,在步骤(C)中,所述无线通讯模块通过调用函数FTP_Send_Data来执行数据发送操作。
[0009]作为本发明提供的无线通讯模块的数据上传方法的一种改进,所述步骤(C)包括:判断所述发送缓存中是否还存在未发送数据,如果存在未发送数据,则可以定义一个局部数据变量,然后从所述发送缓存中取预设长度的数据放入到所述数据变量,并返回所述局部数据变量的长度;如果所述局部数据变量的长度大于0,则调用TCP/IP协议栈的发送函数来发送所述局部数据变量的数据。
[0010]作为本发明提供的无线通讯模块的数据上传方法的一种改进,所述步骤(C)还包括:如果此时调用所述发送函数出现数据发送失败,则判断TCP/IP层是否已经开启了 TCP流量控制;如果TCP流量控制开启,则直接返回并转至所述TCP流量控制,并在所述流量控制调用所述函数FTP_Send_Data,重新进行数据发送操作。
[0011]作为本发明提供的无线通讯模块的数据上传方法的一种改进,还包括:(D)接收所述FTP服务器回复的确认消息,并采用正面确认机制确认数据是否发送完成。
[0012]作为本发明提供的无线通讯模块的数据上传方法的一种改进,所述步骤(D)包括:在接收到所述FTP服务器回复的确认(ACK)消息之后,所述无线通讯模块可以判断所述发送缓存是否为空;如果所述发送缓存不为空,则再判断当前是不是正在调用所述函数FTP_Send_Data进行数据发送,如果是,则直接返回;如果当前没有进行数据发送,则调用所述函数FTP_Send_Data进行数据发送继续进行数据发送;如果所述发送缓存为空,向所述上层应用程序请求继续向所述无线通讯模块提供ODM数据,并跳转到步骤(B)。
[0013]作为本发明提供的无线通讯模块的数据上传方法的一种改进,还包括:(E)在所述上层应用程序需要结束数据发送时,设置一个结束变量,所述结束变量在所述无线通讯模块发送数据完成并且所述FTP服务器回复完最后一个确认消息进行判断,以使所述无线通讯模块的数据Socket关闭并释放相关缓存和内存,并且退出所述ODM模式。
[0014]作为本发明提供的无线通讯模块的数据上传方法的一种改进,在上述各个步骤中如果出现任何出错情况,所述无线通讯模块进行预先设定的出错处理,所述出错处理包括:关闭数据Socket、释放相关的缓存和内容、退出所述ODM模式以及向所述上层应用程序上报出错信息。
[0015]相较于现有技术,本发明提供无线通讯模块的数据上传方法采用发送缓存来进行数据发送,并结合正面确认机制,可以有效地保证无线通讯模块利用AT命令向FTP服务器上传大字节和高速率的数据的正确性,并且降低在上传过程中出现数据丢失的可能,提高无线通讯模块的数据上传的可靠性。
【附图说明】
[0016]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,其中:
[0017]图1是本发明提供的无线通讯模块的数据上传方法一种实施方式的流程示意图。
【具体实施方式】
[0018]为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0019]请参阅图1,其为本发明提供的无线通讯模块的数据上传方法一种实施方式的流程示意图,所述无线通讯模块的数据上传方法主要包括以下步骤:
[0020]步骤SI,无线通讯模块跟FTP服务器建立FTP数据连接;
[0021]所述无线通讯模块可以为2G模块,比如GSM模块或GPRS模块,或同时集成GSM和GPRS功能的GSM/GPRS模块;或者,所述无线通讯模块也可以为3G模块或4G模块,比如WCDMA模块、TD-SCDMA模块、TD-LTE模块或FDD-LTE模块;或者,所述无线通讯模块也可以为上述模块的任意组合等。所述无线通讯模块在向所述FTP服务器进行数据上传之前,需要通过无线通讯网络跟所述FTP服务器建立FTP数据连接,所述FTP数据连接主要用于供所述无线通信模块进行数据上传。
[0022]步骤S2,动态分配一个全局的发送缓存,并控制所述无线通讯模块进入ODM模式;
[0023]在所述数据连接建立成功之后,所述无线通讯模块可以动态分配一个全局的发送缓存(Buffer),所述发送缓存的长度(SencLlen)可以通过FTPPUT命令的参数进行指定,也可以专门定义预设长度(比如2K到3K)给FTPST0R命令使用。并且,所述无线通讯模块可以进一步调用进入ODM模式函数(FTP_Enter_0DM)来控制模块进入ODM模式,并在所述进入ODM模式函数(FTP_Enter_0DM)中定义一个FTP数据推送函数指针(FTP_Data_Push_0DM),其中,所述FTP数据推送函数指针(FTP_Data_Push_ODM)可以在所述无线通讯模块接收到ODM数据的时候被调用。
[0024]步骤S3,所述无线通讯模块接收上层应用程序发送的ODM数据,并将所述ODM数据放入所述发送缓存;
[0025]具体地,上层应用程序可以通过AT命令向所述无线通讯模块发送ODM数据,所述ODM数据的数据长度可以记为ReCV_len ;如果所述无线通讯模块接收到来自上层应用程序的ODM数据时,可以调用所述FTP数据推送函数指针(FTP_Data_Push_ODM)。并且,在所述FTP数据推送函数指针(FTP_Data_Push_ODM)中,如果所述发送缓存的剩余长度(Left_Length_In_Send_Buffer)大于所述ODM数据的数据长度(Recv_len),则可以将所述ODM数据放入所述发送缓存之中。
[0026]步骤S4,将所述发送缓存的数据通过所述FTP数据连接发送给所述FTP服务器;
[0027]在将所述ODM数据放入所述发送缓存之后,所述无线通讯模块可以进一步调用FTP数据发送函数(FTP_Send_Data)来执行数据发送操作,即是将所述发送缓存中的数据通过所述FTP数据连接上传给所述FTP服务器。应当注意的是,在本实施例中,如果所述发送缓存的数据没有完成发送,即当前所述发送缓存不为空,则此时所述上层应用程序不
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1