微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于北斗二代的飞机除冰车定位系统设计

基于北斗二代的飞机除冰车定位系统设计

时间:10-08 来源:互联网 点击:

inux系统制作、应用程序编写、图形界面设计。系统主程序框架如图5所示。

3.2 系统制作

Linux系统开发主要包括bootloader制作、Linux内核裁剪、字符设备驱动的添加及根文件系统的制作。

系统采用u-boot-1.1.6源码制作bootloader,主要完成对于硬件的初始化及运行代码的搬移工作,在u-boot的设计中,需使用软浮点交叉编译器进行编译;内核以Linux-2.6.31源码为基础进行裁剪编译,添加对于NAND FLASH、LCD等硬件及Yaffes2文件系统的支持,并添加DS18B20及A/D驱动程序;根文件系统采用Yaffes2文件系统进行制作,Yaffes2文件系统为专门针对NAND FLASH所设计的文件系统。

3.3 应用程序

应用程序主要实现TCP/IP连接及数据采集与发送。应用程序流程框图如图6所示。

程序采用多线程技术实现对于数据的采集与发送。在车载端上电后S3C2440A通过向串口发送AT指令实现车载端与上位机的连接。在连接成功后,线程启动开始工作。

程序定义一个全局变量buf[],用于存储、发送采集到的数据,并利用多线程技术实现对于buf[]的操作,通过信号量实现对于数据采集与发送的同步操作。首先初始化两个信号量:sere1和sere2。代码如下:

sem_init(sem1,0,1);

sem_init(sem2,0,0);

程序首先对sem1、sem2进行P操作,此时sem1=0,sem20,数据采集线程执行,对数据进行采集并放入全局变量buf[]中,而后对sem2进行V操作sem2=0,数据发送线程执行,将数据发送至上位机,并对sem1进行V操作,sem1变为1,此时重复执行之前的步骤对数据进行采集与发送。通过对线程的PV操作实现数据采集线程与发送线程对全局变量buf[]的顺序访问。

但由于GTM900B是以ASCII码的形式发送数据,因而在数据传输前需对数据进行格式转化。数据转换程序如下:

for(i=0;i2024;i++){

if(*g!=‘\0’)

j+=sprintf(buf+j,“%02x”,*g++);

}

*g为待转换的字符串指针,buf为转换后的字符串。

3.4 图形界面设计

图形界面主要用于油位及除冰液液位等参数的虚拟仪表显示,界面显示图如图7所示。界面采用Linux系统下的Qtcreator进行开发,图中Olevel仪表显示除冰车的油位,Llevel显示除冰液的液位,Tem显示除冰液的温度,报警灯主要实现油量快耗尽时的报警功能。

图形界面的设计,可以减少系统的硬件成本,且显示界面可根据需求增加相应的功能,便于后期的扩展。界面仪表通过信号与槽的形式实现与硬件的交互,如温度显示函数为:

结语

在项目设计中以S3C2440A处理器为核心,采用我国自主研制的北斗技术实现对于除冰车的定位操作,并在车载终端实现了对于除冰车油位、除冰液参数的实时显示,并将参数连同定位信息一同传输至上位机,实现对于除冰车更加合理化的调度。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top