基于Qt/Embedded的物流信息终端导航定位功能设计
时间:07-28
来源:互联网
点击:
Qt/Embedded是奇趣科技推出的基于Linux的嵌入式平台开发工具,是Qt的嵌入式版本。由于KDE等项目均使用Qt作为支持库,所以许多基于Qt的X Windows程序可以非常方便地移植到Qt/Embedded版本上。Qt/Embedded具有面向对象、跨平台和界面设计方便美观等优点,已得到了广泛的应用。
本文针对当前物流行业终端定位功能的需求,提出与之相适应的物流终端定位功能实现方案,并利用Qt/Embedded,在基于嵌入式Linux和S3C2410的物流信息化终端平台上对终端定位功能进行了初步实现。
软硬件系统设计原理
基于现有网络建设的总体情况和物流配送过程中对定位数据的可靠性、连续覆盖性、精度的要求,并综合考虑各种定位技术的发展现状及技术成熟度、实现成本等因素,本系统在物流配送网络中采用了GPS辅助定位系统,即GPS+CellID+RFID+图形道路匹配相结合的定位技术。
系统的软硬件功能框图如图1所示,开发板CPU采用的是三星公司的S3C2410。该处理器内部集成了ARM公司ARM920T处理器核的32位微控制器。GPS模块利用RS232接口与开发板通信,提供卫星定位信号;GSM/GPRS模块提供通信以及CELLID定位信息获取;RFID模块提供标签信息采集和RFID定位功能。终端通过GSM/GPRS通信网络与物流信息控制中心建立联系,提交相关数据采集信息和接收物流信息控制中心指令。
图1 系统软、硬件功能框图
系统采用嵌入式Linux操作系统,移植Qt/Embedded 3.3.4和SQLITE数据库,采用Qt编程实现物流信息化终端定位功能。
软件系统设计
本文的软件系统设计主要以S3C2410平台为核心,通过RS-232串口从GPS模块、GSM/GPRS模块、RFID模块提取定位信息,加以分析转换,并根据需要用于终端导航或通过GSM/GPRS网络提交给物流信息控制中心。
宿主机开发环境建立
由于目标平台资源所限,需要搭建交叉编译环境,本系统开发过程中采用的平台如下:
宿主机:RED HAT 9.0
Qt/X11 3.3.4
Qt/Embedded 3.3.4
SQLITE 2.8.16
cross-2.95.3.tar.bz2
目标机:Linux Kernel 2.4.18
Qt/Embedded 3.3.4
SQLITE 2.8.16
Qt/Embedded 3.3.4移植
为了正确交叉编译Qt/Embedded,建议宿主机完全安装RED HAT 9.0,同时要确保UUID、ZLIB、JPEG、GIF、PNG、SQLITE等Qt中所需要的头文件、库文件在交叉编译前正确安装,并移植相应的库文件至目标机中,此类文件的具体安装在此不再赘述。下面主要对Qt/Embedded 3.3.4的交叉编译及移植进行详细讨论。
下载解压源文件
$ cd "
$ mkdir -p qt_embedded/
$ cd qt_embedded
$ wget ftp://ftp.trolltech.com/qt/source/qt-x11-free-3.3.4.tar.bz2
$ wget ftp://ftp.trolltech.com/qt/source/qt-embedded-free-3.3.4.tar.bz2
$ tar jxf qt-x11-free-3.3.4.tar.bz2
$ tar jxf qt-embedded-free-3.3.4.tar.bz2
$ mkdir -p qt-embedded-free-3.3.4-target/
$ sudo cp -r qt-embedded-free-3.3.4/ qt-embedded-free-3.3.4-target/
安装Qt/X11
$ cd qt-x11-free-3.3.4
$ export QTDIR=$PWD
$ export PATH=$QTDIR/bin:$PATH
$ export LD_LIBRARY_PATH =$QTDIR/lib:$LD_LIBRARY _PATH
$ echo yes | ./configure -thread -plugin-sql-sqlite -prefix /usr/local/ Qt-3.3.4/
$ make
$ sudo make install
安装Qt/E 3.3.4的宿主机版本
为便于在宿主机上进行嵌入式程序开发,利用qvfb进行虚拟嵌入式LCD屏幕显示。
$ cd ../qt-embedded-free-3.3.4
$ export QTDIR=$PWD
$ export PATH=$QTDIR/bin:$PATH
$ export LD_LIBRARY_PATH =$QTDIR/lib:$LD_LIBRARY _PATH
$ echo yes | ./configure -thread -plugin-sql-sqlite -prefix /usr/local/Qt-embedded-3.3.4-host -qvfb
$ make
$ sudo make install
$ sudo cp -r lib/FONTs/ /usr/local/Qt-embedded-3.3.4-host/lib/
安装Qt/E 3.3.4的目标机版本
$ cd ../qt-embedded-free-3.3.4-target
$ cp ../qt-x11-free-3.3.4/bin/uic bin/(注意:需拷贝uic工具的QT/X11版本至安装目录中)
由于Qt/E3.3.4没有专门针对触摸屏的配置选项,为了确保触摸屏能正常工作,可以利用现有的配置选项进行修改,以满足实际需要。现利用qt-mouse-Linuxtp修改触摸屏驱动。
修改src/embedded/qmouselinuxtp-qws.h,添加下面两行:
#define Qt_QWS_IPAQ
#define Qt_QWS_IPAQ_RAW
修改src/embedded/qmouselinuxtp-qws.cpp,把文件中/dev/**3600改为开发板ARM-Linux操作系统中相应触摸屏驱动的名称/dev/touchscreen/0raw。
$ echo yes | ./configure -embedded arm -shared -debug -no-cups -thread -plugin-sql-sqlite -no-ipv6 -qt-mouse-Linuxtp -prefix /usr/local/Qt-embedded-3.3.4-target -depths 16 -system-libpng -system-libjpeg
$ export QMAKESPEC=qws/linux-arm-g++
$ make
$ sudo make install
$ sudo cp -r lib/FONTs/ /usr/local/Qt-embedded-3.3.4-target/lib/
此时,将交叉编译的Qt/E 3.3.4的库文件下载至开发板中,并设置相应的环境变量QTDIR、PATH、LD_LIBRARY_PATH等。另外还要设置触摸屏环境变量如下:
$ export QWS_MOUSE_ PROTO=LinuxTP:/dev/touchscreen/0raw
$ export QWS_KEYBOARD=
此时,触摸屏可能仍无法工作或误差较大,其主要原因是开发板操作系统中/etc/pointercal文件不存在或该文件中对触摸屏进行调整的校准参数不正确,需对/etc/pointercal文件进行修改。修改方法有两种:一种方法是直接新建该文件,并在文件中按正确格式添加相应参数;另一种方法是交叉编译tslib-1.3.tar.bz2,将生成的校准程序拷贝至目标板,设置环境变量,运行校准程序,可直接生成高精度的/etc/pointercal文件。这里推荐使用第二种方法。
至此,Qt/E3.3.4便可在目标板上正确执行,移植完毕。
本文针对当前物流行业终端定位功能的需求,提出与之相适应的物流终端定位功能实现方案,并利用Qt/Embedded,在基于嵌入式Linux和S3C2410的物流信息化终端平台上对终端定位功能进行了初步实现。
软硬件系统设计原理
基于现有网络建设的总体情况和物流配送过程中对定位数据的可靠性、连续覆盖性、精度的要求,并综合考虑各种定位技术的发展现状及技术成熟度、实现成本等因素,本系统在物流配送网络中采用了GPS辅助定位系统,即GPS+CellID+RFID+图形道路匹配相结合的定位技术。
系统的软硬件功能框图如图1所示,开发板CPU采用的是三星公司的S3C2410。该处理器内部集成了ARM公司ARM920T处理器核的32位微控制器。GPS模块利用RS232接口与开发板通信,提供卫星定位信号;GSM/GPRS模块提供通信以及CELLID定位信息获取;RFID模块提供标签信息采集和RFID定位功能。终端通过GSM/GPRS通信网络与物流信息控制中心建立联系,提交相关数据采集信息和接收物流信息控制中心指令。
图1 系统软、硬件功能框图
系统采用嵌入式Linux操作系统,移植Qt/Embedded 3.3.4和SQLITE数据库,采用Qt编程实现物流信息化终端定位功能。
软件系统设计
本文的软件系统设计主要以S3C2410平台为核心,通过RS-232串口从GPS模块、GSM/GPRS模块、RFID模块提取定位信息,加以分析转换,并根据需要用于终端导航或通过GSM/GPRS网络提交给物流信息控制中心。
宿主机开发环境建立
由于目标平台资源所限,需要搭建交叉编译环境,本系统开发过程中采用的平台如下:
宿主机:RED HAT 9.0
Qt/X11 3.3.4
Qt/Embedded 3.3.4
SQLITE 2.8.16
cross-2.95.3.tar.bz2
目标机:Linux Kernel 2.4.18
Qt/Embedded 3.3.4
SQLITE 2.8.16
Qt/Embedded 3.3.4移植
为了正确交叉编译Qt/Embedded,建议宿主机完全安装RED HAT 9.0,同时要确保UUID、ZLIB、JPEG、GIF、PNG、SQLITE等Qt中所需要的头文件、库文件在交叉编译前正确安装,并移植相应的库文件至目标机中,此类文件的具体安装在此不再赘述。下面主要对Qt/Embedded 3.3.4的交叉编译及移植进行详细讨论。
下载解压源文件
$ cd "
$ mkdir -p qt_embedded/
$ cd qt_embedded
$ wget ftp://ftp.trolltech.com/qt/source/qt-x11-free-3.3.4.tar.bz2
$ wget ftp://ftp.trolltech.com/qt/source/qt-embedded-free-3.3.4.tar.bz2
$ tar jxf qt-x11-free-3.3.4.tar.bz2
$ tar jxf qt-embedded-free-3.3.4.tar.bz2
$ mkdir -p qt-embedded-free-3.3.4-target/
$ sudo cp -r qt-embedded-free-3.3.4/ qt-embedded-free-3.3.4-target/
安装Qt/X11
$ cd qt-x11-free-3.3.4
$ export QTDIR=$PWD
$ export PATH=$QTDIR/bin:$PATH
$ export LD_LIBRARY_PATH =$QTDIR/lib:$LD_LIBRARY _PATH
$ echo yes | ./configure -thread -plugin-sql-sqlite -prefix /usr/local/ Qt-3.3.4/
$ make
$ sudo make install
安装Qt/E 3.3.4的宿主机版本
为便于在宿主机上进行嵌入式程序开发,利用qvfb进行虚拟嵌入式LCD屏幕显示。
$ cd ../qt-embedded-free-3.3.4
$ export QTDIR=$PWD
$ export PATH=$QTDIR/bin:$PATH
$ export LD_LIBRARY_PATH =$QTDIR/lib:$LD_LIBRARY _PATH
$ echo yes | ./configure -thread -plugin-sql-sqlite -prefix /usr/local/Qt-embedded-3.3.4-host -qvfb
$ make
$ sudo make install
$ sudo cp -r lib/FONTs/ /usr/local/Qt-embedded-3.3.4-host/lib/
安装Qt/E 3.3.4的目标机版本
$ cd ../qt-embedded-free-3.3.4-target
$ cp ../qt-x11-free-3.3.4/bin/uic bin/(注意:需拷贝uic工具的QT/X11版本至安装目录中)
由于Qt/E3.3.4没有专门针对触摸屏的配置选项,为了确保触摸屏能正常工作,可以利用现有的配置选项进行修改,以满足实际需要。现利用qt-mouse-Linuxtp修改触摸屏驱动。
修改src/embedded/qmouselinuxtp-qws.h,添加下面两行:
#define Qt_QWS_IPAQ
#define Qt_QWS_IPAQ_RAW
修改src/embedded/qmouselinuxtp-qws.cpp,把文件中/dev/**3600改为开发板ARM-Linux操作系统中相应触摸屏驱动的名称/dev/touchscreen/0raw。
$ echo yes | ./configure -embedded arm -shared -debug -no-cups -thread -plugin-sql-sqlite -no-ipv6 -qt-mouse-Linuxtp -prefix /usr/local/Qt-embedded-3.3.4-target -depths 16 -system-libpng -system-libjpeg
$ export QMAKESPEC=qws/linux-arm-g++
$ make
$ sudo make install
$ sudo cp -r lib/FONTs/ /usr/local/Qt-embedded-3.3.4-target/lib/
此时,将交叉编译的Qt/E 3.3.4的库文件下载至开发板中,并设置相应的环境变量QTDIR、PATH、LD_LIBRARY_PATH等。另外还要设置触摸屏环境变量如下:
$ export QWS_MOUSE_ PROTO=LinuxTP:/dev/touchscreen/0raw
$ export QWS_KEYBOARD=
此时,触摸屏可能仍无法工作或误差较大,其主要原因是开发板操作系统中/etc/pointercal文件不存在或该文件中对触摸屏进行调整的校准参数不正确,需对/etc/pointercal文件进行修改。修改方法有两种:一种方法是直接新建该文件,并在文件中按正确格式添加相应参数;另一种方法是交叉编译tslib-1.3.tar.bz2,将生成的校准程序拷贝至目标板,设置环境变量,运行校准程序,可直接生成高精度的/etc/pointercal文件。这里推荐使用第二种方法。
至此,Qt/E3.3.4便可在目标板上正确执行,移植完毕。
Linux 嵌入式 S3C2410 GPS RFID ARM LCD 触摸屏 相关文章:
- 多核及虚拟化技术在工业和安全领域的应用(05-23)
- 一种可信增强的访问控制框架的设计与实现(05-26)
- ARM在数字化远程视频监控系统的应用(05-20)
- 无线IP视频监控应用即将井喷,Blackfin助您赢得先机(07-23)
- 多媒体远程联动智能监控终端的设计(10-20)
- 具有远程监控功能的视频服务器设计(01-13)
