Windows CE平台下排队机呼叫系统的移植研究

时间:2022-09-08 08:29:42

Windows CE平台下排队机呼叫系统的移植研究

摘 要:Windows CE作为一种嵌入式系统在实际应用中取得了良好的效果。为了缩短嵌入式软件的开发周期,节约成本,满足日益增大的嵌入式系统应用软件需求,探讨程序移植方法在嵌入式软件开发中的可行性。介绍一种将现有的Windows程序移植到Windows CE平台的方案,该方案在原有的Windows程序基础上,通过调整字符长度,修改Windows CE平台不兼容的MFC和API函数,实现了嵌入式软件的移植。采用该方案成功地将一套Windows平台下排队机呼叫系统移植到Windows CE平台上,实现了其原有的功能。实践表明程序移植是进行嵌入式软件开发的一种行之有效的方法。

关键词:系统移植;Windows CE;Unicode;嵌入式系统

中图分类号:TP311文献标识码:A

文章编号:1004-373X(2010)02-028-03

Transplanting Research of the Queue Call System on Windows CE Platform

FENG Ansong,CHEN Gu,WANG Ying

(Shenyang Institute of Chemical Technology,Shenyang,110142,China)

Abstract:Windows CE as an embedded system in practical applications has achieved good results.In order to shorten embedded software development cycle,save costs and meet the growing demand for embedded systems applications,the possibility of transplant procedures in the embedded software,and a program of transplanting a Windows program into Windows CE platform are presented.Based on the original Windows program,the embedded software transplant is achieved,by adjusting the length of characters and modifying the MFC and API functions.Through the method,a queue system is transplanted to the Windows CE platform,and its original functions are realized.This example shows that the transplant procedure is the development of embedded software for an effective method.

Keywords:system transplant;Windows CE;Unicode;embedded system

收稿日期:2009-09-21

0 引 言

随着嵌入式技术的不断发展和完善,各种嵌入式系统得到广泛的应用,Windows CE以其对设备的完善支持和良好的用户界面得到众多厂商的青睐,在Windows CE下快速开发应用程序成为各个公司广泛关注的问题。由于现有的Windows程序不能直接在Windows CE平台上运行,将现有的Windows程序移植到Windows CE下成为嵌入式软件开发的一种现实而有效的方法。

Windows CE提供了EVB,EVC和Visual Studio等多种嵌入式的开发工具,在此将介绍VC程序向EVC中移植的具体的实现过程。EVC是Microsoft专门提供的一种嵌入式开发工具,与传统的Visual C++相比,EVC支持大多数的MFC和ATL类,包含标准的Win32 API子集,而且EVC为各种不同的硬件设备提供了不同的编译器,能够快速地进行嵌入式应用程序开发\。

1 移植要点

Windows CE是一种Unicode环境。它支持ASCII函数以实现文本文件交换,但其原有的文本格式是Unicode\。所以必须将ASCII应用程序转换为Unicode程序。

Windows CE API是Win32 API的一个子集,而且其中部分函数的功能已精简,当从PC平台移植已有的Win32应用程序到Windows CE时,应当检查相关的API函数是否被Windows CE平台所支持\,对于不被支持的API函数应当精简相关的功能。

基于Windows CE 的MFC设计遵循了标准MFC的功能和特性,但是它们在所提供的类和类的功能上还是有很大的不同。对于用标准MFC编写的应用程序,在移植的过程中要检查使用的类、方法和属性在Windows CE中是否兼容\。

大多数标准的Windows控件和公用控件仍然被支持,但是有一定的限制。Windows CE下使用ActiveX控件与Windows下不同之处是要编译两个版本的OCX,一个安装到Windows上,这样就可以在EVC环境下使用该OCX进行编程,一个安装到WinCE上,用于使用这个OCX的程序调用。

VC程序是面向Win32平台开发的,而EVC是面对具体各种不同的硬件环境的,可以通过Platform Builder定制不同的硬件环境下的SDK。程序的开发和调试过程可以在Windows CE仿真环境下进行\。但是由于受到硬件环境的制约,Windows CE必须精简部分功能,简化操作界面:例如由于Windows CE屏幕大小的限制\,Windows CE的命令栏包含了Windows中的工具和菜单栏,但是命令栏没有停靠功能,被指定在屏幕的顶部,并且具有一个新的API。

2 实例分析

在此将一套Windows环境下运行的排队机系统移植到Windows CE环境下。

2.1 排队机系统介绍

排队机系统是一种综合运用计算机技术、网络技术、多媒体技术、通讯控制技术的高新技术产品,能有效地代替客户进行排队,适用于各类窗口服务行业,目前已经广泛应用于银行、医院等行业。使用排队机系统,一方面可消除客户长时间“站队”的辛苦、对“站错队”、“插队”的抱怨,全面改善服务质量和企业形象,另一方面可以依据统计数据调整业务分配、挖掘潜力、合理安排窗口服务,减少客户的等候时间,提高办事效率。排队机程序在运行时的流程图如图1所示。

图1 排队机呼叫系统业务流程

2.2 硬件环境

这里使用的嵌入式平台是广州友善之臂的QQ2440V3,它采用Samsung S3C2440为微处理器,集成了多种设备接口,外接LCD触摸显示屏,并采用专业稳定的CPU内核电源芯片和复位芯片来保证系统运行时的稳定性。相比较以往的Windows平台,基于ARM的嵌入式平台具有体积小、功耗低、处理能力强等诸多优点。

图2是排队机的硬件组成情况。

2.3 移植实例

移植时EVC提示的错误分类及相对应的解决方法如下:

Error C2664: ′void_cdecl CString::Format (const unsigned short *...)′: cannot convert parameter 1 from ′char [17]′ to ′const unsigned short *′

Error C2664: ′strcpy′:cannot convert parameter 1 from ′unsigned short [14]′ to ′char *′

图2 排队机硬件组成

类似错误是移植过程中出现最多的一类错误,Windows CE系统是一个基于Unicode编码的系统,在移植过程中可以使用TEXT宏和_T宏进行字符串映射,将相对应的ASCII数据转换成对应得Unicode形式\。如果使用C Runtime Library中的字符串处理function,那么就要改为wcs打头而不是以str打头,例如“strcpy”“wcscpy”,在Windows CE中有专门向对应的宽字符处理函数对字符串进行处理。

Error C2039: ′Format′: is not a member of ′CTime′

查阅EVC中MSDN关于CTime 类的说明:MFC for Windows CE does not support the following methods of the CTime class:GetGmtTm;Format;Format_Gmt。有些类在Windows下的功能在Windows CE下就不被支持,在调试的过程中就必须根据实际情况做出调整。例如上面的CTime类中的Format子类在Windows CE下就不被支持,为了程序的正常运行必须删除这个子类\。相对应的程序在此处的功能就被精简。

Fatal error C1189:#error:Database classes not supported in this library variant

因为ODBC不支持Unicode,所以MFC中数据库的类不是完全支持的,在Windows CE中使用数据库时必须使用Microsoft专门提供的SQLCE来实现\。在Windows CE下访问SQLCE数据库时,不仅要在Windows上的包含必须ADOCE的头文件和相关数据库操作类的支持,而且在Windows CE运行的硬件平台上还要注册相关的OCX和一些必须的动态链接库,只有这样才能正常地访问数据库\,下面的代码为作者编写的注册OCX程序:

BOOL CDBaseDaraSql::RegisterOCX (CString pszDLLName)

HINSTANCE hLib=LoadLibrary (pszDllName);

FARPROC lpDllEntryPoint;

LpDllEntryPoint=GetProcAddress (hLib,_T ("DllRegisterServer"));

而运行SQLCE时所需要的动态链接库如下所示:

PathDes [0]= L"\\Windows\\adoce31.dll";

PathDes [1]= L"\\Windows\\adoxce31.dll";

PathDes [2]= L"\\Windows\\msdaer.dll";

PathDes [3]= L"\\Windows\\msdaosp.dll";

PathDes [4]= L"\\Windows\\ssce20.dll";

PathDes [5]= L"\\Windows\\ssceca20.dll";

PathDes [6]= L"\\Windows\\ssceerror20en.dll";

PathDes [7]= L"\\Windows\\msdaeren.dll";

PathDes [8]= L"\\Windows\\msdaeres.dll";

PathDes [9]= L"\\Windows\\msdaerde.dll";

PathDes [10]= L"\\Windows\\adocedb31.dll";

PathDes [11]= L"\\Windows\\adoceoledb31.dll";

只有在注册相关的动态链接库后才能在设备上建立SQLCE下的数据库文件,图3是在设备上注册相关组件后使用ISQLW 2.0创建的数据库文件。

图3 数据库的创建

将上面提到的地方进行修改后程序能够正常在QQ2440V3的平台上运行,基本保证了原有排队机功能。

3 结 语

在掌握两种操作系统的区别后能很快地实现Windows程序向Windows CE平台的移植,能使软件开发人员快速地掌握嵌入式软件开发,给嵌入式软件开发提供了一个快捷而有效的方法。

参考文献

[1]傅曦,齐宇.嵌入式系统Windows CE开发技巧与实例[M].北京:化学工业出版社,2003.

[2]周立功.ARM & WinCE实验与实践:基于S3C2410[M].北京:北京航空航天大学出版社,2007.

[3]周毓林.Windows 内核定制及应用开发[M].北京:电子工业出版社,2005.

[4]Nick Grattan Marshall Brain.Windows CE 3.0 Application Programming[S].Prentice Hall PTR,2000.

[5]Mike Thomson.Windows Real_time[N].2003.

[6]田东风.Windows CE 应用程序设计[M].北京:机械工业出版社,2003.

[7]张湘,肖建.嵌入式系统和嵌入式操作系统[EB/OL].中国机电一体化网,2004.

[8]杜春雷.ARM体系结构与编程[M].北京:清华大学出版社,2003.

[9]周振喜,戴国俊.Windows应用程序移植到Windows CE下的策略[J].计算机工程与设计,2004(9):1 560_1 562,1 571.

[10]汪兵,李存斌,陈鹏.EVC高级编程及其应用开发[M].北京:中国水利水电出版社,2005.

上一篇:电偶极子天线的辐射电阻 下一篇:一种油管缺陷无损检测系统的实现