3 图像传输系统的软件设计
3.1 设计目的
软件设计目的:通过向GPRS模块发送AT指令,控制移动终端的通信过程,使移动台能借助GPRS提供的网关和路由接入Intemet,并通过TCP/IP网络协议完成与Internet上监控中心传输图像数据的任务。
基于以上要求,设计了通信软件,即GPRS客户端软件和服务器端软件。
3.2 GPRS无线模块通信指令
WISMO 2D模块的软件部分对外提供了控制系统操作的AT指令集,通过接收来自UART的AT指令,解释并执行相应操作,实现无线Modem相应功能。
由于编写的程序过长,只列出进行TCP传输用到的主要AT指令:
AT+CGREG=1;//设置GPRS注册状态
AT+CGATT=l;//GPRS网络附着
AT#APNSERV=“CMNET”;//设置GPRS接入点
AT#APNUN=″″;//身份验证用户名设为空
AT#APNPW=″″;//身份验证密码设为空
AT# ConnectionStart;//连接CPRS网登录Internet,成功返回动态分配的IP地址
AT#TCPSERV=″202.112.135.203″://设置服务器IP地址,即监控中心的IP地址
AT#TCPPORT=″6000″://设置服务器与客户端通信的Socket端口:
AT#otcp;//打开与远程服务器的TCP连接
TCP连接成功后,GPRS模块进入数据传送状态,这时就可通过串口向GPRS模块发送图像数据,模块通过Socket发送到监控中心,监控中心也能向模块发送回应数据。数据传完后控制机向GPRS模块发送终止字符<ETX>,移动终端又回到AT指令接收状态。
3.3 GPRS客户端软件
运行于控制机上的客户端软件具有以下功能:
(1)串口通信,包括AT指令通信和数据文件通信。
(2)显示传输过程计时,用于测试系统的传输速率。
(3)中止GPRS模块TCP协议栈通信。系统传输出错时中止协议栈工作。
Q2406B内嵌TCP协议栈的缓存区有限,若串口写入速率远高于GPRS传输速率,协议栈将会丢失数据。为保证数据传输的可靠性,必须进行流控制。设计中采用了两种流控制方法:数据分包法和硬件握手法。
采用数据分包法的GPRS客户端传输图像文件流程图如图4所示。该方法将图像文件先打成若干个小数据包,逐个写入串口,由GPRS模块发送。监控中心的服务器端接收完一个数据包后返回应答帧,GPRS模块再发下一个数据包。若超时还未返回应答帧,则重发上一个数据包。此法牺牲了一定时间,但很好地保证了图像传输的可靠性。
硬件握手法采用9线串口中的硬件握手信号:RTS/CTS做流控制。系统工作时。控制机使用RTS启动GPRS模块的数据流,GPRS模块用CTS启动和暂停来自控制机的数据流。当缓存区内数据量达到高位时,模块将CTS线置低电平,控制机程序检测到CTS为低后,就停止发送数据,直到协议栈缓存区的数据量低于低位而将CTS置高电平。
此法也可保证写入数据不丢失,而且传输图像文件的耗时低于前种方法。但它不能用于简化的三线串口协议,也不能如前种方法那样检测到GPRS数据传输过程中的丢包现象,通过重发来保证传输过程的可靠性。
3.4 GPRS服务器端软件
GPRS图像传输系统采用多个移动终端都与监控中心服务器连接的方法。服务器采用普通Internet上的主机方式,作为TCP服务器端,具有静态公网IP,开放了侦听端口,可从外部访问,其上运行TCP端口监听程序,接收来自移动台的TCP数据包,并向移动台发送回应数据。采用数据分包法的GPRS服务器端接收图像文件流程如图5所示。该服务器端软件具有以下功能:(1)监听TCP端口;(2)接收数据包,发送接收应答帧;(3)显示接收数据和大小,保存图像文件。
本系统的发送端设计了两种流控制方法,一种从硬件上实现,另一种从软件上实现。前者在网络状况稳定的情况下,传输速度较快。后者可有效保证整个GPRS传输过程的稳定可靠,并能直接用于简化的三线串口协议,当控制机采用嵌入式微处理器时,能方便地与微处理器串口相连,无需串口转换芯片。
使用中国移动提供的普通GPRS业务进行测试,本系统的传输速率可达10kbps,大量测试中未出现丢失数据的情况,整套系统工作稳定可靠。同时也可胜任传输任何形式的文件数据,应用于需要远程传送数据的系统中。
3 建立SOCKET连接的命令
下面对SOCKET通信中要用到的一些AT命令[2]进行说明。
3.1 基本设置
① GPRS ISP 码。
AT+IISP1=*99***1# //全国通用
② 登录用户名。
AT+IUSRN=WAP//GPRS网络登录名
③ 登录密码。
AT+IPWD=WAP// GPRS网络登录密码
④ MODEM 类型。
AT+IMTYP=2 //定义GPRS MODEM
⑤ 初始化命令。
AT+IMIS=“AT+CGDCONT=1,ip,CMNET”
⑥ 域名服务器。
AT+IDNS1=211.136.18.171
//DNS服务器地址,全国通用
⑦ 扩展码(XRC)。
AT+IXRC=0
3.2 SOCKET设置
① 建立一个TCP通信。
AT+ISTCP:218.66.16.173,1024<CR>
建立SOCKET连接,218.66.16.173为应用服务中心计算机端IP地址(实际地址由实际情况决定),1024 为端口号(端口号由中心SOCKET端口监听程序设置决定)。 如果连接成功,LT8030返回I/xxx。xxx为LT8030中本次SOCKET连接的句柄号。中心监听程序会显示连接的终端IP地址。如果连接失败,LT8030返回I/ERROR(xxx)。xxx为错误代码。
② 发送数据。
AT+ISSND%:xxx,<string Length>:<string>
发送数据,xxx为句柄,<string Length>为要发送的字符长度,<string>为要发送的数据。发送成功后,在中心端可看到终端发送的数据。最多一次能够发送5K以下的数据。
③ 查询SOCKET状态。
AT+ISST:xxx<CR>
查询SOCKET状态,xxx为句柄。 LT8030返回I/<SOCKETstat>。如果<SOCKETstat>= 000,表示该端口连接正常;如果<SOCKETstat>≥1,LT8030通过该端口从中心接收存在Buffer 里的字节数;如果<SOCKETstat><0,则SOCKET错误。
④ 接收数据。
AT+ISRCV:xxx<CR>
xxx为句柄。该指令会读取LT8030通过该句柄从中心接收到的,存在Buffer 里的数据;Buffer最大可存储30K的数据。
⑤ 关闭SOCKET通道。
AT+ISCLS:xxx
关闭SOCKET通道,xxx为句柄。
4 程序的设计
根据单片机与GPRS模块通信协议的约定,单片机串行口设为方式1,波特率为9 600 bps,8位UART,1位起始位,1位停止位,无奇偶校验。上电后,首先向GPRS模块发送基本设置命令,即ISP码、用户名及用户密码帧等,其中ISP码必须为“*99***1#”,用户名和用户密码可以任意设置,但不能为空。在使用LT8030 GPRS 上网功能之前,必须正确设置这些参数。参数一旦设置后,即永久保存,以后无需重新再设( 以上设定为LT8030C出厂时的默认参数)。然后向GPRS模块发送SOCKET设置帧,如成功,则点和点通信环境已建立,接着就调用发送数据帧。
开机上电后,程序在主函数中运行,单片机进行初始化。初始化包括设置串口工作方式、波特率,并初始化变量参数和标志位。
文章评论(0条评论)
登录后参与讨论