小议家校通网络控制器通信科技

时间:2022-12-07 03:31:00

导语:小议家校通网络控制器通信科技一文来源于网友上传,不代表本站观点,若需要原创文章可咨询客服老师,欢迎参考。

小议家校通网络控制器通信科技

1网络通信介绍

随着TCP/IP等网络通信的出现,将串口通信与网络通信相结合的趋势越来越明显,这是保护使用者既往投资和整体利益的一种有效办法。本文所讨论的通信技术就是将串口与网络通信相结合并在实际应用中取得良好效果的一种通信解决方案。

家校通”是利用现代信息技术实现家庭与学校实时沟通的教育网络平台,其组成部分为:家校互联卡、读卡器、无线网关、网络控制器、短信发射接收机。网络控制器的主要功能是通过无线网关从读卡器获取信息,并与互联网服务平台进行网络通信,是家校通系统的核心。

2网络控制器的硬件平台

根据网络控制器的功能要求,考虑整体的性能、价格方面,CPU采用Rabbit2000单片机,他是Z-World公司特别为中小型控制器而设计的高性能8位微处理器。编译环境为DynamicC,提供Socket级TCP/IP编程。网络控制器的硬件结构如图1所示。

3应用层通信协议

3.1网络控制器与读卡器的串口通信协议‘

网络控制器与读卡器的通信主要通过异步串行RS485接口,基于通用串行通信RS485数据传输单元(字节格式)有不带校验位的10b和带奇偶校验位的11b两种数据格式。为了提高数据传送的效率和可靠性,采用无奇偶校验位的10b数据格式,并由BBC校验生成校验码与数据一起发送。

开始标志读卡器地址信息长度命令和参数校验

2B1B2B14B1B

(3)命令字:

A1:从读卡器读取一条记录。

A2:控制器正确接收记录信息后,返回更新记录的读地址命令,使地址指针指向下一条记录。

A4:设置校正读卡器时间。

A6:测试控制器与读卡是否正常通信。

3.2网络控制器与服务平台的网络通信协议

网络协议通常分不同的层次进行开发,每一层分别负责不同的通信功能。TCP/IP通常是一个4层协议,包括数据链路层、网络层(含IP协议)、传输层(含TCP协议)和应用层。本网络协议就是基于TCP/IP协议之上的应用层协议,采用请求应答的通信模式。考虑到协议的可靠性和实现的方便性,数据采用ASCII码表示。

4通信技术

控制器建立socket连接后,向服务器发送连接请求和数据传输,并实时判断连接的有效性,在有效连接的状态下,实现控制器、服务器、读卡器三者的正常通讯,程序流程如图2所示。

4.1网络通信技术的实现

socket初始化:首先要对RTL8019AS的控制寄存器进行初始化配置,DynamicC已将这部分配置封装成函数放入REALTEK.LIB库中,应用时只需调用相关函数。之后再调用函数库dcrtcp.lib中的几个简单函数可完成socket的初始化,以下是程序的主体框架。#defineTCPCONFIG1#memmapxmem#usedcrtcp.libmain(){sock[CD#*2]init();while(ifpending(IF[CD#*2]DEFAULT)==IP[CD#*2]COMING[CD#*2]UP)tcp[CD#*2]tick(NULL);tcp[CD#*2]open(&socket,0,destIP,sockport,null);…………}

在建立TCP的连接中,DynamicC有两种方法打开TCPsocket:一种是被动的方式,调用函数tcp[CD#*2]listen(),等待客户端进行连接;一种是主动的方式,调用函数tcp[CD#*2]open(),根据相应的参数(IP地址和端口号)主动连接到服务器端。本通信技术采用的就是主动方式(作为客户端)。

Socket数据的发送与接收:数据发送调用sock[CD#*2]write(&socket,str[CD#*2]send,str[CD#*2]send[CD#*2]len)。在读取socket缓冲区数时,先判断缓冲区中是否有数据,有数据再进行读操用,同时有超时设置。

start[CD#*2]time=SEC[CD#*2]TIMER;/*SEC[CD#*2]TIMER为秒级系统时间*/end[CD#*2]time=start[CD#*2]time;while((end[CD#*2]time!recv[CD#*2]count)/*READ[CD#*2]TIME为设定的等待时间*/{str[CD#*2]recvbuf[CD#*2]len=sock[CD#*2]bytesready(&socket);/*判断socket读缓冲区是否有数据*/if(str[CD#*2]recvbuf[CD#*2]len>0)recv[CD#*2]count=sock[CD#*2]read(&socket,str[CD#*2]recvbuf,str[CD#*2]recvbuf[CD#*2]len);/*读socket*/}if(revc[CD#*2]count){…………}*拆分接收到的命令字,读取有效信息*/elsebreak;

4.2串口通信技术的实现

主要包含3个步骤:命令字的组合,设置串口D,通过设置Rabbit2000的PE3来控制数据的发送与接收。以A6命令为例,程序主体框架如下:

command[0]=0xA6;/*A6命令*/create[CD#*2]command(addr,command,pack);/*组合命令字*/serDopen(9600);/*9600为波特率*/send[CD#*2]command(command,returnlen);/*发送数据*/read[CD#*2]command(readbuf,sizeof(readbuf),10);/*接收数据*/voidsend[CD#*2]command(char*pack,intlen){inti;WrPortI(PEDR,&PEDRShadow,0x08);WrPortI(PEB3R,NULL,0);for(i=0;iserDputc(pack[i]);}intread[CD#*2]command(char*buf,intlen,inttime){inti[CD#*2]return;WrPortI(PEB3R,NULL,1<<3);i[CD#*2]return=serDread(buf,len,time);returni[CD#*2]return;}

5数据采集与分析

网络控制器联网正常运行时,向服务器发送的一包测试记录数据为:

对数据包进行分析:0244为数据包的总长度,01为协议版本号,02为命令字,000003为序列号,21000102*****为设备号,09为数据包中的刷卡记录总数,0080D122为测试卡号,07070414152715为刷卡时间(顺序为年周月日时分秒),03为状态。采集从服务器返回的命令:001501020000031,其中列号,1为正确接收。返回命令格式符合协议要求,内容正确。

网络控制器向读卡器发送的命令(以A6为例):aaff010003a64141f1,其中aaff表示本命令为控制器发给读卡器,01为读卡器地址,0003为数据长度,a6为命令字,4141为测试数据,f1为校验位。采集从读卡器返回的命令:bbff010002414147d1220707041415421716b000000,其中bbff表示本命令为读卡器发给控制器,01为读卡器地址,0002为数据长度,4141为测试数据,47为校验位,之后的为无效数据。

6结语

基于Rabbit2000实现串口与网络结合的通信技术可以实时、准确地对数据进行处理、发送与接收。由采集到的数据表明数据收发的正确性,证明了本通信技术的可行性与可靠性。本通信技术已在家校通系统中取得了良好的通信效果,并可应用于其他数据传输系统中,具有广泛的发展前景。