×

Discussion Board

Page 1 of 3 123 LastLast
Results 1 to 15 of 37
  1. #1
    Regular Contributor
    Join Date
    Feb 2004
    Posts
    278

    Talking Symbian/S60 新手指南! [2008年4月更新]

    之所以选择这个时候贴,一个是因为看到了这里越来越多的人气,新手的人气,另外一个就是如果昨天贴的话,可能会有purchasing that 6600的嫌疑

    Rule No. 1
    Never give up in the first month!
    Never give up when you can not get anything after effort. Effort will show you effect in the next month. Symbian=Simple, thats the thing, but not simple in beginning. After beginning, everything is simple.

    Rule No. 2
    Symbian is an Euro Guy, Not Uncle Sam!
    Symbian/Series60 is a totally native of Europa, which locates in the other side of the Atlantics. So *DO NOT* thinking in Windows, *DO NOT* thinking in MSDN, *DO NOT* thinking in MFC, even STL and Standard C/C++. A pure background without experience in Windows platform may be helpful, like me, an idiot in MFC/Win32.

    Rule No. 3
    SDK Documents = THE HOLY BIBLE!
    I believe that the SDK Documents will answer your 80% questions. And examples could help you for these answers in practice.

    Rule No. 4
    If there is some need to point out THE HOLY BIBLE of HOLY BIBLES, they are:

    For Symbian Programming
    Coding Idioms for Symbian OS C++ Programmers v1.0 (in Chinese)
    http://ncsp.forum.nokia.com/download...ef=ncspsupport

    For Series60 Architect
    Developer Platform 2.0 for Series 60: Application Framework Handbook 1.0 -- (2003/12/05)
    This document describes how to develop professional applications using the application framework.
    http://ncsp.forum.nokia.com/download...ef=ncspsupport

    THIS IS *ONLY* THE PERSONAL ATTITUDE OF KCOME, HAS NO RELATED WITH OTHER THINGS, AND KCOME DOES NOT RESPONSIBLE FOR ANYTHING OF THIS. [10KBYTES COMMON LEGAL ANNOUNCES AVOIDED HERE... ]

    Rule No. 5
    Write your question and paste the confuzing code here, we will be the docters.

    Hope this helps
    And hope all newbies including me will enjoy Symple Symbian Programming.

    我是一个Symbian/S60(以后简称S2)Developer和爱好者,觉得这是一套挺不错的系统,所以在个人方面,挺致力于S2在中国的发展。我发现很多beginner有心学习,只是还缺乏一定的方法。
    我不敢说我达到了哪样的水平,我只是在去年5月份就开始摸着石头过河,个人积累了一点点算不上经验的方法和感受,我想在我不忙的时候,我会都把它们写出来的。
    我程序写得并不怎么样,也没有什么好方法,也许你看了我的介绍,会说,这是什么方法啊,我其实就是抛砖引玉,希望用我这块儿砖大家的玉都引出来。希望S2能在国内发展起来!

    最基本的要求,如果你看这英文头大,我想你不用搞S2了,甚至是不用编程了。这方面的话,我是怎么难听怎么说,因为......,这里面的道理问你的初中英文老师。
    还有一点,如果你觉得本贴有用,挺好的话,请配合作者,发表对帖子中述及的东西,提问也好,评论也好,最好另外开话题回复,这样会保证本贴的使用效率!谢谢合作!

    版权声明:
    本人仅保证此处的綺验为作者个人的直接使用经验,并非从他处摘抄引用,若有翻译或引用会特定指出。欢迎大家同步/保存本贴,仅作为个人学习参考使用。未经作者本人许可,请勿转载本贴中的任何部分的内容,若有问题或需求请发email至
    harry.li@byread.com
    作者本人不对本贴的所述及的内容作任何明示或暗示的保证,如因为阅读本贴而产生的政治或商业上任何直接或间接的损失、生命伤害或威胁,包括但不限于前述,作者均不对其后果负任何责任。
    作者对本贴保留所有权利。
    Copyright Li Hanfei 2004-2008


    本来是为了打字快一点,但是发现这片英文帖子很多beginner不满意。
    为了大家,还是再写一遍中文翻译吧。

    1,在第一个月决不放弃!
    当你在接触S2的头一个月中,綺过努力你仍然没有看到什么起色的时候,决不要放弃S2的学习。你的努力会在随后到来的日子中慢慢显现效果的。记住,Symbian=Simple,这就是全部了,只是不会在一起开始的时候显露,但是一旦你入了门,一切都会是很简单的了。

    2,Symbian/Series60是欧洲佬,不是山姆大叔[美国货]
    Symbian/Series60是土生土长的欧罗巴,他们在大西洋的另外一边。所以,不要用Windows的思维模式去思考Symbian上面的问题,不要再编程的时候还对MSDN念念不忘,更不要去幻想MFC甚至是STL和标准C/C++库。如果你没有背景,是一个新鲜的没有被任何Windows平台经验所“玷污”的新手,这样的情况将会是很有帮助的。比如我,一个WIN32/MFC的白痴~~

    3,SDK文档=《圣经》
    我相信SDK文档可以回答你80%的问题,并且文档中的例子会在实践方面回答你的问题,多多看SDK文档等于诵读圣经。

    4,如果在《圣经》当中需要指出《圣经》中的《圣经》
    那么它们是:

    在Symbian编程方面,下面的这本
    Coding Idioms for Symbian OS C++ Programmers v1.0 (in Chinese)


    在Series60构架方面,下面的这本
    Developer Platform 2.0 for Series 60: Application Framework Handbook 1.0 -- (2003/12/05)
    This document describes how to develop professional applications using the application framework.


    这*仅仅*是作者本人[kcome]的个人观点,与其它方面没有任何联系,不包括任何明示和暗示,对于此处言论引起的商业或其它方面的损失,包括但不限于,地球过热,冰川融化,臭氧空洞,夫妻不合,情侣分手,邻里矛盾,交通堵塞,恐怖袭击,马家爵2,等等等等,本人不付任何责任。[此处略去法律声明1万字]

    5,当你在此论坛发问的时候,请你首先搜索一下别人以前提问的贴子,你的问题很可能在很久以前就有人问过了,不发重复的的问题会是一个很好的习惯,并且有助于个人学习能力的提高。关于发问您可以参考《提问的艺术》一书。另外,在发问的时候如果您能附带没有商业机密的源代码,大家将会更方便更准确的根据您的源代码帮您解决问题。

    Best Regards
    kcome
    Last edited by kcomex; 2008-04-19 at 04:48.

  2. #2
    Super Contributor
    Join Date
    Mar 2003
    Location
    Beijing
    Posts
    3,609
    Many thanks to Kcomx for his good advice. I think it is very worth reading. Hopefully, it will be benifical to the rest of the developers.

    Remember one IMPORTANT thing. In Rome, do as Romen. In Symbian programming, remember always follow Symbian rules.

    Liuxg
    Forum Nokia

  3. #3
    Regular Contributor
    Join Date
    Feb 2004
    Posts
    278

    [2004-04-07] Some comment/一些注记

    [保留位置,即将更新,敬请期待]
    Last edited by kcomex; 2008-04-19 at 04:49.

  4. #4
    Regular Contributor
    Join Date
    Feb 2004
    Posts
    278

    [2004-04-07] 给初学者的5点金科玉律[中文]

    [保留位置,即将更新,敬请期待]
    Last edited by kcomex; 2008-04-19 at 04:50.

  5. #5
    Regular Contributor
    Join Date
    Feb 2004
    Posts
    278

    [2004-04-07] General Hints / 一般提示

    学习S2,我的方法无非是:
    ·每天coding,多少小时你自己掌握,看你有多少时间了。

    ·coding的同时,打开SDK Help,查里面的函数库。

    ·资源管理器的“搜索”功能不能少,你可以在你的安装目录\series60ex里面找到Series60的范例代码,\example这里找到Symbian的范例代码

    ·范例代码我是使用UltraEdit来察看并却穇阅的,不要畏惧Nokia长长的example,他只是为了在一个例子里面展示能牵扯到的所有的功能,你所需要的可能只是一个类的几行使用方法,找到那一段,把它copy出来,用在你的.cpp里面理解就可以了。

    前面是网下的,下面说说网上的。
    ·每天来这里看看首页更新,有document就下载下来,是你所需要的就马上看。

    ·看看DiscussionBoard,这里,Chinese Application Development > Symbian ,有别人的问题,你可以记住并且以后参考。

    ·自己遇到的问题,就在这里用AdvancedSearch找一下。

    ·NewLC www.newlc.com 是一个好网站,我发现的除了Forum Nokia之外唯一的S2站点。它里面的Tutior教学部分真的有很多好东西,我建议都给他离线浏览下载下来,我就是这么做的。不过它里面的论坛,我还没有看,主要是外国人太多,好像也都是提问的,真正解决问题的没有这里那么好吧。

    其它的,也没有什么了,你要是想看市场,还有www.symbian.comwww.series60.com

    Regards
    kcome

  6. #6
    Regular Contributor
    Join Date
    Feb 2004
    Posts
    278

    [2004-04-08] Tools and SDK / 工具和开发包

    做S2的开发,在了解了你需要做的工作和基本情况之后,开发包就是我们开始做程序的第一步了。

    现在,Nokia的Symbian/Series60开发包支持的集成开发环境[IDE]工具有
    Microsoft Visual Studio 6 / Visaul C++ 6
    Microsoft Visual Studio .NET [2003] / Visaul C++ 7
    Borland C++ Builder 6
    Borland C++ Builder X 1.0
    Metrowerks CodeWarrior Studio for Symbian Personal/Professional 2.0/2.5
    可以说篲盖了目前Windows平台上的主流开发工具,给我们准备了很多选择。选择哪种开发工具依据是你个人的习惯和喜好,孰优孰劣到没有太大的分别。需要注意的是,对于不同的开发环境,我们需要选择不同的开软件开发包[SDK]。

    Microsoft:
    他的开发环境是大家所熟悉的,S2的开发包SDK大部分是倾向于支持Visual C++ 6的,不过2.1Beta版的SDK开始支持了Visual Studio .NET。利用Visual Studio 6进行开发,一个好处便是它可以使用AppWizard来自动生成项目的代码文件,自动给你起名字的类命名。我至今还是保留了一个VC6来使用AppWizard。Visual Studio .NET其强大的code editor是我比较喜欢的,它上面其实也可来进行S2的开发,不过你在导入VC6的project文件的时候,需要关闭C++ Exception选项还有Security Check,其他还有两个选项我记不清了,但是不影响大局,你可以在论坛里面搜索相关的贴子来察看。利用Microsoft的IDE进行开发,一个不足便是你每一次调试程序,都需要启动emulator,然后通过关闭emulator来结束调试,否则不能对你的程序进行修改/重新编译调试。这个看起来没有什么问题,很合乎逻糭,但是如果你体验一次emulator的启动速度,那么你就会对此大感不快!解决办法,目前只有在别的IDE上面有。

    Metrowerks:
    Metrowerks CodeWarrior,我已綺在论坛中介绍了几次了,但是大家兴趣仍然不高,不晓得是为什么。我选用CodeWarrior的一个最主要訽因时,我看中了它可以不用重新启动emulator就可以重新编译并且进行设置断点,察看内存这样的调试,这是其他的IDE都无法企及的。看到Nokia在Series90方面首先支持的是CodeWarrior,那么我想Nokia以后的态度也可以从这里进行一些推测吧。

    Borland:
    Borland是一个有故事的人/公司了。他的大起大落,大喜大悲,让人欢喜让人忧。废话不多说了,看Borland_RAD这一篇文档之后,你会对Borland C++ Builder X有一个新的认识,它的优势就在于可以可视化的设计我们的60系列程序界面。我还没有实际使用过可视化设计的功能,所以也不敢妄加评论,不过构建在Java虚拟机上面的IDE,运行效率实在让人担忧?_?_

    以上是各个公司开发工具的介绍,希望对新入门的朋友有一点点帮助。
    下面开始介绍SDK的版本和安装注意事项。

    在此仅仅介绍一下Series60的SDK,因为其他平台的我不太熟悉,所以不敢多言。
    首先,SDK从时间轴分为1.x和2.x,从方向轴分为for Microsoft Visual C++[后简称VC]和for Metrowerks CodeWarrior[后简称CW]。
    先说说比较简单的方向分类,For CW的不可以用在VC上面,For VC的不能用在CW上面,如果你想使用AppWizard[见前面的描述],我还是建议你保留一个VC6.0,并且装一套For VC的SDK。
    那么版本上来讲,我们现在可以看到的主要有1.2, 2.0, 2.1beta, 0.9Chinese, 1.0。其中的具体细节因为我不是Nokia的,我也不那么清楚,只是就使用方面的綺验谈两点。

    1,SDK工作不正常的一个主要訽因是EPOCROOT的设置。
    在2.0版本的SDK之前[不包括1.2For CW],你需要在系统变环境量中设置一个名为EPOCROOT的环境变量,(什么是环境变量,如何设置,这个去自学),他要指向你的SDK包含有epoc32的路径,前面没有盘符,后面要加一个"\",这个一般在你安装了SDK之后系统会自动替你加好。不过2.0之后的[包括1.2 For CW]就不必设置了,有一个名为devices的SDK管理工具会为一些需要使用这个变量的工具提供类似模拟EPOCROOT环境变量的功能。可以把devices看作是多个Symbian SDK,不限于S60,得切换工具,他的使用方法可以在你安装了2.0SDK之后,在命令行模式下输入 devices -help 来获得帮助。

    2,路径问题。
    许多朋友把SDK放在了一个盘上,比如C盘,而把你的Project放在了与SDK不同的盘上面,比如D盘,这样是会发生编译错误的,编译无法进行。另外我的一个朋友有过这样的情况:他的Project的路径中,有中文字符,比如
    C:\Document and Settings\Foo\桌面\Foo’s Project
    这样的情况也是会发生错误的。

    3,綺常有找不到nmake,或者是某一个dll之类的错误发生在编译或者联接程序的时候。这个时候你需要把含有nmake.exe和缺少的文件所在的路径,附加在PATH环境变量的后面,这样就可以了。

    4,SDK版本与设备之间的的兼容性。
    我以前曾綺试验过的情况是:
    2.x SDK编译的程序在3650和7650这样的1.x平台的机器上面是根本无法运行的。但是在6600这样的2.x平台上面可以运行。
    1.x SDK编译的程序可以在目前几乎所有的设备上面运行。

    5,中文版和英文版的问题。
    很遗憾0.9版的SDK之后,Nokia就没有再出过中文版的SDK了。倒是也没有太大的关系,我建议大家在开发程序的时候是用英文的UI,用户界面,当所有的问题都解决了,没有问题的时候,再把程序换成中文界面,如何更换我会在以后谈一点心得的。不过如果你使用的是Graphic Context来DrawText在屏幕上面,那么只需要将中文版SDK中的字体文件[*.gdr]复制到你的英文版模拟器中相应的目录下面[可能是:epoc32\release\wins\udeb\z\system\fonts]你就可以得到中文的显示了。记住:仅仅限于DrawText这样的绘制函数。

    6,不同版本SDK兼容性。
    这些祥见每一个版本的Release Notes,那里会介绍的比较清楚。比如哪些.h被删除了,这些大家要注意。一个例子便是plpvariant.h的文件,在2.1Beta里面没有了,那么如果你希望在2.1Beta中仍然是用这个函数,就最好把其他版本的SDK中的这个文件复制到你的2.1SDK中,不要忘记.lib, .dll文件。

    7,Perl and Java 编译运行环境。
    S2的Windows平台开发系统,使用了一套工具链[Tool Chain]来进行工作。如果你的系统中缺少了Perl运行环境,编译将无法进行。如果你不使用Sisar, CSHelp之类的工具,那么Java运行环境不要也可以。但是我不主张这样做,因为如果系统缺少了Java运行环境,很难想象会发生什么事情。

    8,还有什么么?我想起来再说......

    Regards
    kcome

    Last edited by kcomex; 2004-04-11 at 07:27.

  7. #7
    Regular Contributor
    Join Date
    Feb 2004
    Posts
    278

    [2004-04-10] 中文问题/Chinese Related

    File Details
    Filename: ChineseTextonN9210c.pdf
    Release Date: 2002-06-14
    Filesize: 302 kB
    Copyright: 2002 Nokia
    Publisher: Forum Nokia
    Document Type: Tutorial
    Language: Chinese
    Page Count: 8
    Subject: Symbian

    http://ncsp.forum.nokia.com/download/?asset_id=49

    上面这一篇讲得很详细,虽然是9210上面的例子,但是Series60大部分都同样适用。我记得还有一篇7650上显示中文的例子,就是下面这一篇:
    Developer platform 1.0 : Series60 上显示中文的教程
    http://www.forum.nokia.com/files/nds...3,2905,00.html

    在模拟器或者真机上面显示中文,这是一个不难的问题。
    先说说模拟器。因为我很久很久没有用过0.9中文版的模拟器了,所以对其情况也忘记的差不多了。我想如果是0.9中文版的模拟器,显示中文应该没有什么大问题了,不过SDK V0.9中不全的header&lib,这个会对你开发程序造成影响吧,所以我还是不建议现在仍然在使用SDK V0.9。
    那么使用英文版模拟器要如何显示中文呢?其实是不可以显示中文的。英文版的SDK中主要是说他的模拟器没有制作成中文版,所以如果你在菜单中写了中文,他是无法显示的。但是有一个例外,就是如果你在程序中实现Draw函数的时候使用了DrawText或者DrawTextVertical,并且事先把中文版模拟器中的中文字体复制到了模拟器中,那么模拟器是可以显示中文的。注意这其实是等同于“用字体在屏幕上面‘划*’字”,其中的实现机理我想我还没有什么研究,扯远了肯定会出错,所以大家如果有需要的话,在英文版模拟器上面Draw中文,可以复制一下中文版中的字体文件到英文版SDK的
    epoc32\release\wins\udeb\z\system\fonts(大概是这里,我现在手边没有SDK来参考)
    然后在DrawText之前调用一下字体就可以了。
    *因为论坛中文系统的訽因,我无法输入那个关键的“籣”字,一横一个田下面一个半包围,所以暂时用这个错别字代替了,我目的就是说明它是Draw上去的。

    在真机上面,大家显示中文无非就是按照上面那篇文档说的,一步一步来就可以了。
    大体上,在程序中显示中文分为固定的用户界面中文字符串和程序运行时生成字符串。第一类使用较多,而且也基本上可以代替第二类,所以我还是主张大家不要在你的.cpp里面写中文字符串,虽然它是可以实现的。
    用户界面中的字符串,Symbian系统是使用资源文件来保存并管理的。我们所需要知道的便是:在你的Project文件夹的data目录下面,编糭你的.RSS文件。这个文件中,你可以通过定义TBUF资源对象,来定义字符串。你定义的字符串,最好还是写成一个假名,比如
    Code:
    RESOURCE TBUF r_myprj_str_somestring
    	{
    	buf=qtn_myprj_str_somestring;
    	}
    而这个qtn_myprj_str_somestring,你最好写在myprj.loc里面,这样:
    Code:
    #define qtn_myprj_str_somestring "Some String"
    他的一个好处就是,你便于将你的程序作本地化/国际化处理。如果你的程序要做成很多语言的版本,那么你可以把你的用户界面字符串写成
    myprj.en.loc
    myprj.cn.loc
    myprj.fr.loc
    然后在编译的时候,只需要在你的rss文件中include不同的loc就可以了。这个就是他系统实现机制的考虑所在。
    准备好了.RSS文件和.LOC文件并不是万事大吉了,很多朋友在这里没有试验成功的一个訽因就是在.RSS文件的头部,忘了加上
    注意在RSS文件重要加入
    CHARACTER_SET UTF8
    或者是忘记了把.LOC文件给转换成UTF-8的格式。
    我目前使用的是Windows NotePad来转换UTF-8格式的,需要注意是如果你使用的是英文版的Windows,那么它会在LOC文件的头部添加3个前导标示字符,你需要再用UltraEdit[非UTF-8自动辨认模式]来删除他们。



    Regards
    kcome
    Last edited by kcomex; 2004-06-19 at 10:41.

  8. #8
    Registered User
    Join Date
    Feb 2004
    Posts
    1,980
    English is very important,but we're Chinese!

    各位同仁!努力吧!为后来人能用中文开发!

    r60600

  9. #9
    Regular Contributor
    Join Date
    Feb 2004
    Posts
    278

    [2004-04-22] Descriptor/String 字符串相关

    我们写程序,几乎很少不跟字符串打交道的,所以字符串这一块儿自然成了一个平台的很重要一块儿。

    因为Symbian系统是面向移动设备,用设计者的话说就是:资源受限的智能设备,另外它是基于ROM和RAM操作的,所以他们对于字符串的处理也是采用了一套自己独创的方式来进行。这样的机制,初学者乍看起来会很不习惯,摸不到头脑,不知道他为什么要这么做。不过可以这样说,跟她的内存资源处理机制相比,字符串方面Symbian所作的改动还只是相当于换了一个名称而已,对于ISV级的开发者来说,它是在众多Symbian系统中众多独有特性中最好掌握的几种之一。

    在Symbian系统中,字符串被称为Descriptor,你不用知道为什么,就把它当作你熟悉的string也就好了。因为要对字符串进行操作,所以高级一些的平台,都把字符串写成了一个独立的类,当作对象来对他们处理,而不像是C中,字符串是char[],然后有一批函数来处理它。又考虑到Symbian系统所处理的字符串有在RAM中的也有在ROM中的,而RAM又是十分宝贵的,Symbian处理字符串提供了不止一个类,就在这里有了一点点不是那么直接的地方。
    下面开始具体讲解一下我的理解,

    在Symbian中,字符串的抽象类是TDes,它可以是TDes16业可以是TDes8,取决于你的程序是否处理Unicode。我们可以这样理解,TDes就是char[],不过它不以'\0'结尾,而是把长度信息保存在了头部,并且含有一个内存地址来表示他的位置。正如前面所述当今高级的平台构架,都会把字符串给分装成一个类,我们是把字符串当作一个对象来处理的,所以抽象类我们是不能直接定义一个实例来使用的,抽象类的作用,在于传递函数的参数,在这个时候我们可以把函数传递的参数当作最基本的抽象类来进行处理。那么要直接使用一个字符串,我们该使用什么呢?

    情况分为两种,如果我们的字符串是比较短的,并且字符串的长度是相对已知的话,我们须要使用的是TBuf<len>,其中len表示长度。同样,TBuf是一个Unicode相关的类,他表示TBuf16或者TBuf8。定义这样类型的一个字符串,我们使用这样的语句
    TBuf<100> buf100;
    就可以定义一个字符串了。然后,参看TBuf类在SDK文档中的参考说明,我们就可以使用这样的字符串了。注意,使用TBuf是事先知道他的大概长度的,使用的时候不能溢出,否则会出现程序错误而导致退出。另外,据说TBuf是被分配在了很宝贵的地方,所以尽量不要分配很长的TBuf,我想如果你的TBuf长度超过了2000,哪怕是已知长度也最好换下面的第二种方式来分配好了。模拟器里面大家试验东西的时候可以分配很大很大的,没有问题,只不过用在真机上面的时候就要小心了。

    另外一种,叫做HBufC,它是被分配在了Heap里面,可以在运行时才决定他的大小,不过也不能过大。定义一个HBufC我们可以使用下面的语句
    HBufC* heapBuf=HBufC::NewL(100);
    这样我们就定义了一个长度为100的heap字符串,需要注意的有几点。
    1,使用它地抽象类部分,也就是把它当作字符串使用,需要用他的Des函数来返回他的TDes类,比如
    heapBuf->Des()
    ,这样来调用HBufC的字符串部分。
    2,因为Heap字符串是一个新分配的对象,所以你必须在使用完之后立即手动删除它。我使用的是delete heapBuf;来删除的,不过我觉得如果能够使用Symbian系统中提供的CleanupStack库来进行删除的话,可能会更好。我因为对这一方面还没有什么研究,所以不敢在这里举例子。
    3,他的大小仍然是需要注意的,我的程序中分配过两个0x8000长的Heap字符串,没什么大问题。很早很早年少无知的时候,曾綺在0.9SDK的模拟器中一下子分配了1MegaByte的HBufC,没有任何问题。但是真机上面?_?_,我没有试验过,大家小心尝试~~~~

    最后还有一种叫做TPtrC这样的东西,我们可以全当他是一个指针,指向一个TDes,其实可以当作是节省heapBuf->Des()的键盘消耗,我们可以定义一个TPtrC pBuf;然后pBuf=heapBuf->Des(); 从此我们就可以把pBuf当作一个TDes来处理了,我很少用TPtrC,所以也不太熟悉,不敢多说了。

    需要注意的,
    ·在Symbian中,其实字符串都是按照Unicode编码保存的TDes16。
    ·我不知道为何在有的时候,定义'\n'是管用的,可是在EDWIN中,我却需要在TDes后面追价数值为0x2029的字符才可以换行。
    ·论坛中,或者其它网站[比如www.newlc.com],有介绍TDes16和TDes8之间的互转,请注意如果他们不是中国人,pure chinese,请注意他们是否会忽略中文处理,仅仅是简单的抛弃了高位为0的字节。如果是这样方法,我们最好还是考虑一下。三思而后行。

    这些就是字符串相关了,大家还是多看看SDK Help中这个部分,可以获得很多很多
    &raquo; Developer Library &raquo; API Reference &raquo; C++ API reference &raquo; Descriptors

    参考资料:

    ·SDK Help中:
    &raquo; Developer Library &raquo; Symbian OS Guide &raquo; Essential idioms &raquo; Descriptors

    ·www.newlc.com
    http://www.newlc.com/article.php3?id_article=12

    Hope this helps!
    Regards
    Last edited by kcomex; 2004-04-22 at 02:19.

  10. #10
    Regular Contributor
    Join Date
    Feb 2004
    Posts
    278

    [2004-05-10] Emulator Get Online/让模拟器上网

    好久不发贴子了,一个是因为我很少闲下来了,另外一个是肚子里面的油水也倒的差不多了
    这几天我在写一个需要上网的程序,因为以前就有过这样的试验,所以还是想总结总结留给大家参考。毕竟以后让你的程序通过GPRS上网来做事情,是一个主要的方向,这样我们的程序才能摆脱低端PDA的阴影,做到他们做不到的事情。在NewLC的网站上面有一篇Tutorial介绍让你的Emulator上网,可是那一篇有一点让人费解,而且好像随着SDK版本的更新,不少东西变了,所以我在这里再用中文写一写。
    废话少说,开始正题。

    1:让你的Emulator上网,我们可以通过软件或者硬件来实现。
    1-1:硬件实现就是用一根串行口通信电缆将你的电脑的两个COM口连接起来。因为我没有试过,所以也说不清楚怎么回事。
    1-2:更简单的方法是软件实现,就是用虚拟COM口的软件虚拟2个连接着的COM口。目前好像出了不少这样的软件,我用过的、目前了解到的只有一个叫做Virtual Serial Port Driver的工具,它的价格不菲,好在有14天的试用期。如果你觉得对你帮助很大的话,让他搜刮一点银子只当是破财消灾了。注意这样的软件好像可以虚拟很多COM口,比如COM119<-->COM120,可是我们的模拟器只能用COM1--COM4,所以大家还是不要去虚拟COM4之后的端口,除非你还有别的用处。另外还有需要注意的就是你必须在进行模拟器连接上网之前把你的COM1--COM4空出两个来[COM1,COM3或者COM2,COM4,他们成对出现],因为如果他们都被占用的话你自然不能通过任何方法来让你的模拟器上网了。

    2:下面我们继续,比如上一步我们虚拟出来了2个端口,并且连接了他们:COM2<-->COM4。然后我们要进行就是设置模拟器的端口,它的默认端口是COM1,如果你连接的是COM1<-->COM3的话,就可以跳过此步设置了。设置模拟器的通信端口我们要针对不同版本的SDK进行不同的设置,我所使用的1.2版本的SDK,它的设置是在命令行模式中输入setupcomms,就是运行SDK中的setupcomms.bat来进行设置,这里面找到Modem项,然后填入COMM:1[他代表的是COM2,因为它的COMM:0=COM1]就可以保存退出了。关于2.0SDK的修改方法,稍微有点复杂,因为我现在手边没有SDK的文档,大家可以参考这里来设置,并不困难。
    Series60 Developer Platform: Emulator Configuration v1.1
    http://ncsp.forum.nokia.com/download/?asset_id=11374

    3:应该是最后一步了吧。在SDK安装目录的这里
    .\Epoc32\Release\winc\udeb,有一个名为m-routerLite.exe的程序,运行他,设置察看刚才模拟器使用的COM2所连接着的COM4,我们就可以让模拟器上网了。

    4:其他。模拟器其是否可以成功上网,好像取决的因素还真是不少。比如你的LAN是否连接了,模拟器里面的AccessPoint是否设置了,但是我使用的方法在我这里是可以使用的,在我的2.1BetaSDK中,使用上面的方法设置模拟器是可以上网的。大家也不必拘泥于上面的步骤,因为这些东西被来就是自己摸索出来的,不同的机器不同的操作系统不同的硬件环境以及设置都可能影响到结果。所以上面的方法仅供大家对照参考。如果什么问题和建议,欢觃联系!renderboyy@sina.com

    希望上面的文字能对您有所帮助
    此致
    kcome


    [2004年7月23日更新]
    一下内容转载自本论坛帖子
    http://discussion.forum.nokia.com/fo...threadid=46574
    作者为hanming,希望对于使用SDK V2.1想让模拟器上网的朋友们有所帮助。同时本贴作者也衷心的希望大家都能热心的把常见问题总结出来,自己开贴或者跟在我这个置顶贴中都可以,共同进步才能营造良好的环境!


    KCOMEX兄,不要这样说哈,你的水平我是晓得的哈。
    为了更多的论坛的兄弟姐妹能看到这个帖子,KCOMEX兄,不知能否放在你的置顶帖当中。:)
    以下部分内容摘自
    http://discussion.forum.nokia.com/fo...threadid=41691

    我找了一下资料,现在已綺可以正常连接SOCKET了,现在总结如下:
    1. 找到并备份$EPOCROOT$\Epoc32\wins\c\cedout.cfg这个文件。(可选操作)

    2. 找到$EPOCROOT$\epoc32\release\wins\udeb下的ceddump这个EXE文件,并执行它(其作用是将模拟器的配置导出到cedout.cfg)

    3. 编糭$EPOCROOT$\Epoc32\wins\c\cedout.cfg

    [LANService]
    ADD_SECTION
    # COMMDB_ID = 1
    Name=LAN_service_1
    IfNetworks=ip,ip6
    IpNetMask=255.255.255.0 //子网掩码
    IpGateway=192.168.0.1    //网关
    IpAddrFromServer=FALSE //以前是TRUE,改成FALSE
    IpAddr=192.168.0.250     //指定的IP地址,不要和本机的IP重复
    IpDNSAddrFromServer=FALSE  //以前是TRUE,改成FALSE
    IpNameServer1=192.168.0.6  //DNS Server的第一个地址
    IpNameServer2=61.139.2.69  //DNS Server第二个地址
    FIELD_COUNT=9
    END_ADD

    注:以上的各项(除IpAddr是自定以外)都是用ipconfig /all查看出来的

    将DialogPref=PROMPT改为DialogPref=DONOTPROMPT

    [ConnectionPreferences]
    ADD_SECTION
    Ranking=1
    Direction=OUTGOING
    DialogPref=DONOTPROMPT
    BearerSet=LAN
    IAP=1
    FIELD_COUNT=5
    END_ADD

    4. 在DOS模式下执行ced -i cedout.cfg(将cedout.cfg导入到模拟器配置中,并进行相应的检测)

    5. 执行Emulator并测试连接(OK)
    Last edited by kcomex; 2004-07-23 at 05:59.

  11. #11
    Registered User
    Join Date
    May 2004
    Posts
    7

    關於使emulator 連上internet

    您好
    我使用的是series 60 V2.0所以裡頭並沒有mRouterLite.exe
    而我查了些文件 似乎要使用RAS才能使用模擬器上網
    而我使用的是windows xp
    裡面並沒有RAS
    所以想請問有沒有什麼方法可以讓series 60 V2.0在不使用RAS的情況下上網呢
    謝謝
    Last edited by ukelady; 2004-05-28 at 06:51.

  12. #12
    Regular Contributor
    Join Date
    Feb 2004
    Posts
    278

    [2004-06-19]File Manipulatating/文件操作

    大家好!
    很久没有写东西了,因为一直在忙着Coding,不綺常去学校机房一蹲几个小时地下载东西,才有空写教程呢。而且其实我想现在如果要写一点什么东西还是要对大家负责的,在没有SDK Doc的情况下,接着写一些技术性很强的东西恐怕不能保证质量,所以还是要在我自己的本本上面看着SDK Developer Library来写好了:)

    废话少说,开始正题,这次我介绍介绍Symbian中的文件操作。
    其实这方面的操作相对于Symbian的某些其他部分来说还是跟其他平台比较类似的,并无太大的不同。从最訽始的Standard C中的FILE结构到C++中的stream,再到目前的各种各样的流行的语言、脚本什么的,对文件的操作无非是打开一个用字符串指定文件名的文件,给出打开方式(Binary or Text, Read or Write),然后获得“文件对象”,你可以当作这个文件的实例或者句柄什么的(Instance or Handle),知道意思就行了,反正就是这么一回事;p?_?_在我们目前的面向对象程序中,如果要对文件进行读取或者写入等操作,无非就是调用在这个文件对象各种过程,比如写入,读取,Seek,之类的,等到用完了文件再用Close之类的过程关闭它以释放资源。这个就是我们编成的时候大致的操作文件的抽象描述。Symbian在这方面与其他平台并无太大差别。

    下面结合Code说说具体的操作:
    上面说了Symbian在文件操作方面与其他平台差别不大,但是全无差别也是不可能的。因为Symbian系统是为资源受限设备设计的,这一点我相信大家都听得耳朵起糨子了-_-,所以他的文件资源也是由系统管理的,我们要通过建立FileServer来与系统的文件服务通信,以建立客户端--服务器模式来访问文件。说了那么玄,其实很简单地,也就是说我们在纯粹的使用文件部分的时候,之前要Connet一下FileServer,之后要Close一下FileServer,就这么简单。
    如:
    Code:
    RFs fs;
    User::LeaveIfError(fs.Connect());
    /*
    * Your File Manipulatating Code Here...
    */
    fs.Close();
    我的Code其实并不好,如果是Symbian老手,我相信即使是简单的fs.Connect();也会有随后马上进行的CleanupStack类的操作,只是我目前还不熟悉,不敢妄自误导大众~~
    下面的就是文件了,我们在Symbian中使用的比较“低级”或者说“底层”的訽始文件对象是通过RFile类来实现的,大家只要参考一下DeveloperLibrary的这个部分就清楚了,位置是:(&raquo; Developer Library &raquo; API Reference &raquo; C++ API reference &raquo; File Server Client Side &raquo; RFile)
    下面给两个例子,来说明一下文件的打开,关闭,读,写,Seek等操作。
    Code:
    RFs fs;
    User::LeaveIfError(fs.Connect());
    RFile file
    User::LeaveIfError(file.Open(fs, _L("C:\\file.foo"), EFileWrite));
    TBuf8<256> buf;
    file.Read(buf, 256);
    file.Seek(ESeekStart, 911);
    file.Write(_L8("Some thing you wanna write..."));
    file.Close();
    fs.Close();
    注:以上代码没有綺过测试,没有綺过编译检查,但是綺过了对照SDK DeveloperLibrary的检查,技术上应该不会有什么问题。有两点要说明的,在程序中写死(HardCode)变量长度和位置什么东西还是最好用MACRO代替,这可能是所有programmer的常识了,我并不是在教大家而是指名我的实例代码中的不足;另一点就是_L8(), _L()这两个MACRO是Symbian不支持大家再使用的了,大家最好用_LIT()或者_LIT8()来代替好了,此处仅仅为了方便使用了一下。
    大家可以很容易从DeveloperLibrary看出,RFile支持的读写只有TDes8这种类型,也就是说它只能以byte,或byte数组的形式写入或者读出数据。如果大家想使用文本文件或者二进制数据文件的话,就要借助更高级的文件类了,他们的使用方法仍然是大同小异。
    TFileText提供了文本文件的读写,从他的API Reference中很容易看出来,在我们建立好的TFileText对象上,只要Set一个RFile到它本身上面,我们就可以用这个TFileText对象来很容易的对文件(就是底层的RFile)来进行文本文件的读写了。
    与此类似,RFileReadStream对象,在构造的时候只需指明构建在哪个RFile对象上,我们就可以方便的在这个RFile对象上进行数据的操作,比如读出一个32bit的整数,读出一个64比特实型数。RFileWriteStream进行的是写入方面的操作,操作方式与读入类相同,就不赘述了。

    从上面的例子和说明我们可以看出,Symbian系统的文件操作几乎与其他平台没什么太大的不同,也是符合所有的抽象文件操作要求的。对文件的操作只要我们看看DeveloperLibrary,记住几个常用的过程,就没有什么困难的了。

    希望我写的文字能给大家带来些帮助!
    Regards
    kcome

    Last edited by kcomex; 2004-06-19 at 10:26.

  13. #13
    Regular Contributor
    Join Date
    Jun 2004
    Posts
    67
    看了你文章,很感激。
    我马上给你邮件。
    你让我想到了几年前一个专家的话:
    Open的民族才能发展,Open的人才有未来。

    十分感谢你!

  14. #14
    Super Contributor
    Join Date
    Mar 2003
    Location
    Beijing
    Posts
    3,609

    新手贡献搭建开发环境和运行helloworld经验

    新手贡献搭建开发环境和运行helloworld经验

    终于顺利在VC6和VC++.NET上都运行通过了helloworld。
    由于用的是最新的S60 SDK 2.1,网上的开发环境方面的介绍都是2.0+VC6的,所以走了一些弯路,建议大家安装好SDK后,最好先看SDK的文档,一般,最新的改变,向导,都会在文档里介绍,网上的信息有可能会滞后。
    下面说说如何用2.1的SDK搭建VC7(VC++.NET)开发环境,并运行helloworld
    我的方法不一定是最好的,因为我只是还没入门的新手,但是用下面的方法可以成功运行到helloworld,至少能让未入门的新手体验一下,至少能让目前的学习进行下去,如果有什么不对的地方还请高手们指教。
    1)安装VS.NET 2003(如已安装省略这步)
    2)安装ACTIVEPERL
    3)安装SDK 2.1,在系统变量中添加EPOCROOT,值为:\symbian\7.0s\Series60_v21\(网上有文章说用subst将symbian映射为z盘,但我用这种方法无法通过helloworld,也无法将SDK安装在Z盘上,会提示一个什么路径错误,那篇文章介绍的是SDK2.0,不知道是不是版本不同的原因)
    至此,开发环境就算搭建完毕,下面是运行helloworldbaisc,原版英文资料在SDK的文档中
    4)打开.NET的DOS窗口(不是CMD)具体位置是:开始--程序--.NET--.NET工具--Visual Studio .NET 2003 命令提示。
    5)进入helloworldbasic的group目录(\symbian\7.0s\Series60_v21\Series60Ex\helloworldbasic\group),输入命令:makmake helloworldbasic vc7,生成VC7的工程文件,就在group目录下(网上的大部分文章都是说用abld makefile命令来生成VC6的工程文件,2.1已经有所改变)
    6)双击打开HELLOWORLDBASIC.sln,运行,提示重新生成,然后指定虚拟机的路径即可(\symbian\7.0s\Series60_v21\Epoc32\release\wins\udeb\epoc.exe)

    至此,helloworldbasic顺利运行

  15. #15
    Super Contributor
    Join Date
    Sep 2003
    Posts
    694
    为 kcomex 补充两点:
    1、symbian的所有文件名中最好不好含有空格等特殊字符,负责编译可能出错,我用0.9SDK是这样的。
    2、如果编译的时候出现了你不知道的文件夹,请将mmp文件所在的文件夹中的.bat和.inf文件删掉,用.mmp重新生成这两个文件。我一般都是使用mmpclick这个工具来生成的,因为命令行毕竟不方便。关于mmpclick的使用,在SDK附带的工具中有详细的说明。

Page 1 of 3 123 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •