项目没做完呢,就开始总结了,因为主要工程框架都已经完成了,就差两个函数就可以完成了,虽然还没有测试,现在只记录一下做了这个小项目目前为止的感悟吧。
第一:做一个工程之前,必须先写好工程描述文件,以及工程规划文!!!!!!!!!!!!!!这是我做这个小项目的最大的感触。
第二:写工程描述、规划文件时进行必要的白板讨论,通过讨论尽量将工程内容细化,便于分工。(我们没有进行此项,因为项目比较小,随便讨论了一下制作目标的功能,功能较少。但是仍然出现了巨大的问题,由于GPS模块和短信模块都需要一个串口通信,我们原来用的stc51,弄了半天模拟串口通信,恶心的要死,最后还是换了芯片STC12,导致工程延期,恶心)
第三:进行必要的管理,将每个人的工作结果发送到git(或其他的版本控制软件上),有利于技术经验的积累和分享。(这次我们没有进行代码管理,因为代码量比较小,只有几个主要的函数,只是写了一些笔记)
*********************************************内容分割线******************************************************************
下面将我们的小项目拿出来丢丢人
我们做的一个是关于车辆定位的小东西:
直接复制的工程描述文件:
实际过程:
车辆停靠在某地后,硬件处于待机状态,当收到手机发送来的请求位置信息后,硬件向手机发送一个车辆位置短信。当车辆被移动时,硬件检测出位移,向手机发送车辆被移动的警告信息。手机端接收到警告信息后,可选择向硬件端发送监视短信,硬件进入监视状态,每隔一段时间向手机发送一次位置信息,当收到手机发送的监视停止信息时,返回到待机状态。如果硬件没有收到监视短信,则还是原来的待机状态。
硬件基本功能:
1.接收手机发送来的请求位置信息,硬件向手机发送一个车辆位置短信。
2.当车辆被移动时,硬件检测出位移,向手机发送车辆被移动的警告信息。
3.接收到监视短信后,硬件进入监视状态,每隔一段时间向手机发送一次位置信息。
4.当收到手机发送的监视停止信息时,返回到查询位移状态。
5.接收忽略短信后。硬件进入挂起状态,忽略此次位移警告,直到接收到请求位置短信,返回查询位移状态。
程序模块:
宏定义:
uchar FLAG:标识发送那种短信
uchar FUNC_PROC:标志进入哪个基本功能模块
uchar WATCH:监视状态标志
串口初始化函数
GPS初始化函数
SIM初始化函数
GPS位置接收函数
GPS位置移动监测函数
SIM短信发送函数
SIM模块接收函数
SIM短信处理函数
主函数
主函数逻辑描述:
1.初始化;
2.主循环:
switch func_proc
func_proc = 0:等待
func_proc = 1:接收定位,判断位移 :发生位移,发送警告短信,修改funct_Proc = 0
func_proc = 2:进入短信接收与识别模块 修改func_proc = 3 flag = x
func_proc = 3:switch flag
flag= 1:发送位置短信,修改func_proc = 1;
flag = 2:进入监视模块
flag = 3:停止监视,修改func_proc = 1;
短信串行接收中断:
修改func_proc = 2;
串行接收函数功能:
串口1.接收GPS位置信息
串口2.接收SIM短信模块返回内容,修改func_proc = 2;
主要的子函数设计:
串口初始化函数:void Serial_Init()
//初始化两个串口的波特率定时器等
GPS初始化函数:void GPS_Init()
SIM初始化函数: void SIM_Init()
GPS位置接收函数:void GPS_Pos()
GPS位置移动监测函数:void GPS_Move()
SIM短信发送函数:void SIM_Send(uchar *str)
//接收FLAG。
//str为定位位置内容指针,没有内容要发送时为NULL
SIM模块接收函数:void SIM_Get()
//向SIM模块发送指令,获取短信内容
SiM短信处理函数:void SIM_Proc()
//识别短信内容,修改FLAG标志
其他函数:。。。。。。。
主函数流程图: