智能化停车场车位监测管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由图4-6及图4-7可见,仿真可分为数据包构造过程以及数据包还原过程,其仿真界面如图:
图4-7网络仿真界面
4.3.1超声波距离数据包构造仿真
选择该仿真后,输入车位和假想距离。现在的普通停车场,一层一般拥有50个左右。因此这翠的车位号范围设置为1至50。根据第三章第二节的讨论,有这样的结论:超声波检测的距离数据是在O.6米至1.6米属于有车停放,1.6米至3米之间没有停放车辆,小于0.6米或者大于3米则表明该车位异常。因此设置可输入的距离范围是0.0米至10米。假设现在是对车位号是30检测,获得距离数据是l米,属于异常情况。如图4—7,车位号输入30,距离输入l。选择确定则丌始构造数据包,最后生成文本文档。
输入的车位号相当于下位机的IP地址。同时为了简化,车位号也当作网卡地址的一部分。输入的距离属于数据负载部分,大小是3个字节。这是不满足以太网最小数据负载是46个字节的要求,需要填充补足。本仿真把距离数据包的负载大小规定为50个字节,并把距离数据填充到整个负载的最高位,其余全部设定为O。这样在识别数据时只需要提取整个负载的前3个字节即可。对负载处
理完以后,程序开始按顺序调用Libnet的数据包构造函数。构造完成以后程序对各个协议头进行校验,包括CRC32校验和报头校验。最后生成文本文档。文
图4.8超声以太网仿真输入界面
图4-9超声波仿真数据包
本文档以车位号命名,并且加上“d”以表示是距离数据的数据包。如图4—9就是有关车位30的超声波检测距离的数据包,文本文档名字是“30d.txt”。由于是内容是以二进制填写的,所以都是一些相应的ASCII符号。而MAC地址是以字符串填入的,因此可以识别。前6个字节是目的地址,后6个是源目的地址。可以看到源目的地址是“26c41E”。后面的“lE”就是30的十六进制表示,即表明是出车位号为30的车位下位机发出的。文本文档的大小为96字节。
按照图4—2的封装形式,整个协议头长度是:
14(以太网报头长度)+20(IP报头长度)+8(UDP报头长度)=42(字节)
负载设定为50个字节,CRC32校验为4个字节。所以整个帧大小为42+50+4=96个字节。刚好等于文本文档的大小,封装成功。
4.3.2图像数据包构造仿真
选择该仿真后,需要输入车位号码以及选择图片。如图4—10,输入的车位是28,图片选择如图4-11的车辆图片,表示该车位的图像。该图像大小为1.928KB,即1975个字节。为了可以方便的写入文本文档,对图像文件的每个字节做以下
图4.10图像以太网仿真输入图
Z叩61102174141姗…
图4-11用于仿真的汽车图
处理:一个字节的无符号值的范围是0~255。先将每个字节看成是0~255的其中一个值,而不把它当作一个ASCII码考虑。然后把它变成字符串。整个过程把每个字节都变成了三个字节,因此图像用于打包的大小就是原来的三倍,即1975×3=5925个字节。对于以太网来帧来说,整个以太网帧的负载最大是1500个字节。除去IP报头的20字节以及UDP的8个字节,完整的以太网帧实际上可以
容纳的数据负载大小是1500-20—8=1476个字节。显然5925大于1476,图像不可能完全置于以太网帧内,只能分割。在分割过程中,最后l帧的负载大小有可能小于以太网最小数据负载的为46字节的要求。为了区分距离数据包与图像数据包,若出现分割的最后一部分小于46个字节,则填充至100个字节。
因此整个图像处理过程如下:
获取图像文件的大小,然后建立一个以字节为单位,长度是图像大小的数组。按顺序将图像的内容,每次读入一个字节并把该字节置于数组之中。读完图片以后,数组也被填满,内容即是图像每个字节的内容。对数组的每个单元进行处理,按照每个单元的值即ASCII码值转换成字符串。如ASCII码值是123的,处理后即是字符串“123”。转换后传入相应的字符串。这个过程也是一直到把数组的所有单元都处理完。新产生的字符串就是图像的内容的字符表达。每次按顺序截取1000个字节,然后把它们作为数据负载封装到以太网帧里面,写入文本文档。每个文本文档的名字组成是:车位号+“P”+“k”。k表示第几帧,是封装的顺序。
这次选择的图像大小是1.928KB,即1975个字节。转换后大小是5925个字节。按照每1000个字节处理,可以分割成6份,按顺序Iji『5帧每帧都是1000个字节,最后1帧是925个字节。由上文可知,整个协议报头的长度是:14(以太网报头长度)+20(IP报头长度)十8(UDP报头长度)----42(字节)负载为1000个字节,CRC32校验为4字节。因此Ij{『5个帧的内容大小是42+1000+4=1046(字节)约1.02KB
这与文本文档的大小一致。同理,最后l帧的大小是971个字节,与文本文档的大小一致。第一帧的文本文档名字是“8p1.txt”。第二帧的文本文档名字是“8p2.txt”。一直到最后l帧即第6帧,名字是“8p6.txt”。如图4一12就是有关8号车位图像的其中一个数据包,内容见图,文本文档名字是“8p1.txt”。可见,源地址为“26c408”,即第8号车位。
图4-12图像仿真数据包
4.3.3数据还原
数据还原是选取任何一个数据包,程序根据数据包的内容进行判断,分别还原为图像或者距离数据,同时给出是哪个车位。判断的准则是根据端口以及数据包负载的大小进行判断。超声波距离数据包的接收端口设为256,而图像接收的端口设为250。同时,距离数据包负载大小只有50个字节。而图像数据包的负载最小是100个字节。通过获得数据包负载大小也可以将不同性质的数据包区分。
如果判断是距离数据包,则提取负载以及车位信息,最后给出车位号和车位情况。仿真过程把车位号直接用于命名文件名称以及IP地址。因此根据文件名称或者IP地址即可获得车位号。按照填充的规则,负载的静3个字节就是距离数据。因此只要提取盼3个字节即可。获得距离后进行判断车位状况:0.6米~1.6米为已停放车辆。1.6米~3米为没有车辆停放,小于0.6米或者大于3米为车位异常。
现选择文件名为“30d.txt”的文本文档。该文档是表示第30号车位的距离数据,由前文知道,仿真输入的距离为l米,因此判断应为异常。程序运行后得到的信息如图4一12。
图4-12超声波信息包数据还原结果图
可见,距离获取以及判断也讵确。