﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-MyC++</title><link>http://www.cppblog.com/koozj/</link><description>C++</description><language>zh-cn</language><lastBuildDate>Tue, 14 Apr 2026 23:09:05 GMT</lastBuildDate><pubDate>Tue, 14 Apr 2026 23:09:05 GMT</pubDate><ttl>60</ttl><item><title>BCH校验算法</title><link>http://www.cppblog.com/koozj/archive/2007/03/27/20718.html</link><dc:creator>敲石头呀敲石头</dc:creator><author>敲石头呀敲石头</author><pubDate>Tue, 27 Mar 2007 09:16:00 GMT</pubDate><guid>http://www.cppblog.com/koozj/archive/2007/03/27/20718.html</guid><wfw:comment>http://www.cppblog.com/koozj/comments/20718.html</wfw:comment><comments>http://www.cppblog.com/koozj/archive/2007/03/27/20718.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/koozj/comments/commentRss/20718.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/koozj/services/trackbacks/20718.html</trackback:ping><description><![CDATA[
		<p>uint8 CDT_BCH_Check(uint8 *pucBuff, uint8 ucCdtVer)<br />{<br />static const uint8 aucBchD709[]=<br />{<br />    0x00, 0xE0, 0x70, 0x90, 0x38, 0xD8, 0x48, 0xA8,<br />    0x1C, 0xFC, 0x6C, 0x8C, 0x24, 0xC4, 0x54, 0xB4,<br />    0x0E, 0xEE, 0x7E, 0x9E, 0x36, 0xD6, 0x46, 0xA6,<br />    0x12, 0xF2, 0x62, 0x82, 0x2A, 0xCA, 0x5A, 0xBA,<br />    0x07, 0xE7, 0x77, 0x97, 0x3F, 0xDF, 0x4F, 0xAF,<br />    0x1B, 0xFB, 0x6B, 0x8B, 0x23, 0xC3, 0x53, 0xB3,<br />    0x09, 0xE9, 0x79, 0x99, 0x31, 0xD1, 0x41, 0xA1,<br />    0x15, 0xF5, 0x65, 0x85, 0x2D, 0xCD, 0x5D, 0xBD,<br />    0xE3, 0x03, 0x93, 0x73, 0xDB, 0x3B, 0xAB, 0x4B,<br />    0xFF, 0x1F, 0x8F, 0x6F, 0xC7, 0x27, 0xB7, 0x57,<br />    0xED, 0x0D, 0x9D, 0x7D, 0xD5, 0x35, 0xA5, 0x45,<br />    0xF1, 0x11, 0x81, 0x61, 0xC9, 0x29, 0xB9, 0x59,<br />    0xE4, 0x04, 0x94, 0x74, 0xDC, 0x3C, 0xAC, 0x4C,<br />    0xF8, 0x18, 0x88, 0x68, 0xC0, 0x20, 0xB0, 0x50,<br />    0xEA, 0x0A, 0x9A, 0x7A, 0xD2, 0x32, 0xA2, 0x42,<br />    0xF6, 0x16, 0x86, 0x66, 0xCE, 0x2E, 0xBE, 0x5E,<br />    0x91, 0x71, 0xE1, 0x01, 0xA9, 0x49, 0xD9, 0x39,<br />    0x8D, 0x6D, 0xFD, 0x1D, 0xB5, 0x55, 0xC5, 0x25,<br />    0x9F, 0x7F, 0xEF, 0x0F, 0xA7, 0x47, 0xD7, 0x37,<br />    0x83, 0x63, 0xF3, 0x13, 0xBB, 0x5B, 0xCB, 0x2B,<br />    0x96, 0x76, 0xE6, 0x06, 0xAE, 0x4E, 0xDE, 0x3E,<br />    0x8A, 0x6A, 0xFA, 0x1A, 0xB2, 0x52, 0xC2, 0x22,<br />    0x98, 0x78, 0xE8, 0x08, 0xA0, 0x40, 0xD0, 0x30,<br />    0x84, 0x64, 0xF4, 0x14, 0xBC, 0x5C, 0xCC, 0x2C,<br />    0x72, 0x92, 0x02, 0xE2, 0x4A, 0xAA, 0x3A, 0xDA,<br />    0x6E, 0x8E, 0x1E, 0xFE, 0x56, 0xB6, 0x26, 0xC6,<br />    0x7C, 0x9C, 0x0C, 0xEC, 0x44, 0xA4, 0x34, 0xD4,<br />    0x60, 0x80, 0x10, 0xF0, 0x58, 0xB8, 0x28, 0xC8,<br />    0x75, 0x95, 0x05, 0xE5, 0x4D, 0xAD, 0x3D, 0xDD,<br />    0x69, 0x89, 0x19, 0xF9, 0x51, 0xB1, 0x21, 0xC1,<br />    0x7B, 0x9B, 0x0B, 0xEB, 0x43, 0xA3, 0x33, 0xD3,<br />    0x67, 0x87, 0x17, 0xF7, 0x5F, 0xBF, 0x2F, 0xCF<br />};<br />static const uint8 aucBchEb90[]=<br />{<br />    0x00, 0x07, 0x0E, 0x09, 0x1C, 0x1B, 0x12, 0x15,<br />    0x38, 0x3F, 0x36, 0x31, 0x24, 0x23, 0x2A, 0x2D,<br />    0x70, 0x77, 0x7E, 0x79, 0x6C, 0x6B, 0x62, 0x65,<br />    0x48, 0x4F, 0x46, 0x41, 0x54, 0x53, 0x5A, 0x5D,<br />    0xE0, 0xE7, 0xEE, 0xE9, 0xFC, 0xFB, 0xF2, 0xF5,<br />    0xD8, 0xDF, 0xD6, 0xD1, 0xC4, 0xC3, 0xCA, 0xCD,<br />    0x90, 0x97, 0x9E, 0x99, 0x8C, 0x8B, 0x82, 0x85,<br />    0xA8, 0xAF, 0xA6, 0xA1, 0xB4, 0xB3, 0xBA, 0xBD,<br />    0xC7, 0xC0, 0xC9, 0xCE, 0xDB, 0xDC, 0xD5, 0xD2,<br />    0xFF, 0xF8, 0xF1, 0xF6, 0xE3, 0xE4, 0xED, 0xEA,<br />    0xB7, 0xB0, 0xB9, 0xBE, 0xAB, 0xAC, 0xA5, 0xA2,<br />    0x8F, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9D, 0x9A,<br />    0x27, 0x20, 0x29, 0x2E, 0x3B, 0x3C, 0x35, 0x32,<br />    0x1F, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0D, 0x0A,<br />    0x57, 0x50, 0x59, 0x5E, 0x4B, 0x4C, 0x45, 0x42,<br />    0x6F, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7D, 0x7A,<br />    0x89, 0x8E, 0x87, 0x80, 0x95, 0x92, 0x9B, 0x9C,<br />    0xB1, 0xB6, 0xBF, 0xB8, 0xAD, 0xAA, 0xA3, 0xA4,<br />    0xF9, 0xFE, 0xF7, 0xF0, 0xE5, 0xE2, 0xEB, 0xEC,<br />    0xC1, 0xC6, 0xCF, 0xC8, 0xDD, 0xDA, 0xD3, 0xD4,<br />    0x69, 0x6E, 0x67, 0x60, 0x75, 0x72, 0x7B, 0x7C,<br />    0x51, 0x56, 0x5F, 0x58, 0x4D, 0x4A, 0x43, 0x44,<br />    0x19, 0x1E, 0x17, 0x10, 0x05, 0x02, 0x0B, 0x0C,<br />    0x21, 0x26, 0x2F, 0x28, 0x3D, 0x3A, 0x33, 0x34,<br />    0x4E, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5C, 0x5B,<br />    0x76, 0x71, 0x78, 0x7F, 0x6A, 0x6D, 0x64, 0x63,<br />    0x3E, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2C, 0x2B,<br />    0x06, 0x01, 0x08, 0x0F, 0x1A, 0x1D, 0x14, 0x13,<br />    0xAE, 0xA9, 0xA0, 0xA7, 0xB2, 0xB5, 0xBC, 0xBB,<br />    0x96, 0x91, 0x98, 0x9F, 0x8A, 0x8D, 0x84, 0x83,<br />    0xDE, 0xD9, 0xD0, 0xD7, 0xC2, 0xC5, 0xCC, 0xCB,<br />    0xE6, 0xE1, 0xE8, 0xEF, 0xFA, 0xFD, 0xF4, 0xF3<br />};<br />static const uint8 *pucTable;<br />uint16 unSize;<br />uint8 ucRslt;</p>
		<p>    if (ucCdtVer &amp; BCH_DL451) pucTable=aucBchD709;<br />    else pucTable=aucBchEb90;</p>
		<p>    for (ucRslt=0, unSize=5; unSize!=0; unSize--)<br />        ucRslt=pucTable[ucRslt^(*pucBuff++)];</p>
		<p>    return (~ucRslt);<br />}</p>
<img src ="http://www.cppblog.com/koozj/aggbug/20718.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/koozj/" target="_blank">敲石头呀敲石头</a> 2007-03-27 17:16 <a href="http://www.cppblog.com/koozj/archive/2007/03/27/20718.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>换个心情，忙碌了一年缺觉得心里空荡荡的。</title><link>http://www.cppblog.com/koozj/archive/2007/01/08/17440.html</link><dc:creator>敲石头呀敲石头</dc:creator><author>敲石头呀敲石头</author><pubDate>Mon, 08 Jan 2007 13:09:00 GMT</pubDate><guid>http://www.cppblog.com/koozj/archive/2007/01/08/17440.html</guid><wfw:comment>http://www.cppblog.com/koozj/comments/17440.html</wfw:comment><comments>http://www.cppblog.com/koozj/archive/2007/01/08/17440.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/koozj/comments/commentRss/17440.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/koozj/services/trackbacks/17440.html</trackback:ping><description><![CDATA[
		<p>换一部手机，换一个好心情。<br />最近发现无论是工作还是生活都毫无激情，每天就是上班的时候上网就是下班打打游戏，晚上看些乱七八糟的动漫入睡，早晨起来发现自己贼眉鼠眼，和没睡一样。<br />有点想退休了。汗一个!<br />写点今天干的事．<br />由于新买手机是NOKIA的缘故，想学下SYMBIAN编程，也不枉我２７００多块钱嘛．<br />找了点环境搭建的资料．<br /><br /><br />Symbian基本-Symbian OS S60开发环境的搭建（以MS VC为例）『整理』<br />日期：2006-05-25  点击：1  上传者：  来源：<a href="http://blog.csdn.net">http://blog.csdn.net</a><br />1、安装相关SDK及VC<br />Nokia根据手机的屏幕大小和价格高低把手机分成了多个系列，现在使用的系列有：Series 40、Series 60、Series 80 和Series 90。60系列采用Symbian os 6.1，然后又根据手机屏幕的特点对UI做了一些修改，这个被修改了的Symbian就被称为Nokia的60系列平台。使用60系列的手机型号包括：Nokia 6670、 Nokia 6630、 Nokia 6260 、Nokia N-Gage QD 、Nokia 7610 、Nokia 6620 、Nokia 3620 、Nokia 3660 、Nokia 6600 、Nokia 3600、Nokia 3650、Nokia 7650、Nokia N-Gage?等。</p>
		<p>下面我们就以60系列为例，介绍SDK的安装过程。<br />1.1 ：安装SDK<br />第一步：到Nokia论坛注册，下载最新的SDK。Nokia 网站提供的Series 60 SDK for Symbian OS Nokia Edition SDK最新版本是v1.2，Series 60 SDK for Symbian OS的最新版本是v2.1。<br />第二步：下载最新的Active Perl Script 安装程序， 下载最新的J2RE（Java 2 Runtime Environment）。<br />第三步：安装SDK，推荐为Symbian开发单独建一个目录，例如d：/Symbian而不是使用C:/program files等这样的目录。<br />第四步：安装Active Perl和J2RE，安装到默认目录即可。<br />第五步：检查环境变量设定。打开系统环境变量tab，然后看看有没有EPOCROOT，如果有的话，把它手动改成“/” 。改完之后应该是这个样子的：<br />EPOCROOT = /<br />然后，在系统PATH中加入 /epoc32/tools目录以及/epoc32/gcc/bin目录就可以了。<br />实际上，Symbian SDK根本不用安装，直接把epoc32目录拷贝到一个机器上，然后照上述方法设定目录和环境变量就可以了。</p>
		<p>1.2 ：配置VC<br />如果我们使用的是VC 6.0，我们要保证系统至少打了SP3补丁，否则系统会有警告提示。如果我们使用的是VS.NET2003, 我们就只能安装Series 60 SDK for Symbian OS v2.1，因为Series 60 SDK for Symbian OS Nokia Edition SDK v1.2在VS.NET2003无法正确建立工程。<br />如果要直接在vc6里创建新项目，要把/Symbian/6.1/Series60/Series60Tools/ Application Wizard目录下的 AvkonAppWiz.awx和AVKONAPPWIZ.HLP文件拷贝到vc6的模板目录C:/Program Files/ Microsoft Visual Studio/ Common/ MSDev98/ Template下。这样我们就可以在VC的新建工程中看到Series 60 AppWizard v 1.9这个选项。    <br />如果要将已经建立好的工程导入到VC6.0中，比如我们将SDK中的例子HelloWorld转换成一个VC6的项目，我们首先进入/Symbian/6.1/Series60/Series60Ex/HelloWorld目录。在这里我们可以看到，在Symbian中，一个Project通常是按inc, src, group等目录组织，group目录里通常放的是项目文件，所以编译时要先到这里。用命令提示符模式进入该目录下，然后执行：<br />bldmake bldfiles<br />这个命令会在group目录下生成一个abld.bat的批处理文件，并且会在/Symbian /6.1/Series60/Epoc32/BUILD下生成/Symbian/6.1/Series60/Epoc32/BUILD/SYMBIAN/6.1/ SERIES60/SERIES60EX/HELLOWORLD/GROUP这个目录，并在最底层目录下生成一堆 .make文件。<br />然后，我们在同一个目录运行刚才生成的abld.bat：<br />abld makefile vc6<br />这样就会自动生成vc6的dsw文件，位置在/Symbian/6.1/Series60/Epoc32/BUILD/SYMBIAN/6.1/ SERIES60/SERIES60EX/HELLOWORLD/GROUP/HELLOWORLD/WINS。然后我们就可以在VC6种打开这个Symbian工程了。</p>
		<p>2. 编译<br />我们可以直接使用SDK提供的工具编译Symbian 工程，也可以使用VC6提供的集成环境来编译转化过的Symbian 工程。编译的结果存放在/Symbian/6.1/Series60/Epoc32/Release/wins/UDEB/Z/SYSTEM/apps目录中。</p>
		<p>2.1使用SDK提供的工具编译Symbian 工程<br />我们在上一节的那个位置继续输入：<br />abld build wins udeb<br />这个命令会编译我们的程序，最后在/Symbian/6.1/Series60/Epoc32/Release/wins/UDEB目录下生成我们的helloworld，然后我们可以从开始菜单里运行模拟器的debug版，在模拟其中就可以运行helloworld了。</p>
		<p>2.2 使用VC6编译Symbian 工程<br />我们直接打开运行abld makefile vc6后生成的dsw文件，VC自动装载转化过的工程。按F7便可以直接编译工程，编译结果同样放在/Symbian/6.1/Series60/Epoc32/Release/wins/UDEB目录中。然后我们打开模拟器debug 版，就可以看到我们编译好的工程了。</p>
		<p>3.在手机上运行程序<br />我们以SDK 1.2提供的HelloWorld为例，制作可以在手机中安装的.SIS文件：<br />3.1．检查程序<br />首先，在命令行格式下，进入HelloWorld工程mmp文件所在目录，输入bldmake bldfiles和abld build wins udeb，然后打开模拟器，检测程序有无错误。<br />3.2．编译工程<br />在程序无错误后，在命令行输入abld build armi urel 。执行这个命令之后会在目录d:/symbian/6.1/series60/epoc32/release/armi/urel生成HELLOWORLD.APP和HELLOWORLD.RSC两个文件。<br />3.3．建立.pkg文件<br />在d:/Symbian/6.1/Series60/Series60Ex/helloworld/sis  用记事本建立或者修改工程的pkg文件，内容如下：</p>
		<p>; HelloWorld.pkg<br />;<br />;Language - standard language definitions<br />&amp;EN<br />; standard SIS file header<br />#{"HelloWorld"},(0x10005B91),1,0,0<br />;Supports Series 60 v 1.2<br />(0x101F8202), 0, 0, 0, {"Series60ProductID"}<br />;<br />"d:/symbian/6.1/series60/epoc32/release/armi/urel/HelloWorld.APP"-"!:/system/apps/HelloWorld/HelloWorld.app"<br />"d:/symbian/6.1/series60/epoc32/release/armi/urel/HELLOWORLD.rSC"-"!:/system/apps/HelloWorld/HELLOWORLD.rSC"</p>
		<p>其中，前面"d:/symbian/6.1/series60/epoc32/release/armi/urel/HELLOWORLD.rsc"是要打包安装的文件，"!:/system/apps/HelloWorld/HELLOWORLD.rSC"是安装的目标位置。在其中要注意的是，我们在目标位置中用“！”代替了实际的盘符。这样做得好处是在用户安装的时候，手机系统会提示用户选择要安装的位置，这就给了用户更大的灵活度,当然也可以写成绝对路径。另外，在Symbian 系统中，安装的应用程序默认位置是“!:/system/apps ”。<br />编辑好pkg文件后，保存至相应目录。</p>
		<p>3.4．打包<br />在命令行中，转至pkg文件所在目录，运行命令makesis HelloWorld.pkg</p>
		<p>3.5. 上传程序<br />用蓝牙把打包好的程序上传到手机上，安装，ok，整个过程就算成功啦！</p>
		<p>下面对关键点做一小结：<br />===================================<br />1、要记住的命令,按工程的处理顺序：</p>
		<p>bldmake bldfiles                －－ DOS模式下，在工程的group目录下执行，生成abld.bat，用于后继的工程编译 <br />abld makefile vc6            －－ 生成Visusl C++ 6.0的dsw与dsp工程文件 <br />abld  build wins udeb  －－ 生成模拟器上的unicode debug调试版本 <br />abld  build armi urel        －－ 生成手机上运行的unicode release版本 <br />2、相关的几个目录：</p>
		<p>生成Visusl C++ 6.0的dsw与dsp工程文件的目录：<br /> /Symbian/6.1/Series60/Epoc32/BUILD/【项目所在的路径名+/Group +/项目名称 】/WINS<br />项目所在的路径名：如果你的项目是在C:/Symbian_work/HelloWorld/Src下（在该目录下的项目文件按inc, src, group等目录组织），则生成Visusl C++ 6.0的dsw与dsp工程文件的目录是：/Symbian/6.1/Series60/Epoc32/BUILD/Symbian_work/HelloWorld/Src/Group/HelloWorld/WINS下边，啊，真够深的，真不知道Symbian为什么搞这么深的目录！</p>
		<p>模拟器unicode debug调试版本生成的程序文件目录：<br />    /Symbian/6.1/Series60/Epoc32/Release/wins/UDEB/Z/SYSTEM/apps/工程名 <br />模拟器epoc.exe文件目录：<br />    /Symbian/6.1/Series60/Epoc32/Release/wins/udeb <br />生成手机上运行的unicode release版本的程序文件目录：<br />    /symbian/6.1/series60/epoc32/release/armi/urel <br /></p>
<img src ="http://www.cppblog.com/koozj/aggbug/17440.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/koozj/" target="_blank">敲石头呀敲石头</a> 2007-01-08 21:09 <a href="http://www.cppblog.com/koozj/archive/2007/01/08/17440.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>