??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品成人欧美大片,无码人妻少妇久久中文字幕蜜桃 ,精品久久久久中文字http://www.shnenglu.com/xiaoyun/archive/2006/04/13/5450.htmlUd开?/dc:creator>Ud开?/author>Thu, 13 Apr 2006 03:55:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5450.htmlhttp://www.shnenglu.com/xiaoyun/comments/5450.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5450.html#Feedback0http://www.shnenglu.com/xiaoyun/comments/commentRss/5450.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/5450.htmlhttp://www.newlc.com/Comment-recuperer-le-code-IMEI-d.html

]]>
The PKG file formathttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5449.htmlUd开?/dc:creator>Ud开?/author>Thu, 13 Apr 2006 03:49:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5449.htmlhttp://www.shnenglu.com/xiaoyun/comments/5449.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5449.html#Feedback0http://www.shnenglu.com/xiaoyun/comments/commentRss/5449.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/5449.htmlhttp://www.newlc.com/How-to-create-a-SIS-file-Part-II.html

]]>
Common products UIDshttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5448.htmlUd开?/dc:creator>Ud开?/author>Thu, 13 Apr 2006 03:48:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5448.htmlhttp://www.shnenglu.com/xiaoyun/comments/5448.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5448.html#Feedback0http://www.shnenglu.com/xiaoyun/comments/commentRss/5448.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/5448.htmlThis is the list of UID you can use in your PKG file to specify the target platform of your application:

Series 60

Series 60 v0.9   0x101F6F88
Series 60 v1.0   0x101F795F
Series 60 v1.1   0x101F8201
Series 60 v1.2   0x101F8202
Series 60 v2.0   0x101f7960
Series 60 2nd Edition FP1   0x101F9115
Series 60 2nd Edition FP2   0x10200BAB
Series 60 2nd Edition FP3   0x102032BD
Nokia 3650   0x101F7962
Nokia 6600   0x101F7963
Nokia 6620   0x1020216B
Nokia 6630   0x101F7964
Nokia 6680   0x10200f99
Nokia 7610   0x101FD5DB
Nokia 7650   0x101F6F87
Nokia N-Gage   0x101F8A64
Siemens SX1   0x101F9071

Series 80

Series 80 v2.0   0x101F8ED2
Nokia 9300   0x101F8ED1
Nokia 9500   0x101F8DDB

UIQ

UIQ v2.0   0x101F617B
UIQ v2.1   0x101F61CE
SonyEricsson P80x   0x101F80BE
SonyEricsson P90x   0x101FBB35

Development platforms

Series5mx   0x1000118a
Brutus board   0x10005f60
Cogent board   0x10005f61
Win32Emulator   0x10005f62
WinC   0x10005f63
CirrusLogic 7211 board   0x1000604f

How to use the UIDs

These UIDs shall be used in your PKG file to specify on which platform (or phone) your application will work. As an example, an application running on UIQ 2.0 platform will have the following line in its PKG:

(0x101F617B), 2, 0, 0, {"UIQ20ProductID"}

It is generally preferable to use the Series 60 vX.X UIDs unless your application is only targeted at a very specific phone. It is also preferable to use the lowest possible UID (ex: do not use the Series 60 v2.0 UID if you do not use the Series 60 v2.0 specific APIs, even if you use the corresponding SDK).

The following are specific UIDs you should not need unless you are working on a specific development board:


Series 60 3rd edition (OS9.1)

[0x101F7961], 0, 0, 0, "S60ProductID"


Series 90 / Nokia 7710

(0x101FBE05), 0, 0, 0, "Series90ProductID"
Nokia 6680 - 0x10200f99




0x101F61CE - UIQ21ProductID and 0x101Fbb35 - SonyEricssonP90xPlatformProductID


]]>
Getting Started with Metrowerks Codewarriorhttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5447.htmlUd开?/dc:creator>Ud开?/author>Thu, 13 Apr 2006 03:40:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5447.htmlhttp://www.shnenglu.com/xiaoyun/comments/5447.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5447.html#Feedback0http://www.shnenglu.com/xiaoyun/comments/commentRss/5447.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/5447.htmlhttp://www.newlc.com/Getting-Started-with-Metrowerks,303.html

]]>
How to install UIQ SDK for Metrowerks CodeWarrior and Borland C++BuilderX on a single machinehttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5446.htmlUd开?/dc:creator>Ud开?/author>Thu, 13 Apr 2006 03:31:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5446.htmlhttp://www.shnenglu.com/xiaoyun/comments/5446.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5446.html#Feedback0http://www.shnenglu.com/xiaoyun/comments/commentRss/5446.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/5446.htmlhttp://www.newlc.com/How-to-install-UIQ-SDK-for.html

]]>
Symbian OS Error Codeshttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5445.htmlUd开?/dc:creator>Ud开?/author>Thu, 13 Apr 2006 03:28:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5445.htmlhttp://www.shnenglu.com/xiaoyun/comments/5445.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5445.html#Feedback1http://www.shnenglu.com/xiaoyun/comments/commentRss/5445.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/5445.htmlhttp://www.newlc.com/Symbian-OS-Error-Codes.html

]]>
明确开发对象,SDK工具下蝲http://www.shnenglu.com/xiaoyun/archive/2006/04/13/5443.htmlUd开?/dc:creator>Ud开?/author>Thu, 13 Apr 2006 03:25:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5443.htmlhttp://www.shnenglu.com/xiaoyun/comments/5443.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/04/13/5443.html#Feedback0http://www.shnenglu.com/xiaoyun/comments/commentRss/5443.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/5443.html如果你初ơ接触Symbian OS 的编E,需要对一些基概念有一个认识。什么是Symbian、什么是UIQ、什么是诺基亚的Series 60q_Q这个指南会帮助你了解这些问题?br />W一步,首先明确开发的对象
首先了解你要在哪Ƅ动终端上作开发,如烦qP800q是诺基亚的N-Gage。即佉K是Symbian OSQ还是不能完全兼宏V因为Symbian OS只是底层的操作系l和中间件。其上还有用户GUI界面pȝ。GUI界面不是由Symbian直接授权Q而是q端厂商独立开发或者是由提供GUI的^台厂商授权?br />Symbian OS上目前有3U主要的GUI
Nokia Series 60
Nokia Series 80
UIQ
下表有对用户界面作了一个简要的归纳

W二?开发环境的选择
一旦确定了q_Q就要选择合适的SDK工具包和IDE集成开发环境?br />目前有三U主要的选择Q?br />Visual Studio .NET
CodeWarrior
C++ Builder
选择开发环境的原则是选择你最熟悉的,当然Q如果你已经在用CodeWarriorQ那么l用,q个开发环境可以面向所有的q_Q包括诺Z的S60和UIQ?br />如果在诺Z的S60q_上开发,那么Borland的C++ Builder是个不错的选择。可以让你得到完全免费的开发环境?br />如果你还有Visual Studio 6.0的IDEQ开发S60上的应用可能会受C些限制。用这个开发环境的好处在于Q?br />可以配合使用诺基亚最新的SDK
拥有最好的应用E序向导Q对开发小的应用很有帮?br />比CodeWarrior?/p>

W三步,你需要什么样的PC
大多数的PC都满Symbian的开发要求。只需要有_的内存和Windows NT?000或者XP的系l?/p>

W四步,下蝲和安装SDK
    下面的链接帮助你扑ֈ合适的IDE和SDK:



]]>
如何使用VC6调试Symbian UIQ E序http://www.shnenglu.com/xiaoyun/archive/2006/04/11/5262.htmlUd开?/dc:creator>Ud开?/author>Tue, 11 Apr 2006 01:05:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/04/11/5262.htmlhttp://www.shnenglu.com/xiaoyun/comments/5262.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/04/11/5262.html#Feedback0http://www.shnenglu.com/xiaoyun/comments/commentRss/5262.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/5262.html 如何使用VC6调试Symbian UIQ E序

在命令行下用abld可以直接~译Symbian的程序,但是abld同时提供了命令行开兛_以用来生成vc6的项目文件。用abld生成的vc6的工E文Ӟ我们可以在vc6中调试symbian的程序了。步骤如?/p>

  1. devices -setdefault @UIQ_21:com.symbian.UIQ
  2. abld makefile vc6
  3. 用VC6打开的生成在 \epoc32\build\\UIQEXAMPLES\HELLOWORLD\HELLOWORLD\WINS目录下的HelloWorld.dsw目文g?
  4. 讑֮Debug用的宿主E序为\EPOC32\RELEASE\WINS\UDEB\EPOC.EXE
  5. Debugq行E序Q就可以调适程序单步执行,或者在断点上定位?

一、HellowordCZQ?/p>

首先查SDK是否能够正常q行Q?br />q入一个DOS界面
输入"NMAKE"Q如果得到Microsoft Error message U1064的错误提C,查你的\径配|是否正。如果提CNMAKE is not a recognised commandQ需要运行\径ؓC:\Program Files\Microsoft Visual Studio\VC98\Bin 下的VCVARS32.BAT脚本?/p>

 在DOS下进入HellowWorldQ\径ؓC:\Symbian\6.1\Series60\Epoc32Ex\Basics\HelloWorld
q个目录下包?个文Ӟ
bid.inf
helloworld.mmp
helloworld.c

Bid.inf文g是主要的Project文g

HelloWorld.mmp是一个project makefile.包括所有源文g和库的列?

HelloWord.cpp是C++代码

CommonFramework.h是一个头文gQThe CommonFramework.h set up a basic console environment and calls a doExampleL() primitive: this is an extremely useful file to begin playing Symbian C++ without the burden of NS60 specific code (you can also read A simple text console if you want to know more about this console).


二、命令行~码Q?br />
    在DOS环境下输?bldmake bldfiles.会在Project目录下创Z个ABLD.BAT文gQ这是编译程序的入口文g?/p>

输入abld build wins udebq行~译。编辑后的结果存在C:\Symbian\6.1\Series60\Epoc32\Release\wins\UDEB目录下。输入Helloworld可以在epoc模拟器下q行"Hello world"E序了?/p>

三、用Visual C++
你也可以用C++~译和执行应用程序?br />回到C:\Symbian\6.1\Series60\Epoc32Ex\Basics\HelloWorld
用命令生成一个Visual C++ workspaceQabld makefile vc6
在下面的目录可以扑ֈC:\Symbian\ 6.1\ Series60\ Epoc32\ BUILD\ SYMBIAN\ 6.1\ SERIES60\ EPOC32EX\ BASICS\ HELLOWORLD\ HELLOWORLD\ WINS
打开q个workspaceq新编译,用CTRL-F5开始运行?/p>


四、目标编?br />现在需要在你的Ud讑֤上运行这个程序,回到DOS下,q入C:\Symbian\6.1\Series60\Epoc32Ex\Basics\HelloWorld
用abld命o~译abld build thumb urel



]]>
Symbian UIQ 2.1开发之环境讄http://www.shnenglu.com/xiaoyun/archive/2006/04/11/5261.htmlUd开?/dc:creator>Ud开?/author>Tue, 11 Apr 2006 01:04:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/04/11/5261.htmlhttp://www.shnenglu.com/xiaoyun/comments/5261.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/04/11/5261.html#Feedback0http://www.shnenglu.com/xiaoyun/comments/commentRss/5261.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/5261.html Symbian UIQ 2.1开发之环境讄

ZSymbian UIQ 2.1的系l的开发环境安装?/p>

  1. 首先机器上要安装有VC 6.0的开发环境,Symbian的程序可以用VC 6.0来编译?
  2. 然后是上Symbian的网站上下蝲UIQ 2.1的开发SDKQ注意SDK针对不同的编译器有两个不同的版本Q这里我用VC 6来编译所以下的是For Codewarrior的那个版本,不要下蝲for BCB的版本。最新版本的文g名如?
    • UIQ 2.1 SDK WINS.zip
    • uiq21_update1_wins.zip
  3. 安装完UIQ 的SDK后,在命令行下输入下列命令,q行讑֤的设|?
    1. >devices
      UIQ_21:com.symbian.UIQ
      UIQ_21:com.symbian.UIQ-runtime
    2. >epoc @UIQ_21:com.symbian.UIQQ如果安装正常的话这条命令会启动UIQ的标准模拟器?
  4. 最后,UIQ2.1SDK安装路径下的例子E序拯到目录下Q下面的命o用来~译和安装BasicAppq个例子E序?
    1. >cd \UIQExamples\BasicApp
    2. >bldmake bldfiles @UIQ_21:com.symbian.UIQ
    3. >abld build wins udeb @UIQ_21:com.symbian.UIQ
  5. 再次启动模拟器,可以看到编译后的BasicAppq行在系l中了?


]]>
Symbianpȝ字体,全局变量http://www.shnenglu.com/xiaoyun/archive/2006/03/10/3980.htmlUd开?/dc:creator>Ud开?/author>Fri, 10 Mar 2006 08:32:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/03/10/3980.htmlhttp://www.shnenglu.com/xiaoyun/comments/3980.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/03/10/3980.html#Feedback0http://www.shnenglu.com/xiaoyun/comments/commentRss/3980.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/3980.htmlCCoeEnv::Static()->NormalFont()
CEikonEnv::Static()->AnnotationFont()
CEikonEnv::Static()->TitleFont()
CEikonEnv::Static()->LegendFont()
CEikonEnv::Static()->SymbolFont()
CEikonEnv::Static()->DenseFont()

全局变量Q?BR>   #include <coemain.h>
   LIB: cone.lib
   引用实例Q取全局AppUIQ?BR>                CMainShellAppUi* appUi = static_cast<CMainShellAppUi*>(CCoeEnv::Static()->AppUi());

*****************************************************************************************

CONE分析初步

1.1 l承关系

CEikonEnv --> CCoeEnv ,MApaAppStarter -->CActive, CBase.

q个cLw是不能用来被承的。主要的作用是给所有的 Uikon ?controls 提供一个运行的环境。这些环境包括很多项Q比如说环境字体Q环境图片,资源文g{等。所?CEikonEnv 提供一pd的工具函敎ͼ用于使用q些I间。每?Uikon ?appication 都有一个由 application framework 提供?CEikonEnv 的实例,?application 中可以用

CEikonEnv::Static() 或?EikApplication 的宏 iEikonEnv 来用这?CEikonEnv ?BR>
1.2 功能分析

CEikonEnv提供了一pd的功能。包括:

【Text的处理?BR>
·取得当前的环境(enviromentQ字体:
const CFont* font = iEikonEnv->NormalFont();

· 取得当前的环境(enviromentQ标准符号字体:
const CFont* font = iEikonEnv-SymbolFont();

·cM的字体函敎ͼ
AnnotationFont() / TitleFont() / LegendFont() /DenseFont() ;

【AlertWin的处理?BR>
iEikonEnv->AlertWin(text);用于昄一个alert windows?BR>
【Resource readers ?resource files?BR>
·Ҏ resourceId 把资源文件的内容d?TBuf 中:

CEikonEnv 提供了一pd的函数来d资源文g的内容,基本的函数用法如?BR>
TBuf<KAknExFormTitleBufLength> titleText( NULL );
iEikonEnv->ReadResource( titleText, resourceId );

· Ҏ resourceId 把资源文件的内容dC个resource reader中:

q个 resource reader 可以用于后箋之用Q这?resource reader 被放|在cleanup stack上?BR>q个 resource reader 的主要作用在可以通过资源文g创徏控gQ如下:

CCoeControl::ConstructFromResourceL();

【AccessQ访问函敎ͼ?BR>
·在这个范围内主要的函数是QAppUiFactory()。这个函数的主要作用是返回一?BR>
MEikAppUiFactory 对象指针QThis class defines a mixin interface to break

the dependency of the Uikon Application User Interface on controls。用法如下所C:

CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();

q样p得了 application ?status spaneQ通过q个指针可以访问其?sub status spaneQ如下:

CAknTitlePane* titlePane = (CAknTitlePane *)sp->ControlL(TUid::Uid(EEikStatusPaneUidTitle));

q样Q就可以在运行的时候动态更改status spane的内宏V?BR>
另外Q如果appuil承自CEikAppuiQ那么可以采用下面的ҎQ?BR>
CEikStatusPane *sp = ((CAknAppUi*)iEikonEnv->EikAppUi())->StatusPane();




]]>
Symbian 技术调?/title><link>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3495.html</link><dc:creator>Ud开?/dc:creator><author>Ud开?/author><pubDate>Sat, 25 Feb 2006 05:26:00 GMT</pubDate><guid>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3495.html</guid><wfw:comment>http://www.shnenglu.com/xiaoyun/comments/3495.html</wfw:comment><comments>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3495.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/xiaoyun/comments/commentRss/3495.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/xiaoyun/services/trackbacks/3495.html</trackback:ping><description><![CDATA[<P align=center><STRONG><SPAN lang=EN-US style="FONT-SIZE: 13.5pt; COLOR: red; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Symbian </SPAN><SPAN style="FONT-SIZE: 13.5pt; COLOR: red; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">技术调?/SPAN></STRONG></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体>1</FONT></SPAN><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>描述</FONT><FONT face=宋体><SPAN lang=EN-US> <BR>Symbian</SPAN>不仅仅是一个操作系l的名称Q而是一个公司、一个阵营、一个手机垄断联盟的代名词?SPAN lang=EN-US>Symbian</SPAN>是由<SPAN lang=EN-US><A ><U><SPAN lang=EN-US style="COLOR: blue"><SPAN lang=EN-US>诺基?/SPAN></SPAN></U></A></SPAN>、摩托罗拉、松下、爱立信?SPAN lang=EN-US>Psion</SPAN>共同创办q拥有的公司。该公司的命是为移动无U操作系l制订标准,q无线信息讑֤大规模投入市场?SPAN lang=EN-US>Symbian</SPAN>q_是迄今ؓ止最令h振奋?SPAN lang=EN-US>C</SPAN>Q+~程pȝ之一Q它使用?SPAN lang=EN-US>EPOC</SPAN>q种最初由<SPAN lang=EN-US>Psion</SPAN>开发的软g架构。这U具有面向对象设计的操作pȝ融合了手持设备所需的多U功能,包括集成于内怸的电源管理功能、尖端的存储理能力、事件处理机制、高效的多Q务能力等。ؓ了有效地利用q些Ҏ,q引入了一l与此相关的原始<SPAN lang=EN-US>C</SPAN>Q+形式?SPAN lang=EN-US>API</SPAN>。此外,该系l的设计q保证能适用于不同的<SPAN lang=EN-US>CPU</SPAN>和硬仉|。此举得基?SPAN lang=EN-US>EPOC</SPAN>的系l能与无U信息设备、便携式计算机和<SPAN lang=EN-US>PC</SPAN>{多cM品集成?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR>2</SPAN>市场前景</FONT><SPAN lang=EN-US><FONT face=宋体> <BR></FONT><A ><U><SPAN lang=EN-US style="COLOR: blue"><SPAN lang=EN-US><FONT face=宋体>诺基?/FONT></SPAN></SPAN></U></A></SPAN><FONT face=宋体>与烦爱立信Ud通信公司<SPAN lang=EN-US>2003</SPAN>q达成一_通过整合<SPAN lang=EN-US>UIT</SPAN>?SPAN lang=EN-US>Series60</SPAN>l端软gq_工具Q以及创Z个应用认证程序来增强<SPAN lang=EN-US>Symbian</SPAN>操作pȝ<SPAN lang=EN-US>(Symbian OS)</SPAN>的潜能。这实质性地帮助开发商开发、认证和采用<SPAN lang=EN-US>Symbian OS</SPAN>电话应用E序Q从而加?SPAN lang=EN-US>Symbian OS</SPAN>C代彩信手机的新应用的诞生?/FONT><SPAN lang=EN-US><FONT face=宋体> <BR></FONT><A ><U><SPAN lang=EN-US style="COLOR: blue"><SPAN lang=EN-US><FONT face=宋体>诺基?/FONT></SPAN></SPAN></U></A></SPAN><FONT face=宋体>、烦爱立信?SPAN lang=EN-US>Symbian</SPAN>之间的这一合作Q将使开发商能够通过使用一套统一的工h为基?SPAN lang=EN-US>UIT</SPAN>?SPAN lang=EN-US>Series60</SPAN>l端软gq_的品开?SPAN lang=EN-US>Symbian OS</SPAN>应用E序。开发商q将由此得益于更方便的认证过E和更短的市场准入时间?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>       Symbian</SPAN>有限公司首席执行?SPAN lang=EN-US>David Levin</SPAN>先生_“随着<SPAN lang=EN-US>Symbian OS</SPAN>电话到全球市场,更多的开发商正在利用q一q猛发展的商机来?SPAN lang=EN-US>Symbian OS</SPAN>电话创造应用程序和服务。这与<SPAN lang=EN-US><A ><U><SPAN lang=EN-US style="COLOR: blue"><SPAN lang=EN-US>诺基?/SPAN></SPAN></U></A></SPAN>和烦爱立信之间的新合作驱?SPAN lang=EN-US>Symbian OS</SPAN>电话的创新应用及服务的更快发展和投入使用。?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>?SPAN lang=EN-US>UIT</SPAN>技术开发,q在索尼q?SPAN lang=EN-US>P800</SPAN>电话中用的<SPAN lang=EN-US>UIQ</SPAN>Qؓ型W式电话提供了一个灵zȝ、大屏幕用户界面?SPAN lang=EN-US>UIT</SPAN>用户q_设计独到Q可以帮助用戯松用企业应用程序、无~信息、强大的互联|、多媒体功能Q以及实现简单同步,该同步则可以借助普通桌面应用程序以?SPAN lang=EN-US>SyncML</SPAN>服务器,通过U外Uѝ蓝牙以及序列端口来实现?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR>      Series60</SPAN>q_是ؓ<SPAN lang=EN-US><A ><U><SPAN lang=EN-US style="COLOR: blue"><SPAN lang=EN-US>诺基?/SPAN></SPAN></U></A></SPAN>授权其它Ud电话生厂商所生的智能电话而设计的软g产品。生产厂商会?SPAN lang=EN-US>Series60</SPAN>q_整合C们自p行在<SPAN lang=EN-US>Symbian OS</SPAN>上的电话设计中?SPAN lang=EN-US>Series60</SPAN>q_包括Ud览、彩信、内容下载以及一pd个h信息理和技术应用。此外,该Y件^台还包含了一整套可变更的用户选择界面?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>Z在多媒体高端手机市场抢占地盘Q英?SPAN lang=EN-US>Symbian</SPAN>公司于本周推Z其最新版本的手机操作pȝ<SPAN lang=EN-US>Symbian OS v7.0s</SPAN>?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>  ?SPAN lang=EN-US>Symbian</SPAN>Uͼ新系l拥有更多全新功能,其中包括多媒体结构、支?SPAN lang=EN-US>W-CDMA</SPAN>、支?SPAN lang=EN-US>Java MIDP 2.0</SPAN>和又向文?SPAN lang=EN-US>(</SPAN>例如泰语、阿拉伯语和希伯来语<SPAN lang=EN-US>)</SPAN>{。其多媒体结?SPAN lang=EN-US>(MMF)</SPAN>可以?SPAN lang=EN-US>Symbian OS</SPAN>应用E序提供改进型录韟뀁回放、音频流和图像功能,它包括一个通用多媒体接入系l,开发h员可以用抽象的和具体的cd~写插gQ其中具体类别包括文件、描q符、插座、音频和视频输入与输出等?SPAN lang=EN-US>MMF</SPAN>支持<SPAN lang=EN-US>WAV</SPAN>?SPAN lang=EN-US>AV</SPAN>?SPAN lang=EN-US>RAW</SPAN>?SPAN lang=EN-US>PCM</SPAN>?SPAN lang=EN-US>uLaw</SPAN>?SPAN lang=EN-US>aLaw</SPAN>?SPAN lang=EN-US>GSM6.10</SPAN>{格式?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>  此次新添的支?SPAN lang=EN-US>3GPP W-CDMA</SPAN>的功能是<SPAN lang=EN-US>Symbian</SPAN>在支?SPAN lang=EN-US>GSM</SPAN>?SPAN lang=EN-US>GPRS</SPAN>?SPAN lang=EN-US>EDGE</SPAN>?SPAN lang=EN-US>CDMA</SPAN>?SPAN lang=EN-US>3GPP2 cdma2000 1X</SPAN>之后又一ơ技术突破。通过多模?SPAN lang=EN-US>API</SPAN>的提供,<SPAN lang=EN-US>Symbian</SPAN>帮助手机制造商们更村֜?SPAN lang=EN-US>Symbian OS</SPAN>从一U手机标准{换到另外一U之中?SPAN lang=EN-US>Java MIDP2.0</SPAN>可以使基?SPAN lang=EN-US>Symbian OS</SPAN>的手机更加支持游戏与蓝牙技术,?SPAN lang=EN-US>Symbian</SPAN>在新pȝ中加入了<SPAN lang=EN-US>Sun</SPAN>公司的新<SPAN lang=EN-US>Java</SPAN>虚拟?SPAN lang=EN-US>(JVM)</SPAN>Q可以提供更高的性能和有利于<SPAN lang=EN-US>Java</SPAN>应用E序的下载?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>  <SPAN lang=EN-US>Symbian</SPAN>公司负责产品开发管理的副总裁摩顿<SPAN lang=EN-US>-</SPAN>格劳巴尔Uͼ?SPAN lang=EN-US>Symbian OS v7.0</SPAN>中新加的功能ؓ应用开发商和网l运营商提供更ؓ先进的、富有娱乐性的和更L产效能的应用、内容与服务Q采用<SPAN lang=EN-US>Symbian OS</SPAN>的手机更具吸引力”。目前市Z使用<SPAN lang=EN-US>Symbian</SPAN>操作pȝ的手机制造商有很多,摩托|拉?SPAN lang=EN-US><A ><U><SPAN lang=EN-US style="COLOR: blue"><SPAN lang=EN-US>诺基?/SPAN></SPAN></U></A></SPAN>、三星、西门子和烦爱立信{业内巨头均包括其中</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>英国<SPAN lang=EN-US>Symbian</SPAN>日前推出了手机操作系l最新版?SPAN lang=EN-US>Symbian OS v8.0</SPAN>”。特Ҏ实时性更强,支持<SPAN lang=EN-US>SDIO</SPAN>。采用该版本的手?SPAN lang=EN-US>2004</SPAN>q下半年推出。这是在<SPAN lang=EN-US>2004</SPAN>q?SPAN lang=EN-US>2</SPAN>?SPAN lang=EN-US>23</SPAN>日于法国戛纳开q的手机相关技术展——?SPAN lang=EN-US>3GSM World Congress 2004</SPAN>”上宣布的?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>  <SPAN lang=EN-US>Symbian OS v8.0</SPAN>通过提高实时性,更容易在应用处理器中集成通信<SPAN lang=EN-US>CPU</SPAN>内核的处理功能。通过减少微处理器数量Q能够降低手机成本。该版本支持<SPAN lang=EN-US>SDIO</SPAN>Q能够连接微波数字电视调谐器和指U认证电路?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>  <SPAN lang=EN-US>Symbian OS</SPAN>已经被富士通、摩托罗拉?SPAN lang=EN-US><A ><U><SPAN lang=EN-US style="COLOR: blue"><SPAN lang=EN-US>诺基?/SPAN></SPAN></U></A></SPAN>、三星电子和襉K子等公司采用?SPAN lang=EN-US>2003</SPAN>q获得新授权的厂商包括三q机和英国<SPAN lang=EN-US>Sendo</SPAN>{公司。另外,<SPAN lang=EN-US>2004</SPAN>q松下电器业将推出首次安装该操作系l的手机?SPAN lang=EN-US>X700</SPAN>?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR>3</SPAN>上网方式</FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR>GSM</SPAN>?SPAN lang=EN-US>GPRS</SPAN>?SPAN lang=EN-US>EDGE</SPAN>?SPAN lang=EN-US>CDMA</SPAN>?SPAN lang=EN-US>3GPP2 cdma2000 1X</SPAN>Q?/FONT><FONT face=宋体><SPAN lang=EN-US>3GPP W-CDMA <BR><BR>4</SPAN>理论上网速度</FONT><FONT face=宋体><SPAN lang=EN-US> <BR>GSM(9.6Kbps)</SPAN>?SPAN lang=EN-US>GPRS(2.5G</SPAN>技?SPAN lang=EN-US>168Kbps)</SPAN>?SPAN lang=EN-US>EDGE</SPAN>Q?SPAN lang=EN-US>384Kbps</SPAN>Q?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>CDMA2000(284Kbps or 144Kbps</SPAN>、视不同厂商<SPAN lang=EN-US>),W-CDMA(3G</SPAN>技?/FONT><FONT face=宋体><SPAN lang=EN-US>) <BR><BR>5</SPAN>收费标准</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>联?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>Ud</FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR>6</SPAN>手机介绍</FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR>Symbian OS v6.0-Nokia 9210 Communicator(The world's first open <BR></SPAN> <SPAN lang=EN-US>  </SPAN> </FONT><FONT face=宋体><SPAN lang=EN-US>Symbian OS phone) <BR></SPAN>  </FONT><FONT face=宋体><SPAN lang=EN-US>Symbian OS v6.0-Nokia 9290 Communicator <BR></SPAN>  </FONT><FONT face=宋体><SPAN lang=EN-US>Symbian OS v6.1-Nokia 7650 <BR></SPAN>  </FONT><FONT face=宋体><SPAN lang=EN-US>Symbian OS v6.1-Nokia 3650 <BR></SPAN>  </FONT><FONT face=宋体><SPAN lang=EN-US>Symbian OS v6.1-Nokia N-Gage <BR></SPAN>  </FONT><FONT face=宋体><SPAN lang=EN-US>Symbian OS v6.1-Siemens SX1 <BR></SPAN>  </FONT><FONT face=宋体><SPAN lang=EN-US>Symbian OS v6.1-Fujitsu F2102V(3G FOMA) <BR></SPAN>  </FONT><FONT face=宋体><SPAN lang=EN-US>Symbian OS v6.1-Fujitsu F2051 <BR></SPAN>  </FONT><FONT face=宋体><SPAN lang=EN-US>Symbian OS v6.1-Samsung SGH-D700 <BR></SPAN>  </FONT><FONT face=宋体><SPAN lang=EN-US>Symbian OS v7.0-Sony Ericsson P800 <BR></SPAN>  </FONT><FONT face=宋体><SPAN lang=EN-US>Symbian OS v7.0s-Nokia 6600 <BR>Symbian OS v7.0-Sony Ericsson P900 <BR></SPAN>{等</FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR>7</SPAN>开发环?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>     </SPAN>如果?SPAN lang=EN-US>WAP</SPAN>上网Q服务器E序可以以<SPAN lang=EN-US>java servlet </SPAN>利用<SPAN lang=EN-US>wap</SPAN>协议q行开?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>如果?SPAN lang=EN-US><A ><U><SPAN lang=EN-US style="COLOR: blue"><SPAN lang=EN-US>手机应用</SPAN></SPAN></U></A></SPAN>E序Q可以采用开发工具基?SPAN lang=EN-US>Series60</SPAN>?SPAN lang=EN-US>Visual C++</SPAN>?SPAN lang=EN-US> Metrowerks</SPAN>?/FONT><FONT face=宋体><SPAN lang=EN-US> Code Warrior <BR></SPAN>对于索尼q信其手机采用<SPAN lang=EN-US>Metrowerks</SPAN>?SPAN lang=EN-US> Code Warrior</SPAN>做ؓ开发工?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>      </SPAN>因ؓ有些手机加入?SPAN lang=EN-US>JVM</SPAN>Q所以也可以利用</FONT><FONT face=宋体><SPAN lang=EN-US>J2ME(Java MIDP2.0) <BR>Symbian OS v6.0 </SPAN>开发应用程序的主要语言?SPAN lang=EN-US>C++</SPAN>Q?SPAN lang=EN-US>Java</SPAN>?SPAN lang=EN-US>OPL</SPAN>Q可以从<SPAN lang=EN-US>Symbian </SPAN>|页上下?SPAN lang=EN-US>SDK</SPAN>后,?SPAN lang=EN-US>Series 60 SDK 0.9 for Symbian OS,</SPAN>安装后就可以看到一?SPAN lang=EN-US>Quartz</SPAN>的仿真器Q另外一?SPAN lang=EN-US>AIF Builder</SPAN>是集成开发环境,可以讑֮开发语a与^収ͼ工程理?SPAN lang=EN-US>ICON</SPAN>~辑{功能?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR><BR>8</SPAN>优缺?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>8.1</SPAN>优点</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>׃其“出w”好Q?SPAN lang=EN-US>Symbian</SPAN>?SPAN lang=EN-US>*</SPAN>?SPAN lang=EN-US>Symbian OS</SPAN>成ؓ了智能手机领域的领头?SPAN lang=EN-US>Symbian</SPAN>是由q信?SPAN lang=EN-US><A ><U><SPAN lang=EN-US style="COLOR: blue"><SPAN lang=EN-US>诺基?/SPAN></SPAN></U></A></SPAN>、摩托罗拉、西门子{手机重量厂商?SPAN lang=EN-US>1998</SPAN>q?SPAN lang=EN-US>6</SPAN>月䆾成立的,三星公司不久前收购了<SPAN lang=EN-US>Symbian 5%</SPAN>的股份,它们都在不同E度上支持该q_。上个月末,中国台湾的电子品厂商明基(<SPAN lang=EN-US>BenQ</SPAN>Q公司公布了生?SPAN lang=EN-US>2.5</SPAN>?SPAN lang=EN-US>3G</SPAN>手机的计划,q计划在W三季度推出Z<SPAN lang=EN-US>Symbian</SPAN>q_的手机。微软则一直在忙着争取q营商对其手机^台的支持</FONT><FONT face=宋体><SPAN lang=EN-US> <BR>Symbian</SPAN>与微软操作系l相比ƈ不占很大的优势,皆因<SPAN lang=EN-US>Symbian</SPAN>本来是一个手机的操作pȝQ能够完成通话的基本功能,再加上一些辅助的功能Q比如电话本、短信编辑即可,开发者ƈ没有指望在手Z加入更多的功能。但<SPAN lang=EN-US>Symbian</SPAN>的优势也在于它的单,对于g要求不高Q只需要几?SPAN lang=EN-US>K</SPAN>的内存,速度很慢?SPAN lang=EN-US>CPU</SPAN>可以把单的dq行得很好。硬件的要求低意味着成本的降低,因此在低端这一块,微Y与之相比是没有什么竞争优势的?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>   </SPAN>不过Q随着Z对于手机功能需求的逐渐多样化,<SPAN lang=EN-US>Symbian</SPAN>也在努力攚w自w,不断地在其中加入<SPAN lang=EN-US>PDA</SPAN>、多媒体的功能。比如烦爱立信推出?SPAN lang=EN-US>P800</SPAN>Q摩托罗?SPAN lang=EN-US>388</SPAN>Q以?SPAN lang=EN-US><A ><U><SPAN lang=EN-US style="COLOR: blue"><SPAN lang=EN-US>诺基?/SPAN></SPAN></U></A></SPAN>?SPAN lang=EN-US>9210</SPAN>{,都是Z<SPAN lang=EN-US>Symbian</SPAN>pȝQ具备部?SPAN lang=EN-US>PDA</SPAN>功能的手机?</FONT><SPAN lang=EN-US><BR><FONT face=宋体>8.2</FONT></SPAN><FONT face=宋体>~点</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>受到<SPAN lang=EN-US><A ><U><SPAN lang=EN-US style="COLOR: blue"><SPAN lang=EN-US>诺基?/SPAN></SPAN></U></A></SPAN>、西门子、烦爱立信{大厂支持的<SPAN lang=EN-US>Symbian</SPAN>Q目前虽然独领风骚,不过Q?SPAN lang=EN-US>Symbian</SPAN>产品开发难度不逊于微YQ包括烦爱立信、西门子与明基等大厂Q其<SPAN lang=EN-US>Symbian</SPAN>手机开发进度都曾严重落后,对于<SPAN lang=EN-US>Symbian</SPAN>l持怸C也有不良影响?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>  <SPAN lang=EN-US>Symbian</SPAN>操作pȝ虽然较微软简单许多,但相对于系公司Q如微Y重视客户支援Q欧pȝ<SPAN lang=EN-US>Symbian</SPAN>却不时兴q套Q都?SPAN lang=EN-US>Symbian</SPAN>手机开发难度向上攀升。以索尼q信第一?SPAN lang=EN-US>Symbian</SPAN>手机<SPAN lang=EN-US>P800</SPAN>ZQ在开发接q完成阶D|Q只是因为应新力的要求增加新力知名的<SPAN lang=EN-US>Joystick</SPAN>Q摇杆)功能Q就让品g后将q半q才上市?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>  而西门子旗下W一?SPAN lang=EN-US>Symbian</SPAN>手机<SPAN lang=EN-US>SX1</SPAN>Q原定去q九月上枉售,不过在高开发难度与<SPAN lang=EN-US>Symbian</SPAN>支持度有限下Q?SPAN lang=EN-US>SX1</SPAN>一直g后至十二月底才上市,不仅整整延后一季,几乎已错q圣诞节销售旺季。相对于<SPAN lang=EN-US>Orange</SPAN>热卖摩托|拉微Y手机<SPAN lang=EN-US>MPx200</SPAN>Q对<SPAN lang=EN-US>Symbian</SPAN>在智能手机气势与市场占有率的l持Q都有不利媄?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>此外Q?SPAN lang=EN-US>Symbian</SPAN>以往最Zh所诟病的就是缺乏开放性。手机的应用不够丰富QY件有多少全看手机生商往里面加了多少?SPAN lang=EN-US>Symbian</SPAN>也意识到了这个缺点,在其新版之后加入了对<SPAN lang=EN-US>Java</SPAN>的支持,推出了基?SPAN lang=EN-US>Java</SPAN>的开发工具包QɽW三方开发者可以自行开发基?SPAN lang=EN-US>Symbian</SPAN>的YӞ而手机用户也可以在网l上下蝲一些新游戏、Y件等应用E序了?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR>9</SPAN>资源</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>支持厂商</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>合作内容</FONT><FONT face=宋体><SPAN lang=EN-US> <BR>Borland</SPAN>软g</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>?SPAN lang=EN-US><A ><U><SPAN lang=EN-US style="COLOR: blue"><SPAN lang=EN-US>诺基?/SPAN></SPAN></U></A></SPAN>合作为移动应用程序开发h员推出新?SPAN lang=EN-US>Java</SPAN>技术工P适用?/FONT><FONT face=宋体><SPAN lang=EN-US>Symbian OS <BR></SPAN>推出支持<SPAN lang=EN-US>Symbian Os Series 60 </SPAN>q_的移动应用开发工?SPAN lang=EN-US>Borland Series 60 C++ </SPAN>工具?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR>AppForge <BR></SPAN>Ud应用开发Y?SPAN lang=EN-US>AppForge MobileVB</SPAN>上市Q应用Y件开发商可用来将应用软gUL?SPAN lang=EN-US>Symbian OS</SPAN>{?SPAN lang=EN-US>AppForge</SPAN>支持的^?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>AppForge </SPAN>开发者到<SPAN lang=EN-US>2000</SPAN>q年底ؓ<SPAN lang=EN-US> Symbian OS </SPAN>开?SPAN lang=EN-US> 500 </SPAN>多个新的应用E序</FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>日本<SPAN lang=EN-US>ACCESS</SPAN>公司</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>优化其下一代互联网览?SPAN lang=EN-US>NetFront v3.0</SPAN>使得以用?SPAN lang=EN-US>Symbian OS</SPAN>q可针对不同的硬件自定义配置</FONT><FONT face=宋体><SPAN lang=EN-US> <BR>Adobe <BR></SPAN>推出新款Z<SPAN lang=EN-US>Adobe GoLive 6.0</SPAN>软g技术的无线~写模块以支?SPAN lang=EN-US>MMS</SPAN>服务</FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR>Hantro <BR></SPAN>展示了可?SPAN lang=EN-US>Symbian OS </SPAN>q_上运行的可录制视频的应用E序</FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR>Symantec <BR></SPAN>?SPAN lang=EN-US>Symbian OS</SPAN>手机提供|络安全解决Ҏ</FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR>RealNetworks <BR></SPAN>提供Z<SPAN lang=EN-US>Symbian OS</SPAN>?SPAN lang=EN-US> RealOne Player</SPAN>{Y件。用?SPAN lang=EN-US><A ><U><SPAN lang=EN-US style="COLOR: blue"><SPAN lang=EN-US>诺基?/SPAN></SPAN></U></A> 7650 </SPAN>?SPAN lang=EN-US> RealOne Mobile</SPAN>可按?SPAN lang=EN-US><A ><U><SPAN lang=EN-US style="COLOR: blue"><SPAN lang=EN-US>诺基?/SPAN></SPAN></U></A> 7650 </SPAN>昄寸自动~放</FONT><FONT face=宋体><SPAN lang=EN-US> <BR>Metrowerks <BR></SPAN>?SPAN lang=EN-US> CodeWarrior </SPAN>开发工P专业版)作ؓ集成开发环境可用于<SPAN lang=EN-US> Symbian OS</SPAN>Q该工具带有<SPAN lang=EN-US>Symbian </SPAN>集成目标~译环境</FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR>Voice Signal <BR></SPAN>其Y件可?SPAN lang=EN-US>Symbian Series 60 </SPAN>q_上运行语韌别和文本语音应用</FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR>Intel <BR>Symbian OS 7.0</SPAN>已被优化用于<SPAN lang=EN-US>Intel</SPAN>?SPAN lang=EN-US>XScale</SPAN>?/FONT><FONT face=宋体><SPAN lang=EN-US>PCA <BR></SPAN>双方q将发布一个开发板支持?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>TI <BR></SPAN>?SPAN lang=EN-US><A ><U><SPAN lang=EN-US style="COLOR: blue"><SPAN lang=EN-US>诺基?/SPAN></SPAN></U></A></SPAN>合作推出了一整套应用开发工?SPAN lang=EN-US>-Innovator</SPAN>开发套Ӟ专用于支持采?SPAN lang=EN-US>TI OMAP</SPAN>?SPAN lang=EN-US>Symbian Series 60</SPAN>q_</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>印度<SPAN lang=EN-US> Sasken </SPAN>公司</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>其多媒体解决Ҏ可用?/FONT><FONT face=宋体><SPAN lang=EN-US>Symbian OS <BR>NeoMagic </SPAN>公司</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>?SPAN lang=EN-US> Symbian </SPAN>授权许可商提供可扩展?SPAN lang=EN-US> Symbian OS </SPAN>g解决Ҏ及其未来多媒体规根{?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>Infineon <BR>Infineon </SPAN>在?SPAN lang=EN-US> GOLD </SPAN>产品pd<SPAN lang=EN-US> GPRS/EDGE/UMTS </SPAN>带宽调制解调器和应用处理器中引入<SPAN lang=EN-US> Symbian OS</SPAN>Qƈ提供Ud多媒体应用的优化技术方?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>ARM <BR>Symbian </SPAN>?SPAN lang=EN-US> Symbian OS </SPAN>中提?SPAN lang=EN-US> ARMv6 </SPAN>架构底层支持?/FONT><FONT face=宋体><SPAN lang=EN-US>   <BR>10</SPAN>末来手机发展方向</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>对于手机的发展方向,我想能够如下q行描述Q三大阵营两大方向,一个方向是<SPAN lang=EN-US>PDA</SPAN>加上手机的功能,另一个是手机加上<SPAN lang=EN-US>PDA</SPAN>的功能。总而言之,q两 个方向肯定会l合hQ?SPAN lang=EN-US>Smart Phone</SPAN>手机是它的一U体玎ͼ现在已经有这L手机问世。如<SPAN lang=EN-US>SonyEricsson P800</SPAN>?SPAN lang=EN-US>P900,Nokia7650</SPAN>{。在<SPAN lang=EN-US>SmartPhone </SPAN>领域Q目前最主要的^台就?SPAN lang=EN-US> Symbian </SPAN>?SPAN lang=EN-US> EPOC</SPAN>Q当?SPAN lang=EN-US>Microsoft</SPAN>也不可小看?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>另外支持<SPAN lang=EN-US>JAVA</SPAN>功能也是另外一个发展的方向Q?SPAN lang=EN-US>Symbian </SPAN>亦是W一?SPAN lang=EN-US>SmartPhone </SPAN>q_支持<SPAN lang=EN-US> Java</SPAN>Q由<SPAN lang=EN-US> OS 5</SPAN>开始已l加?SPAN lang=EN-US> J2EE </SPAN>的阵营?SPAN lang=EN-US>OS 6 </SPAN>加入?SPAN lang=EN-US> Personal Java </SPAN>以及<SPAN lang=EN-US> Java Phone </SPAN>的功能,<SPAN lang=EN-US>OS 7 </SPAN>更开始支?SPAN lang=EN-US> CLDC</SPAN>?SPAN lang=EN-US> MIDP</SPAN>Q可以说是最为完备支?SPAN lang=EN-US> Java </SPAN>的手机^収ͼ<SPAN lang=EN-US>Palm </SPAN>以及<SPAN lang=EN-US> Pocket PC </SPAN>相对下只是刚h。加?SPAN lang=EN-US> Java </SPAN>的结果是Q马上就有一大堆現成的程序、游戏可以用,q样也<SPAN lang=EN-US> Symbian </SPAN>的普及度更加快?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>通过以下两款手机我们可以看一?SPAN lang=EN-US>Smart phone </SPAN>的媄?SPAN lang=EN-US>(</SPAN>具体囄</FONT><FONT face=宋体><SPAN lang=EN-US>) <BR><BR><BR>P800 <BR>2002</SPAN>q烦爱立信压u王牌机型<SPAN lang=EN-US>---P800</SPAN>Q具?SPAN lang=EN-US>4,096</SPAN>色彩色触摸屏q。内|数码摄像头Q可以直接在手机上进行调节明暗、解析度和白q{。特大的屏幕用来上网和预览相片最好不q。此Z<SPAN lang=EN-US>NOKIA 3650</SPAN>一P使用<SPAN lang=EN-US>Symbian 7.0</SPAN>操作pȝQ用家可以下载不同的应用E序和游戏,也可插入<SPAN lang=EN-US>Memory Stick</SPAN>记忆卡存储资料和相片。内|的<SPAN lang=EN-US>MP3</SPAN>播放器,更手机变成随n听?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>?寸:</FONT><FONT face=宋体><SPAN lang=EN-US>117 X 59 X 27 mm <BR></SPAN>?量:<SPAN lang=EN-US>148g (</SPAN>含盖</FONT><FONT face=宋体><SPAN lang=EN-US>158g) <BR></SPAN>通话旉Q高?SPAN lang=EN-US>13</SPAN>时</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>待机旉Q高?SPAN lang=EN-US>400</SPAN>时</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>颜色Q银白色</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>屏幕Q?SPAN lang=EN-US>1/4VGA</SPAN>彩色触摸?SPAN lang=EN-US>(4096</SPAN>?/FONT><FONT face=宋体><SPAN lang=EN-US>) <BR></SPAN>屏幕寸Q?SPAN lang=EN-US>40x28mm(</SPAN>合上ȝ?SPAN lang=EN-US>)/40x61mm(</SPAN>打开ȝ?/FONT><FONT face=宋体><SPAN lang=EN-US>) <BR></SPAN>解析度:<SPAN lang=EN-US>208</SPAN>×<SPAN lang=EN-US>144</SPAN>像素<SPAN lang=EN-US>(</SPAN>合上ȝ?SPAN lang=EN-US>)/208</SPAN>×<SPAN lang=EN-US>320</SPAN>像素<SPAN lang=EN-US>(</SPAN>打开ȝ?/FONT><FONT face=宋体><SPAN lang=EN-US>) <BR></SPAN>操作pȝQ?/FONT><FONT face=宋体><SPAN lang=EN-US>Sybiam OS 7.0 <BR></SPAN>记忆体:<SPAN lang=EN-US>16+16MB</SPAN>快闪记忆?SPAN lang=EN-US>(9MB</SPAN>可供影像、游戏、通讯录、应用程?/FONT><FONT face=宋体><SPAN lang=EN-US>) <BR><BR>P800</SPAN>可以使用<SPAN lang=EN-US>Memory Stick</SPAN>扩充其存储容量、ƈ提供<SPAN lang=EN-US>MP3</SPAN>播放功能?SPAN lang=EN-US>Memory Stick</SPAN>最多可扩充<SPAN lang=EN-US>128MB</SPAN>的容量,q简?SPAN lang=EN-US>P800</SPAN>的档案备份,以及?SPAN lang=EN-US>PC</SPAN>之间的传输工作。这样一来,<SPAN lang=EN-US>P800</SPAN>电话?SPAN lang=EN-US>PDA</SPAN>、数码相机、随w听、与<SPAN lang=EN-US>Internet</SPAN>q接{多样功能集于一w?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR>P800</SPAN>的文件和囄可以存储?SPAN lang=EN-US>Memory Stick</SPAN>记忆卡中Q再传输?SPAN lang=EN-US>PC</SPAN>中,反之亦然。由<SPAN lang=EN-US>PC</SPAN>所下蝲?SPAN lang=EN-US>MP3</SPAN>音乐亦可透过<SPAN lang=EN-US>P800</SPAN>随机附送的立体声x播放。另外,手机拍摄的照片,也可L传输?SPAN lang=EN-US>PC</SPAN>存储Q让用家的资料同步更新?SPAN lang=EN-US>PC</SPAN>所存储的图片也可传输到<SPAN lang=EN-US>P800</SPAN>Q以便作为屏保图案、或存储于手机图库中。透过蓝牙?SPAN lang=EN-US>Memory Stick</SPAN>和红外线Q<SPAN lang=EN-US>P800</SPAN>得以得以擁有最強大的連接能力?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR>P800</SPAN>可以播放手机原有的档案或透过|络下蝲的多媒体档案Q如q动比赛、音乐媄片或电媄预告片?SPAN lang=EN-US>P800</SPAN>也可作ؓ万用C本,处理使用者每天的作息Q如日历、电子邮件、通讯录和待办工作。所有功能都可与常用<SPAN lang=EN-US>PC</SPAN>应用E序q行资料同步。此外,也可~辑览<SPAN lang=EN-US>PowerPoint</SPAN>?SPAN lang=EN-US>Word</SPAN>?SPAN lang=EN-US>Excel</SPAN>的文件。透过蓝牙无线通讯技术,<SPAN lang=EN-US>P800</SPAN>可以q接蓝牙x?SPAN lang=EN-US>PC</SPAN>或其它支持蓝牙的装置?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>P800</SPAN>的笔式操作界面,手写W置攑֜手机的左侧。用时Q可手机的拨号键盘拆下Q即可开始利用手写笔操控手机。而机背的数码相机拍下的照片可以当作来늛片,也可传送给他hQ充分展现出十的娱乐效果?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>P800</SPAN>使用<SPAN lang=EN-US>Symbian</SPAN>最新版本的开攑ּ操作pȝ<SPAN lang=EN-US>Symbian OS V7.0</SPAN>Qƈl合<SPAN lang=EN-US>UIQ</SPAN>W式操作界面。由?SPAN lang=EN-US>P800</SPAN>采用开放性的架构Q所以用者能够下载以<SPAN lang=EN-US>Java</SPAN>?SPAN lang=EN-US>C++</SPAN>撰写而成的企业应用程式或游戏软g。也是_用家可以Ҏ自己的情c随时可更新手机的应用程序和内容?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>P800</SPAN>的开放性不仅于此。它的整合式览器可用于<SPAN lang=EN-US>Internet (HTML, xHTML, cHTML)</SPAN>?SPAN lang=EN-US>WAP</SPAN>。此外,支持<SPAN lang=EN-US>GPRS</SPAN>?SPAN lang=EN-US>GSM 900/1800/1900</SPAN>三频通讯Q方便用家可以畅怺大洲<SPAN lang=EN-US>160</SPAN>多个国家?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>在游戏功能方面,<SPAN lang=EN-US>Sony Pictures Digital Entertainment</SPAN>所出品?SPAN lang=EN-US>Men In Black II</SPAN>能充分满玩家的需求。由?SPAN lang=EN-US>P800</SPAN>采用横式彩屏Q而且提供和铉铃声的音效,玩家玩游戏时会有意想不到的惊喜?SPAN lang=EN-US>P800</SPAN>中文版提供中文手写输入、中文输入法、字典、游戏和农历{多特D功能?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>索尼q?SPAN lang=EN-US> P908</SPAN>Q国外叫?SPAN lang=EN-US>p900</SPAN>Q?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>________________________________________ <BR></SPAN>推荐cdQ?贉|?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>机——型Q?索尼q?/FONT><FONT face=宋体><SPAN lang=EN-US> P908 <BR></SPAN>参考h|<SPAN lang=EN-US> 3400</SPAN>?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>艜y—彩Q?p色和银灰?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>——寸Q?SPAN lang=EN-US> 117</SPAN>×<SPAN lang=EN-US>57</SPAN>×</FONT><FONT face=宋体><SPAN lang=EN-US>27mm <BR></SPAN>净——重Q?SPAN lang=EN-US> 130</SPAN>?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>通话旉Q?SPAN lang=EN-US> 350~780</SPAN>分钟</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>待机旉Q?SPAN lang=EN-US> 250~400</SPAN>时</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>上市旉Q?SPAN lang=EN-US> 2004</SPAN>q?SPAN lang=EN-US>1</SPAN>?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>推荐指数Q?★★★★?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>【功能介l?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>手机采用<SPAN lang=EN-US>Symbian7.0</SPAN>pȝq_Q?SPAN lang=EN-US>C++</SPAN>?SPAN lang=EN-US>JavaTMSDK</SPAN>?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>P908</SPAN>的用户可用空间从q去<SPAN lang=EN-US>P802</SPAN>?SPAN lang=EN-US>9MB</SPAN>增大C<SPAN lang=EN-US>16MB</SPAN>Q同时基于对外接存储记忆的良好支持Q?SPAN lang=EN-US>P908</SPAN>的最大存储空间可以达?SPAN lang=EN-US>176MB</SPAN>的超大容量?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>P908</SPAN>q不仅仅是一部通话工具?SPAN lang=EN-US>P908</SPAN>的内|数码相机和丰富的多媒体功能可以带来影像世界的无I魅力?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>PDA</SPAN>功能让日怺务处理在“弹指”间L完成?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>强大的无U浏览功能让您随时“零距离接触”世界各个角落?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>宽屏三维游戏以及振动回应效果可以让手机游戏更逼真效果?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>【推荐理由?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>P908</SPAN>是烦爱立信l?SPAN lang=EN-US>P802</SPAN>之后又一ƾ超强智能手机,<SPAN lang=EN-US> P908</SPAN>融移动电话、照相机、录像、多媒体播放器、快享及<SPAN lang=EN-US>PDA</SPAN>于一体,拥有强大的无U功能,支持丰富的内容应用?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>作ؓ<SPAN lang=EN-US>P800/P802</SPAN>的后l者,<SPAN lang=EN-US>P908</SPAN>对功能进行扩展,强化了移动多媒体和商务应用能力?SPAN lang=EN-US>P908</SPAN>的整体设计上着重强调的是金属质感,无论是线条硬朗的n轮廓q是镀铬的ȝ上都展现了这U思维?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>P908</SPAN>具备一个内|的<SPAN lang=EN-US>30</SPAN>万数码摄像头Q可以拍摄大ؓ<SPAN lang=EN-US>640</SPAN>×<SPAN lang=EN-US>480</SPAN>?SPAN lang=EN-US>320</SPAN>×<SPAN lang=EN-US>240</SPAN>?SPAN lang=EN-US>160</SPAN>×<SPAN lang=EN-US>120</SPAN>像素的图片?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>最心的?SPAN lang=EN-US>P908</SPAN>q可以通过内置安全软g或者第三方<SPAN lang=EN-US>VPN</SPAN>解决Ҏ接入到公司网l,所有诸如浏览、定制应用和电邮{的|络应用都可应用安全q接 <SPAN lang=EN-US><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></FONT></SPAN></P><img src ="http://www.shnenglu.com/xiaoyun/aggbug/3495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/xiaoyun/" target="_blank">Ud开?/a> 2006-02-25 13:26 <a href="http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3495.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>symbian学习W记?/title><link>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3489.html</link><dc:creator>Ud开?/dc:creator><author>Ud开?/author><pubDate>Fri, 24 Feb 2006 21:26:00 GMT</pubDate><guid>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3489.html</guid><wfw:comment>http://www.shnenglu.com/xiaoyun/comments/3489.html</wfw:comment><comments>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3489.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/xiaoyun/comments/commentRss/3489.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/xiaoyun/services/trackbacks/3489.html</trackback:ping><description><![CDATA[引用自:<A >http://www.sf.org.cn/Article/symbiandev/200508/26.html</A><BR><BR> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: center" align=center><FONT face=宋体><B><SPAN lang=EN-US style="FONT-SIZE: 13.5pt; COLOR: red; LINE-HEIGHT: 150%">symbian</SPAN></B><B><SPAN style="FONT-SIZE: 13.5pt; COLOR: red; LINE-HEIGHT: 150%">学习W记?SPAN lang=EN-US><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></SPAN></B></FONT></P><BR> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>W二部分Q系l结?<SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>?SPAN lang=EN-US>symbian os</SPAN>上运行的四种软g</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>应用E序</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>服务</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>引擎</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>内核</FONT><FONT face=宋体><SPAN lang=EN-US> <BR>symbian</SPAN>pȝ使用zd对象与客?SPAN lang=EN-US>-</SPAN>服务器对事g处理pȝq行了优?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>g资源</FONT><FONT face=宋体><SPAN lang=EN-US>: <BR></SPAN>一?SPAN lang=EN-US>cpu,32</SPAN>?/FONT><FONT face=宋体><SPAN lang=EN-US>arm <BR></SPAN>一?SPAN lang=EN-US>rom(</SPAN>只读存储?SPAN lang=EN-US>),</SPAN>里面有操作系l与内徏的中间g和应用程?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>ROM</SPAN>盘被映射?SPAN lang=EN-US>z:</SPAN>盘,所有的文g都可以通过<SPAN lang=EN-US>Z:</SPAN>盘访问?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>pȝ<SPAN lang=EN-US>RAM.</SPAN>pȝ<SPAN lang=EN-US>RAM</SPAN>用于两个斚wQ一是被当前zd的程序和pȝ核心使用<SPAN lang=EN-US>,</SPAN>另一个是当成?SPAN lang=EN-US>C</SPAN>”盘的磁盘空间。这两个部分的大是变化的,不可以保留某个的大小。由?SPAN lang=EN-US>RAM</SPAN>通常只有<SPAN lang=EN-US>8MB</SPAN>?SPAN lang=EN-US>16MB,</SPAN>所以内存可能用完,因此l常出现内存界错误或是<SPAN lang=EN-US>(</SPAN>写文件时<SPAN lang=EN-US>)</SPAN>盘已满错误</FONT><FONT face=宋体><SPAN lang=EN-US> <BR>IO</SPAN>讑֤<SPAN lang=EN-US>,</SPAN>包括带数字笔输入的触摸屏Q键盘,记忆?SPAN lang=EN-US>(</SPAN>被当?SPAN lang=EN-US>D</SPAN>?SPAN lang=EN-US>)</SPAN>Q?SPAN lang=EN-US>rs232</SPAN>串口Q红外口Q蓝牙?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>甉|Q包括电池与外接甉|</FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR>symbian os</SPAN>?SPAN lang=EN-US>pc</SPAN>pȝ的区别如?/FONT><FONT face=宋体><SPAN lang=EN-US>: <BR></SPAN>资源限制<SPAN lang=EN-US>:cpu</SPAN>太慢与太内?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>没有盘<SPAN lang=EN-US>,</SPAN>不能使用写到盘的虚拟内?SPAN lang=EN-US>,</SPAN>不能保证有够的I间保存E序或是数据文g</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>甉|条g严格</FONT><FONT face=宋体><SPAN lang=EN-US>. <BR><BR>symbian</SPAN>软g环境如下</FONT><FONT face=宋体><SPAN lang=EN-US>: <BR><BR>server | server| Application| Application | Application Dll <BR>| | +</SPAN>————?SPAN lang=EN-US>+</SPAN>———?/FONT><FONT face=宋体><SPAN lang=EN-US>- boundary <BR>| | | | <BR>| | | Enghine | Engine <BR></SPAN>——?SPAN lang=EN-US>+</SPAN>——?SPAN lang=EN-US>+</SPAN>———?SPAN lang=EN-US>+</SPAN>————?SPAN lang=EN-US>+</SPAN>————?/FONT><FONT face=宋体><SPAN lang=EN-US> Privilege <BR>boundary <BR>Kernel <BR><BR>kernel</SPAN>工作在高U别Q管理机器所有硬件资源。对其它软g模块提供讉Kq些g资源的接?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>其它应用E序工作在用h?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>上面如果理解普通操作系l如<SPAN lang=EN-US>linux</SPAN>的话Q那跟普通操作系l没有区?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>应用E序是一个有用户界面的程?SPAN lang=EN-US>,</SPAN>在独立的q程中运?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>q与普通操作系l也没有区别</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>服务是没有用L面的E序<SPAN lang=EN-US>.</SPAN>服务理一个或多个资源Qƈ提供<SPAN lang=EN-US>api,</SPAN>让客户可以访问它的服?SPAN lang=EN-US>.</SPAN>服务的客户可以是一个程序或是其它服?SPAN lang=EN-US>.</SPAN>每个服务也运行在独立的进E空间中?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>?SPAN lang=EN-US>symbian</SPAN>?SPAN lang=EN-US>,</SPAN>使用服务的Ş式提供类似其它操作系l上用驱动程序或是内核程序提供的功能。如文gpȝ的访问也是客?SPAN lang=EN-US>/</SPAN>服务cd的?SPAN lang=EN-US>(</SPAN>微内?/FONT><SPAN lang=EN-US><?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><FONT face=宋体> <v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></FONT></v:shapetype><v:shape id=_x0000_i1026 style="WIDTH: 11.25pt; HEIGHT: 11.25pt" alt="Razz" type="#_x0000_t75"><v:imagedata o:href="file:///G:\HXY\Symbian\doc\symbian学习W记?files\20050805175945280.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape><FONT face=宋体>) <BR></FONT></SPAN><FONT face=宋体>引擎是一个应用程序中操作数据而不是与用户交互的部?SPAN lang=EN-US>.</SPAN>通常你可以把一个程序分成引擎部分和一?SPAN lang=EN-US>GUI</SPAN>部分<SPAN lang=EN-US>,</SPAN>多部<SPAN lang=EN-US>symbian</SPAN>内带的程序都是这样做的?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>一个应用程序引擎可以是一个独立的代码模块或是一个独立的<SPAN lang=EN-US>dll,</SPAN>或是几个</FONT><FONT face=宋体><SPAN lang=EN-US>dll. <BR></SPAN>引擎和应用程序间的边界是模块?SPAN lang=EN-US>dll</SPAN>的边界?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>所以在<SPAN lang=EN-US>symbian</SPAN>中有四个lgcd与三个边界类型?SPAN lang=EN-US>dll</SPAN>或是模块lg对交叉引用来说很方便。它们ɾpȝ模块化与保持装?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>权限边界对交叉引用比较费资源Q但是保证系l对用户太程序隐藏内怸讑֤</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>q程边界是所有的交叉中最昂贵的,它们保证?SPAN lang=EN-US>ram</SPAN>中分开每个E序</FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>可执行文件的格式</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>?SPAN lang=EN-US>symbian</SPAN>中有两种cd的可执行文g</FONT><FONT face=宋体><SPAN lang=EN-US>: <BR>exe,</SPAN>每个E序都有一个主入口<SPAN lang=EN-US>E32main()(</SPAN>看上面的例子<SPAN lang=EN-US>),</SPAN>它在独立的进E中q行</FONT><FONT face=宋体><SPAN lang=EN-US> <BR>dll,</SPAN>提供多个入口Q由pȝ或是已存在的U程<SPAN lang=EN-US>(</SPAN>q程<SPAN lang=EN-US>)</SPAN>调用</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>有两U类型的</FONT><FONT face=宋体><SPAN lang=EN-US>dll, <BR></SPAN>׃n?SPAN lang=EN-US>dll,</SPAN>Z个或多个E序提供固定?SPAN lang=EN-US>api,</SPAN>q些<SPAN lang=EN-US>dll</SPAN>多数后缀?SPAN lang=EN-US>.dll,</SPAN>当程序启动时pd内存中?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>多?SPAN lang=EN-US>dll,</SPAN>q些<SPAN lang=EN-US>dll</SPAN>实现抽象?SPAN lang=EN-US>api,</SPAN>如一个打印机驱动Q?SPAN lang=EN-US>socket</SPAN>协议或是一个应用程序。它们的扩展名多不是<SPAN lang=EN-US>.dll,</SPAN>而是<SPAN lang=EN-US>.prn</SPAN>?SPAN lang=EN-US>.prt</SPAN>?SPAN lang=EN-US>.app</SPAN>{。它们从?SPAN lang=EN-US>dll</SPAN>相关的类l承Qƈ通常只有在程序需要它们时才读入?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>从技术上看v来与普通系l上动态库的静态蝲入与动态蝲入没有区?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>但是从功能上看就不一样了Q一U是实现某种Ҏ功能的,从某个相关类l承?SPAN lang=EN-US>dll,</SPAN>另一个是普?/FONT><FONT face=宋体><SPAN lang=EN-US>dll <BR><BR></SPAN>代码执行</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>如果E序代码?SPAN lang=EN-US>rom</SPAN>上,则直接执?SPAN lang=EN-US>,</SPAN>不然需要读?SPAN lang=EN-US>ram</SPAN>?SPAN lang=EN-US>(</SPAN>与普通操作系l不同,普通操作系l都需要读?SPAN lang=EN-US>ram</SPAN>?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>不能直接在硬盘上执行</FONT><FONT face=宋体><SPAN lang=EN-US>) <BR></SPAN>可执行代码包括三U类型的二进制数?/FONT><FONT face=宋体><SPAN lang=EN-US>: <BR></SPAN>E序代码</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>只读静态数?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>可写静态数?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>?SPAN lang=EN-US>symbian</SPAN>中对?SPAN lang=EN-US>.exe</SPAN>?SPAN lang=EN-US>.dll</SPAN>是不同的</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>׃<SPAN lang=EN-US>.exe</SPAN>是不可共享的<SPAN lang=EN-US>,</SPAN>如果它在<SPAN lang=EN-US>ram</SPAN>中执行,那与普?SPAN lang=EN-US>pc</SPAN>pȝ没有区别<SPAN lang=EN-US>,</SPAN>如果?SPAN lang=EN-US>ram</SPAN>中执行,那它?SPAN lang=EN-US>ram</SPAN>中ؓ可写静态数据分配内?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>?SPAN lang=EN-US>.dll</SPAN>是共享的Q当<SPAN lang=EN-US>dll</SPAN>首次d内存中时Q它被分配到一个特D的地址Q第二个U程需要这?SPAN lang=EN-US>dll</SPAN>时它只要讉K已经存在的这?SPAN lang=EN-US>copy</SPAN>可以。在所有用它的进E中<SPAN lang=EN-US>dll</SPAN>的地址都是相同的?SPAN lang=EN-US>symbian</SPAN>pȝl护一个引用计敎ͼ当没有其它线E引用时才将?/FONT><FONT face=宋体><SPAN lang=EN-US>unload. <BR></SPAN>?SPAN lang=EN-US>rom</SPAN>上的<SPAN lang=EN-US>dll</SPAN>?SPAN lang=EN-US>rom</SPAN>上的<SPAN lang=EN-US>exe</SPAN>一L接在<SPAN lang=EN-US>rom</SPAN>上执?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>Z?SPAN lang=EN-US>dll</SPAN>的大进行优化,<SPAN lang=EN-US>symbbian</SPAN>q行如下操作</FONT><FONT face=宋体><SPAN lang=EN-US>; <BR></SPAN>多数pȝ支持通过名字与通过数字讉K<SPAN lang=EN-US>dll</SPAN>提供的入口,׃名字太长Q浪费空_所?SPAN lang=EN-US>symbian</SPAN>只提供通过数字讉KQ当然在<SPAN lang=EN-US>link</SPAN>时可以通过名字<SPAN lang=EN-US>link.</SPAN>也就是说?SPAN lang=EN-US>.dll</SPAN>中没有名字访问办法,?SPAN lang=EN-US>.lib(</SPAN>引导库,引导<SPAN lang=EN-US>linker</SPAN>正确?SPAN lang=EN-US>link</SPAN>q个<SPAN lang=EN-US>dll,</SPAN>q个是在<SPAN lang=EN-US>windows</SPAN>中用的概念Q在<SPAN lang=EN-US>win</SPAN>下每创徏一?SPAN lang=EN-US>dll</SPAN>都会创徏一个用户引导链接的同名<SPAN lang=EN-US>.lib)</SPAN>中有<SPAN lang=EN-US>,</SPAN>你的E序<SPAN lang=EN-US>link</SPAN>?SPAN lang=EN-US>link</SPAN>的是<SPAN lang=EN-US>.lib,link</SPAN>完成后编译器会自动把引用<SPAN lang=EN-US>dll</SPAN>的代码变成数字引?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>如果<SPAN lang=EN-US>dll</SPAN>被读?SPAN lang=EN-US>ram,</SPAN>那重定位信息<SPAN lang=EN-US>(</SPAN>?/FONT><FONT face=宋体><SPAN lang=EN-US>dll <BR>load</SPAN>C么地址<SPAN lang=EN-US>)</SPAN>也必d含在可执行文件格式中<SPAN lang=EN-US>,</SPAN>q个的媄响就是你不能把一个在<SPAN lang=EN-US>rom</SPAN>中执行的E序攑ֈ<SPAN lang=EN-US>ram</SPAN>中执行的E序<SPAN lang=EN-US>.(rom</SPAN>中执行的多是<SPAN lang=EN-US>oem</SPAN>厂家<SPAN lang=EN-US>,</SPAN>所以普通开发者多不用兛_</FONT><FONT face=宋体><SPAN lang=EN-US>) <BR><BR></SPAN>多数应用E序有自己有<SPAN lang=EN-US>exe</SPAN>来创E,其它的程序用动态库<SPAN lang=EN-US>(DL)L</SPAN>的Ş式,在主服务U程中调用自qU程</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>多数<SPAN lang=EN-US>gui</SPAN>E序都是多?SPAN lang=EN-US>(polymorphic)dll,</SPAN>有一个主入口?SPAN lang=EN-US>NewApplication(),</SPAN>q个入口点创建ƈq回一个承自<SPAN lang=EN-US>CEikAppication</SPAN>的对?SPAN lang=EN-US>.</SPAN>q样的程序被<SPAN lang=EN-US>apprun.exe</SPAN>调用Q?SPAN lang=EN-US>app</SPAN>文g名ؓ参数传入?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>甉|理</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>甉|必须高效使用</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>在系l已l关机时Q确定程序仍然可以运行。如闚wQ关机后Q到时时仍然可以开?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>甉|H然xӞ关键数据应该可以保存</FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>讑֤驱动</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>虽然一般不会了解它Q但是理解一下还是很有用?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>讑֤驱动工作在两个?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>W一个是中断服务E序<SPAN lang=EN-US>(ISR)</SPAN>Q?SPAN lang=EN-US>ISR</SPAN>必须很短Qƈ且不能做很多事情Q因为它可能在Q何时间出玎ͼ甚至在内核服务中。通常它只是通知讑֤产生了中断ƈ讄一个标志,要求内核为第二阶D늚处理q行一个gq的函数调用</FONT><FONT face=宋体><SPAN lang=EN-US>(delayed function call DFC) <BR></SPAN>在方便的时候内核调?SPAN lang=EN-US>DFC.DFC</SPAN>可以使用多数的核?SPAN lang=EN-US>api,</SPAN>通常只是工作了后向用LE通知<SPAN lang=EN-US>io</SPAN>操作已经完成</FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>定时?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>` </SPAN>内核支持真机?SPAN lang=EN-US>64hz</SPAN>的时钟与模拟器上<SPAN lang=EN-US>10hz</SPAN>的时?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>旉中断是最高优先中断Q它可以通过<SPAN lang=EN-US>User::After</SPAN>或是<SPAN lang=EN-US>RTime::After</SPAN>讉K。时钟中断在x时停止,所以如果你h<SPAN lang=EN-US>5s</SPAN>后的定时操作Q然后跑<SPAN lang=EN-US>2s,</SPAN>xQ再开机时它也要等</FONT><FONT face=宋体><SPAN lang=EN-US>3s <BR></SPAN>内核同时支持日期<SPAN lang=EN-US>/</SPAN>旉旉Q你可以使用<SPAN lang=EN-US>User::At</SPAN>或是<SPAN lang=EN-US>RTime::At</SPAN>。这个定时器很准。在xӞ如果旉CQ那它会开机,q对闚w很合适?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>内存</FONT><FONT face=宋体><SPAN lang=EN-US> <BR>symbian</SPAN>使用内存理单元<SPAN lang=EN-US>(memory management unit MMU)</SPAN>理内存</FONT><FONT face=宋体><SPAN lang=EN-US> <BR>ROM</SPAN>被映到<SPAN lang=EN-US>z:</SPAN>盘,被映到一个固定的地址?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>物理<SPAN lang=EN-US>RAM</SPAN>?SPAN lang=EN-US>MMU</SPAN>分在<SPAN lang=EN-US>4k</SPAN>的页<SPAN lang=EN-US>,</SPAN>每个物理可以用?/FONT><FONT face=宋体><SPAN lang=EN-US>: <BR></SPAN>用户q程的虚地址I间?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>内核服务的虚地址I间</FONT><FONT face=宋体><SPAN lang=EN-US> <BR>ram</SPAN>盘,盘符?SPAN lang=EN-US>c:,ram</SPAN>盘只可通过文g服务q程讉K </FONT><SPAN lang=EN-US><BR></SPAN><FONT face=宋体>如果<SPAN lang=EN-US>dll</SPAN>不在<SPAN lang=EN-US>rom</SPAN>中,那它被读?SPAN lang=EN-US>ram,dll</SPAN>被读?SPAN lang=EN-US>ram</SPAN>里面后页面标Cؓ只读只读的?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>MMU</SPAN>的页面{换表<SPAN lang=EN-US>.</SPAN>如果想理解的话学习一下操作系l原?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>自由表</FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>每个q程的地址I间可以分成下面三类</FONT><FONT face=宋体><SPAN lang=EN-US>: <BR></SPAN>pȝ范围的内存,如系l的<SPAN lang=EN-US>rom</SPAN>或是d<SPAN lang=EN-US>ram</SPAN>中的</FONT><FONT face=宋体><SPAN lang=EN-US>dll <BR></SPAN>q程范围的内存,如进E的<SPAN lang=EN-US>.exe</SPAN>映象和它的可写的静态数?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>每个U程的内?SPAN lang=EN-US>,</SPAN>包括U程的栈与线E默认的?SPAN lang=EN-US>(</SPAN>使用U程默认堆的原因只是Z提高内存分配与释攄速度Q从开发角度来看,它与pȝ里面的内存没有区?SPAN lang=EN-US>)</SPAN>?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>注意没有交换文gQ所以所有的内存都是直接使用。同Ӟ也可能会发生内存不够或是盘</FONT><SPAN lang=EN-US><FONT face=宋体>(c</FONT><v:shape id=_x0000_i1027 style="WIDTH: 11.25pt; HEIGHT: 11.25pt" alt="Smile" type="#_x0000_t75"><FONT face=宋体> <v:imagedata o:href="file:///G:\HXY\Symbian\doc\symbian学习W记?files\20050805175945334.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002.gif"></v:imagedata></FONT></v:shape></SPAN><FONT face=宋体>已满错误</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>每个U程的默认栈很小Q只?SPAN lang=EN-US>12k,</SPAN>所以在<SPAN lang=EN-US><A ><U><SPAN style="COLOR: blue">symbian</SPAN></U><U><SPAN lang=EN-US style="COLOR: blue"><SPAN lang=EN-US>开?/SPAN></SPAN></U></A></SPAN>中,不要攑֤多东西到栈中<SPAN lang=EN-US>,</SPAN>一般对象都是在堆中分配的?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>U程创徏后,它的栈大就不可再改变?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>U程可以使用<SPAN lang=EN-US>new</SPAN>或是<SPAN lang=EN-US>User::Alloc</SPAN>从线E默认堆中分配内?SPAN lang=EN-US>.</SPAN>如果希望从其它堆中分配内存,只能使用</FONT><FONT face=宋体><SPAN lang=EN-US>new <BR><BR></SPAN>动态库</FONT><FONT face=宋体><SPAN lang=EN-US>(DLL) <BR>symbian</SPAN>?SPAN lang=EN-US>dll</SPAN>不支持可写的静态数?SPAN lang=EN-US>,</SPAN>所以你在里面不可能使用可写的全局变量或是静态变?/FONT><FONT face=宋体><SPAN lang=EN-US>. <BR></SPAN>Z么不支持?SPAN lang=EN-US>?</SPAN>如果支持Q那每个q程调用q个<SPAN lang=EN-US>dll</SPAN>Ӟ都需要ؓq个q程分配一个独立的堆,而堆最单位是<SPAN lang=EN-US>4k,</SPAN>pȝ中有很多堆,q且有很多程序,所以内存消费基金是很大的。所以就不支持了</FONT><SPAN lang=EN-US><v:shape id=_x0000_i1028 style="WIDTH: 11.25pt; HEIGHT: 11.25pt" alt="Very Happy" type="#_x0000_t75"><FONT face=宋体> <v:imagedata o:href="file:///G:\HXY\Symbian\doc\symbian学习W记?files\20050805175946669.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image003.gif"></v:imagedata></FONT></v:shape><BR></SPAN><FONT face=宋体>q样开发时不是很不方便Q因为在<SPAN lang=EN-US>dll</SPAN>中有旉要保存自q状态,q行交互</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>Z解决q个问题Q?SPAN lang=EN-US>symbian</SPAN>中引入了U程本地数据</FONT><FONT face=宋体><SPAN lang=EN-US>(thread-local storage <BR>TLS)</SPAN>概念<SPAN lang=EN-US>(</SPAN>查看</FONT><FONT face=宋体><SPAN lang=EN-US>Dll::Tls <BR>Dll;;SetTls)</SPAN>。但是调?SPAN lang=EN-US>TLS</SPAN>性能比较?SPAN lang=EN-US>.tls</SPAN>的最大大是<SPAN lang=EN-US>1.8k </SPAN>通常q够用了?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>文g</FONT><FONT face=宋体><SPAN lang=EN-US>: <BR>c: flash ram</SPAN>?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>z: rom</SPAN>?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>d: </SPAN>记忆之cȝ外挂?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>事g处理</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>事g处理模型如下?/FONT><FONT face=宋体><SPAN lang=EN-US>: <BR><BR>keyborad |</SPAN>————————?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>|interrupt <BR>| <BR>kernel/driver</SPAN>?/FONT><FONT face=宋体><SPAN lang=EN-US>+-isr/dfc <BR>| <BR>key event <BR>| <BR>| <BR>window serv</SPAN>—?SPAN lang=EN-US>handle key event</SPAN>———?/FONT><FONT face=宋体><SPAN lang=EN-US>+update window <BR>| | <BR>|key event draw |request <BR>application +</SPAN>—————?SPAN lang=EN-US> handle </SPAN>——?/FONT><FONT face=宋体><SPAN lang=EN-US>-+ <BR>key event <BR><BR></SPAN>?SPAN lang=EN-US>symbian</SPAN>中用活动对象(<SPAN lang=EN-US>active object</SPAN>Q来处理事g</FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>?SPAN lang=EN-US>symbian os</SPAN>中,所有的</FONT><FONT face=宋体><SPAN lang=EN-US>symbian <BR>os</SPAN>U程都是事g处理器,每个U程有一个活动调度对?SPAN lang=EN-US>,</SPAN>加上一个或多个zd对象来处理从讑֤或其它程序发q来的事件?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>每个zd对象都有一个虚拟的成员函数<SPAN lang=EN-US>RunL(),</SPAN>在这个函数里面处理事件?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR><BR></SPAN>多Q务与抢占?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR>symbian os</SPAN>实现抢占式多U程?/FONT><FONT face=宋体><SPAN lang=EN-US> <BR></SPAN>zd对象用于在单个线E内实现非抢占式多Q?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"> <SCRIPT type=text/javascript> <!-- google_ad_client = "pub-4990535643016013"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text"; google_ad_channel =""; google_color_border = "FFFFFF"; google_color_bg = "FFFFFF"; google_color_link = "0000FF"; google_color_url = "000000"; google_color_text = "000000"; //--> </SCRIPT> <SCRIPT src="symbian学习W记?files/show_ads.js" type=text/javascript> </SCRIPT> <o:p><FONT face=宋体> </FONT></o:p></SPAN></P><img src ="http://www.shnenglu.com/xiaoyun/aggbug/3489.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/xiaoyun/" target="_blank">Ud开?/a> 2006-02-25 05:26 <a href="http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>symbian学习W记一http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3488.htmlUd开?/dc:creator>Ud开?/author>Fri, 24 Feb 2006 21:25:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3488.htmlhttp://www.shnenglu.com/xiaoyun/comments/3488.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3488.html#Feedback0http://www.shnenglu.com/xiaoyun/comments/commentRss/3488.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/3488.html引用自:http://www.sf.org.cn/Article/symbiandev/200508/25.html

symbian学习W记一

W一部分: hello worldE序解说

symbian的不同点:
需要自己处理下面的事情
:
trap harness,cleanup stack,leave,heap marking
也就是需要自p行错误检?/FONT>,
׃没有异常机制Q所?SPAN lang=EN-US>symbian
使用cleanupstack处理异常
TRAP
宏像?SPAN lang=EN-US>catch(?SPAN lang=EN-US>) 函数名带L的像?/FONT>throw
最后只要在E32Main里面使用一?SPAN lang=EN-US>TRAP可以了 q样保证内存没有L


对于c字符Ԍ需要?SPAN lang=EN-US>_L把它转换?SPAN lang=EN-US>symbain使用的描q?/FONT>
symbian
是面向对象的Q所以对多数c库函数进行了装,?/FONT>printf
symbian
的入口是E32Main函数

GLDEF_C
宏表C个函数是模块的接?/FONT>
׃c中没有规定基本类型的长度Q?SPAN lang=EN-US>symbian使用typedef重定义了基本cd,?SPAN lang=EN-US>TInt16表示16?/FONT>int

~译
:
工程定义文g

可以使用codewarrior或是gcc~译,我们把编译相关信息放在工E定义文件中(扩展名ؓ.mmp,makmake project),q用其它工hmmp文g变成makefile或是其它环境?SPAN lang=EN-US>(?SPAN lang=EN-US>codewarrior)的工E文?SPAN lang=EN-US>.下面?SPAN lang=EN-US>hellotext.mmp的内?/FONT>:
// hellotext.mmp
TARGET HelloText.exe
TARGETTYPE exe
SOURCEPATH .
UID 0
SOURCE hellotext.cpp
USERINCLUDE .
SYSTEMINCLUDE epoc32include
LIBRARY euser.lib
TARGET
表示生成的可执行文g的名字,TARGETTYPE表示生成的文件的cd,q里?/FONT>exe
UID
?SPAN lang=EN-US>GUIE序很重要,q里讄?/FONT>0
SOURCEPATH
表示源文?SPAN lang=EN-US>(.cpp)的目?/FONT>
SOURCE
指明源文件名

USERINCLUDE
?SPAN lang=EN-US>SYSTEMINCLUDE表示用户自己声明的头文g与系l头文g的目?/FONT>
通常我们都需要把SYSTEMINCLUDE声明?/FONT>epoc32include
LIBRARY
声明需要链接的?SPAN lang=EN-US>,一般需?SPAN lang=EN-US>E32用户库就可以,也就?/FONT>euser.lib

lg定义文g

symbian
需要一个组件定义文Ӟq个文g名字Lbld.inf,在这个文件中包含所有的工程定义文g(mmp),更复杂的情况下会包括其它相关信息

下面?SPAN lang=EN-US>hellotext?/FONT>
// BLD.INF
PRJ_MMPFILES
hellotext.mmp

~译

cd scmphellotext
bldmake bldfiles
上面的命令会?SPAN lang=EN-US>scmphellotext下生?SPAN lang=EN-US>abld.bat文g,同时会创?SPAN lang=EN-US>epoc32buildscmphellotext目录

abld build winscw udeb
winscw
表示生成codewarrior(cw)模拟?/FONT>(win
simulator)
的工E文?SPAN lang=EN-US>,udeb表示创徏unicode?SPAN lang=EN-US>debug版本

build
分下面六个步?/FONT>:
export
q程复制输出文g到它们的目标,一般会把通用头文件复制到epoc32include,多数应用E序在这步不需要Q何操?/FONT>
makefile
阶段生成必须?SPAN lang=EN-US>makefile?SPAN lang=EN-US>ide的工作空?SPAN lang=EN-US>(?SPAN lang=EN-US>vc?SPAN lang=EN-US>dsp文g
)
库阶D创入库

资源阶段创徏应用E序的资源文?SPAN lang=EN-US>,位图和应用程序信息文?/FONT>(aufs)
目标阶段生成应用E序的主执行文g

最后阶D|行Q何最后的操作Q多数程序这里不需?/FONT>

q些阶段都有选项?SPAN lang=EN-US>abld工具中,可以使用abld help得到各选项内容


最后结果放?SPAN lang=EN-US>epoc32releasewinscwudebhellotext.exe,你可以在那里双击?/FONT>

自己的操作如?/FONT>
bldmake bldfiles @UIQ_21:com.symbian.UIQ
abld build wins udeb @UIQ_21:com.symbian.UIQ
然后q行
epoc32releasewinscwudebhellotext.exe
使用@UIQ_21:com.symbian.UIQ的原因是因ؓ没有讄EPOCROOT环境变量,q且安装了两?SPAN lang=EN-US>symbian环境一个安装在
C:SymbianUIQ_21

创徏手机上运行的E序

abld build armi urel

创徏安装文g

?SPAN lang=EN-US>scmphellotext下运?/FONT>
makesys hellotext.pkg
q将会生?SPAN lang=EN-US>hellotext.sis,你可以把它上传到手机?BR>



]]>
如何L和连接到q程讑֤http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3487.htmlUd开?/dc:creator>Ud开?/author>Fri, 24 Feb 2006 21:15:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3487.htmlhttp://www.shnenglu.com/xiaoyun/comments/3487.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3487.html#Feedback0http://www.shnenglu.com/xiaoyun/comments/commentRss/3487.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/3487.htmlhttp://www.sf.org.cn/Article/symbiandev/200509/183.html

如何L和连接到q程讑֤

当一个应用程序连接到q程讑֤以便应用其某个服务时Q我们需要几个步骤:首先看看是否有想要与之通信的设备。然后察看所需要的服务是否可用。最后,应用E序需要进行连接,另外可能q需要进行些安全措施

下面几个主题依ơ介l相x骤:

选择q程讑֤的方?/FONT>
如何查询q程讑֤

如何查询q程讑֤上的服务

如何同远E设备连接和传输数据

如何在外q的套接字上应用安全措施

选择q程讑֤的方?/FONT>
一个应用程序能通过下列Ҏ军_哪个q程讑֤是他通信的对象:

·         固定的连?SPAN lang=EN-US>

·         实现存储的配|?SPAN lang=EN-US>

·         q户选择

·         E序自动军_

上面每一个都可能由它合适的情况。前两个Ҏ中,q端讑֤的地址只需要简单的从存储出取出。而第三种Ҏ则普遍在蓝牙UI中提供?SPAN lang=EN-US>

最后一U程序自动选择q程讑֤中,可能在下列情况中应用Q?SPAN lang=EN-US>

·         为用h供可定制的设备选择UI

·         在某些特别情况下选择讑֤Q比如“选择最I闲?SPAN lang=EN-US>LAN接入点?SPAN lang=EN-US>

如何查询q程讑֤
每个蓝牙讑֤在其g中都有唯一?SPAN lang=EN-US>48
位地址。一个范围内基本的设备查询将q回零或几个此类地址?SPAN lang=EN-US>

除了q个地址Q蓝牙设备也q有一个文本名字显C给用户。如果你希望昄可用讑֤的列表给用户Q你也要获取q些名字以便昄?SPAN lang=EN-US>

如果底层g支持Q地址和名字也可以同时被查询。否则,地址的查询必d名字查询h发送前完成

泛化套接字类RhostResolver用来完成地址和设备名的查询。另?SPAN lang=EN-US>TinquirySockAddrZ门的蓝牙套接字地址c,里面装了蓝牙地址Q查询入口代码,用来提供相关查询的服务和讑֤cR?SPAN lang=EN-US>

获得q程讑֤的地址
下面步骤用来查询q程讑֤的地址Q?SPAN lang=EN-US>

1.    q接到套接字服务?SPAN lang=EN-US>(RSocketServ)Q然后用RSocketServ::FindProtocol()选择使用的协议。由于名字和地址的查询由堆栈?SPAN lang=EN-US>BTLinkManager协议层支持,所以选择它?SPAN lang=EN-US>

2.    创徏q初始化一?SPAN lang=EN-US>RhostResolver对象?SPAN lang=EN-US>

3.    TinquirySockAddr参数以便查询Q对于地址查询Q?SPAN lang=EN-US> KHostResInquiry标志需要通过TInquirySockAddr::SetAction()讄好?SPAN lang=EN-US>

然后可以通过RHostResolver::GetByAddress()开始查询?SPAN lang=EN-US>

如何查询q程讑֤的服?/FONT>
一个远E设备可以有一个或者多个蓝牙服务提供者。服务的q泛指示器可以从讑֤的类中读出。这样可以用来选择合适的讑֤图标现实l用戗这个设备的cd以在查询地址后用TInquirySockAddr::MajorClassOfDevice()获得?SPAN lang=EN-US>

在特定环境,讑֤的类提供的粗U别的服务发现ƈ不能满对设备的选择条g。这Pq样Q服务发现请求可以用来判断是否ؓ适合的选择。但只有在必需的时后才应该应用Q因为它需要一些额外时间来Ҏ个设备进?SPAN lang=EN-US>SDPh?SPAN lang=EN-US>SDPh通过蓝牙发现代理API来进行?SPAN lang=EN-US>

如何同远E设备连接和传输数据
一旦设备和服务定了,你就能够q接到远E设备ƈ开始用了

通过泛化?SPAN lang=EN-US>Symbian OS套接字借口Rsocket?SPAN lang=EN-US>Connect()函数q接到设备。蓝牙套接字可以?SPAN lang=EN-US>L2CAP?SPAN lang=EN-US>RFCOMM协议打开。对于一?SPAN lang=EN-US>L2CAP蓝牙套接字,端口Q?SPAN lang=EN-US>portQ是用来q接的协?SPAN lang=EN-US>/服务多\复用?SPAN lang=EN-US> (PSM)Q对?SPAN lang=EN-US>RFCOMM,端口是服务器频道。如果这些g知道Q可以通过d服务属?SPAN lang=EN-US>ProtocolDescriptorList来获得。详情参见用蓝牙服务发C?SPAN lang=EN-US>

你能够通过套接字用目标服务期望的格式d数据Q?SPAN lang=EN-US>AT指oQ文本,HTTPQ?SPAN lang=EN-US>PPP{)

举例Q?/FONT>
// Assume have a TInquirySockAddr object, addr, with relevant device info

// Connect an L2CAP socket
RSocket socket;
TRequestStatus status;
User::LeaveIfError(socket.Open(socketServ,KBTAddrFamily,KSockSeqPacket,KL2CAP));
User::LeaveIfError(socket.Connect(addr,status));
User::WaitForRequest(status);

if (status == KErrNone)
    {
    // Write some simple data
    _LIT8(KDataToWrite,"01234");
    socket.Write(KDataToWrite,status);
    User::WaitForRequest(status);
    }

// Close socket
socket.Close();

注意Q?/FONT>
·         对于RFCOMM?SPAN lang=EN-US>L2CAP
协议Q没有数据可以在Connect() ?SPAN lang=EN-US>Shutdown() 调用中送出Q否则会D获得额外数据的错误?SPAN lang=EN-US>

·         RFCOMM使用套接字cdQ?SPAN lang=EN-US>KSockStreamQ?SPAN lang=EN-US>

·         L2CAP使用序列包的套接字类?Q?SPAN lang=EN-US>KsockSeqPacketQ?SPAN lang=EN-US>

如何在外q的套接字上应用安全措施
对于一个外q接Q?SPAN lang=EN-US>outgoing connection
Q,默认情况下蓝牙堆栈不会由具体的安全措施。如果远E设备需要认证或~码q接Q那堆栈会直接体现到应用E序?SPAN lang=EN-US>

有时候,本地E序也需要保证认证或~码q接。可以对RSocket用控制操作(ioctlsQ来认证(ioctl KHCIAuthRequestIoctl) 或者编?SPAN lang=EN-US> (KHCIEncryptIoctl) q接?SPAN lang=EN-US>

举例
下面的例子就对认证h应用?SPAN lang=EN-US>ioctl

// Assume have an opened L2CAP RSocket object, socket
socket.Ioctl(KHCIAuthRequestIoctl, status, NULL, KSolBtHCI);
User::WaitForRequest(status);
if (status==KErrNone)
    {
    \\ Success...

ps: 偶也在学习中Q如有错误请多指教?SPAN lang=EN-US>



]]>
ini文g的创?/title><link>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3486.html</link><dc:creator>Ud开?/dc:creator><author>Ud开?/author><pubDate>Fri, 24 Feb 2006 21:12:00 GMT</pubDate><guid>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3486.html</guid><wfw:comment>http://www.shnenglu.com/xiaoyun/comments/3486.html</wfw:comment><comments>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3486.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/xiaoyun/comments/commentRss/3486.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/xiaoyun/services/trackbacks/3486.html</trackback:ping><description><![CDATA[引用自:<A >http://www.sf.org.cn/Article/symbiandev/200509/188.html</A><BR> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: center" align=center><FONT face=宋体><B><SPAN lang=EN-US style="FONT-SIZE: 13.5pt; COLOR: red; LINE-HEIGHT: 150%"><BR>ini</SPAN></B><B><SPAN style="FONT-SIZE: 13.5pt; COLOR: red; LINE-HEIGHT: 150%">文g的创?SPAN lang=EN-US><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></SPAN></B></FONT></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><STRONG><SPAN style="FONT-SIZE: 10.5pt; COLOR: blue; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体">创徏<SPAN lang=EN-US>ini</SPAN>文gQ?/SPAN></STRONG><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; COLOR: blue"><o:p></o:p></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体>void CFrozenBubbleAppUi::WriteIniFile(TUid iInfo, void *ptr, TUint size){<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>TInt r;<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>RFs fs;<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>fs.Connect();<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>CleanupClosePushL( fs );<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>RDictionaryWriteStream rdsIniFile;<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><FONT face=宋体><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><SPAN style="mso-spacerun: yes">  </SPAN>CDictionaryStore *cdIniFile = Application()->OpenIniFileLC(fs);//</SPAN><SPAN style="FONT-SIZE: 10.5pt">如果不存在就创徏<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></FONT></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>rdsIniFile.AssignLC(*cdIniFile, iInfo);<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>TPtr8 buf((TUint8*)ptr, size, size);<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes"> </SPAN><SPAN style="mso-spacerun: yes"> </SPAN>TRAP(r, rdsIniFile.WriteL(buf));<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>rdsIniFile.CommitL();<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>CleanupStack::PopAndDestroy();<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>cdIniFile->CommitL();<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>CleanupStack::PopAndDestroy( 2 );<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体>} <o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><FONT face=宋体><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 10.5pt; COLOR: blue">?SPAN lang=EN-US>ini</SPAN>文gQ?/SPAN></B><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; COLOR: blue"><o:p></o:p></SPAN></FONT></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><o:p><FONT face=宋体> </FONT></o:p></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体>TBool CFrozenBubbleAppUi::ReadIniFile(TUid iInfo, void *ptr, TUint &size){<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>TInt r;<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>TBool result = EFalse;<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>RFs fs;<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>fs.Connect();<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>CleanupClosePushL( fs );<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>RDictionaryReadStream rdsIniFile;<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>CDictionaryStore *cdIniFile = Application()->OpenIniFileLC(fs);<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>if (cdIniFile->IsPresentL(iInfo)){<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">    </SPAN>rdsIniFile.OpenLC(*cdIniFile, iInfo);<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">    </SPAN>TPtr8 buf((TUint8*)ptr, size);<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">    </SPAN>TRAP(r, rdsIniFile.ReadL(buf));<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">    </SPAN>CleanupStack::PopAndDestroy(); // rdsIniFile<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">    </SPAN>result = ETrue;<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>}<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>CleanupStack::PopAndDestroy( 2 ); // fs, cdIniFile<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体><SPAN style="mso-spacerun: yes">  </SPAN>return result;<o:p></o:p></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体>}<o:p></o:p></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><o:p></o:p></SPAN></P><img src ="http://www.shnenglu.com/xiaoyun/aggbug/3486.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/xiaoyun/" target="_blank">Ud开?/a> 2006-02-25 05:12 <a href="http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3486.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Something From HelloWorldPlushttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3485.htmlUd开?/dc:creator>Ud开?/author>Fri, 24 Feb 2006 21:07:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3485.htmlhttp://www.shnenglu.com/xiaoyun/comments/3485.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3485.html#Feedback0http://www.shnenglu.com/xiaoyun/comments/commentRss/3485.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/3485.html阅读全文

]]>
Symbian OSQ线E编E中文版http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3484.htmlUd开?/dc:creator>Ud开?/author>Fri, 24 Feb 2006 20:56:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3484.htmlhttp://www.shnenglu.com/xiaoyun/comments/3484.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3484.html#Feedback0http://www.shnenglu.com/xiaoyun/comments/commentRss/3484.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/3484.htmlhttp://www.sf.org.cn/Article/symbiandev/200509/244.html

Symbian OSQ线E编E中文版


虽然symbian操作pȝ中对多Q务的实现更提倡用活动对象,但多U程也是非常有用的技术,当移植程序、后台大量复杂运或多媒体编E时Q?SPAN lang=EN-US>threads都是必不可少的?SPAN lang=EN-US>symbian中的thread~程和一般的多线E编E差不多Q下面就来看看具体文档中是如何描q的Q?/FONT>

?SPAN lang=EN-US>Symbian OSQ线E编E?/FONT>
Symbian
操作pȝ中的U程和进E?/FONT>

?SPAN lang=EN-US>Symbian操作pȝ中,每个q程都有一个或多个U程。线E是执行的基本单位。一个进E的ȝE是在进E启动时生成的?/FONT>
Symbian
属于抢占式多d操作pȝQ这意味着每个U程都有自己的执行时_直到pȝ?SPAN lang=EN-US>CPU使用权给予其他线E。当pȝ调度Ӟh最高优先权的线E将首先获得执行?/FONT>
q程边界是受内存保护的。所有的用户q程都有自己的内存地址I间Q同一q程中的所有线E共享这一I间Q用戯E不能直接访问其他进E的地址I间?/FONT>
每个U程都有它自qstack?SPAN lang=EN-US>heapQ这?SPAN lang=EN-US>heap可以是私有的Q也可以被其他线E共享。应用程序框架生成ƈ安装了一?SPAN lang=EN-US>active schedulerQƈ且ؓȝE准备了清除栈。如果没有用框Ӟ如编?SPAN lang=EN-US>exeE序Q那p手动生成q些了:Q?/FONT>
Symbian
操作pȝ专ؓ单线E应用优化,因此强烈推荐使用“活动对象”代替多U程?/FONT>

[
使用单线E的优点]
在每个线E都有自qstackI间Ӟ使用单线E可以减内存耗费?/FONT>
在线E间切换上下文要比切换活动对象(通过active schedulerQ慢得多?/FONT>
不需要处理互斥现象,q减了E序的负担,化了代码Q减了错误发生的几率?/FONT>
一些资源只能ؓȝE所用,因此它们q不是线E安全的Q如动态数l?/FONT>

[
使用多线E的优点]
有时Z保证所执行的Q务的持箋性,如播攑֣xQ我们可以将其归在一个单独的U程中处理?/FONT>
复杂的多线E或长时间运行程序移植到Symbian上,如果不用多U程处理Q可能会比较难也更耗时间?/FONT>
Q题外话Q我曄一个棋cȝ序移植到symbian上,里面复杂的递归q算使我不得不用多U程Q这L情况下,你是很难时间有序的分化开来,使用zd对象的)


[
U程的基本用方?/FONT>]
RThread
提供了线E的各项功能。线E是为内核所拥有的对象,RThread对象装了这些对象的句柄?/FONT>

1
、生成一个新U程
新的U程可以通过构造一?SPAN lang=EN-US>RThread对象Qƈ调用它的Create()函数生成。如Q?/FONT>

Code:

1: TInt threadFunction(TAny *aPtr)
2: 
7:
8: RThread thread;
9: thread.Create(KThreadName, threadFunction, 4096,
10: KMinHeapSize, 256*KMinHeapSize, &iParameter);
11: thread.Resume();

2
、线E状?/FONT>
一个线E的最重要的状态ؓq行、准备、等待和暂停。在生成后,U程首先处于暂停状态,你可以调?SPAN lang=EN-US>Resume()函数来启动它的运行。一个线E也可以通过调用Suspend()来进入中断状态?/FONT>

U程一般通过Kill(TInt aReason)来结束,Terminate()与其怼。如果一个进E的ȝE结束,则该q程与所属所有线E都结束?/FONT>
一U非正常关闭U程的方式就是调?SPAN lang=EN-US>Panic(const TDesC& aCategory, TInt aReason)来中断执行?/FONT>
如何获得中断U程的信息呢Q我们可通过ExitType()Q?SPAN lang=EN-US>ExitReason()以及ExitCategory()Ҏ来获得?/FONT>

U程可以在中断时发出hQ我们通过调用异步ҎLogon()来完成此d。返回值在aStatus中?SPAN lang=EN-US>LogonCancel()可以取消前次h?/FONT>
void Logon(TRequestStatus& aStatus) const;
TInt LogonCancel(TRequestStatus& aStatus) const;

我们可以通过SetProtected(ETrue)Ҏ线E保护v来,也可以通过SetProtected(EFalse)来取消保护。在保护Ӟ另一个线E是无法中断、结束、异怸断或讄该线E的优先U的?SPAN lang=EN-US>Protected()Ҏ可以q回该线E的保护状态?/FONT>

3
、访问线E及q程
我们可以通过构造一?SPAN lang=EN-US>RThread对象来访问当前线E?SPAN lang=EN-US>Id()Ҏ可以q回改线E的ID?/FONT>
拥有此线E的q程可以通过讉KRThread?SPAN lang=EN-US>Process(RProcess& aProcess)Ҏ来获得。这里传入的参数应该是一?SPAN lang=EN-US>RProcess对象?/FONT>
其他U程可以通过Open()Ҏ来访问。我们通过传?SPAN lang=EN-US>TThreadId、线E名U或TFindThread对象来打开U程?/FONT>
TInt Open(const TDesC& aFullName, TOwnerType aType=EOwnerProcess);
TInt Open(TThreadId aID, TOwnerType aType=EOwnerProcess);
TInt Open(const TFindThread& aFind, TOwnerType aType=EOwnerProcess);


Code:

1: // * as a wildcard for the name search
2: _LIT(KFindAll, 
?SPAN lang=EN-US>*?/FONT>);
3: // default RThread object, has a handle of the current thread
4: RThread thread;
5: TFullName fullName;
6: TFindThread finder(KFindAll);
7:
8: while (finder.Next(fullName) == KErrNone)
9: 

Q未完待l)


BestRegards
hoolee
  
hoolee 
View Public Profile 
Send email to hoolee 
Find all posts by hoolee 
Add hoolee to Your Buddy List 

  #2    2005-04-28, 08:20  
 hoolee  
Registered User   Join Date: Mar 2005
Posts: 1,037  
 
4
、线E优先
U程可以被赋予一个绝Ҏ相对的优先。绝对优先定义了这个线E的M优先U,不需要考虑其拥有者进E的优先U了。而赋予相对优先时则此U称定义为拥有者进E的优先U加上该相对优先U后的结果?/FONT>

下面_体标示的优先值可以由用户代码讄Q?/FONT>

Code:

enum TProcessPriority
;

enum TThreadPriority
;

上面枚D出来的gl对优先UgؓQ?/FONT>
EPriorityAbsoluteVeryLow, EPriorityAbsoluteLow, EPriorityAbsoluteBackground, EPriorityAbsoluteForeground, EPriorityAbsoluteHigh.
相对优先UgؓQ?/FONT>
EPriorityMuchLess, EPriorityLess, EPriorityNormal, EPriorityMore, EPriorityMuchMore.
EPriorityNull
是一个特D|它定义了最低的U别Q?SPAN lang=EN-US>Kernel idel thread使用的就是它*_*

EPriorityRealTime
定义了除核心服务U程优先U外最高的M优先U?/FONT>
RThread
中的Priority()Ҏq回了一个线E的优先U(按以上描q|。我们也可以通过SetPriority(TThreadPrioriy aPriority)Ҏ来修改优先?/FONT>
ProcessPriority()
Ҏq回了拥有该U程之进E的优先U(?SPAN lang=EN-US>TProcessPriority描述|。我们也可以通过SetProcessPriority(TProcessPriority)Ҏ来修改该q程的优先?/FONT>

5
、异常处?/FONT>
每个U程都有自己的异常处理模块。当U程发生异常时会调用异常处理模块。异常处理模块的a型为:
typedef void TExceptionHandler(TExcType);

RThread
包含了下列异常处理相关的ҎQ?/FONT>
TExceptionHandler* ExceptionHandler()
q回该线E当前异常处理模块的地址?/FONT>

TInt SetExceptionHandler(TExceptionHandler* aHandler, TUint32 aMask);
定义了该U程新的异常处理模块的地址Q以及它所处理异常的类别?/FONT>

void ModifyExceptionMask(TUint32 aClearMask, TUint32 aSetMask)
修改异常处理模块所定之异常cdQ?SPAN lang=EN-US>aClearMask参数定义了不再ؓ异常处理模块所处理的类别,?SPAN lang=EN-US>aSetMask则定义了新的处理cd?/FONT>

TInt RaiseException(TExcType aType);
引发U程上指定类型的异常Q这时异常处理模块将被启动执行(发生在调用之后)?/FONT>

TBool IsExceptionHandled(TExcType aType);
查线E的异常处理模块是否捕捉?SPAN lang=EN-US>aTypecd的异常?/FONT>


(1)
异常cd及类?/FONT>
异常cd是一l针对单个异常的cd识别Q主要用在异常发生时?/FONT>
异常cd则代表一l异常Ş式?/FONT>

异常cd的一个集是由一个或多个异常cd通过OR形式l合成的Q如KExceptionInteger|KExceptionDebugQ这些值用来设|及修改异常处理模块所处理的类别?/FONT>

下面列示了所有的cd及类别?/FONT>
异常cd 异常cd
KExceptionInterrupt ->EExcGeneral, EExcUserInterrupt
KExceptionInteger ->EExcIntegerDivideByZero, EExcIntegerOverflow
KExceptionDebug->EExcSingleStep, EExcBreakPoint
KExceptionFault ->EExcBoundsCheck, EExcInvalidOpCode, EExcDoubleFault, EExcStackFault, EExcAccessViolation, EExcPrivInstruction, EExcAlignment, EExcPageFault
KExceptionFpe ->EExcFloatDenormal, EExcFloatDivideByZero, EExcFloatIndexactResult, EExcFloatInvalidOperation, EExcFloatOverflow, EExcFloatStackCheck, EExcFloatUnderflow
KExceptionAbort ->EExcAbort
KExceptionKill->EExcKill

Q未完等l)

BestRegards
hoolee
  
hoolee 
View Public Profile 
Send email to hoolee 
Find all posts by hoolee 
Add hoolee to Your Buddy List 

  #3    2005-04-28, 09:56  
zaohuzi888  
Member   Join Date: Mar 2005
Posts: 5  
 
_ֽ?/FONT> 

--------------------------------------------------------------------------------

不知道后面的什么时候推?SPAN lang=EN-US>,很期待哦

  
zaohuzi888 
View Public Profile 
Send email to zaohuzi888 
Find all posts by zaohuzi888 
Add zaohuzi888 to Your Buddy List 

  #4    2005-04-29, 09:36  
 hoolee  
Registered User   Join Date: Mar 2005
Posts: 1,037  
 
6
、其他线E函?/FONT>
TInt Rename(const TDesC& aName)
为线E定义个新名字?/FONT>

void RequestComplete(TRequestStatus*& aStatus, TInt aReason)
通知U程与一个异步请求绑定的h状态对?SPAN lang=EN-US>aStatus已綺完成?SPAN lang=EN-US>sStatus完成代码负责设|?SPAN lang=EN-US>aReason及发出线E请求信L通知?/FONT>

TInt RequestCount()
q回U程h信号的数目。如果是负值则表示该线E正在等待至一个异常请求的完成?/FONT>

void HandleCount(TInt& aProcessHandleCount, TInt& aThreadHandleCount)
得到U程中及拥有该线E的q程中处理模块的数目?/FONT>

RHeap* Heap()
q回一个指向改U程堆的指针?/FONT>

TInt GetRamSizes(TInt& aHeapSize, TInt& aStackSize)
得到该线E中堆和栈的大小?/FONT>

TInt GetCpuTime(TTimeIntervalMicroSeconds& aCpuTime)
得到改线E所分配到的CPU

void Context(TDes8& aDes)
得到该线E( sleeping状态)所注册的上下文环境?/FONT>

4
、线E内部的通信
1)
׃n内存
在线E间交换信息最直接的方法就是用共享内存。线E入口函C有一个参?SPAN lang=EN-US>TAny* aPtrQ这个指针可以用于Q何目的。通常可以用它来传递一个负责线E间׃n信息的数据结构或cd例。因为同一q程中的U程是共享内存地址I间的,因此q里指针所指向的数据可以被两个U程所׃nQ注意访问该数据时必L同步形式?/FONT>
另外q里的指针参数可以?SPAN lang=EN-US>SetInitialParameter(TAny* aPtr)Ҏ来改变,但这时线E应处于suspend状态?/FONT>

2)Client/Server API
Symbian
操作pȝ提供了一l基?SPAN lang=EN-US>server/session?SPAN lang=EN-US>APIQ允怸个线E扮?SPAN lang=EN-US>server的角Ԍ向其他线E或q程提供服务。这?SPAN lang=EN-US>API也提供处理一l方法处理信息的传递,异步以数据传输?/FONT>

3)
q程内数据传?/FONT>
如果两个U程分属不同的进E,则他们无法直接管理需要通信的数据,因ؓ他们没有׃n的数据区。这里可以?SPAN lang=EN-US>RThread提供?SPAN lang=EN-US>ReadL()Ҏ?SPAN lang=EN-US>WriteL()ҎQ我们可以用来在当前U程和由RThread提供的另一个线E间的地址I间拯8/16位的数据。这里当前线E和另一个线E可以归属同一个进E也可分属不同进E?/FONT>

数据的传输是通过拯数据来完成的Q?SPAN lang=EN-US>RThread提供了方法返回在它地址I间内一?SPAN lang=EN-US>descriptor的长度及最大允讔R度?/FONT>

a>
d另个U程所提供?/FONT>descriptor
void ReadL(const TAny* aPtr,TDes8& aDes,TInt anOffset) const; 
void ReadL(const TAny* aPtr,TDes16 &aDes,TInt anOffset) const;

q里ReadL()Ҏ从另一个线E的descriptor(?SPAN lang=EN-US>aPtr所?SPAN lang=EN-US>)中拷贝一l数据,传递到当前U程?SPAN lang=EN-US>descriptor(?SPAN lang=EN-US>aDes所?SPAN lang=EN-US>)?/FONT>
aPtr
指针必须指向一个在RThread句柄所指线E的地址I间中有效的descriptor?/FONT>

从源descriptor中的内容是从anOffset位置那里开始拷贝到目的descriptorQ?SPAN lang=EN-US>aDesQ的?/FONT>

b)
向另个线E写?/FONT>descriptor
void WriteL(const TAny* aPtr, const TDesC8& aDes, TInt anOffset) const;
void WriteL(const TAny* aPtr, const TDesC16& aDes, TInt anOffset) const;

用这个方法将当前U程descritor(aDes)所提供的数据都拯在另一个线E?SPAN lang=EN-US>(aPtr所?SPAN lang=EN-US>)?SPAN lang=EN-US>descriptor中。这?SPAN lang=EN-US>anOffset参数讑֮了目?SPAN lang=EN-US>descriptor的初始化拯位置?/FONT>

aPtr
为线E地址I间内有效的可修?SPAN lang=EN-US>descriptor?/FONT>

如果拯q去的数据长度超q目?SPAN lang=EN-US>descriptor的最大长度,则函C发生异常?/FONT>

c)Descriptor
帮助函数
TInt GetDesLength(const TAny* aPtr) const;
TInt GetDesMaxLength(const TAny* aPtr) const;
q里RThread?SPAN lang=EN-US>GetDesLength()Ҏ可以q回aPtr所指向?SPAN lang=EN-US>descriptor长度。这?SPAN lang=EN-US>descriptor必须?SPAN lang=EN-US>RThread句柄所指定的线E的地址I间中?/FONT>
RThread
?SPAN lang=EN-US>GetMaxDesLength()Ҏq回aPtr所指向descriptor的最大长度?SPAN lang=EN-US>descriptor也应?SPAN lang=EN-US>RThread句柄所指的U程地址I间中?/FONT>

?SPAN lang=EN-US>ReadL()?SPAN lang=EN-US>WriteL(){方法前使用q些函数?/FONT>

4.4
U程局部存?/FONT>(TLS)
Symbian
操作pȝ是不允许?SPAN lang=EN-US>DLL中出现可写静态变量的。然而每?SPAN lang=EN-US>DLL中每个线E都会分配一?SPAN lang=EN-US>32位字W空间。这个字W用来存放一个指向数据结构或cȝ例的指针。分配和释放q些资源可在例如DLL的入口函?SPAN lang=EN-US>E32Dll中处理?/FONT>

另一个用线E局部存储的CZZ存指向类CZ的指针,q样静态回调函数可以访问与U程相联pȝ该对象。当我们处理自定义异常处理模块时是很有用的?/FONT>

Dll::SetTls(TAny *aPtr)
函数负责讄U程局部存储的指针?/FONT>
Dll::Tls()
函数负责q回一个指向线E局部存储的指针。取得后该指针所指定数据可以正常使用?/FONT>

4.5 User-Interrupt Exception
?SPAN lang=EN-US>3.5?SPAN lang=EN-US>Exception Handling”所qͼU程可以引发其他U程的异常。有一U异常类型是专ؓ用户所保留的,那就?SPAN lang=EN-US>EExcUserInterruptQ可以通过指定异常cdKExceptionUserInterrupt来处理。其他要传递的信息应该通过׃n内存来处理。这是在最D|间内向其他线E传递信息的方式Q当异常发生时调?SPAN lang=EN-US>RaiseException()函数可切换到另个U程的异常处理模块?/FONT>

Q未完待l)

BestRegards
hoolee
  
hoolee 
View Public Profile 
Send email to hoolee 
Find all posts by hoolee 
Add hoolee to Your Buddy List 

  #5    2005-04-30, 07:54  
 hoolee  
Registered User   Join Date: Mar 2005
Posts: 1,037  
 
4.6 Publish & Subsribe
Publish & Subscrible
是一个进E间的通信机制Q在SymbianOS v8.0a?SPAN lang=EN-US>Series 60 Platform 2nd Editon, Feature Pack2中有所介绍Q,可以查看相关的文挡?/FONT>

q个机制包括了三个基本方面:properties, publishers, ?SPAN lang=EN-US>subscribers.Properties是由一个标?SPAN lang=EN-US>SymbianOS UID所定义的全局唯一变量Q它定义了属性类别,而另一个整数定义了property sub-key?/FONT>
Publishers
是负责更新属性的U程?SPAN lang=EN-US>Subscribers是负责监听属性变化的U程?/FONT>

4.7 
消息队列
消息队列是另一个进E间通信的机Ӟ?SPAN lang=EN-US>SymbianOS v8.0a?SPAN lang=EN-US>Series 60 Platform 2nd Editon, Feature Pack2中有所介绍Q?/FONT>
消息队列用来向队列发送消息,而无需获得接收者的状态标识信息。Q何进E(都在同一队列中的Q或M同一q程中的U程Q在局部队列中Q都可以dq些信息?/FONT>

5
、同?/FONT>
1)
目的
如果多个U程在没有保护机制的情况下用同一资源Q就会出C些问题。如Q线E?SPAN lang=EN-US>A更新了部?SPAN lang=EN-US>descriptorQ而线E?SPAN lang=EN-US>B接手后又重写了内宏V回到线E?SPAN lang=EN-US>A后,又开始更新内宏V这?SPAN lang=EN-US>descriptor的内容就?SPAN lang=EN-US>A?SPAN lang=EN-US>B中来回修改了?/FONT>

Z防止q类情况的发生,你需要用非抢占?SPAN lang=EN-US>client/server机制或同步对象来处理。同步对象(mutex, semaphore, critical sectionQ都是核心对象,可以通过句柄来访问。他们会限制或直接锁住对多线E们所要访问的资源Q这U资源Ş式被UCؓ׃n资源?/FONT>
在Q何时d能有一个线E对׃n资源q行写操作,每个要访问资源的U程都应使用同步机制来管理资源?/FONT>
同步操作一般有如下步骤Q?/FONT>
1. Call Wait() of the synchronization object reserved for this resource.
2. Access the shared resource.
3. Call Signal() of the synchronization object reserved for this resource.

注意Q当killU程时要心炏V因为如果线E用已E注销的对象,不同的同步对象其处理方式是不同的。因此,忽略使用同步cd?SPAN lang=EN-US>kill一个已E更新过部分资源的线E是会引发问题的?/FONT>

2)
使用Semaphores(信号)
Semaphores
可以理׃n资源的同步化讉K。这?SPAN lang=EN-US>semaphore的句柄可通过RSemaphorec获得?/FONT>
Semaphore
限制了同一时刻讉K׃n资源的数目?SPAN lang=EN-US>semaphore计数的初始化工作可以攑֜构造函Cq行?/FONT>
Semaphore
可以是全局的也可以是局部的Q全局?SPAN lang=EN-US>semaphore有自q名称Q可以被其他q程搜烦q用。而局部的semaphore没有名称Q只能在同一q程间的U程中用?/FONT>
调用semaphore?SPAN lang=EN-US>Wait()Ҏ减?SPAN lang=EN-US>semaphore计数Q而如果计Cؓ负的话,调用U程׃q入{待状态?/FONT>
调用semaphore?SPAN lang=EN-US>Signal()Ҏ增?SPAN lang=EN-US>semaphore计数Q如果增长之前ؓ负数Q则{待信号的第一个线E将讑֮为准备运行状态?/FONT>

调用semaphore?SPAN lang=EN-US>Signal(TInt aCount)和调?SPAN lang=EN-US>n?SPAN lang=EN-US>Signal()效果是一L?/FONT>
当线E死亡时Q只有该U程正等待该信号Ӟ信号才能被通知。因Z号在下面q样的情况也是可以执行的Q在一个线E中调用Wait()Q在另一个线E中调用Signal()Q这L信号无法在用它的线E死亡时被通知。这样只会导致信可数减低?/FONT>

3)
使用互斥Q?SPAN lang=EN-US>MutexQ?/FONT>
互斥主要使用在同步下独占讉K׃n资源。它的句柄可以通过RMutexcL获得?/FONT>
和信号一P互斥可以是全局也可以是局部的。唯一的不同在于其计数初始化时Mؓ1?SPAN lang=EN-US>Mutex因此只允许最多一个访问共享资源?/FONT>
如果一个线E已EZؓmutex调用Wait()Q但没有Signal()Q则U程M时该互斥被通知?/FONT>

4)
使用临界?/FONT>(Critical Sections)
Critical Sections
可用来在一单独q程中独占访问共享资源?SPAN lang=EN-US>Critical Sections句柄可以通过RCriticalSectioncL获得?/FONT>
Critical Sections
只能用在同一q程的线E间Q通常它用来管理某D代码的讉KQ每ơ只能有一个线E来讉K?/FONT>
同一U程中,在调?SPAN lang=EN-US>Wait()前调?SPAN lang=EN-US>Signale()会引发U程的异常。但不会出现在其他类型的同步对象中?/FONT>
U程的中断是不会影响critical sections的状态的Q因此?SPAN lang=EN-US>critical sections的线E将不会被其他线E杀死,除非不在critical sections中。当不在需要时Q线E的M是不会有癬,很安全的?/FONT>

5)
同步实例

Code:

1: class CMessageBuffer
2: ;
12:
13: CMessageBuffer::CMessageBuffer()
14: 
17:
18: void CMessageBuffer::AddMessage(const TDes &aMsg)
19: 
24:
25: void CMessageBuffer::GetMessages(TDes &aMsgs)
26: 
32:
33: static void CMyClass::threadFunction(TAny *aPtr)
34: 
45: }
在上面所qCQ?SPAN lang=EN-US>CMessageBuffer是一个半成品c,它允许用户增加消息到buffer中,也允许获得所有消息?/FONT>
U程函数CMyClass::threadFunction负责?SPAN lang=EN-US>CMessageBuffer׃n对象d信息Q这里内存分配和错误查ƈ没有列出Q需要读者自己完成?/FONT>
假设有多个线E要׃nCMessageBuffer对象实例Q则在实际访?SPAN lang=EN-US>buffer时必要同步来处理。我们也可在U程函数中完成,但在CMessageBuffer中完成同步将使得该类成ؓU程安全U,同样它也可以被用在单个线E中了?/FONT>

6
ȝ
很多情况下都需要多U程的,当用多U程Ӟ同步及互斥排他也要考虑在内Q以便保证线E通信的安全性。如果线E用共享资源,我们应该使用某种同步机制来避免异常的发生Q?SPAN lang=EN-US>Semaphores, critical sections,?SPAN lang=EN-US>mutexes都提供了基本的解x案。此外,如果使用zd对象或清除机Ӟ我们q需要手工设|?SPAN lang=EN-US>active scheduler和清除栈。ȝ来说Q线E编E不是这么容易的Q因cȝE需要全面理解框架、多d和线E安全机制?/FONT>



]]>
symbian开发资?/title><link>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3483.html</link><dc:creator>Ud开?/dc:creator><author>Ud开?/author><pubDate>Fri, 24 Feb 2006 20:53:00 GMT</pubDate><guid>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3483.html</guid><wfw:comment>http://www.shnenglu.com/xiaoyun/comments/3483.html</wfw:comment><comments>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3483.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/xiaoyun/comments/commentRss/3483.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/xiaoyun/services/trackbacks/3483.html</trackback:ping><description><![CDATA[引用自:<A >http://www.sf.org.cn/Article/symbiandev/200509/367.html</A><BR><BR> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: center" align=center><FONT face=宋体><B><SPAN lang=EN-US style="FONT-SIZE: 13.5pt; COLOR: red; LINE-HEIGHT: 150%">symbian</SPAN></B><B><SPAN style="FONT-SIZE: 13.5pt; COLOR: red; LINE-HEIGHT: 150%">开发资?SPAN lang=EN-US><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></SPAN></B></FONT></P><BR> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体>  <o:p></o:p></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-INDENT: 18pt; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT face=宋体>d有一D|间做<SPAN lang=EN-US>symbian</SPAN>的开?SPAN lang=EN-US>, </SPAN>?SPAN lang=EN-US>sony ericsson </SPAN>?SPAN lang=EN-US>p802</SPAN>上进行,因ؓ公司内还没有开?SPAN lang=EN-US>symbian</SPAN>的经验,所以开发过E中遇到的问题就只有?SPAN lang=EN-US>internet</SPAN>上去L帮助。本文ȝ和罗列了在开发过E中得到的各U?SPAN lang=EN-US>symbian uiq</SPAN>开发资源,希望对刚q入<SPAN lang=EN-US><A ><U><SPAN style="COLOR: blue">symbian</SPAN></U><U><SPAN lang=EN-US style="COLOR: blue"><SPAN lang=EN-US>开?/SPAN></SPAN></U></A></SPAN>的朋友能够有所帮助?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US><FONT face=宋体><!--[if !supportEmptyParas]--> <!--[endif]--><O:P></O:P><o:p></o:p></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; WORD-BREAK: break-all; TEXT-INDENT: -18pt; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT face=宋体><SPAN lang=EN-US><!--[if !supportLists]-->1</SPAN>Q?SPAN lang=EN-US><!--[endif]-->Symbian </SPAN>开发者新ȝ<SPAN lang=EN-US><O:P></O:P><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT face=宋体>q是<SPAN lang=EN-US>symbian</SPAN>|站上公布的新闻l,毫无疑问Q这是我开发过E中遇到N时得到帮助最多的地方。在q里回答问题的都是很专业?SPAN lang=EN-US>symbian</SPAN>开发h员,估计其中有一部分应该?SPAN lang=EN-US>symbian</SPAN>的技术支持工E师。只要你会提问,有耐心Q一般都可以得到有用的帮助?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT face=宋体>Q提问前搜烦一下以前有没有同样的问题,如果有,那么你就不用{待别h的回{了Q也避免了支持者ؓ了回{同L问题费旉?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT face=宋体>提问时尽量言意赅的描q清楚你遇到的问题,q要注意自己的态度Q网上有一详l介l如何提问的文章?SPAN style="FONT-SIZE: 9pt; COLOR: black">提问的智?/SPAN>》,先阅诅R?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT face=宋体>阅读Q搜索其他文档后Q仍然找不到{案Ӟ才到新闻l提问。因为可能要q比较长的时间才能够得到{复?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US><FONT face=宋体><!--[if !supportEmptyParas]--> <!--[endif]--><O:P></O:P><o:p></o:p></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US><FONT face=宋体>http://www.symbian.com/developer/public/index.html<o:p></o:p></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US><FONT face=宋体><!--[if !supportEmptyParas]--> <!--[endif]--><O:P></O:P><o:p></o:p></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; WORD-BREAK: break-all; TEXT-INDENT: -18pt; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT face=宋体><SPAN lang=EN-US><!--[if !supportLists]-->2</SPAN>Q?SPAN lang=EN-US><!--[endif]-->SDK</SPAN>附带的文?SPAN lang=EN-US><O:P></O:P><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT face=宋体>在安?SPAN lang=EN-US>UIQ2.1</SPAN>?SPAN lang=EN-US>SDK</SPAN>后,有一?SPAN lang=EN-US>patch</SPAN>。这?SPAN lang=EN-US>patch</SPAN>里面实际上ƈ没有?SPAN lang=EN-US>SDK</SPAN>做什么更斎ͼ里面只包括了一?SPAN lang=EN-US>CHM</SPAN>版的文档和一个名?SPAN lang=EN-US>news-qui</SPAN>的项目?SPAN lang=EN-US>CHM</SPAN>版的文档提高了可用性和可读性。那?SPAN lang=EN-US>news-qui</SPAN>的项目是学习<SPAN lang=EN-US>uiq</SPAN>上编E的最好源代码Q因为它不仅覆盖?SPAN lang=EN-US>uiq</SPAN>上大多数的基架构Q而且q有一相应的<SPAN lang=EN-US>chm</SPAN>文档分析代码Q指导阅诅R如果你刚开始学?SPAN lang=EN-US>symbian </SPAN>?SPAN lang=EN-US> uiq</SPAN>~程。这是必ȝ源码?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT face=宋体><SPAN lang=EN-US>SDK</SPAN>附带的这份文档包含了详尽?SPAN lang=EN-US>Symbian UIQ SDK</SPAN>开发信息,是最重要的参考资料?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT face=宋体>以下几个部分可能是经帔R要用到的地方Q?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US><FONT face=宋体>UIQ 2.1 SDK</FONT></SPAN><SPAN lang=EN-US style="FONT-FAMILY: Wingdings">à</SPAN><SPAN lang=EN-US><FONT face=宋体>UIQ SDK</FONT></SPAN><SPAN lang=EN-US style="FONT-FAMILY: Wingdings">à</SPAN><FONT face=宋体><SPAN lang=EN-US>C++ : </SPAN>q个目录里面?SPAN lang=EN-US>API Refrence, Application Developer Framework, Paradigm</SPAN>都是刚开始学习时常用的参考资料?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US><FONT face=宋体>UIQ 2.1 SDK</FONT></SPAN><SPAN lang=EN-US style="FONT-FAMILY: Wingdings">à</SPAN><SPAN lang=EN-US><FONT face=宋体>Developer Library</FONT></SPAN><SPAN lang=EN-US style="FONT-FAMILY: Wingdings">à</SPAN><FONT face=宋体><SPAN lang=EN-US>API Refrence, </SPAN>其中?SPAN lang=EN-US>C++ API Refrence</SPAN>?SPAN lang=EN-US>API</SPAN>q行了分cMl。?SPAN lang=EN-US>System Panic Refrence</SPAN>在程序中出现<SPAN lang=EN-US>panic</SPAN>Ӟ可以Ҏ分类和编号对应查到可用信息?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US><FONT face=宋体>UIQ 2.1 SDK</FONT></SPAN><SPAN lang=EN-US style="FONT-FAMILY: Wingdings">à</SPAN><SPAN lang=EN-US><FONT face=宋体>Developer Library</FONT></SPAN><SPAN lang=EN-US style="FONT-FAMILY: Wingdings">à</SPAN><FONT face=宋体><SPAN lang=EN-US>Tools and Utilities, </SPAN>其中包含了开发过E中要用到的工具介l和指导Q比如文件{换,E序生成Q程序安装,字符格式转换Q图片格式{换,如何在设备上调试{?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US><FONT face=宋体><!--[if !supportEmptyParas]--> <!--[endif]--><O:P></O:P><o:p></o:p></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; WORD-BREAK: break-all; TEXT-INDENT: -18pt; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT face=宋体><SPAN lang=EN-US><!--[if !supportLists]-->3</SPAN>Q?SPAN lang=EN-US><!--[endif]-->FAQ<O:P></O:P><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT face=宋体><SPAN lang=EN-US>FAQ</SPAN>是对开发过E中l常遇到的问题进行ȝ后得到的l果Q你遇到的问题,别h已经先遇到过了,而且已经有了{案。遇到问题,先查文档Q然后到q里来看看,{案也许早就在这里,只是{待你的搜烦?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US><FONT face=宋体><!--[if !supportEmptyParas]--> <!--[endif]--><O:P></O:P><o:p></o:p></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US><A ><U><SPAN style="COLOR: blue"><FONT face=宋体>http://www.symbian.com/developer/techlib/faq.html</FONT></SPAN></U></A><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT face=宋体>上面的页面先q入</FONT><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><A ><U><SPAN style="COLOR: blue">Enter the Symbian OS Developer Knowledgebase</SPAN></U></A> </SPAN><FONT face=宋体><SPAN style="FONT-SIZE: 10pt">q一栏,然后可以分cL索啦?/SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US><FONT face=宋体><!--[if !supportEmptyParas]--> <!--[endif]--><O:P></O:P><o:p></o:p></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; WORD-BREAK: break-all; TEXT-INDENT: -18pt; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT face=宋体><SPAN lang=EN-US><!--[if !supportLists]-->4</SPAN>Q?SPAN lang=EN-US><!--[endif]-->Sonyericsson </SPAN>的开发技术支持论?SPAN lang=EN-US><O:P></O:P><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT face=宋体>也不错,需要先注册?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US><A ><U><SPAN style="COLOR: blue"><FONT face=宋体>http://developer.sonyericsson.com/show_forums.do</FONT></SPAN></U></A><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US><FONT face=宋体><!--[if !supportEmptyParas]--> <!--[endif]--><O:P></O:P><o:p></o:p></FONT></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; WORD-BREAK: break-all; TEXT-INDENT: -18pt; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT face=宋体><SPAN lang=EN-US><!--[if !supportLists]-->5</SPAN>Q?SPAN lang=EN-US><!--[endif]--></SPAN>源代码资?SPAN lang=EN-US><O:P></O:P><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><FONT face=宋体><SPAN lang=EN-US>series60</SPAN>?SPAN lang=EN-US>SDK</SPAN>安装以后Q其<SPAN lang=EN-US>example</SPAN>里的源代码是所?SPAN lang=EN-US>symbian SDK</SPAN>中最多,最全面的。虽然这?SPAN lang=EN-US>project</SPAN>不能?SPAN lang=EN-US>UIQ SDK</SPAN>里面~译通过Q但在遇到问题时Q参考这里面的源码会对你有很大帮助?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><BR> <SCRIPT type=text/javascript> <!-- google_ad_client = "pub-4990535643016013"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text"; google_ad_channel =""; google_color_border = "FFFFFF"; google_color_bg = "FFFFFF"; google_color_link = "0000FF"; google_color_url = "000000"; google_color_text = "000000"; //--> </SCRIPT> </SPAN> <SCRIPT src="symbian开发资?files/show_ads.js" type=text/javascript> </SCRIPT> <o:p></o:p></SPAN></P><img src ="http://www.shnenglu.com/xiaoyun/aggbug/3483.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/xiaoyun/" target="_blank">Ud开?/a> 2006-02-25 04:53 <a href="http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3483.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symbian字符串操?/title><link>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3482.html</link><dc:creator>Ud开?/dc:creator><author>Ud开?/author><pubDate>Fri, 24 Feb 2006 20:49:00 GMT</pubDate><guid>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3482.html</guid><wfw:comment>http://www.shnenglu.com/xiaoyun/comments/3482.html</wfw:comment><comments>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3482.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/xiaoyun/comments/commentRss/3482.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/xiaoyun/services/trackbacks/3482.html</trackback:ping><description><![CDATA[引用自:<A >http://www.sf.org.cn/Article/symbiandev/200510/383.html</A><BR><BR> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 150%; TEXT-ALIGN: center" align=center><FONT face=宋体><B><SPAN lang=EN-US style="FONT-SIZE: 13.5pt; COLOR: red; LINE-HEIGHT: 150%">Symbian</SPAN></B><B><SPAN style="FONT-SIZE: 13.5pt; COLOR: red; LINE-HEIGHT: 150%">字符串操?SPAN lang=EN-US><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></SPAN></B></FONT></P><BR> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>?SPAN lang=EN-US>symbian</SPAN>pȝ中ƈ没有使用我们熟知的类型和函数来处理字W串和二q制~冲区,q对于初学者来说可能有炚w生。大概很多编E者都在摸?SPAN lang=EN-US>TBuf, TBufC, HBufC</SPAN>的过E中p了不时间…?SPAN lang=EN-US>:)<o:p></o:p></SPAN></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体>symbian</FONT></SPAN><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>中的描述W?SPAN lang=EN-US>(descriptors)</SPAN>主要有以下特性:</FONT><SPAN lang=EN-US><BR><FONT face=宋体>1</FONT></SPAN><FONT face=宋体>、以同样的方式对待字W串和二q制数据?/FONT><SPAN lang=EN-US><BR><FONT face=宋体>2</FONT></SPAN><FONT face=宋体>、数据可以存攑֜内存的Q何区域上—?SPAN lang=EN-US>ROM</SPAN>?SPAN lang=EN-US>RAM</SPAN>Q在堆或栈上都可以?/FONT><SPAN lang=EN-US><BR><FONT face=宋体>3</FONT></SPAN><FONT face=宋体>、描q符使用指针和长度信息来描述它包含的数据Q有些描q符q包括最大长度的信息?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>下面q个囄意了描述W相关类的承关p:<SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><BR></SPAN><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>所有的描述W都是从抽象c?SPAN lang=EN-US>TDesC</SPAN>中派生的Q他们可以分Z个大c:</FONT><SPAN lang=EN-US><BR><FONT face=宋体>1</FONT></SPAN><FONT face=宋体>、缓冲区描述W——数据做为描q符对象的组成部分而存在,描述W对象存攑֜E序的堆栈中Q?SPAN lang=EN-US>TBuf</SPAN>?/FONT><FONT face=宋体><SPAN lang=EN-US>TBufC,<BR>2</SPAN>、堆描述W——数据做为描q符对象的组成部分而存在,描述W对象存攑֜堆中Q?/FONT><FONT face=宋体><SPAN lang=EN-US>HBufC,<BR>3</SPAN>、指针描q符——描q符对象和它所表示的实际数据是分开存放的:<SPAN lang=EN-US>TPtr</SPAN>?SPAN lang=EN-US>TPtrC.<o:p></o:p></SPAN></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>如果对照<SPAN lang=EN-US>C/C++</SPAN>语法来看Q?/FONT><SPAN lang=EN-US><BR><FONT face=宋体>1</FONT></SPAN><FONT face=宋体>?SPAN lang=EN-US>TPtrC</SPAN>可以被看作是<SPAN lang=EN-US>const char*</SPAN>的?/FONT><SPAN lang=EN-US><BR><FONT face=宋体>2</FONT></SPAN><FONT face=宋体>?SPAN lang=EN-US>TBufC</SPAN>可以被看作是<SPAN lang=EN-US>char[]</SPAN>的?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>其他cL有相应对照语句?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>下面昄了各个类中数据是如何l织的:<SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><BR><FONT face=宋体>TDes</FONT></SPAN><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>?SPAN lang=EN-US>TDesC</SPAN>是抽象类Q因此你不可能实例化它们。它们的主要用途是做ؓ函数的参数来描述字符串和二进制数据。在q样的函CQ你应该按如下规则用:</FONT><SPAN lang=EN-US><BR><FONT face=宋体>1</FONT></SPAN><FONT face=宋体>?SPAN lang=EN-US>const TDesC& </SPAN>表示只读的数据和字符丌Ӏ?/FONT><SPAN lang=EN-US><BR><FONT face=宋体>2</FONT></SPAN><FONT face=宋体>?SPAN lang=EN-US>TDes& </SPAN>表示可以被修改的数据和字W串?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>所有这些描q符都可以指定数据尺度:<SPAN lang=EN-US>TDes8</SPAN>?SPAN lang=EN-US>TDes16</SPAN>?SPAN lang=EN-US>TDesC8</SPAN>?SPAN lang=EN-US>TDesC16</SPAN>?SPAN lang=EN-US>TBuf8</SPAN>?SPAN lang=EN-US>TBuf16</SPAN>{?/FONT><SPAN lang=EN-US><BR></SPAN><FONT face=宋体>q里<SPAN lang=EN-US>8</SPAN>表示描述W处理的数据?SPAN lang=EN-US>8bit</SPAN>的,?SPAN lang=EN-US>16</SPAN>表示?SPAN lang=EN-US>16bit</SPAN>数据。一般来_你只要用通用形式Q?SPAN lang=EN-US>TDes, TDesC,...</SPAN>Q来表示文本数据而?SPAN lang=EN-US>8bit</SPAN>版本Q?SPAN lang=EN-US>TDesC8</SPAN>{)来表CZq制的内宏V?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><BR><FONT face=宋体>Litterals<BR>---------------<BR></FONT></SPAN><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>字符串常量可以?SPAN lang=EN-US>_L()</SPAN>?SPAN lang=EN-US>_LIT()</SPAN>宏来定义?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体>_L()</FONT></SPAN><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>可以生成一个指向字W值的地址Q?SPAN lang=EN-US>TPtrC</SPAN>Q,它经常被用来传递字W串到函CQ?/FONT><SPAN lang=EN-US><BR><FONT face=宋体>NEikonEnvironment::MessageBox(_L("Error: init file not found!"));<o:p></o:p></FONT></SPAN></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体>_LIT()</FONT></SPAN><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>可以生成个常量名Q以便以后重复用:</FONT><SPAN lang=EN-US><BR><FONT face=宋体>_LIT(KMyFile, "c:\System\Apps\MyApp\MyFile.jpg");<o:p></o:p></FONT></SPAN></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><FONT face=宋体><SPAN lang=EN-US style="FONT-SIZE: 10.5pt">_LIT()</SPAN><SPAN style="FONT-SIZE: 10.5pt">宏的l果Q就是上面的<SPAN lang=EN-US>KMyFile</SPAN>Q实际上是个文字描述W(<SPAN lang=EN-US>literal descriptor</SPAN>Q?SPAN lang=EN-US>TLitC</SPAN>Q它可以在Q何?SPAN lang=EN-US>TDesC&</SPAN>的地方用?SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></FONT></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><BR></SPAN><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>用法</FONT><SPAN lang=EN-US><BR><FONT face=宋体>---------<BR>TDesC</FONT></SPAN><FONT face=宋体>中最常用的函数如下:</FONT><SPAN lang=EN-US><BR><FONT face=宋体>1</FONT></SPAN><FONT face=宋体>?SPAN lang=EN-US>Ptr()</SPAN>Q用来获得描q符数据中的指针?/FONT><SPAN lang=EN-US><BR><FONT face=宋体>2</FONT></SPAN><FONT face=宋体>?SPAN lang=EN-US>Length()</SPAN>Q用来获得描q符数据中的字符数?/FONT><SPAN lang=EN-US><BR><FONT face=宋体>3</FONT></SPAN><FONT face=宋体>?SPAN lang=EN-US>Size()</SPAN>Q用来获得描q符数据中的字节数目?/FONT><SPAN lang=EN-US><BR><FONT face=宋体>4</FONT></SPAN><FONT face=宋体>?SPAN lang=EN-US>Cpmpare()</SPAN>或操作符<SPAN lang=EN-US>==</SPAN>?SPAN lang=EN-US>!=</SPAN>?SPAN lang=EN-US>>=</SPAN>?SPAN lang=EN-US><=</SPAN>{专为比较描q符数据用的?/FONT><SPAN lang=EN-US><BR><FONT face=宋体>5</FONT></SPAN><FONT face=宋体>、操作符<SPAN lang=EN-US>[]</SPAN>Q可以被当作<SPAN lang=EN-US>c/c++</SPAN>中一P用来获得描述W字W串中的单个字符?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>下面几个函数有其Ҏ性:</FONT><SPAN lang=EN-US><BR><FONT face=宋体>1</FONT></SPAN><FONT face=宋体>?SPAN lang=EN-US>Append()</SPAN>?SPAN lang=EN-US>Num()</SPAN>有很多重载Ş式,具体可以?/FONT><FONT face=宋体><SPAN lang=EN-US>SDK<BR>2</SPAN>?SPAN lang=EN-US>Compare()</SPAN>?SPAN lang=EN-US>2</SPAN>个变体:<SPAN lang=EN-US>CompareC()</SPAN>?SPAN lang=EN-US>CompareF()</SPAN>Q以?SPAN lang=EN-US>Copy(),Find(),Locate()</SPAN>?SPAN lang=EN-US>Match()</SPAN>Q这些函数都?SPAN lang=EN-US>C/F</SPAN>的后~形式Q?SPAN lang=EN-US>C</SPAN>代表<SPAN lang=EN-US>Collated</SPAN>?SPAN lang=EN-US>F</SPAN>代表<SPAN lang=EN-US>Folded.<o:p></o:p></SPAN></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"><FONT face=宋体>Collating</FONT></SPAN><SPAN style="FONT-SIZE: 10.5pt"><FONT face=宋体>?/FONT><FONT face=宋体><SPAN lang=EN-US>Folding<BR>------------------------<BR>Folding</SPAN>是个比较格式化文本的单方法,主要用在Ҏ较不是太要求_的场合?SPAN lang=EN-US><o:p></o:p></SPAN></FONT></SPAN></P> <P style="WORD-BREAK: break-all; LINE-HEIGHT: 15pt"><FONT face=宋体><SPAN lang=EN-US style="FONT-SIZE: 10.5pt">Collation</SPAN><SPAN style="FONT-SIZE: 10.5pt">是个更好的也更有效的比较字符串的ҎQ可以生成类似字典的序?SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></FONT></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10.5pt"> <SCRIPT type=text/javascript> <!-- google_ad_client = "pub-4990535643016013"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text"; google_ad_channel =""; google_color_border = "FFFFFF"; google_color_bg = "FFFFFF"; google_color_link = "0000FF"; google_color_url = "000000"; google_color_text = "000000"; //--> </SCRIPT> <SCRIPT src="Symbian字符串操?files/show_ads.js" type=text/javascript> </SCRIPT> <o:p><FONT face=宋体> </FONT></o:p></SPAN></P><img src ="http://www.shnenglu.com/xiaoyun/aggbug/3482.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/xiaoyun/" target="_blank">Ud开?/a> 2006-02-25 04:49 <a href="http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3482.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>手机游戏制作宝典http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3481.htmlUd开?/dc:creator>Ud开?/author>Fri, 24 Feb 2006 20:46:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3481.htmlhttp://www.shnenglu.com/xiaoyun/comments/3481.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3481.html#Feedback0http://www.shnenglu.com/xiaoyun/comments/commentRss/3481.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/3481.htmlhttp://www.sf.org.cn/Article/symbiandev/200510/2511.html

手机游戏制作宝典


׃手机g讑֤斚w的诸多限制和性能差异Q我们在游戏的开发和制作q程中无法天马行I的进行创作,而不得不l合考虑到多方因素的q。下面列出的是一些关键的性能参数Q这些参数都直接影响游戏的效果?/FONT>

[
分L?/FONT>]
   
手机的屏q大各有不同,?SPAN lang=EN-US>80*30
?SPAN lang=EN-US>320*240Q就好比?SPAN lang=EN-US>PC发展q程中的CGA?SPAN lang=EN-US>EGA乃至VGAQ分辨率的高低直接导致了造型的大及表现力,q点怿每个设计人员都有所体会。另外,׃手机型号及操作系l的多样性,D了一ƾ游戏ƈ不能不加改动的在不同的手Zq行。对于美术设计h员而言Q就要在设计之初考虑屏幕的自适应问题。比如在128×128分L率下?SPAN lang=EN-US>200×200的分辨率下,如何可以不重新更换图片,但又辑ֈ同样的效果?

[
色彩数量]
   
目前手机能达到的色彩数量也是限制术人员发挥的一个重要瓶颈。从q去几年的黑白屏q手机到C256艌Ӏ?SPAN lang=EN-US>4096色及真彩艌Ӏ?SPAN lang=EN-US>Digital-Red在开发游戏时接触q非常多的手机,其中有的手机L能显C?SPAN lang=EN-US>4096Ԍ但我们将一?SPAN lang=EN-US>4096色的色阶图进行显C,便发现有的颜色根本无法区分,更让人吃惊的是,个别手机q色偏严重。所以,设计人员是一定要Ҏ实际手机q行囄l制Q在此,Digital-Red有过非常多的教训?/FONT>

[
明亮?/FONT>]
   
液晶屏幕׃其独特的发光原理Qƈ不能辑ֈ传统昄器的亮度Q同时也导致了很多色彩丰富的图案在强光下,不能昄出原有的效果Q这点在手机户外昄时尤其明显。因此设计h员在设计手机游戏囄时一定要考虑q点Q不能将色彩Ҏ度设|的q于接近、图片设计一定要z明快,避免q小的图片?/FONT>

[
昄速度]
   
在我们接触的手机里,很多׃q算速度的问题,D动画帧数q不能流畅,甚至辑ֈ不了10?SPAN lang=EN-US>/U,q对于游戏动画而言是致命的Q我们一般采取局部刷帧或者尽量避免全屏幕动画来尽量达到预期效果。而且液晶屏幕本n也有昄速度问题Q我们就发现q很多手机都有媄像“拖䏀情c这U情况,在实际游戏中很容易造成玩家的视觉疲劻I其在颠的车上或者是行动中,游戏旉q长Q就有头晕目眩的感觉。如此,即是一ƾ优U的游戏也无法留住玩家了?/FONT>

[
电力]
   
׃手机是液晶屏q,大多数设备在高亮度的像素昄与一般像素显CZQ两者耗电量是有所区别的,例如白色背景p比黑色背景消耗更多的甉|能量。因此,对于手机游戏而言Q要可能节省玩家的甉|Q也是对玩家的一U体贴吧?/FONT>

[
手机游戏开发过E中的一些错误观?/FONT>]
   
很多惛_发手机游戏的朋友们对于手机游戏都充满了惻I

Digital-Red
也曾与这些朋友们一P在脑中有非常多的想法等待实玎ͼ但一旦真正开发游戏的时候我们就发现很不现实Q这里将几个常见的错误认识与怽分nQ?/FONT>
   
ULPC游戏到手Z
    PC
上的游戏已经以百兆来计算其占用空间了Q而很多手机游戏是?SPAN lang=EN-US>K来计,大多数的手机游戏能安?SPAN lang=EN-US>60K的游戏就不错了?/FONT>
    J2ME
游戏不用改动可以q行在各U手Z
    J2ME
在移动设备上有一?SPAN lang=EN-US>MIDP   1.0标准Q但各个手机厂商在推出支?SPAN lang=EN-US>J2ME的手Z都对其进行了扩充甚至改动Q一个程序想要达到最理想的效果就一定要针对不同型号的手机?/FONT>

[
?SPAN lang=EN-US>Java开发手机游戏要比用C++?/FONT>]
   
使用Java开发手机游戏的非常方便,但在效果与性能上很难与C++代码实现效果比拟。如?SPAN lang=EN-US>Symbian   OS/WinCE讑֤上我们还是推荐尽量?SPAN lang=EN-US>C++来开发ؓ好?/FONT>

[Java
开发出的应用程序占用的I间?/FONT>]
   
在开发小型应用时Q?SPAN lang=EN-US>JavaE序的确I间占用较小Q但如果游戏目q大Q?SPAN lang=EN-US>Java游戏的小巧优势就很难体现了?/FONT>

[
手机游戏{划与传l?SPAN lang=EN-US>游戏{划无异]
   
手机游戏?SPAN lang=EN-US>{划忌非常多,要求{划人员必须全面了解手机的技术性能才能做出针对性的优秀游戏?/FONT>

[
术可以d图,然后再羃?/FONT>]
   
一张大囑֦果羃?SPAN lang=EN-US>12*12大小Q效果就可想而知了?

 



]]>
Symbian中的更改应用E序图标http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3480.htmlUd开?/dc:creator>Ud开?/author>Fri, 24 Feb 2006 20:41:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3480.htmlhttp://www.shnenglu.com/xiaoyun/comments/3480.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3480.html#Feedback1http://www.shnenglu.com/xiaoyun/comments/commentRss/3480.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/3480.htmlhttp://www.sf.org.cn/Article/symbiandev/200511/2579.html

Symbian中的更改应用E序图标


 

应用E序的图标需要在MMP文g中用AIF语句指定,一?SPAN lang=EN-US>MMP的例?/FONT>
/*
* ============================================================================
* Name : TestDlg.mmp
* Part of : TestDlg
* Created : 2005/09/12 by
* Description:
* This is the project specification file for TestDlg.
* Initial content was generated by Series 60 AppWizard.
*
* Version :
* Copyright:
* ============================================================================
*/

TARGET TestDlg.app
TARGETTYPE app
UID 0x100039CE 0x097A0B44
TARGETPATH \system\apps\TestDlg

SOURCEPATH ..\src
SOURCE TestDlgApp.cpp
SOURCE TestDlgAppUi.cpp
SOURCE TestDlgDocument.cpp
SOURCE TestDlgDialog.cpp
SOURCE MailViewDlg.cpp

RESOURCE ..\data\TestDlg.rss
RESOURCE ..\data\TestDlg_caption.rss
LANG SC

USERINCLUDE .
USERINCLUDE ..\inc

SYSTEMINCLUDE . \epoc32\include

LIBRARY euser.lib apparc.lib cone.lib eikcore.lib
LIBRARY eikcoctl.lib avkon.lib
LIBRARY eikdlg.lib estor.lib msgs.lib etext.lib

AIF TestDlg.aif ..\aif TestDlgaif.rss c8 context_pane_icon.bmp context_pane_icon_mask.bmp list_icon.bmp list_icon_mask.bmp


AIF
目录下的TestDlgaif.rss :

/*
* ============================================================================
* Name : TestDlgaif.rss
* Part of : TestDlg
* Created : 2005/09/12 by
* Description:
* RSS for creating the aif file for TestDlg.
* Initial content was generated by Series 60 AppWizard.
* Version :
* Copyright:
* ============================================================================
*/

#include <aiftool.rh>

RESOURCE AIF_DATA
{
app_uid=0x097A0B44;
num_icons=2;
embeddability=KAppEmbeddable;
newfile=KAppDoesNotSupportNewFile;
}

// End of File

安装后自动应用。一?SPAN lang=EN-US>MASK文gQ就是把图标存成黑白2位色的文Ӟ习惯上是名字?SPAN lang=EN-US>_maskQ上面的例子中,是context_pane_icon.bmp?SPAN lang=EN-US>context_pane_icon_mask.bmp以及list_icon.bmp?SPAN lang=EN-US> list_icon_mask.bmp四个文g。当然在资源文g要有说明Q也?SPAN lang=EN-US>AIF那行?SPAN lang=EN-US>



]]>
利用symbian的API得到手机型号http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3479.htmlUd开?/dc:creator>Ud开?/author>Fri, 24 Feb 2006 20:37:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3479.htmlhttp://www.shnenglu.com/xiaoyun/comments/3479.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3479.html#Feedback0http://www.shnenglu.com/xiaoyun/comments/commentRss/3479.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/3479.htmlhttp://www.sf.org.cn/Article/symbiandev/200511/3239.html

利用symbian?SPAN lang=EN-US>API得到手机型号


利用symbian?SPAN lang=EN-US>API得到手机型号

?Q困扰我很久的一个问题,?SPAN lang=EN-US>symbian?SPAN lang=EN-US>api里面Q就扑ֈ一?SPAN lang=EN-US>HALc,可以q回一些定义好?SPAN lang=EN-US>enumQ但也只是厂商等{,搞不?SPAN lang=EN-US>symbianZ么要q回enumQؓ什么不q回一个字W串Q厂商在制定的时候加q去是了?/FONT>
但是型号始l得不到Q请问大家有没有什么方法来得到型号Q比如要得到7610Q?SPAN lang=EN-US>

{:

事例Q?SPAN lang=EN-US>

from Forum_Nokia_Technical_Library_v1_8_en.chm

Fetching device model information
+-------------------------------------------------------------------------+
|Subject      |How can I fetch device model information                   |
+-------------+-------------------------------+---------------------------+
|             |Platform(s)                    |Device(s), SW version(s)   |
+             +-------------------------------+---------------------------+
|             |Series 60 Platform 1st Edition |N/A                        |
|             |Series 60 Platform 2st Edition |                           |
+-------------+-------------------------------+---------------------------+
|Category     |Symbian C++                                                |
+-------------+-----------------------------------------------------------+
|Subcategory  |General                                                    |
+-------------+-----------------------------------------------------------+
|Description  |In Symbian OS phones the machine UID is unique for each    |
|             | device type. Unfortunately the UID can be same for device |
|             |variants, such as Communicator variants (Nokia 9210, Nokia |
|             |9210i, Nokia 9290, and Nokia 9210c), and the UID cannot be |
|             |used to distinguish between exact device models. The       |
|             |Symbian machine UID can be retrieved with the HAL::Get()   |
|             |method, using HALData::EMachineUid as a parameter.         |
|             |                                                           |
|             |#include <hal.h>  // also link to hal.lib                  |
|             |                                                           |
|             |TInt mUid = 0;                                             |
|             |                                                           |
|             |HAL::Get(HALData::EMachineUid, mUid);                      |
|             |                                                           |
|             |For example:                                               |
|             |                                                           |
|             | 3650        0x101f466a                                    |
|             | 7650        0x101f4fc3                                    |
|             | N-Gage      0x101f8c19                                    |
|             | N-Gage QD   0x101fb2b1                                    |
|             | Siemens SX1 0x101F9071                                    |
|             | 6600        0x101fb3dd                                    |
|             | 7610        0x101fb3f3                                    |
|             | 9500        0x101f3ee3                                    |
|             | 6260        0x101fb3f4                                    |
|             | 6630        0x101fbb55                                    |
|             | 6680        0x10200F99                                    |
|             | 3230        0x10200F97                                    |
|             | 6682        0x10200F9B                                    |
|             | 6681        0x10200F9C                                    |
|             | N90         0x10200F98                                    |
|             |                                                           |
|             |Check the document Series 60 Platform Identification Code  |
|             |available at http://www.forum.nokia.com for a list of      |
|             |machine UIDs.                                              |
+-------------+-----------------------------------------------------------+
|Creation date|May 24, 2005                                               |
+-------------+-----------------------------------------------------------+
|Last modified|                                                           |
+-------------------------------------------------------------------------+

 



]]>
Symbian~译pȝ概观Q创试日志(logQ文?/title><link>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3478.html</link><dc:creator>Ud开?/dc:creator><author>Ud开?/author><pubDate>Fri, 24 Feb 2006 20:30:00 GMT</pubDate><guid>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3478.html</guid><wfw:comment>http://www.shnenglu.com/xiaoyun/comments/3478.html</wfw:comment><comments>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3478.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/xiaoyun/comments/commentRss/3478.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/xiaoyun/services/trackbacks/3478.html</trackback:ping><description><![CDATA[<BR>引用自:<A >http://www.sf.org.cn/Article/symbiandev/200511/3243.html</A><BR><BR> <TABLE class=center_tdbgall style="WORD-BREAK: break-all" cellSpacing=0 cellPadding=0 width=760 align=center border=0> <TBODY> <TR vAlign=center align=middle> <TD class=main_ArticleTitle style="WORD-BREAK: break-all" colSpan=2 height=50>Symbian~译pȝ概观</TD></TR> <TR vAlign=center align=middle> <TD class=main_ArticleSubheading style="WORD-BREAK: break-all" colSpan=2></TD></TR> <TR align=middle> <TD class=Article_tdbgall colSpan=2>作者:Peter Ji?nbsp;   文章来源Qcsdn    点击敎ͼ <SCRIPT language=javascript src="/Article/GetHits.asp?ArticleID=3243"></SCRIPT> 170    更新旉Q?005-11-8</TD></TR> <TR> <TD class=main_tdbg_761 id=fontzoom style="WORD-BREAK: break-all" vAlign=top colSpan=2 height=300><!--GOOGLEq告--> <P style="TEXT-INDENT: 24px; TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">有很多涉及到~译q程的工?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">.</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">q篇文章里我们仅学习一个最基本的工L译一个简单应用程序的q程</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">(</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">针对</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">Series 60</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">UIQ). </SPAN></P> <P style="TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></SPAN></P> <P style="TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">命o行工?/SPAN><SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">W一个涉及到的工具就?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">bldmake:</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">q个工具可以创徏一个命令文?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">,</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">你将用到q个文g来编译ƈq接你的应用E序</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">(abld). </SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">Bldmake</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">需?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">bld.inf</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">文g来完成这些工?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">Abld.bat</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">文g是应用程序编译的入口?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">. </P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">依据你传递给</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">abld</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">命o的参?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">.</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">会产生如下文g</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">:</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">一?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">Visual C++</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">工作区和目文g</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">(abld makefile vc6),</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">一?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">Windows</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">模拟器应用程?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">(abld build wins udeb)</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">或一个真?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">Symbian</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">讑֤的应用程?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">(abld build thumb urel). </SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">VC6</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">Wins</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">参数可以见名知义</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">(VC6=Visual C++6,Wins=Windows).udeb</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">则意味着</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">”Unicode-Debug?urel</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">表示</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">”Unicode-Release?Unicode</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">是一个字W编码格?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">(</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">有些cM</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">ASCII</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">Unicode</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">允许外文字符~码</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">(</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">包括汉语</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">)).Debug</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">的意思是你将会生关于你的应用程序的调试信息</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">(</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">大概是模拟器的版本信?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">),</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">发布到真实设备上时将不会包含调试信息</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">(</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">已经发布了就不会再需要调试了</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">) <BR><BR><BR></SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></SPAN></P> <P style="TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></SPAN></P> <P style="TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></SPAN></P> <P style="TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></SPAN></P> <P style="TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></SPAN></P> <P><SPAN style="FONT-SIZE: 16pt; COLOR: #000000">创徏调试日志QlogQ文?</SPAN></P> <P style="TEXT-ALIGN: right"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">?Peter Jiang(译自newlc.com) </SPAN></P> <P style="TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 10.5pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"></SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">需要在手机上调试代码或跟踪执行q程</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">?RFileLogger</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">也许可以帮助?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">.</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">q个</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">class</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">的功能非常强大而且很容易?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">. </SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">首先声明一个文件日志的q接q且创徏一?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">log</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">文g</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </SPAN></P> <DIV> <TABLE style="FLOAT: none; MARGIN-LEFT: 161px; MARGIN-RIGHT: 133px"> <TBODY> <TR> <TD style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid"> <P style="TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 9pt; COLOR: #ff0000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif"><FONT face=Tahoma>//打开日志文g服务的连?</FONT></SPAN></P> <P style="TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif"><FONT face=Tahoma>RFileLogger iLog; </FONT></SPAN></P> <P style="TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif"><FONT face=Tahoma>iLog.Connect(); </FONT></SPAN></P> <P style="TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif"><FONT face=Tahoma>iLog.CreateLog(_L("MyLoggingDirectory"),_L("MyLogFile"),EFileLoggingModeOverwrite);</FONT></SPAN></P> <P style="TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 9pt; COLOR: #ff0000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif"><FONT face=Tahoma>//... </FONT></SPAN></P> <P style="TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 9pt; COLOR: #ff0000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif"><FONT face=Tahoma>//关闭log文g和服务器q接 </FONT></SPAN></P> <P style="TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif"><FONT face=Tahoma>iLog.CloseLog(); </FONT></SPAN></P> <P style="TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif"><FONT face=Tahoma>iLog.Close();</FONT></SPAN></P></TD></TR></TBODY></TABLE></DIV> <P style="MARGIN-LEFT: 36px; TEXT-ALIGN: left"><FONT face=Tahoma><SPAN style="FONT-SIZE: 12pt; COLOR: #535353; FONT-FAMILY: 'serif', 'Courier', serif"></SPAN><SPAN style="FONT-SIZE: 10.5pt; COLOR: #535353; FONT-FAMILY: 'serif', 'Courier', serif"></SPAN></FONT></P> <P style="MARGIN-LEFT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 10.5pt; COLOR: #535353; FONT-FAMILY: 'serif', 'Courier', serif"><FONT face=Tahoma></FONT></SPAN></P> <P style="MARGIN-LEFT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 10.5pt; COLOR: #535353; FONT-FAMILY: 'serif', 'Courier', serif"><FONT face=Tahoma></FONT></SPAN></P> <P style="MARGIN-LEFT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 10.5pt; COLOR: #535353; FONT-FAMILY: 'serif', 'Courier', serif"><FONT face=Tahoma></FONT></SPAN></P> <P style="MARGIN-LEFT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 10.5pt; COLOR: #535353; FONT-FAMILY: 'serif', 'Courier', serif"><FONT face=Tahoma></FONT></SPAN></P> <P style="MARGIN-LEFT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 12pt; COLOR: #535353; FONT-FAMILY: 'serif', 'Courier', serif"><FONT face=Tahoma></FONT></SPAN></P> <P style="TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">W?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">3</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">行的</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">CreateLog</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">函数有三个参?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">: </SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">Log</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">路径</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">Log</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">文g?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">记录模式</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">(EFileLoggingModeOverwrite|EFileLoggingModeAppend) </SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">例如下列代码Q是我的</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">log</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">文g?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">full path(</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">手机上的文gpȝ</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">) </SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">C:/Logs/MyLoggingDirectory/MyLogFile</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">. </SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">Ҏ来说Q我习惯?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">opening</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">代码攑ֈ我希望跟t的</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">class</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">ConstructL()</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">函数里面Q然后在析构函数?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">closing.</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">在真正编码时Q你最好检一?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">Connect</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">CreateLog</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">是否q回?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">KErrNone. </SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">一旦你完成了这些,你就可以?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">log</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">文g中输入文本和数据了。基本的命o为:</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: justify"> <TABLE style="MARGIN-LEFT: 26px; MARGIN-RIGHT: 36px"> <TBODY> <TR> <TD style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid"> <P><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">命o</SPAN><SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </SPAN></P></TD> <TD style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid"> <P><SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">Log</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">文g</SPAN><SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </SPAN></P></TD></TR> <TR> <TD style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid"> <P style="TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'Tahoma', sans-serif"><FONT face=Tahoma>iLog.Write(_L("Hello World"))</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </SPAN></P></TD> <TD style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid"> <P style="TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'Tahoma', sans-serif"><FONT face=Tahoma>11/07/2003 4:00:13 Hello World</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </SPAN></P></TD></TR> <TR> <TD style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid"> <P style="TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'Tahoma', sans-serif"><FONT face=Tahoma>iLog.WriteFormat(_L("Result=%d"),err)</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </SPAN></P></TD> <TD style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid"> <P style="TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'Tahoma', sans-serif"><FONT face=Tahoma>11/07/2003 4:00:13 Result=0</FONT></SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </SPAN></P></TD></TR> <TR> <TD style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid"> <P style="TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'Tahoma', sans-serif"><FONT face=Tahoma>iLog.HexDump(aHeader,aHeader,myPtr,4)</FONT></SPAN></P></TD> <TD style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid"> <P style="TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'Tahoma', sans-serif"><FONT face=Tahoma>11/07/2003 4:00:13 myBuf:0000: 41 42 00 44 AB.D </FONT></SPAN></P></TD></TR></TBODY></TABLE></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">要是不希望记录日期和旉Q你可以使用q条语句来关闭它们?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </SPAN></P> <DIV> <TABLE style="FLOAT: none; MARGIN-LEFT: 161px; MARGIN-RIGHT: 325px"> <TBODY> <TR> <TD style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid"> <P style="TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'sans-serif', 'NSimSun', sans-serif"><FONT face=Tahoma>iLog.SetDateAndTime(TBool aUseDate, TBool aUseTime)</FONT></SPAN></P></TD></TR></TBODY></TABLE></DIV> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"><FONT face=Tahoma></FONT></SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"><FONT face=Tahoma></FONT></SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">别忘了在</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">MMP</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">文g上加?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">flogger.lib</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">Q还有包?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">flogger.h</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">头文件。现在可以编译执行你的程序了?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif"> </SPAN></P> <P style="TEXT-INDENT: 36px; TEXT-ALIGN: left"><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">Stop</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">Q?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">log</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">文gq没建立呢!正确Q这没办法在代码里完成,我们只能手工?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">C:/Logs/MyLoggingDirectory</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">目录中创?/SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000; FONT-FAMILY: 'serif', 'Times New Roman', serif">log</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #000000">文gQ否则什么日志也不会记录。不需要重新编译?/SPAN></P></SPAN> <SCRIPT type=text/javascript><!-- google_ad_client = "pub-4990535643016013"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text"; google_ad_channel =""; google_color_border = "FFFFFF"; google_color_bg = "FFFFFF"; google_color_link = "0000FF"; google_color_url = "000000"; google_color_text = "000000"; //--></SCRIPT> <SCRIPT src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript> </SCRIPT> </TD></TR></TBODY></TABLE><img src ="http://www.shnenglu.com/xiaoyun/aggbug/3478.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/xiaoyun/" target="_blank">Ud开?/a> 2006-02-25 04:30 <a href="http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3478.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于UIQ 2.1界面对中文的支持http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3477.htmlUd开?/dc:creator>Ud开?/author>Fri, 24 Feb 2006 20:03:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3477.htmlhttp://www.shnenglu.com/xiaoyun/comments/3477.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3477.html#Feedback0http://www.shnenglu.com/xiaoyun/comments/commentRss/3477.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/3477.html
在需要定义中文字W串的资源文件的W一行必d上:CHARACTER_SET UTF8Q如在HelloWorld工程中,在HelloWorld.rss文g中增加第一行:CHARACTER_SET UTF8Q后面修改:

RESOURCE TBUF r_example_text_Hello { buf="HelloWorld!"; }          ==>
RESOURCE TBUF r_example_text_Hello { buf="你好!"; }

重新~译生成安装HelloWorld_ARMI_UDEB.sisQ即可见到显C的信息变成"你好!"了?img src ="http://www.shnenglu.com/xiaoyun/aggbug/3477.html" width = "1" height = "1" />

]]>
W一个程序:试HelloWorldhttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3476.htmlUd开?/dc:creator>Ud开?/author>Fri, 24 Feb 2006 19:38:00 GMThttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3476.htmlhttp://www.shnenglu.com/xiaoyun/comments/3476.htmlhttp://www.shnenglu.com/xiaoyun/archive/2006/02/25/3476.html#Feedback1http://www.shnenglu.com/xiaoyun/comments/commentRss/3476.htmlhttp://www.shnenglu.com/xiaoyun/services/trackbacks/3476.html针对Nokia 6708手机的Symbian OS 7.0s, UIQ2.1界面Q环境搭建完成,主要安装了:

1、UIQ 2.1 SDK WINSQ完全安装?BR>2、C++ BuilderX 1.5 Mobile EditionQ完全安装?BR>3、Windows?2bit Debugger?/SPAN>

我手里没有VCQ就没有安装Q因个环境按照ARMI模式~译也可以了。开始前需要设定环?-讄Tools|Symbian SDK Configuation:

N1.jpg

现在开始进行第一个测试程序:HelloWorld?/SPAN>

1、进?C++BuilderX IDE?BR>2、File|New [Mobile C++]Import Symbian C++ ProjectQ选择UIQ SDK自带的例子程序UIQ_21\UIQExamples\HelloWorldQ导入?/SPAN>

n2.jpg

注意导入时Platform应选择ARMI?/SPAN>

3、编译生成SIS: Rebuild。在UIQ_21\UIQExamples\HelloWorld目录下生成HelloWorld_ARMI_UDEB.sis?BR>4、用手机应用程序安装工具安装HelloWorld_ARMI_UDEB.sisQ即可见?HelloWorld"了?BR>



]]>
SYMBIAN UIQ 开发^台搭?/title><link>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3475.html</link><dc:creator>Ud开?/dc:creator><author>Ud开?/author><pubDate>Fri, 24 Feb 2006 19:00:00 GMT</pubDate><guid>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3475.html</guid><wfw:comment>http://www.shnenglu.com/xiaoyun/comments/3475.html</wfw:comment><comments>http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3475.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/xiaoyun/comments/commentRss/3475.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/xiaoyun/services/trackbacks/3475.html</trackback:ping><description><![CDATA[<P align=left>引用自:<A >http://www.sf.org.cn/Article/symbiandev/Index.html</A><BR><BR>如何建立C++ BuilderX 1.5 Mobile Edition开发环?BR><BR><FONT size=4>1. 当然是C++ BuilderX 1.5 Mobile EditionQ这个可以从Borland公司的网站下载,具体URL如下Q?/FONT><A target=_blank><FONT color=#0000ff size=4><U>http://info.borland.com/survey/cbx15_mobile_edition.html</U></FONT></A><FONT size=4> Q你只需要填一下资料就可以得到Q?BR>资料填写完后Borland会把License文g发送到你填写的邮g中?BR><BR>2. Symbian的SDKQ这个大家可以从Nokia论坛以及Symbian的网站可以得刎ͼZ大家的方便,<BR>Borland的网站上也做了个列表方便大家获取QURL如下Q?/FONT><A target=_blank><FONT color=#0000ff size=4><U>http://www.borland.com/products/downloads/mobile_sdks.html</U></FONT></A><FONT size=4> Q?BR>大家可以Ҏ需要选择不同版本的Symbian SDKQ由于我是想针对SX1开发的Q所以就下蝲了西门子提供的SDKQ?BR>q个SDK是整合了Symbian Series 60和Siemens SX1 SMTK的?BR><BR>3. ׃在用Symbian的SDK时候,需要用Perl作ؓq行~译的脚本,而Series 60的SDK没有打包Perl的系l,<BR>如果你的pȝ没有Perl的话Q就需要下载一套Active Perl来运行?BR>下蝲的URLQ?/FONT><A target=_blank><FONT color=#0000ff size=4><U>http://aspn.activestate.com/ASPN/Downloads/ActivePerl/</U></FONT></A><FONT size=4> <BR><BR>4. 如果你原来已l有了MS VC6的开发环境,那么可以不需要看q里。因为,现在Symbian 的SDK都采用VC6q行~译q接Q?BR>所以,q需要安装MS VC6Q这个安装就自己惛_法了Q呵c不q,需要提醒的是装了VC6后一定要再安装SP3以上才行Q?BR>因ؓ在连接的时候用了nmake.exe。下载SP3的URL如下Q?BR></FONT><A target=_blank><FONT color=#0000ff size=4><U>http://www.microsoft.com/downloa ... 6-a16a-5c5477cb9713</U></FONT></A><FONT size=4> <BR><BR>5. 最后还需要用到的是Windows?2bit Debugger工具Q这个工具需要从微Y的网站下载,具体的URL如下Q?/FONT><A target=_blank><FONT color=#0000ff size=4><U>http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx</U></FONT></A><FONT size=4> <BR><BR>一切准备妥当,我们开始安装:<BR><BR>q里面安装ƈ没有什么先后顺序,因ؓ每套东西都相对独立,关键是后面的环境讄。我的安装步骤如下:<BR><BR>我先安装好VC6Q然后打上VC6的SP6Q接着安装Windows?2bit Debugger工具。MS的东西先装好了,<BR>接着我就安装C++ BuilderX 1.5 Mobile EditionQ然后,安装Symbian Series 60 1.2的SDKQ装好SDK后就安装Siemens提供?BR>专ؓSX1q行开发的模拟器插件SMTKQ这个时候会自动定义了EPOC了,大家把以上的东西都安装在C盘,<BR>q样后面出现的问题就好多。最后就是安装Active Perl。一切安装好后,嗯,那么我们开始设|?BR><BR>C++ BuilderX 1.5 Mobile Edition讄Q当然了Q我们要q行C++ BuilderX<BR>1. SDK的设|:<BR>在菜单中选择QTools->Symbian SDK ConfigurationQ然后选择AddQ?BR><BR><IMG onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return true;} else {window.open('/Article/UploadFiles/200511/20051110093001538.png');}" alt="" src="file:///G:/HXY/Symbian/doc/如何建立C++%20BuilderX%201_5%20Mobile%20Edition开发环?files/20051110093001538.png" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0><BR><BR>首先在SDK Path:通过览选择你安装Symbian SDK的\径,然后在SDK Template:选择Base(Symbian) Series 60 1.x (Microsoft version)Q?BR>最后再l这个SDK起一个名字,点击OKQ就完成了SDK讄Q对于以后你可以自行增加各种版本的SDKQ也是通过q里q行理?BR><BR>2. 环境变量讄Q?BR>在菜单中选择QProject->Default Project PropertiesQ在General TAP里面可以讄Encoding的方式,一般默认可以,大家也可以按照需要设|UTF-8?BR><BR><BR><IMG onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" style="CURSOR: hand" onclick="if(!this.resized) {return true;} else {window.open('/Article/UploadFiles/200511/20051110093011732.png');}" alt="" src="file:///G:/HXY/Symbian/doc/如何建立C++%20BuilderX%201_5%20Mobile%20Edition开发环?files/20051110093011732.png" width=716 onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0 resized="true" pop="Click here to open new window CTRL+Mouse wheel to zoom in/out"><BR><BR>然后在Variables TAP里面p讄VC6的PathQPerl的Path{等。一定要把C:\Program Files\Microsoft Visual Studio\VC98\Bin;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Binq?个VC6的\径加q去Q还有Perl的安装\径。否则编译的时候会出错?BR><BR><IMG onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" style="CURSOR: hand" onclick="if(!this.resized) {return true;} else {window.open('/Article/UploadFiles/200511/20051110093014397.png');}" alt="" src="file:///G:/HXY/Symbian/doc/如何建立C++%20BuilderX%201_5%20Mobile%20Edition开发环?files/20051110093014397.png" width=716 onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0 resized="true" pop="Click here to open new window CTRL+Mouse wheel to zoom in/out"><BR><BR><BR>3. Debugger的设|:<BR>对于使用VC~译的Symbian应用E序Q需要用到Windows的cdb来进行调试,所以,我们必须另外安装cdb。然后接着上面的Default Project Properties的设|,在Debug TAP。选Microsoft CDB DebuggerQ然后在Location of CDB选择好你安装Windows 32bit Debugger的\径和E序?BR><BR><IMG onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" style="CURSOR: hand" onclick="if(!this.resized) {return true;} else {window.open('/Article/UploadFiles/200511/20051110093017901.png');}" alt="Click here to open new window CTRL+Mouse wheel to zoom in/out" src="file:///G:/HXY/Symbian/doc/如何建立C++%20BuilderX%201_5%20Mobile%20Edition开发环?files/20051110093017901.png" width=716 onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0 resized="true"><BR><BR>4. ~译选项的设|:<BR>l箋上面的Default Project Properties的Build TAPQ在q里可以讄~译时候的选项Q我的徏议就?, 3, 4够了,默认4 show build log是不打开的,q个对于~译时候出问题׃知道发生什么事了,所以最好打开Q那么出错的详细信息都有了,对调试帮助很大?BR><BR><IMG onmousewheel="return imgzoom(this);" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(!this.resized) {return true;} else {window.open('/Article/UploadFiles/200511/20051110093019638.png');}" alt="" src="file:///G:/HXY/Symbian/doc/如何建立C++%20BuilderX%201_5%20Mobile%20Edition开发环?files/20051110093019638.png" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0><BR><BR>OKQ那么整个环境就搭徏好了Q终于可以基于C++ BuilderX 1.5 Mobile Editionq行Symbian的应用开发了?/FONT></P><img src ="http://www.shnenglu.com/xiaoyun/aggbug/3475.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/xiaoyun/" target="_blank">Ud开?/a> 2006-02-25 03:00 <a href="http://www.shnenglu.com/xiaoyun/archive/2006/02/25/3475.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.oushiliansuowa.cn" target="_blank">Ʒþþþþþþþ</a>| <a href="http://www.s360.com.cn" target="_blank">þþƷһapp</a>| <a href="http://www.rainbows.net.cn" target="_blank">˾þۺ</a>| <a href="http://www.211228.cn" target="_blank">޾ƷۺϾþ</a>| <a href="http://www.ziximaker.cn" target="_blank">91þþƷ91þɫ</a>| <a href="http://www.lskcop.cn" target="_blank">Ⱦþԭɫwww </a>| <a href="http://www.020hb.com.cn" target="_blank">ŷ㽶þۺվ</a>| <a href="http://www.qzxqd.cn" target="_blank">þ޾ƷƷ</a>| <a href="http://www.csmfy.cn" target="_blank">þƵۿ</a>| <a href="http://www.ahyjj.cn" target="_blank">Ļһþ</a>| <a href="http://www.iaftvc.cn" target="_blank">þľƷĻ</a>| <a href="http://www.vetg.cn" target="_blank">þþƷŷ</a>| <a href="http://www.fvxg.cn" target="_blank">ձvaĻþ</a>| <a href="http://www.orientalhotel.com.cn" target="_blank">þǿdŮ</a>| <a href="http://www.xuanhaoma.com.cn" target="_blank">99þerֻоƷ18</a>| <a href="http://www.cgjiamei.cn" target="_blank">AƬٸþ</a>| <a href="http://www.jiawengc.cn" target="_blank">þѹƵ</a>| <a href="http://www.grux.cn" target="_blank">˹ھƷþþþһ</a>| <a href="http://www.dongzhounews.cn" target="_blank">Ʒ˾þþ</a>| <a href="http://www.iscrip.cn" target="_blank">þøƬ</a>| <a href="http://www.kangaiw.cn" target="_blank">69Ʒþþþ9999</a>| <a href="http://www.fuxingjidian.cn" target="_blank">þþþþþþ뾫Ʒպ </a>| <a href="http://www.bushenba.cn" target="_blank">þþþ޾Ʒ</a>| <a href="http://www.guwz.cn" target="_blank">˳wwwþþ</a>| <a href="http://www.rqhsjc.cn" target="_blank">Ůþþþþ</a>| <a href="http://www.xnhtml.com.cn" target="_blank">Ʒ˾þþþҹӰ</a>| <a href="http://www.b947.cn" target="_blank">99þþƷ⿴һ</a>| <a href="http://www.jiudexn.cn" target="_blank">޹Ʒþþò</a>| <a href="http://www.srdwl.cn" target="_blank">һþaþþƷۺ㽶</a>| <a href="http://www.fxmodels.com.cn" target="_blank">Ʒþþþ</a>| <a href="http://www.pcb0.cn" target="_blank">99þ˾ƷۺϹۿ</a>| <a href="http://www.xuwonline.cn" target="_blank">þþþƷҹѲ</a>| <a href="http://www.ysbzxx.com.cn" target="_blank">þ99ھƷ</a>| <a href="http://www.cjlxz.cn" target="_blank">޾þһ</a>| <a href="http://www.0717zf.cn" target="_blank">99þùں;Ʒ1ӳ</a>| <a href="http://www.jojo-m.cn" target="_blank">þҹҹݺ</a>| <a href="http://www.lueyi.com.cn" target="_blank">ij˾þþþӰԺѹۿ</a>| <a href="http://www.haokan1.cn" target="_blank">ŷþþþ9999</a>| <a href="http://www.aikandianying.cn" target="_blank">vĻþ</a>| <a href="http://www.smash6.cn" target="_blank">޹þþۺ</a>| <a href="http://www.ssc929.cn" target="_blank">ĻƷþ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>