自动泊车系统的设计 联系客服

发布时间 : 星期一 文章自动泊车系统的设计更新完毕开始阅读7d65aeb5482fb4daa58d4bd0

内蒙古科技大学毕业设计说明书(毕业论文)

4.4.2 串口组件serialPort的使用

图 5.10 serialPort组件属性

本次上位机设计中通过串口组件serialPort实现与下位机端的串口通信,串口的属性如图5.10所示,主要包括:串口号;波特率;校验位;数据位;停止位。其中,校验位使用系统默认设置NONE,数据位使用默认设置8,停止位使用默认设置1,而串口号与波特率通过上位机界面中串口设置部分的ComboBox控件中的数据进行设置,并且通过该部分中的buttonOpenClose按键可以实现对串口属性中串口号与波特率的赋值并实现的打开和关闭串口的功能,该部分中的TextBox则显示当前串口的打开与关闭情况。

在程序初始化函数Form1_Load中会进行当前系统中所有串口号的扫描读取并赋值给ComboBox中显示,在选定串口号后可以通过buttonOpenClose按键开启串口。具体程序见附件1

4.4.3 串口触发事件函数comm_DataReceived

串口触发事件函数comm_DataReceived与单片机设计中的串口中断相同,首先需要在程序初始化函数Form1_Load中对comm_DataReceived事件进行注册,时间注册完毕之后当上位机串口接收到数据之后会将数据存储在串口数据缓存区中并触发该事件,在事件函数中则可以对串口数据进行读取和处理[21]。

在串口接收到数据触发事件并将接收到的串口数据存储至串口缓存区的过程中,由于上位机对数据的处理速度远高于单片机使得单片机发送的一帧数据在上位机端被处理时分成多帧存储在串口缓存区,而每次数据更新是前一帧数据会被覆盖而造成数据丢失使得数据处理存在困难,为了避免数据丢失就需要考虑到

28

内蒙古科技大学毕业设计说明书(毕业论文)

多帧处理的问题,在本设计中通过在单片机发送的数据中设置起始位和终止位的方式来进行处理,上位机在接受到数据之后会首先查找起始位与终止位并将起始位与终止位之间的数据存储在byte型数组buf1中,根据串口数据的发送格式来进行数据处理。

串口数据处理过程如下:假设下位机发送数据起始位为“$”,停止位为“*”则在上位机接收到数据是可以通过设置标志位的方式对数据进行处理,在上位机接收到起始位”$”时将标志位sn赋1(默认为0),在标志位为1并接受到数据时会将数据存储至buf1数组中,在缓存区所有数据处理完成后如果没有检测到停止位”*”,那么就将sn赋2,当标志位为2时,在下一次数据到来是会直接将数据存储至buf1数组中,直至接受到停止位”*”为止停止数据处理并将sn重新赋0,这样存储在buf1数组中的数据即为单片机所发送的数据。

在本次设计中单片机发送的数据共有5组数据,起始位为0xFF,终止位为0xFE,在上位机接受到数据之后,会将这3组数据放置在buf1数组中,通过对数据的处理可以实现前后距离测试数据,以及数据的显示,由于上位机界面显示与串口处理不在同一线程,因此需要进行跨线程操作,具体实现程序如下: znzjl = (Convert.ToInt32(buf1[0]) * 256 + Convert.ToInt32(buf1[1])) / 10.0; wdjl = (Convert.ToInt32(buf1[4]) * 256 + Convert.ToInt32(buf1[5])) / 10.0; jzdjjl = Convert.ToInt32(buf1[6]);

this.Invoke((EventHandler)(delegate //跨线程操作

{ znzsz.Text = znzjl.ToString() + \\; wdsz.Text = wdjl.ToString() + \℃\; jzdj.Text = jzdjjl.ToString(); }));

4.4.4 指南针控制部分程序实现

指南针控制部分主要功能由Button按键实现,在上位机界面通过单击按键可以触发相应事件,在事件函数中,程序会向单片机最小发送开始进行电子指南针模块校准命令,并将标志位djspd赋1,这时,在定时器中会进行60s倒计时并显示在上位机界面Label控件上,具体程序如下:

byte[] a = System.BitConverter.GetBytes('$'); comm.Write(a, 0, 1); Thread.Sleep(50);

byte[] b = System.BitConverter.GetBytes('a'); comm.Write(b, 0, 1);

29

内蒙古科技大学毕业设计说明书(毕业论文)

Thread.Sleep(50);

byte[] c = System.BitConverter.GetBytes('*'); comm.Write(c, 0, 1); Thread.Sleep(50); djspd = 1; 4.4.5 指南针控制部分程序实现

指南针控制部分由3个Button控件构成,分别为:侧位停车、倒车入库和停止,三个按键可以通过在上位机界面单击来触发相应事件。其中,侧位停车按键负责向单片机最小系统发送侧位停车车位寻找与侧位停车进行两种命令,在下位机相应操作结束之后会向上位机发送结束标志,上位机在接受到不同的标志后会改变按键的文本显示,通过文本显示的不同决定发送命令的不同,具体程序实现见附录2。

30

内蒙古科技大学毕业设计说明书(毕业论文)

第五章 总结与发展趋势

随着汽车工业的飞速进步,越来越多的家庭拥有了自己的汽车,而与之而来的却是有限的停车位和越来越小的停车距离之间的矛盾,停车难也成为了一个新的城市问题。在局促的范围内进行车辆的正常停靠,对很多驾驶员来说是一件很棘手的问题。本设计通过分析车辆在泊车环境下的运动学模型,加上车辆轴距和方向盘转角的关联情况。根据剖析汽车的运动学理论基础和现实人工泊车入位问题,分析求得可以应对大部分日常生活中的参考泊车路线。

本次设计中所涵盖的领域相对较多,总的来说整个设计已经达到预期的目的,虽然本人能力和时间有限在软件设计、硬件设计上都出现过较难解决的问题,但通过老师的悉心帮助和不断地摸索学习,最终完成了设计的要求,完成了学校的教学任务。

在本次设计中设计存在很多方面的不足之处,比如电路图布线的整洁度、合理性、可靠性还需要进行改进;在传感器信息处理的精度和灵敏度方面还要进一步加强;在上位机软件的设计中,上位机软件的可视化与可操作性还有待增强;各种信息的处理方式与存储方式还存在很大的不足,虽然在这次设计中上位机的数据处理与数据存储基本满足了设计的要求,但是如果面对更大的复杂计算和现实难题,更多的数据处理与存储,那么数据的冗余问题就会成为程序运行与维护处理的难题。以自动泊车系统研究对象,本课题在理论上做了一定的基础性研究。

然而自动泊车系统是涉及的技术范畴广而且繁琐的车辆智能系统,如果真的

要走入现实生活,实现量产化和低成本化,在理论研究层面和实际摸索层面都亟需更为全面深入的研究探讨。期望能有更多志同道合的研发技术团队投入到自主泊车这一系统中,同时能引起相关部门的重视和国家资金扶持。我们有理由相信,用不了太长的时间,我们一定可以研发出可以批量生产、性价比高的自动泊车系统产品。让泊车不再是困难司机和驾驶员的难题,就如同傻瓜相机一样,让所有人都可以通过简单的步骤就可以实现安全准确的停车,让拥有自动泊车的车辆驶入寻常百姓家。

31