jifu 的个人资料jifu的共享空间日志列表留言簿更多 工具 帮助

日志


10月25日

PS2游戏 战神2 用Pcsx2 模拟时,开Direct3D9(hardware)绿屏,解决办法

PS2游戏 战神2 用Pcsx2 模拟时,开Direct3D9(hardware)绿屏,下载画面插件修正版962GSdxfixsse2.dll(或者其他修正版插,具体根据自己cpu情况选择)

可解决此问题,先将设置里的 插件地址 设置为 Pcsx2\plugins,然后将下载的插件 拷到Pcsx2\plugins 目录,在 图形设置里选中该插件即可~~

原帖地址内容为:

gsdx962fix,修正战神2雾跟重影,

也就是887fix升级的版本,当然战神2的背景是没有问题,同时修正雾跟重影。其他跟887fix一样。某些地方会出现新的贴图错误。大家看着办。[

附件

2009-4-14 08:30
  下载次数: 1522

962GSdxfixsse2.rar (336.14 KB)

2009-4-14 08:30
  下载次数: 1223

 962GSdxfixssse3.rar (332.52 KB)

2009-4-14 08:30
  下载次数: 989

 962GSdxfixsse4.rar (332.52 KB)

原帖地址为:

http://bbs.emu-zone.org/newbbs/viewthread.php?tid=602876&highlight=%D5%BD%C9%F12

10月22日

免安装Matlab6.5绿色精简版【496M】U盘可携带移动版

cl2039996 (组长) 2008/6/17 顶楼 举报

电驴资源

下面是用户共享的文件列表,安装电驴后,您可以点击这些文件名进行下载

Matlab6p5portable.iso 详情
482.8MB

Matlab6p5FULL-Portable.iso 详情
1.1GB

Virtual.Drive.Manager.exe 详情
323KB

全选
1.5GB

上边资源对应下载链接

ed2k://|file|Matlab6p5portable.iso|506228736|
d886d93747d13b91780175625da31068|h=n25g2bitex3hzb5dpmiohyxwawlo5mre|/
ed2k://|file|Matlab6p5FULL-Portable.iso|1142300672|
f7ed2dce339e287e01e07b8305e145ba|h=yc245sckp4axtjkrnvfrthn25qskypvo|/
ed2k://|file|Virtual.Drive.Manager.exe|330767|
5a04be4c1f389437081dbfc1e5cf7f23|h=r56kzzs5lq3ns75cena4dq6gj4pf647v|/
 

免安装Matlab绿色精简版【496M】U盘可携带移动版
portable matlab
主要优点是免安装的,装一次matlab非常耗时!这个版本是能够放在U盘里的,即插即用,现在的U盘一般都在1G左右,512M的U盘也够放下这个移动版的matlab了。
版本:6.5 因为6.5运行速度比7.0的快,且小。
大小:496M 安装版的是1.3G的大小,我把里面的toolbox精简了许多没用的,如航空、电子类的东西,实在很烦。也删掉了Simulink。
格式: ISO格式,附带一款打开用来ISO文件的软件。
我一般是在学校的计算机房使用它写论文,学习matlab软件本身的功能。不必安装非常方便。
用电驴这么久,真的得到很多免费的好东西!自己心里感激,所以把我自己破解好的好东西分享给大家!matalb大家都不缺,可是免安装绿色版的这是首发,做科学研究的朋友们有福了!附带的 Virtual Drive Manager软件也用来代开上面的ISO文件的,本身直接运行,加载他们久OK了!最后做一点点希望:大家好好学习利用这款强大的软件,为科学为自己服务。
第一次发布资源,什么都不会,也找不到“提交资源”那个按钮。希望管理员一定批准发布,很多急迫需要的好东西啊!

最简单的方法就是解压后使用,
直接双击BIN下的MATLAB.EXE.
最快捷的办法是运行了Virtual.Drive.Manager.exe 加载matlab.iso ,然后 在在“我的电脑”里面找到新的盘符,打开,在找matlab图标。意思就是Virtual.Drive.Manager.exe 能省去你解压的烦恼。 但不要忘了加载之后,去找新的光驱盘符,在我的电脑下,C盘,D盘之后吧~

《MATLAB相关中文书籍》扫描版pdf,下载链接,对应matlab 6.x版本

ed2k://|file|Matlab%E7%9B%B8%E5%85%B3%E4%B9%A6%E7%B1%8D10%E6%9C%AC.rar|74447031|8d715e58a1054fe97a4d3f2c2bf07c55|h=257am5i5t7cxpluhcc6uvmmreixx5vtg|/

10月19日

cadence capture cis 属性设置 filter by 只剩1项了,解决办法~

cadence capture cis 属性设置 filter by 只剩1项了,解决办法为:

恢复 Cadence\SPB_15.7\tools\capture\prefprop.txt .

其中prefprop.txt 的内容为:

(PropertyFilters
  (Orcad-Capture
    (Parts "" "" "" 0
      (Value show)
      (Reference show)
      (Designator show)
      ("PCB Footprint" show)
      ("Power Pins Visible" show)
      (Primitive show)
      ("Source Library" show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show)
      ("Part Reference" hide))
    ("Schematic Nets" "" "" "" 0
      (ID show)
      (Name show))
    (Pins "" "" "" 0
      (Name show)
      (Number show)
      ("Net Name" show)
      (Type show)
      ("Is No Connect" show))
    ("Title Blocks" "" "" 0
      (Title show)
      (Document show)
      (OrgName show)
      (OrgAddr1 show)
      (OrgAddr2 show)
      (OrgAddr3 show)
      (OrgAddr4 show)
      ("Cage Code" optional)
      (RevCode show)
      ("Page Number" show)
      ("Page Count" show)
      ("Page Create Date" show)
      ("Page Modify Date" show)
      ("Schematic Name" show)
      ("Source Library" show)
      ("Source Symbol" show))
    ("Displayed Properties" "" "" 0
      ("Property Name" show)
      (Value show))
    (Ports "" "" "" 0
      (Name show)
      (Type show)
      ("Connected Net name" show)
      ("Source Library" show)
      ("Source Symbol" show))
    (Aliases "" "" 1
      (Name show))
    (Globals "" "" 1
      (Name show))
    ("Flat Nets" "" "" "" 0
      (ID show)
      (Name show)))
  (Cadence-Allegro
    (Parts
      (ALT_SYMBOLS show)
      (BOM_IGNORE show)
      (CLASS show)
      (COMPONENT_WEIGHT show)
      (CURRENT show)
      (DENSE_COMPONENT show)
      (Designator show)
      (DEVICE show)
      (DEVICE_LABEL show)
      (EMC_COMP_TYPE show)
      (EMC_CRITICAL_IC show)
      (FIX_ALL show)
      (FIXED show)
      (GROUP show)
      (HARD_LOCATION show)
      (HEIGHT show)
      (Implementation show)
      ("Implementation Type" show)
      ("Implementation Path" show)
      (INSERTION_CODE show)
      (MAX_POWER_DISS show)
      (NO_PIN_ESCAPE show)
      (NO_ROUTE show)
      (NO_SWAP_GATE show)
      (NO_SWAP_GATE_EXT show)
      (NO_SWAP_PIN show)
      (PART_NUMBER show)
      ("Part Reference" hide)
      ("PCB Footprint" show)
      (PIN_ESCAPE show)
      (PINUSE show)
      (PLACE_TAG show)
      (POWER_GROUP show)
      ("Power Pins Visible" show)
      (Primitive show)
      (RATED_MAX_TEMP show)
      (REFERENCE show)
      (REUSE_INSTANCE show)
      (REUSE_MODULE show)
      (ROOM show)
      (SIGNAL_MODEL show)
      ("Source Library" show)
      (SWAP_GROUP show)
      (T_TEMPERATURE show)
      (TOL show)
      (VALUE show)
      (VOLTAGE show)
      (propagation_delay show))
    ("Schematic Nets"
      (BUS_NAME show)
      (CLOCK_NET show)
      (DIFFERENTIAL_PAIR show)
      (ECL show)
      (ECL_TEMP show)
      (ELECTRICAL_CONSTRAINT_SET show)
      (EMC_CRITICAL_NET show)
      (ID show)
      (MAX_EXPOSED_LENGTH show)
      (MAX_FINAL_SETTLE show)
      (MAX_OVERSHOOT show)
      (MAX_VIA_COUNT show)
      (MIN_BOND_LENGTH show)
      (MIN_HOLD show)
      (MIN_LINE_WIDTH show)
      (MIN_NECK_WIDTH show)
      (MIN_NOISE_MARGIN show)
      (MIN_SETUP show)
      (Name show)
      (NET_PHYSICAL_TYPE show)
      (NET_SPACING_TYPE show)
      (NO_GLOSS show)
      (NO_PIN_ESCAPE show)
      (NO_RAT show)
      (NO_RIPUP show)
      (NO_ROUTE show)
      (NO_TEST show)
      (PROBE_NUMBER show)
      (PROPAGATION_DELAY show)
      (RELATIVE_PROPAGATION_DELAY show)
      (ROUTE_PRIORITY show)
      (SHIELD_NET show)
      (SHIELD_TYPE show)
      (STUB_LENGTH show)
      (SUBNET_NAME show)
      (TS_ALLOWED show)
      (VOLTAGE show)
      (VOLTAGE_LAYER show)
      (RATSNEST_SCHEDULE show))
    (Pins
      ("Is No Connect" show)
      (Name show)
      ("Net Name" show)
      (Number show)
     (NO_DRC show)
      (NO_PIN_ESCAPE show)
      (NO_SHAPE_CONNECT show)
      (NO_SWAP_PIN show)
      (PIN_ESCAPE show)
      ("Schematic Nets" "" "" 1)
      (Type show))
    ("Title Blocks"
      ("Cage Code" show)
      (Document show)
      (OrgName show)
      (OrgAddr1 show)
      (OrgAddr2 show)
      (OrgAddr3 show)
      (OrgAddr4 show)
      ("Page Number" show)
      ("Page Count" show)
      ("Page Create Date" show)
      ("Page Modify Date" show)
      (RevCode show)
      ("Schematic Create Date" show)
      ("Schematic Name" show)
      ("Source Library" show)
      ("Source Symbol" show)
      (Title show))
    (Ports
      ("Connected Net name" show)
      (Name show)
      ("Source Library" show)
      ("Source Symbol" show)
      (Type show))
    ("Flat Nets"
      (BUS_NAME show)
      (CLK_2OUT_MAX show)
      (CLK_2OUT_MIN show)
      (CLK_SKEW_MAX show)
      (CLK_SKEW_MIN show)
      (CLOCK_NET show)
      (DIFFERENTIAL_PAIR show)
      (ECL show)
      (ECL_TEMP show)
      (ELECTRICAL_CONSTRAINT_SET show)
      (EMC_CRITICAL_NET show)
      (ID show)
      (MAX_EXPOSED_LENGTH show)
      (MAX_FINAL_SETTLE show)
      (MAX_OVERSHOOT show)
      (MAX_SSN show)
      (MAX_UNDERSHOOT show)
      (MAX_VIA_COUNT show)
      (MAX_XTALK show)
      (MIN_BOND_LENGTH show)
      (MIN_HOLD show)
      (MIN_LINE_WIDTH show)
      (MIN_NECK_WIDTH show)
      (MIN_NOISE_MARGIN show)
      (MIN_SETUP show)
      (Name show)
      (NET_PHYSICAL_TYPE show)
      (NET_SCHEDULE show)
      (NET_SPACING_TYPE show)
      (NO_GLOSS show)
      (NO_PIN_ESCAPE show)
      (NO_RAT show)
      (NO_RIPUP show)
      (NO_ROUTE show)
      (NO_TEST show)
      (PROBE_NUMBER show)
      (PROPAGATION_DELAY show)
      (PULSE_PARAM show)
      (RATSNEST_SCHEDULE show)
      (RELATIVE_PROPAGATION_DELAY show)
      (ROUTE_PRIORITY show)
      (SHIELD_NET show)
      (SHIELD_TYPE show)
      (STUB_LENGTH show)
      (SUBNET_NAME show)
      (TIMING_DELAY_OVERRIDE show)
      (TOTAL_ETCH_LENGTH show)
      (TS_ALLOWED show)
      (VOLTAGE show)
      (VOLTAGE_LAYER show)
      (XTALK_ACTIVE_TIME show)
      (XTALK_IGNORE_NETS show)
      (XTALK_SENSITIVE_TIME show))
    (Globals "" "" 1))
  (Orcad-Layout
    (Parts
      (Value show)
      (Reference show)
      (Primitive show)
      (Name show)
      ("Power Pins Visible" show)
      ("PCB Footprint" show)
      (COMPFIXED show)
      (COMPGROUP show)
      (COMPKEY show)
      (COMPLOC show)
      (COMPLOCKED show)
      (COMPROT show)
      (COMPSIDE show)
      (FOOTPRINT show)
      (FPLIST show)
      (GATEGROUP show)
      (PARTNUM show)
      (PARTSHAPE show)
      (POWERPIN show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (ID show)
      (Name show)
      (CONNWIDTH show)
      (HIGHLIGHT show)
      (MAXWIDTH show)
      (MINWIDTH show)
      (NETGROUP show)
      (NETWEIGHT show)
      (PLANELAYERS show)
      (RECONNTYPE show)
      (ROUTELAYERS show)
      (SPACINGBYLAYER show)
      (TESTPOINT show)
      (VIAPERNET show)
      (WIDTH show)
      (WIDTHBYLAYER show))
    (Pins
      (Name show)
      (Type show)
      (ECLTYPE show)
      (PINGROUP show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show))
    (Ports
      (Name show)
      (Type show))
    ("Flat Nets" "" "" 1))
  ("Actel-Designer Part/Net Properties"
    (Parts
      (Reference show)
      (Value show)
      (ALSDONTTOUCH show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show)
      (ALSCRT show)
      (ALSENM show)
      (ALSPIN show)
      (ALSPRESERVE show))
    (Ports
      (Name show)
      (Type show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show))
    ("Flat Nets" "" "" 1))
  ("Altera-MAX+PLUS II Part Properties"
    (COMMENT Reference: MAX+plus II Version 8.0 Help, topic: Assigning)
    (COMMENT Resources in a Third-Party Design Editor)
    (Parts
      (Reference show)
      (Value show)
      (CHIP_PIN_LC show)
      (CLIQUE show)
      (LOGIC_OPTION show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show))
    (Ports
      (Name show)
      (Type show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show))
    ("Flat Nets" "" "" 1))
  ("Atmel-Figaro ATV40K I/O Macro Properties"
    (Parts
      (Reference show)
      (Value show)
      (THRESHOLD show)
      (SCHMITT show)
      (SLEWRATE show)
      (EXTRADELAY show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show))
    (Ports
      (Name show)
      (Type show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show))
    ("Flat Nets" "" "" 1))
  ("Atmel-Figaro ATV40K Dynamic Macro Properties"
    (Parts
      (Reference show)
      (Value show)
      (FUNCTIONG show)
      (FUNCTIONH show)
      (CLOCKEDGE show)
      (RSFUNCTION show)
      (RSPOLARITY show)
      (PRESERVE show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show))
    (Ports
      (Name show)
      (Type show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show))
    (Globals "" "" 1)
    (Aliases "" "" 1)
    ("Displayed Properties" "" "" 1)
    ("Flat Nets" "" "" 1))
  ("Lattice-ispEXPERT Compiler Part/Net Properties"
    (Parts
      (Reference show)
      (Value show)
      (LXOR2 show)
      (OPTIMIZE show)
      (PROTECT show)
      (REGTYPE show)
      (RESERVE_PIN show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show)
      (CLK show)
      (GROUP show)
      (PRESERVE show)
      (SAP/EAP show)
      (SCP/ECP show)
      (SLP/ELP show)
      (SNP/ENP show)
      (STP/ETP show)
      (CRIT show)
      (LOCK show)
      (OPENDRAIN show)
      (OUTDELAY show)
      (PULL show)
      (SLOWSLEW show)
      (VOLTAGE show))
    (Ports
      (Name show)
      (Type show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show)))
  ("Exemplar-Leonardo Local Synthesis Constraint"
    (Parts
      (Reference show)
      (Value show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show)
      (BUFFER_SIG show)
      (PAD show)
      (PIN_NUMBER show))
    (Ports
      (Name show)
      (Type show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show))
    (Aliases "" "" 1)
    ("Displayed Properties" "" "" 1))
  ("Xilinx-Alliance XC3x00A/L Part/Net Flag Attributes"
    (COMMENT Xilinx XACTstep vM1.xx)
    (COMMENT Xilinx, Libraries Guide, January 1998
      (vM1.5))
    (Parts
      (Reference show)
      (Value show)
      (BASE show)
      (BLKNM show)
      (CONFIG show)
      (DOUBLE show)
      (EQUATE_F show)
      (EQUATE_G show)
      (FAST show)
      (FILE show)
      (HBLKNM show)
      (INIT show)
      (KEEP show)
      (LOC show)
      (MAP show)
      (MAXDELAY show)
      (MAXSKEW show)
      (NOREDUCE show)
      (OPT_EFFORT show)
      (OPTIMIZE show)
      (PART show)
      (PERIOD show)
      (PROHIBIT show)
      (TIG show)
      (TNM show)
      (TPSYNC show)
      (TPTHRU show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show)
      (BLKNM show)
      (DOUBLE show)
      (FAST show)
      (HBLKNM show)
      (KEEP show)
      (LOC show)
      (MAXDELAY show)
      (MAXSKEW show)
      (NOREDUCE show)
      (PERIOD show)
      (S show)
      (TIG show)
      (TNM show)
      (TPSYNC show)
      (TPTHRU show))
    (Ports
      (Name show)
      (Type show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show))
    ("Displayed Properties" "" "" 1)
    (Aliases "" "" 1)
    (Globals "" "" 1))
  ("Xilinx-Alliance XC4000E Part/Net Flag Attributes"
    (COMMENT Xilinx XACTstep vM1.xx)
    (COMMENT Xilinx, Libraries Guide, January 1998
      (vM1.5))
    (Parts
      (Reference show)
      (Value show)
      (BLKNM show)
      (DECODE show)
      (DOUBLE show)
      (FAST show)
      (FILE show)
      (HBLKNM show)
      (HU_SET show)
      (INIT show)
      (KEEP show)
      (LOC show)
      (MAP show)
      (MAXDELAY show)
      (MAXSKEW show)
      (NODELAY show)
      (OPT_EFFORT show)
      (OPTIMIZE show)
      (PART show)
      (PERIOD show)
      (PROHIBIT show)
      (RLOC show)
      (RLOC_ORIGIN show)
      (RLOC_RANGE show)
      (TIG show)
      (TNM show)
      (TPSYNC show)
      (TPTHRU show)
      (U_SET show)
      (USE_RLOC show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show)
      (BLKNM show)
      (DECODE show)
      (DOUBLE show)
      (FAST show)
      (HBLKNM show)
      (HU_SET show)
      (KEEP show)
      (LOC show)
      (MAXDELAY show)
      (MAXSKEW show)
      (NODELAY show)
      (PERIOD show)
      (S show)
      (TIG show)
      (TNM show)
      (TPSYNC show)
      (TPTHRU show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    (Ports
      (Name show)
      (Type show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show)))
  ("Xilinx-Alliance XC4000X Part/Net Flag Attributes"
    (COMMENT Xilinx XACTstep vM1.xx)
    (COMMENT Xilinx, Libraries Guide, January 1998
      (vM1.5))
    (Parts
      (Reference show)
      (Value show)
      (BLKNM show)
      (DECODE show)
      (DOUBLE show)
      (DRIVE show)
      (FAST show)
      (FILE show)
      (HBLKNM show)
      (HU_SET show)
      (INIT show)
      (KEEP show)
      (LOC show)
      (MAP show)
      (MAXDELAY show)
      (MAXSKEW show)
      (MEDDELAY show)
      (NODELAY show)
      (OPT_EFFORT show)
      (OPTIMIZE show)
      (PART show)
      (PERIOD show)
      (PROHIBIT show)
      (RLOC show)
      (RLOC_ORIGIN show)
      (RLOC_RANGE show)
      (TIG show)
      (TNM show)
      (TPSYNC show)
      (TPTHRU show)
      (U_SET show)
      (USE_RLOC show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show)
      (BLKNM show)
      (DECODE show)
      (DOUBLE show)
      (DRIVE show)
      (FAST show)
      (HBLKNM show)
      (HU_SET show)
      (KEEP show)
      (LOC show)
      (MAP show)
      (MAXDELAY show)
      (MAXSKEW show)
      (MEDDELAY show)
      (NODELAY show)
      (PERIOD show)
      (S show)
      (TIG show)
      (TNM show)
      (TPSYNC show)
      (TPTHRU show))
    (Ports
      (Name show)
      (Type show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show))
    ("Displayed Properties" "" "" 1))
  ("Xilinx-Alliance XC5200 Part/Net Flag Attributes"
    (COMMENT Xilinx XACTstep vM1.xx)
    (COMMENT Xilinx, Libraries Guide, January 1998
      (vM1.5))
    (Parts
      (Reference show)
      (Value show)
      (BLKNM show)
      (DIVIDE1_BY show)
      (DIVIDE2_BY show)
      (FAST show)
      (FILE show)
      (HBLKNM show)
      (HU_SET show)
      (INREG show)
      (KEEP show)
      (LOC show)
      (MAP show)
      (MAXDELAY show)
      (MAXSKEW show)
      (OPT_EFFORT show)
      (OPTIMIZE show)
      (OUTREG show)
      (PART show)
      (PERIOD show)
      (PROHIBIT show)
      (RLOC show)
      (RLOC_ORIGIN show)
      (RLOC_RANGE show)
      (TIG show)
      (TNM show)
      (TPSYNC show)
      (TPTHRU show)
      (U_SET show)
      (USE_RLOC show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show)
      (BLKNM show)
      (DIVIDE1_BY show)
      (DIVIDE2_BY show)
      (FAST show)
      (HBLKNM show)
      (HU_SET show)
      (KEEP show)
      (LOC show)
      (MAXDELAY show)
      (MAXSKEW show)
      (PERIOD show)
      (S show)
      (TIG show)
      (TNM show)
      (TPSYNC show)
      (TPTHRU show))
    (Ports
      (Name show)
      (Type show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show))
    (Aliases "" "" 1)
    (Globals "" "" 1)
    ("Displayed Properties" "" "" 1))
  ("Xilinx-Alliance XC9500 Part/Net Flag Attributes"
    (COMMENT Xilinx XACTstep vM1.xx)
    (COMMENT Xilinx, Libraries Guide, January 1998
      (vM1.5))
    (Parts
      (Reference show)
      (Value show)
      (BUFG show)
      (COLLAPSE show)
      (FAST show)
      (FILE show)
      (INIT show)
      (KEEP show)
      (LOC show)
      (NOREDUCE show)
      (OFFSET show)
      (PART show)
      (PERIOD show)
      (PWR_MODE show)
      (SLOW show)
      (TNM show)
      (WIREAND show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show)
      (BUFG show)
      (COLLAPSE show)
      (FAST show)
      (INIT show)
      (KEEP show)
      (LOC show)
      (NOREDUCE show)
      (PERIOD show)
      (PWR_MODE show)
      (SLOW show)
      (TNM show)
      (WIREAND show))
    (Ports
      (Name show)
      (Type show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show)))
  ("Lucent-ORCA Foundry Part/Net Properties"
    (COMMENT Reference: Lucent ORCA Foundry User's Guide, Appendix B -
       PROPERTIES)
    (Parts
      (Reference show)
      (Value show)
      (COMP show)
      (DELAYMODE show)
      (DIN show)
      (DOUT show)
      (ENDPOINT show)
      (IBUFLEVEL show)
      (INITSTATE show)
      (GENERIC=INITVAL show)
      (LOAD show)
      (LOC show)
      (LUT show)
      (OBUFLEVEL show)
      (PFULCOK show)
      (SLEW show)
      (STARTPOINT show))
    ("Schematic Nets"
      (Name show)
      (BLOCKNET show)
      (BUS show)
      (CRITICAL show)
      (ENDPOINT show)
      (FREQUENCY show)
      (HALFLINE show)
      (LOC show)
      (LONGLINE show)
      (MAXDELAY show)
      (NOCLIP show)
      (NOMERGE show)
      (NONCRITICAL show)
      (PRI show)
      (STARTPOINT show))
    (Pins
      (Name show)
      (Type show))
    (Ports
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show)))
  (Orcad-PSpice
    (Parts "" 1 1
      (Color hide)
      (Designator hide)
      (Graphic hide)
      (ID hide)
      (Implementation hide)
      ("Implementation Path" hide)
      ("Implementation Type" hide)
      (Name hide)
      ("Part Reference" hide)
      ("Power Pins Visible" hide)
      ("Source Library" hide)
      ("Source Package" hide)
      ("PCB Footprint" hide)
      (PSpiceTemplate hide)
      (PSpiceOnly show)
      (Primitive hide)
      (Reference optional)
      (Value optional))
    (Pins "" "" 1
      ("BiasValue Current" hide))
    ("Schematic Nets" "" "" 1
      ("BiasValue Voltage" hide)
      (RELATIVE_PROPAGATION_DELAY show))
    ("Title Blocks" "" "" 1)
    (Globals "" "" 1
      ("Source Library" hide)
      ("Source Symbol" hide)
      (SDTSourceLibName hide))
    (Ports "" "" 1
      ("Source Library" hide)
      ("Source Symbol" hide))
    (Aliases "" "" 1
      (Name show))
    ("Displayed Properties" "" "" 1
      ("Property Name" show)
      (Value show)))
  ("Synplicity Synplify - Directives"
    (Parts
      (Reference show)
      (Value show)
      (black_box show)
      (black_box_pad_pin show)
      (black_box_tri_pins show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show)
      (syn_keep show)
      (syn_preserve show)
      (syn_state_machine show))
    (Ports
      (Name show)
      (Type show)
      (syn_preserve show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show)))
  ("Synplicity-Synplify Attributes"
    (Parts
      (Reference show)
      (Value show)
      (syn_noprune show)
      (syn_ramstyle show)
      (syn_useenables show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show)
      (syn_ramstyle show))
    (Ports
      (Name show)
      (Type show)
      (syn_isclock show)
      (syn_noclockbuf show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show))
    ("Displayed Properties" "" "" 1))
  ("Synplicity-Synplify Actel Specific"
    (Parts
      (Reference show)
      (Value show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show)
      (alspreserve show))
    (Ports
      (Name show)
      (Type show)
      (syn_maxfan show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show)))
  ("Synplicity-Synplify Altera Specific"
    (Parts
      (Reference show)
      (Value show)
      (altera_area show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show)
      (syn_direct_enable show))
    (Ports
      (Name show)
      (Type show)
      (altera_chip_pin_lc show)
      (syn_maxfan show)
      (syn_useioff show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show)))
  ("Synplicity-Synplify Lucent Specific"
    (Parts
      (Reference show)
      (Value show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show)
      (syn_maxfan show))
    (Ports
      (Name show)
      (Type show)
      (syn_maxfan show)
      (din show)
      (loc show)
      (orca_padtype show)
      (dout show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show)))
  ("Synplicity-Synplify Xilinx Specific"
    (Parts
      (Reference show)
      (Value show)
      (xc_uset show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show)
      (syn_direct_enable show))
    (Ports
      (Name show)
      (Type show)
      (syn_maxfan show)
      (xc_clockbuftype show)
      (xc_fast show)
      (xc_nodelay show)
      (xc_padtype show)
      (xc_pullup show)
      (xc_pulldown show)
      (xc_slow show)
      (xc_isgsr show)
      (xc_loc show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show))
    ("Displayed Properties" "" "" 1))
  (Allegro_SignalFlow_Routing
    (Parts
      (Reference show)
      (Value show)
      (xc_uset show)
      ("Implementation Type" show)
      (Implementation show)
      ("Implementation Path" show))
    ("Schematic Nets"
      (Name show))
    ("Flat Nets"
      (Name show)
      (PROPAGATION_DELAY show)
      (RATSNEST_SCHEDULE show)
      (RELATIVE_PROPAGATION_DELAY show))
    (Ports
      (Name show)
      (Type show)
      (syn_maxfan show)
      (xc_clockbuftype show)
      (xc_fast show)
      (xc_nodelay show)
      (xc_padtype show)
      (xc_pullup show)
      (xc_pulldown show)
      (xc_slow show)
      (xc_isgsr show)
      (xc_loc show))
    (Pins
      (Name show)
      (Type show))
    ("Title Blocks"
      (Document show)
      ("Cage Code" show)
      (OrgName show)
      ("Page Number" show)
      ("Page Count" show)
      (RevCode show)
      ("Schematic Create Date" show))
    (Globals "" "" 1)))
10月3日

网页图片花屏!!

刚攒台电脑, 3D游戏什么都能玩,就是用浏览器打开网页时,网页图片有部分花屏现象,有时网页会无响应. 装了3次系统,显卡驱动重装了几十次也不行.现在终于找到问题了,原来是我的 AMD 545CPU 开4核心后出现的问题,进主板BIOS改成原来的2核后,之前那些讨厌的问题都没有拉, 哈

9月25日

Windows常用运行命令磁盘修复命令chkdsk详解及例子

给你一个资料,想必对你来讲有保存价值:
开始菜单中的“运行”是通向程序的快捷途径,输入特定的命令后,即可快速的打开Windows的大部分程序,熟练的运用它,将给我们的操作带来诸多便捷。

winver 检查Windows版本
wmimgmt.msc 打开Windows管理体系结构(wmi)
wupdmgr Windows更新程序
wscript Windows脚本宿主设置
write 写字板
winmsd 系统信息
wiaacmgr 扫描仪和照相机向导
winchat xp自带局域网聊天
mem.exe 显示内存使用情况
msconfig.exe 系统配置实用程序
mplayer2 简易widnows media player
mspaint 画图板
mstsc 远程桌面连接
mplayer2 媒体播放机
magnify 放大镜实用程序
mmc 打开控制台
mobsync 同步命令

dxdiag 检查directx信息
drwtsn32 系统医生
devmgmt.msc 设备管理器
dfrg.msc 磁盘碎片整理程序
diskmgmt.msc 磁盘管理实用程序
dcomcnfg 打开系统组件服务
ddeshare 打开dde共享设置
dvdplay dvd播放器

net stop messenger 停止信使服务
net start messenger 开始信使服务 广州博客 kissgz.com
notepad 打开记事本
nslookup 网络管理的工具向导
ntbackup 系统备份和还原
narrator 屏幕“讲述人”
ntmsmgr.msc 移动存储管理器
ntmsoprq.msc 移动存储管理员操作请求
netstat -an (tc)命令检查接口

syncapp 创建一个公文包
sysedit 系统配置编辑器
sigverif 文件签名验证程序
sndrec32 录音机
shrpubw 创建共享文件夹
secpol.msc 本地安全策略
syskey 系统加密,一旦加密就不能解开,保护Windows xp系统的双重密码
services.msc 本地服务设置
sndvol32 音量控制程序
sfc.exe 系统文件检查器
sfc /scannow windows文件保护 tsshutdn 60秒倒计时关机命令
tourstart xp简介(安装完成后出现的漫游xp程序)
taskmgr 任务管理器

eventvwr 事件查看器
eudcedit 造字程序
explorer 打开资源管理器

packager 对象包装程序
perfmon.msc 计算机性能监测程序
progman 程序管理器

regedit.exe 注册表
rsop.msc 组策略结果集
regedt32 注册表编辑器
rononce -p 15秒关机 广州博客 kissgz.com
regsvr32 /u *.dll 停止dll文件运行
regsvr32 /u zipfldr.dll 取消zip支持

cmd.exe cmd命令提示符
chkdsk.exe chkdsk磁盘检查
certmgr.msc 证书管理实用程序
calc 启动计算器
charmap 启动字符映射表
cliconfg sql server 客户端网络实用程序
clipbrd 剪贴板查看器
conf 启动netmeeting
compmgmt.msc 计算机管理
cleanmgr 垃圾整理
ciadv.msc 索引服务程序

osk 打开屏幕键盘
odbcad32 odbc数据源管理器
oobe/msoobe /a 检查xp是否激活
lusrmgr.msc 本机用户和组
logoff 注销命令

iexpress 木马捆绑工具,系统自带

nslookup ip地址侦测器

fsmgmt.msc 共享文件夹管理器

utilman 辅助工具管理器

gpedit.msc 组策略

以下为Windows操作系统的常用运行命令,执行这些命令,就能打开系统对应的相关实用程序,如果大家能基本利用,就能检查并修复系统的最基本的故障,除注销,关闭系统命令外,其它所有命令,大家不妨一试!!

运行\输入CMD\输入 对应的相关实用程序: www.kissgz.com/news
. 打开C:\Documents and Settings\XXX(当前登录Windows XP的用户名)
.. 打开Windows XP所在的盘符下的Documents and Settings文件夹
... 打开“我的电脑”选项。
accwiz.exe 辅助工具向导
actmovie.exe 直接显示安装工具
append.exe 允许程序打开制定目录中的数据
arp.exe 显示和更改计算机的IP与硬件物理地址的对应列表
at.exe 计划运行任务
atmadm.exe ATM调用管理器统计
attrib.exe 显示和更改文件和文件夹属性
autochk.exe 检测修复文件系统 (XP不可用)
autoconv.exe 在启动过程中自动转化系统 (XP不可用)
autofmt.exe 在启动过程中格式化进程 (XP不可用)
autolfn.exe 使用长文件名格式 (XP不可用)
arp.exe 显示和更改计算机的IP与硬件物理地址的对应
calc.exe 计算器
Bootvrfy.exe 通报启动成功
cacls.exe 显示和编辑ACL
cdplayer.exe CD播放器
change.exe 与终端服务器相关的查询 (XP不可用)
charmap.exe 字符映射表
chglogon.exe 启动或停用会话记录 (XP不可用)
chgport.exe 改变端口(终端服务) (XP不可用)
http://kissgz.com

chgusr.exe 改变用户(终端服务) (XP不可用)
chkdsk.exe 磁盘检测程序
chkntfs.exe NTFS磁盘检测程序
cidaemon.exe 组成Ci文档服务
cipher.exe 在NTFS上显示或改变加密的文件或目录
cisvc.exe 打开索引内容
ckcnv.exe 变换Cookie
cleanmgr.exe 磁盘清理
cliconfg.exe SQL客户网络工具
clipbrd.exe 剪贴簿查看器
clipsrv.exe 运行Clipboard服务
clspack.exe 建立系统文件列表清单
cluster.exe 显示域的集群 (XP不可用)
cmd.exe 进2000\XP DOS
cmdl32.exe 自动下载连接管理
cmmgr32.exe 连接管理器
cmmon32.exe 连接管理器监视
cmstp.exe 连接管理器配置文件安装程序
comclust.exe 集群
comp.exe 比较两个文件和文件集的内容
conf 启动netmeeting聊天工具
control userpasswords2 XP密码管理.
compmgmt.msc 计算机管理
cprofile.exe 转换显示模式 (XP不可用)
开始,运行,输入CMD\输入net config workstation计算机名 \完整的计算机名\用户名
工作站处于活动状态(即网络描述) \软件版本(即软件版本号) \工作站域 工作站域的 DNS 名称
广州博客 kissgz.com

登录域 \COM 打开时间超时(秒) \COM 发送量(字节) \COM 发送超时 (msec)
CMD\输入net config workstation 更改可配置工作站服务设置。
CMD\输入net config server 可以显示不能配置的下服务器计算机名 \服务器注释 \服务器版本(即软件版本号)
服务器处于活动状态(即网络描述) \服务器处于隐藏状态(即 /hidden 设置)
最大登录用户数(即可使用服务器共享资源的最大用户数)
每个会话打开文件的最大数(即用户可在一个会话中打开服务器文件的最大数)
空闲会话时间(最小值)
chkdsk.exe 磁盘检查.
Chkdsk /r 2000命令控制台中的Chkdsk /r命令检查修复系统文件
cleanmgr 垃圾整理
Clipbrd 剪贴板查看器
C:boot.ini 打开启动菜单
compact.exe 显示或改变NTFS分区上文件的压缩状态
conime.exe IME控制台
control.exe 控制面板
convert.exe NTFS 转换文件系统到NTFS
convlog.exe 转换IIS日志文件格式到NCSA格式
cprofile.exe 转换显示模式
cscript.exe 较本宿主版本
csrss.exe 客户服务器Runtime进程 (XP不可用)
csvde.exe 格式转换程序 (XP不可用) www.kissgz.com
dcpromo 活动目录安装(XP不可用)
drwtsn32 系统医生
diskmgmt.msc 磁盘管理器(和PowerQuest PartitionMagic 8.0)
dvdplay DVD 播放器
devmgmt.msc 设备管理器(检查电脑硬件,驱动)
dxdiag 检查DirectX信息
dcomcnfg.exe DCOM配置属性 (控制台根目录)
dcpromo.exe 安装向导 (XP不可用)
ddeshare.exe DDE共享
debug.exe 检查DEBUG
dfrgfat.exe FAT分区磁盘碎片整理程序
dfrgntfs.exe NTFS分区磁盘碎片整理程序 (XP不可用)
dfs_cmd_.exe 配置DFS树 (XP不可用)
dfsinit.exe 分布式文件系统初始化(XP不可用)
dfssvc.exe 分布式文件系统服务器 (XP不可用)
diantz.exe 制作CAB文件
diskperf.exe 磁盘性能计数器
dmremote.exe 磁盘管理服务的一部分 (XP不可用)
doskey.exe 命令行创建宏
dosx.exe DOS扩展
dplaysvr.exe 直接运行帮助 (XP不可用)
drwatson.exe 华生医生错误检测
drwtsn32.exe 华生医生显示和配置管理
dvdplay.exe DVD播放
dxdiag.exe Direct-X诊断工具
edlin.exe 命令行的文本编辑
esentutl.exe MS数据库工具 http://kissgz.com
eudcedit.exe 造字程序
eventvwr.exe 事件查看器
exe2bin.exe 转换EXE文件到二进制
expand.exe 解压缩
extrac32.exe 解CAB工具
fsmgmt.msc 共享文件夹
fastopen.exe 快速访问在内存中的硬盘文件
faxcover.exe 传真封面编辑
faxqueue.exe 显示传真队列
faxsend.exe 发送传真向导
faxsvc.exe 启动传真服务
fc.exe 比较两个文件的不同
find.exe 查找文件中的文本行
findstr.exe 查找文件中的行
finger.exe 一个用户并显示出统计结果
fixmapi.exe 修复MAPI文件
flattemp.exe 允许或者禁用临时文件目录 (XP不可用)
fontview.exe 显示字体文件中的字体
forcedos.exe 强制文件在DOS模式下运行
ftp.exe FTP下载
gpedit.msc 组策略
gdi.exe 图形界面驱动
grpconv.exe 转换程序管理员组
hostname.exe 显示机器的Hostname
Internat 输入法图标
iexpress 木马捆绑工具,系统自带
ieshwiz.exe 自定义文件夹向导
iexpress.exe iexpress安装包
iisreset.exe 重启IIS服务(未安装IIS,不可用)
internat.exe 键盘语言指示器 (XP不可用) http://kissgz.com
ipconfig.exe 查看IP配置
ipsecmon.exe IP安全监视器
ipxroute.exe IPX路由和源路由控制程序
irftp.exe 无线连接
ismserv.exe 安装或者删除Service Control Manager中的服务
jdbgmgr.exe Java4的调试器
jetconv.exe 转换Jet Engine数据库 (XP不可用)
jetpack.exe 压缩Jet数据库 (XP不可用)
jview.exe Java的命令行装载者
label.exe 改变驱动器的卷标
lcwiz.exe 许可证向导 (XP不可用)
ldifde.exe LDIF目录交换命令行管理 (XP不可用)
licmgr.exe 终端服务许可协议管理 (XP不可用)
lights.exe 显示连接状况 (XP不可用)
llsmgr.exe Windows 2000 许可协议管理 (XP不可用)
llssrv.exe 启动许可协议服务器 (XP不可用)
locator.exe RPC Locator 远程定位
lodctr.exe 调用性能计数
logoff.exe 注销当前用户
lpq.exe 显示远端的LPD打印队列的状态,显示被送到基于Unix的服务器的打印任务
lpr.exe 用于Unix客户打印机将打印任务发送给连接了打印设备的NT的打印机服务器。
lsass.exe 运行LSA和Server的DLL
lserver.exe 指定默认Server新的DNS域 (XP不可用) 广州博客资讯
lusrmgr.msc 本地账户管理
mmc 控制台
mplayer2 播放器
macfile.exe 管理MACFILES (XP不可用)
magnify.exe 放大镜
makecab.exe 制作CAB文件
mem.exe 显示内存状态
migpwd.exe 迁移密码
mmc.exe 控制台
mnmsrvc.exe 远程桌面共享
mobsync.exe 同步目录管理器
mountvol.exe 创建、删除或列出卷的装入点。
mplay32.exe Media Player 媒体播放器
mpnotify.exe 通知应用程序
mqbkup.exe 信息队列备份和恢复工具
mqmig.exe MSMQ Migration Utility 信息队列迁移工具
mrinfo.exe 使用SNMP多点传送路由
mscdexnt.exe 安装MSCD
msdtc.exe 动态事务处理控制台
msg.exe 发送消息到本地或远程客户
mshta.exe HTML应用程序主机
msiexec.exe 开始Windows安装程序
mspaint.exe 打开画图板
mstask.exe 任务计划表程序
mstinit.exe 任务计划表安装
Msconfig.exe 系统配置实用程序 (配置启动选项,服务项)
mem.exe 显示内存使用情况
mspaint 画图板
Net Stop Messenger 停止信使服务
Net Start Messenger 恢复信使服务 本内容属于广州博客(kissgz.com)
nslookup 网络管理的工具
Nslookup IP 地址侦测器
ntbackup 系统备份和还原
nbtstat.exe 使用 NBT(TCP/IP 上的 NetBIOS)显示协议统计和当前 TCP/IP 连接。
nddeapir.exe NDDE API服务器端
netsh.exe 用于配置和监控 Windows 2000 命令行脚本接口(XP不可用)
netstat.exe 显示协议统计和当前的 TCP/IP 网络连接。
nlsfunc.exe 加载特定国家的信息。Windows 2000 和 MS-DOS 子系统不使用该命令接受该命令只是为了与 MS-DOS 文件兼容。
notepad.exe 打开记事本
nslookup.exe 该诊断工具显示来自域名系统 (DNS) 名称服务器的信息。
ntbackup.exe 备份和故障修复工具
ntfrs.exe NT文件复制服务 (XP不可用)
ntvdm.exe 模拟16位Windows环境
nw16.exe NetWare转向器
nwscript.exe 运行Netware脚本
odbcad32.exe 32位ODBC数据源管理 (驱动程序管理)
odbcconf.exe 命令行配置ODBC驱动和数据源
packager.exe 对象包装程序
pathping.exe 包含Ping和Tracert的程序
pentnt.exe 检查Pentium的浮点错误
perfmon.exe 系统性能监视器
ping.exe 验证与远程计算机的连接 本内容属于广州博客(kissgz.com)
posix.exe 用于兼容Unix
print.exe 打印文本文件或显示打印队列的内容。
progman.exe 程序管理器
psxss.exe Posix子系统应用程序
qappsrv.exe 在网络上显示终端服务器可用的程序
qprocess.exe 在本地或远程显示进程的信息(需终端服务)
query.exe 查询进程和对话 (XP不可用)
quser.exe 显示用户登陆的信息(需终端服务)
qwinsta.exe 显示终端服务的信息
rononce -p 15秒关机
rasAdmin 远程访问服务.
regedit.exe 注册表编辑器
rasadmin.exe 启动远程访问服务 (XP不可用)
rasautou.exe 建立一个RAS连接
rasdial.exe 宽带,拨号连接
ras.exe 运行RAS连接 (XP不可用)
rcp.exe 计算机和运行远程外壳端口监控程序 rshd 的系统之间复制文件
rdpclip.exe 终端和本地复制和粘贴文件
recover.exe 从坏的或有缺陷的磁盘中恢复可读取的信息。
redir.exe 运行重定向服务
regedt32.exe 32位注册服务
regini.exe 用脚本修改注册许可
regwiz.exe 注册向导
replace.exe 用源目录中的同名文件替换目标目录中的文件。
rexec.exe rexec 命令在执行指定命令前,验证远程计算机上的用户名,只有安装了 TCP/IP 协议后才可以使用该命令。
www.kissgz.com

risetup.exe 运行远程安装向导服务 (XP不可用)
route.exe 控制网络路由表
rsh.exe 在运行 RSH 服务的远程计算机上运行命令
rsnotify.exe 远程存储通知回显
runas.exe 允许用户用其他权限运行指定的工具和程序
rundll32.exe 启动32位DLL程序
rwinsta.exe 重置会话子系统硬件和软件到最初的值
Sndvol32 音量控制程序
sfc.exe 或CMD\ sfc.exe 回车 系统文件检查器
services.msc 网络连接服务
syskey 系统加密,(一旦加密就不能解开,保护windows xp系统的双重密码wupdmgr WIDNOWS Update)
SCANREG/RESTORE 命令恢复最近的注册表
secedit.exe 自动化安全性配置管理
services.exe 控制所有服务
sethc.exe 设置高对比
setver.exe 设置 MS-DOS 子系统向程序报告的 MS-DOS 版本号
sfc.exe 系统文件检查
shadow.exe 监控另外一台中端服务器会话
shrpubw.exe 建立和共享文件夹
sigverif.exe 文件签名验证
smlogsvc.exe 性能日志和警报 (XP不可用)
sndrec32.exe 录音机
sndvol32.exe 显示声音控制信息
snmp.exe 简单网络管理协议 (XP不可用)
广州博客资讯

snmptrap.exe SNMP工具 (XP不可用)
srvmgr.exe 服务器管理器 (XP不可用)
subst.exe 将路径与驱动器盘符关联
sysedit.exe 系统配置编辑器
syskey.exe NT账号数据库加密工具
sysocmgr.exe > Windows 安装程序
systray.exe 在低权限运行systray
taskmgr 任务管理器
tasklist /svc(CMD)了解每个SVCHOST进程到底提供了多少系统服务(2000\98不可用)
tlist -S(CMD) 了解每个SVCHOST进程到底提供了多少系统服务(
taskman.exe 任务管理器 (XP不可用)
taskmgr.exe 任务管理器
tcmsetup.exe 电话服务客户安装
tcpsvcs.exe TCP服务
termsrv.exe 终端服务
tftp.exe 将文件传输到正在运行 TFTP 服务的远程计算机或从正在运行 TFTP 服务的远程计算机传输文件
themes.exe 桌面主题 (XP不可用)
tlntadmn.exe Administrator Telnet服务管理
tlntsess.exe 显示目前的Telnet会话
tlntsvr.exe 开始Telnet服务
tracert.exe 诊断实用程序将包含不同生存时间 (TTL) 值的 Internet 控制消息协议 (ICMP) 回显数据包发送到目标,以决定到达目标采用的路由
tsadmin.exe Administrator 终端服务管理器 (XP不可用) 广州博客资讯
tscon.exe 粘贴用户会话到终端对话
tsdiscon.exe 断开终端服务的用户
tskill.exe 杀掉终端服务
tsprof.exe 用终端服务得出查询结果
tsshutdn.exe 关闭系统
unlodctr.exe 性能监视器的一部分
upg351db.exe 升级Jet数据库 (XP不可用)
ups.exe UPS service UPS服务
user.exe Windows核心服务
userinit.exe 打开我的文档
usrmgr.exe 域用户管理器
utilman.exe 指定2000启动时自动打开那台机器
vwipxspx.exe 调用IPX/SPX VDM
w32tm.exe 时间服务器
wextract.exe 解压缩Windows文件
winchat.exe 打开Windows聊天工具
winhlp32.exe 运行帮助系统
winmsd.exe 查看系统信息
winver.exe 显示Windows版本
wizmgr.exe Windows管理向导 (XP不可用)
wjview.exe Java 命令行调用Java
write.exe 打开写字板
wscript.exe 脚本工具
wupdmgr.exe Windows update 运行Windows update升级向导
winver 检查Windows版本
Win98系统工具
开始,运行,输入Msconfig 系统配置实用工具 配置启动选项,包括config.sys、autoexec.bat、win.ini、system.ini和注册表及程序菜单中的启动项。并可设置是否故障启动。
www.kissgz.com

开始,运行,输入Regedit 注册表修改工具 注册表编辑器,如果没有把握不要随意修改注册表!
开始,运行,输入Regsvr32 dll注册工具 当提示找不到dll文件时,可用此来注册该动态连接库。
开始,运行,输入Regwiz 注册向导 用于注册。校验系统文件,并可恢复系统文件。
如果启动时出现类似*.vxd文件错误,可用此恢复该vxd文件。
开始,运行,输入Scandskw 磁盘扫描程序,用于扫描修复磁盘。如果磁盘或文件出现错误,可用来初步修复。
开始,运行,输入DxDiag DirectX诊断工具可用于检测DirectX运行是否正常。
开始,运行,输入NETSCAPE

ESC:清除当前命令行;
F7:显示命令历史记录,以图形列表窗的形式给出所有曾经输入的命令,并可用上下箭头键选择再次执行该命令。
F8:搜索命令的历史记录,循环显示所有曾经输入的命令,直到按下回车键为止;
F9:按编号选择命令,以图形对话框方式要求您输入命令所对应的编号(从0开始),并将该命令显示在屏幕上;
Ctrl+H:删除光标左边的一个字符;
Ctrl+C Ctrl+Break,强行中止命令执行;
Ctrl+M:表示回车确认键;
Alt+F7:清除所有曾经输入的命令历史记录;
http://kissgz.com

Alt+PrintScreen:截取屏幕上当前命令窗里的内容。
病毒破坏了系统文件,请使用杀毒软件查杀病毒,然后利用Windows 2000提供的“命令控制台”中的Chkdsk /r命令检查修复系统文件即可
本篇文章来源于 广州博客 原文链接:http://www.kissgz.com/news/digi/diannaoyingyong/20080224/2296.html

基于所用的文件系统,创建和显示磁盘的状态报告。Chkdsk 还会列出并纠正磁盘上的错误。如果不带任何参数,chkdsk 将显示当前驱动器中的磁盘状态。

语法
chkdsk [volume:][[Path] FileName] [/f] [/v] [/r] [/x] [/c] [/l[:size]]

参数
volume:
指定驱动器号(冒号分隔)、装入点或卷名。
[Path} FileName]
指定需要 chkdsk 检查碎片整理的文件或文件集的位置和名称。使用通配符(* 和 ?)可以指定多个文件。
/f
修复磁盘上的错误。必须锁定磁盘。如果 chkdsk 无法锁定驱动器,则会显示一条消息,询问您是否希望在下次重新启动计算机时检查该驱动器。
/v
当检查磁盘时,显示所有目录中每个文件的名称。
/r
找到坏扇区并恢复可读取的信息。必须锁定磁盘。
/x
仅在 NTFS 上使用。如果必要,首先强制卸载卷。该驱动器的所有打开句柄都无效。/x 还包含了/f 的功能。
/i
仅随 NTFS 使用。对索引项执行充分检查,降低运行 chkdsk 的所用时间量。  www.kissgz.com/news
/c
仅随 NTFS 使用。跳过文件夹结构中的周期检查,减少运行 chkdsk 所需的时间量。
/l[:size]
仅随 NTFS 使用。将日志文件的大小更改为由用户输入的大小。如果省略该参数,则 /l 会显示当前日志文件的大小。
/?
在命令提示符显示帮助。
注释
运行 chkdsk
要在固定磁盘上运行 chkdsk 命令,您必须是该 Administrators 组的成员。

重新启动时检查锁定的驱动器
如果希望 chkdsk 修复磁盘错误,则此前不能打开该驱动器上的文件。如果有文件打开,会显示下述错误消息:

Chkdsk cannot run because the volume is in use by another processWould you like to schedule this volume to be checked the next time the system restarts?(Y/N)

如果选择下次重新启动计算机时检查该驱动器,则重新启动计算机后 chkdsk 会自动检查该驱动器并修复错误。如果该驱动器分区为启动分区,则 chkdsk 在检查完该驱动器后会自动重新启动计算机。
www.kissgz.com/news

报告磁盘错误
chkdsk  命令会检查磁盘空间和文件分配表 (FAT)以及 NTFS 文件系统的使用情况。Chkdsk 在状态报告中提供特定于每个文件系统的信息。状态报告显 示文件系统中找到的错误。在活动分区上运行 chkdsk 时,如果未含 /f 命令行选项,则它可能会因为无法锁定该驱动器而报告虚假信息。应该不定期 使用 chkdsk 检查每个磁盘上的错误。

修复磁盘错误
只有指定 /f 命令行选项,chkdsk 命令才修复磁盘错误。Chkdsk 必须可以锁定驱动器以纠正错误。由于修复通常会更改磁盘的文件分配表,有时还会丢失数据,所以 chkdsk 会首先发送如下所示的确认消息:

10 lost allocation units found in 3 chains.

Convert lost chains to files?

如果按 Y,Windows 会在根目录中将所有丢失链保存在一个名为 Filennnn.chk 的文件中。chkdsk 结束后,可以查看这些文件是否包含了所需的数据。如果按 N,Windows 会修复磁盘,但对于丢失的分配单元,它不保存其内容。 www.kissgz.com/news

如果不使用 /f 命令行选项,则在有文件需要修复时,chkdsk 会发送消息,但它不修复任何错误。

如果在大磁盘(例如,70 GB)或有大量文件(数百万)的磁盘上使用 chkdsk /f,这可能要花很长时间(比如说,数天)才能完成。因为 chkdsk 直到工作完成它才会交出控制权,所以计算机在这段时间内将不可用。

例子:

我使用一键ghost的时候,由于断电,解决导致在我的F盘里面多出了一个c_pan.gho的文件,我看它的大小是0,不过删除的时候却提示“文件或目录损坏且无法读取”,我该怎么解决?

答:出现这个情况主要是因为,文件正在操作中而因为一些其他的因素导致文件创建不完整。所以这里告诉大家一个命令,也就是chkdsk命令,在“运行”里 输入 “cmd”,然后输入使用“cd”命令进入到该盘和文件夹,最后输入“chkdsk /f”,就会有提示“chkdsk 正在校验文件”,几秒钟之后就会 提示某文件索引成功。

9月23日

Allegro元件封装(焊盘)制作方法总结

 

在Allegro系统中,建立一个零件(Symbol)之前,必须先建立零件的管脚(Pin)。元件封装大体上分两种,表贴和直插。针对不同的封装,需要制作不同的Padstack。

Allegro中Padstack主要包括以下部分。
1、PAD即元件的物理焊盘
    pad有三种:

  1. Regular Pad,规则焊盘(正片中)。可以是:Circle 圆型、Square 方型、Oblong 拉长圆型、Rectangle 矩型、Octagon 八边型、Shape形状(可以是任意形状)。
  2. Thermal relief 热风焊盘(正负片中都可能存在)。可以是:Null(没有)、Circle 圆型、Square 方型、Oblong 拉长圆型、Rectangle 矩型、Octagon 八边型、flash形状(可以是任意形状)。
  3. Anti pad 抗电边距(负片中使用),用于防止管脚与其他的网络相连。可以是:Null(没有)、Circle 圆型、Square 方型、Oblong 拉长圆型、Rectangle 矩型、Octagon 八边型、Shape形状(可以是任意形状)。

2、SOLDERMASK:阻焊层,使铜箔裸露而可以镀涂。
3、PASTEMASK:胶贴或钢网。
4、FILMMASK:预留层,用于添加用户需要添加的相应信息,根据需要使用。

表贴元件的封装焊盘,需要设置的层面及尺寸:
Regular Pad:
具体尺寸根据实际封装的大小进行相应调整后得到。推荐使用《IPC-SM-782A Surface Mount Design and Land Pattern Standard》中推荐的尺寸进行尺寸设计。同时推荐使用IPC-7351A LP Viewer。该软件包括目前常用的大多数SMD元件的封装。并给出其尺寸及焊盘设计尺寸。可以从www.pcblibraries.com免费下载。
Thermal Relief
通常比Regular pad尺寸大20mil,如果Regular Pad尺寸小于40mil,根据需要适当减小
Anti pad
通常比Regular pad尺寸大20mil,如果Regular Pad尺寸小于40mil,根据需要适当减小
SOLDERMASK
  通常比Regular Pad尺寸大4mil
PASTEMASK
通常比Regular Pad尺寸大4mil
FILMMASK:
似乎很少用到,暂时与SOLDERMASK 直径一样。

直插元件的封装焊盘,需要设置的层面及尺寸:
    所需要层面:

  • Regular Pad
  • Thermal Relief
  • Anti pad
  • SOLDERMASK
  • PASTEMASK
  • FILMMASK

1)BEGIN LAYER-----Thermal Relief Pad和Anti Pad比实际焊盘做大0.5mm
2)END LAYER与BEGIN LAYER一样设置
2)DEFAULT INTERNAL尺寸如下
其中尺寸如下:
DRILL_SIZE >= PHYSICAL_PIN_SIZE + 10MIL
Regular Pad >= DRILL_SIZE + 16MIL (DRILL_SIZE<50)(0.4mm 1.27)
Regular Pad >= DRILL_SIZE + 30MIL (DRILL_SIZE>=50)(0.76mm 1.27)
Regular Pad >= DRILL_SIZE + 40MIL (钻孔为矩形或椭圆形时)(1mm)
Thermal Pad = TRaXbXc-d其中TRaXbXc-d为Flash的名称(后面有介绍)
Anti Pad = DRILL_SIZE + 30MIL 0.76mm
SOLDERMASK = Regular_Pad + 6MIL 0.15mm
PASTEMASK = Regular Pad   (可以不要)
•Flash Name: TRaXbXc-d
其中:
a. Inner Diameter: Drill Size + 16MIL
b. Outer Diameter: Drill Size + 30MIL
c. Wed Open:    12 (当DRILL_SIZE = 10MIL以下)
                            15 (当DRILL_SIZE = 11~40MIL)
                            20 (当DRILL_SIZE = 41~70MIL)
                            30 (当DRILL_SIZE = 71~170 MIL)
                            40 (当DRILL_SIZE = 171 MIL以上)
也有这种说法:至于flash的开口宽度,则要根据圆周率计算一下,保证连接处的宽度不小于10mil。公式为:
DRILL SIZE × Sin30°﹙正弦函数30度﹚批注[B.K.1]:那不就是1/2?有待商榷
d.Angle:45

图 1 通孔焊盘(图中的Thermal Relief使用Flash)
PCB 元件(Symbol)的必要的 CLASS/SUBCLASS
*这些层在添加pad时已经添加,无需额外添加。其他层需要在Allegro中建立封装时添加。
**对于PLACE_BOUND_TOP,DIP元件要比零件框大1mm SMD的话是0.2mm
注:这些层除标明必要外,其他的层可以不包括在内。另外其他层可以视情况添加进来。

序号

CLASS

SUBCLASS

元件要素

备注

1*

Eth

Top

Pad/PIN(通孔或表贴孔)

Shape(贴片IC 下的散热铜箔)

必要、有导电性

2*

Eth

Bottom

Pad/PIN(通孔或盲孔)

视需要而定、有导电性

3*

Package Geometry

Pin_Number

映射原理图元件的 pin 号。

如果 PAD没标号,表示原理图不关心这个 pin 或是机械孔。

必要

4

Ref Des

Silkscreen_Top

元件的位号。

必要

5

Component Value

Silkscreen_Top

元件型号或元件值。

必要

6

Package Geometry

Silkscreen_Top

元件外形和说明:线条、弧、字、Shape 等。

必要

7

Package Geometry

Place_Bound_Top**

元件占地区域和高度。

必要

8

Route Keepout

Top

禁止布线区

视需要而定

9

Via Keepout

Top

禁止放过孔区

视需要而定

备注:
1.Regular pad,thermal relief,anti pad的概念和使用方法
答:Regular pad(正规焊盘)主要是与top layer,bottom layer,internal layer等所有的正片进行连接(包括布线和覆铜)。一般应用在顶层,底层,和信号层,因为这些层较多用正片。
thermal relief(热风焊盘),anti pad(隔离盘),主要是与负片进行连接和隔离绝缘。一般应用在VCC或GND等内电层,因为这些层较多用负片。但是我们在begin layer和end layer也设置thermal relief(热风焊盘),anti pad(隔离盘)的参数,那是因为begin layer和end layer也有可能做内电层,也有可能是负片。
    综上所述,也就是说,对于一个固定焊盘的连接,如果你这一层是正片,那么就是通过你设置的Regular pad与这个焊盘连接,thermal relief(热风焊盘),anti pad(隔离盘)在这一层无任何作用。
    如果这一层是负片,就是通过thermal relief(热风焊盘),anti pad(隔离盘)来进行连接和隔离,Regular pad在这一层无任何作用。
    当然,一个焊盘也可以用Regular pad与top layer的正片同网络相连,同时,用thermal relief(热风焊盘)与GND内电层的负片同网络相连。

2.正片和负片的概念
答:正片和负片只是指一个层的两种不同的显示效果。无论你这一层是设置正片还是负片,作出来的PCB板是一样的。只是在cadence处理的过程中,数据量,DRC检测,以及软件的处理过程不同而已。
    只是一个事物的两种表达方式。就像一个兄弟发的帖子上面说的,正片就是,你看到什么,就是什么,你看到布线就是布线,是真是存在的。
    负片就是,你看到什么,就没有什么,你看到的,恰恰是需要腐蚀掉的铜皮。

3.正片和负片时,应如何使用和设置(Regular pad,thermal relief,anti pad)这三种焊盘
答:我们在制作pad时,最好把flash做好,把三个参数全部设置上,无论你做正片还是负片,都是一劳永逸。如果不用负片,那么,恭喜你,你可以和flash说拜拜了。
    如果在做焊盘的时候,你内层不做花焊盘,那么在多层板的如果电源层是负片的话就不会有花焊盘出现,必须前期做了才会有.如果反过来,前期做了,但出图的时候不想要花焊盘,可以直接在art work负片中设置去掉花焊盘。
    当然你电源层也可以采用正片直接铺铜的方式,铺洞时设置孔的连着方式等参数,也可达到花焊盘的效果,这样在做焊盘的时候不做花焊盘也可以通过设置孔的连接方式达到花焊盘的效果。设置方法:shape—global dynamic parameter-Thermal relief connects里进行相应设置。
    每个管脚可以拥有所有类型的pad(Regular, thermal relief, anti-pad and custom shapes),这些pad将应用于设计中的各个走线层。对于artwork层中的负片,allegro将使用thermal relief和anti-pad。而对于正片,allegro只使用Regular pad。这些工作是allegro在生成光绘文件时,自动选择的。
    每一层中都有可能指定Regular Thermal relief及Anti-pad是出于以下考虑:在出光绘文件时,当该层中与该焊盘相连通的是一般走线,那么,在正片布线层中,Allegro将决定使用Regular焊盘。如果是敷铜,则使用Thermal relief焊盘,如果不能与之相连,则使用Anti-pad。具体使用由Allegro决定。

Cadence ORCAD CAPTURE元件库介绍

AMPLIFIER.OLB
共182个零件,存放模拟放大器IC,如CA3280,TL027C,EL4093等。

ARITHMETIC.OLB
共182个零件,存放逻辑运算IC,如TC4032B,74LS85等。

ATOD.OLB
共618个零件,存放A/D转换IC,如ADC0804,TC7109等。

BUS DRIVERTRANSCEIVER.OLB
共632个零件,存放汇流排驱动IC,如74LS244,74LS373等数字IC。

CAPSYM.OLB
共35个零件,存放电源,地,输入输出口,标题栏等。

CONNECTOR.OLB
共816个零件,存放连接器,如4 HEADER,CON AT62,RCA JACK等。

COUNTER.OLB
共182个零件,存放计数器IC,如74LS90,CD4040B。

DISCRETE.OLB
共872个零件,存放分立式元件,如电阻,电容,电感,开关,变压器等常用零件。

DRAM.OLB
共623个零件,存放动态存储器,如TMS44C256,MN41100-10等。

ELECTRO MECHANICAL.OLB
共6个零件,存放马达,断路器等电机类元件。

FIFO.OLB
共177个零件,存放先进先出资料暂存器,如40105,SN74LS232。

FILTRE.OLB
共80个零件,存放滤波器类元件,如MAX270,LTC1065等。

FPGA.OLB
存放可编程逻辑器件,如XC6216/LCC。

GATE.OLB
共691个零件,存放逻辑门(含CMOS和TLL)。

LATCH.OLB
共305个零件,存放锁存器,如4013,74LS73,74LS76等。

LINE DRIVER RECEIVER.OLB
共380个零件,存放线控驱动与接收器。如SN75125,DS275等。

MECHANICAL.OLB
共110个零件,存放机构图件,如M HOLE 2,PGASOC-15-F等。

MICROCONTROLLER.OLB
共523个零件,存放单晶片微处理器,如68HC11,AT89C51等。

MICRO PROCESSOR.OLB
共288个零件,存放微处理器,如80386,Z80180等。

MISC.OLB
共1567个零件,存放杂项图件,如电表(METER MA),微处理器周边(Z80-DMA)等未分类的零件。

MISC2.OLB
共772个零件,存放杂项图件,如TP3071,ZSD100等未分类零件。

MISCLINEAR.OLB
共365个零件,存放线性杂项图件(未分类),如14573,4127,VFC32等。

MISCMEMORY.OLB
共278个零件,存放记忆体杂项图件(未分类),如28F020,X76F041等。

MISCPOWER.OLB
共222个零件,存放高功率杂项图件(未分类),如REF-01,PWR505,TPS67341等。

MUXDECODER.OLB
共449个零件,存放解码器,如4511,4555,74AC157等。

OPAMP.OLB
共610个零件,存放运放,如101,1458,UA741等。

PASSIVEFILTER.OLB
共14个零件,存放被动式滤波器,如DIGNSFILTER,RS1517T,LINE FILTER等。

PLD.OLB
共355个零件,存放可编程逻辑器件,如22V10,10H8等。

PROM.OLB
共811个零件,存放只读记忆体运算放大器,如18SA46,XL93C46等。

REGULATOR.OLB
共549个零件,存放稳压IC,如78xxx,79xxx等。

SHIFTREGISTER.OLB
共610个零件,存放移位寄存器,如4006,SNLS91等。

SRAM.OLB
共691个零件,存放静态存储器,如MCM6164,P4C116等。

TRANSISTOR.OLB
共210个零件,存放晶体管(含FET,UJT,PUT等),如2N2222A,2N2905等。

9月17日

C语言中的 排序函数 qsort()

qsort() 与 bsearch() 类似 ,在IAR for 430 中

qsort void qsort (const void *base, size_t nmemb, size_t size, int
(*compare) (const void *_key, const void *_base));
Parameters

base Pointer to the array to sort.
nmemb Dimension of the array pointed to by base.
size Size of the array elements.
compare The comparison function, which takes two arguments and returns:
<0 (negative value) if _key is less than _base
0 if _key equals _base
>0 (positive value) if _key is greater than _base

Return value
None.
Description
Sorts an array of nmemb objects pointed to by base.

Header file
stdlib.h

eg:

#include  "msp430x54x.h"
#include  <stdlib.h>

INT8U aaa[10] ={0,8,2,4,7,0,6,3,8,2};
INT8U bb = 9;
int * aptr;

int compare(const void *key,const void *base)
{
    return (*(INT8U *)key-*(INT8U *)base);
}

void main(void)
{
    WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer  
    //initXT2(); 
    //initPIO();   
    _NOP();
    qsort(aaa,10,sizeof(INT8U),compare); 
    _NOP();
    while(1);
}

执行qsort后,aaa[10] ={0,0,2,2,3,4,6,7,8,8};

若将 compare() 改为

int compare(const void *key,const void *base)
{
    return (*(INT8U *)key-*(INT8U *)base);
}

执行qsort后,aaa[10] ={8,8,7,6,4,3,2,2,0,0};

C语言中排序的算法有很多种,系统也提供了一个函数qsort()可以实现快速排序。原型如下:

void qsort(void *base, size_t nmem, size_t size, int (*comp)(const void *, const void *));

它根据comp所指向的函数所提供的顺序对base所指向的数组进行排序,nmem为参加排序的元素个数,size为每个元素所占的字节数。例如要对元素进行升序排列,则定义comp所指向的函数为:如果其第一个参数比第二个参数小,则返回一个小于0的值,反之则返回一个大于0的值,如果相等,则返回0。

例:

#include <stdio.h>
#include <stdlib.h>
int comp(const void *, const void *);
int main(int argc, char *argv[])
{
int i;
int array[] = {6, 8, 2, 9, 1, 0};
qsort(array, 6, sizeof(int), comp);
for (i = 0; i < 6; i ++) {
printf("%d\t", array[i]);
}
printf("\n");
return 0;
}
int comp(const void *p, const void *q)
{
return (*(int *)p - *(int *)q);
}

运行结果如下:

0 1 2 6 8 9

C语言中的二分查找函数

二分查找 即 折半查找,以前都是自己手动编写程序,现在才发现,C语言中有现成的库函数可以调用.在大多数嵌入式编程软件中,也支持此函数,比如 IAR for 430

在IAR for 430 中,

bsearch void *bsearch(const void *key, const void *base, size_t
nmemb, size_t size, int (*compare) (const void *_key,
const void *_base));
Parameters
key Pointer to the searched for object.//待查找单元的关键字
base Pointer to the array to search.//在什么地方找

nmemb Dimension of the array pointed to by base.//有多少单元可以查找
size Size of the array elements.//每个单元占多少字节
compare The comparison function which takes two arguments and returns://怎样比较两个元素大小
<0 (negative value) if _key is less than _base
0 if _key equals _base
>0 (positive value) if _key is greater than _base

Return value

Result Value
Successful A pointer to the element of the array that matches the key.
Unsuccessful Null.
Table 1: bsearch return value


Description
Searches an array of nmemb objects, pointed to by base, for an element that matches
the object pointed to by key.
Header file
stdlib.h

eg:

#include  "msp430x54x.h"
#include  <stdlib.h>

const INT8U aaa[10] ={0,1,2,3,4,5,6,7,8,9};
INT8U bb = 9;
int * aptr;

int compare(const void *key,const void *base)
{
    return (*(INT8U *)key-*(INT8U *)base);
}

void main(void)
{
    WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer  
    //initXT2(); 
    //initPIO();   
    _NOP();
    aptr=bsearch(&bb,aaa,10,sizeof(INT8U),compare); 
    _NOP();
    while(1);
}

C语言中可以用bsearch()实现二分查找。同qsort()一样,bsearch()也包含在<stdlib.h>库中,且同样要自定义比较子函数。其原型如下:

void *bsearch(const void *key, const void *base, size_t nmem, size_t size, int (*comp)(const void *, const void *));

key指向所要查找的元素,base指向进行查找的数组,nmem为查找长度,一般为数组长度,size为每个元素所占的字节数,一般用sizeof(...)表示,comp指向比较子函数,它定义比较的规则。需要注意的是,数据必须是经过预先排序的,而排序的规则要和comp所指向比较子函数的规则相同。如果查找成功则返回数组中匹配元素的地址,反之则返回空。对于有多于一个的元素匹配成功的情况,bsearch()未定义返回哪一个。

例:

#include <stdio.h>
#include <stdlib.h>
#define NUM 8
int compare(const void *p, const void *q)
{
return (*(int *)p - *(int *)q);
}
int main(int argc, char *argv[])
{
int array[NUM] = {9, 2, 7, 11, 3, 87, 34, 6};
int key = 3;
int *p;
qsort(array, NUM, sizeof(int), compare);
    p = (int *)bsearch(&key, array, NUM, sizeof(int), compare);
(p == NULL) ? puts("not found") : puts("found");
return 0;
}

结果如下:

found

7月27日

msp430F5xxxx系列芯片Vcore管脚的接法~~~

    之前用430F5437,没有接任何外设,电流太大,有60多mA,一直找不到问题根源.后来发现,是Vcore管脚接的不对,一般别的芯片,Vcore管脚都要接VCC电源,而430F5xxx系列芯片,Vcore管脚要接470nF电容到GND才对,我把Vcore接电容接地,电流马上就降下来了,以前60多mA,现在只有1mA多点.

MSP430F543x(A), MSP430F541x(A) Mixed Signal Microcontroller.pdf  中,描述如下:

Voltage applied to any pin (excluding VCORE)(2)  –0.3 V to VCC + 0.3 V

(2) All voltages referenced to VSS. VCORE is for internal device usage only. No external DC loading or voltage should be applied.

CVCORE Capacitor at VCORE 470 nF

7月14日

10种软件滤波方法的示例程序

 

1、限副滤波 
/* A值可根据实际情况调整 
value为有效值,new_value为当前采样值 
滤波程序返回有效的实际值 */ 
#define A 10 

char value; 

char filter() 

char new_value; 
new_value = get_ad(); 
if ( ( new_value - value > A ) || ( value - new_value > A ) 
return value; 
return new_value; 

2、中位值滤波法 
/* N值可根据实际情况调整 
排序采用冒泡法*/ 
#define N 11 

char filter() 

char value_buf[N]; 
char count,i,j,temp; 
for ( count=0;count<N;count++) 

value_buf[count] = get_ad(); 
delay(); 

for (j=0;j<N-1;j++) 

for (i=0;i<N-j;i++) 

if ( value_buf[i]>value_buf[i+1] ) 

temp = value_buf[i]; 
value_buf[i] = value_buf[i+1]; 
value_buf[i+1] = temp; 



return value_buf[(N-1)/2]; 

3、算术平均滤波法 
/* 
*/ 

#define N 12 

char filter() 

int sum = 0; 
for ( count=0;count<N;count++) 

sum + = get_ad(); 
delay(); 

return (char)(sum/N); 

4、递推平均滤波法(又称滑动平均滤波法) 
/* 
*/ 
#define N 12 

char value_buf[N]; 
char i=0; 

char filter() 

char count; 
int sum=0; 
value_buf[i++] = get_ad(); 
if ( i == N ) i = 0; 
for ( count=0;count<N,count++) 
sum = value_buf[count]; 
return (char)(sum/N); 

5、中位值平均滤波法(又称防脉冲干扰平均滤波法) 
/* 
*/ 
#define N 12 

char filter() 

char count,i,j; 
char value_buf[N]; 
int sum=0; 
for (count=0;count<N;count++) 

value_buf[count] = get_ad(); 
delay(); 

for (j=0;j<N-1;j++) 

for (i=0;i<N-j;i++) 

if ( value_buf[i]>value_buf[i+1] ) 

temp = value_buf[i]; 
value_buf[i] = value_buf[i+1]; 
value_buf[i+1] = temp; 



for(count=1;count<N-1;count++) 
sum += value[count]; 
return (char)(sum/(N-2)); 

6、限幅平均滤波法 
/* 
*/ 
略 参考子程序1、3 

7、一阶滞后滤波法 
/* 为加快程序处理速度假定基数为100,a=0~100 */ 

#define a 50 

char value; 

char filter() 

char new_value; 
new_value = get_ad(); 
return (100-a)*value + a*new_value; 

8、加权递推平均滤波法 
/* coe数组为加权系数表,存在程序存储区。*/ 

#define N 12 

char code coe[N] = {1,2,3,4,5,6,7,8,9,10,11,12}; 
char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12; 

char filter() 

char count; 
char value_buf[N]; 
int sum=0; 
for (count=0,count<N;count++) 

value_buf[count] = get_ad(); 
delay(); 

for (count=0,count<N;count++) 
sum += value_buf[count]*coe[count]; 
return (char)(sum/sum_coe); 

9、消抖滤波法 

#define N 12 

char filter() 

char count=0; 
char new_value; 
new_value = get_ad(); 
while (value !=new_value); 

count++; 
if (count>=N) return new_value; 
delay(); 
new_value = get_ad(); 

return value; 

10、限幅消抖滤波法 
/* 
*/ 
略 参考子程序1、9 

1、限幅滤波法(又称程序判断滤波法) 
A、方法: 
根据经验判断,确定两次采样允许的最大偏差值(设为A) 
每次检测到新值时判断: 
如果本次值与上次值之差<=A,则本次值有效 
如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值 
B、优点: 
能有效克服因偶然因素引起的脉冲干扰 
C、缺点 
无法抑制那种周期性的干扰 
平滑度差 

2、中位值滤波法 
A、方法: 
连续采样N次(N取奇数) 
把N次采样值按大小排列 
取中间值为本次有效值 
B、优点: 
能有效克服因偶然因素引起的波动干扰 
对温度、液位的变化缓慢的被测参数有良好的滤波效果 
C、缺点: 
对流量、速度等快速变化的参数不宜 

3、算术平均滤波法 
A、方法: 
连续取N个采样值进行算术平均运算 
N值较大时:信号平滑度较高,但灵敏度较低 
N值较小时:信号平滑度较低,但灵敏度较高 
N值的选取:一般流量,N=12;压力:N=4 
B、优点: 
适用于对一般具有随机干扰的信号进行滤波 
这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动 
C、缺点: 
对于测量速度较慢或要求数据计算速度较快的实时控制不适用 
比较浪费RAM 

4、递推平均滤波法(又称滑动平均滤波法) 
A、方法: 
把连续取N个采样值看成一个队列 
队列的长度固定为N 
每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则) 
把队列中的N个数据进行算术平均运算,就可获得新的滤波结果 
N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4 
B、优点: 
对周期性干扰有良好的抑制作用,平滑度高 
适用于高频振荡的系统 
C、缺点: 
灵敏度低 
对偶然出现的脉冲性干扰的抑制作用较差 
不易消除由于脉冲干扰所引起的采样值偏差 
不适用于脉冲干扰比较严重的场合 
比较浪费RAM 

5、中位值平均滤波法(又称防脉冲干扰平均滤波法) 
A、方法: 
相当于“中位值滤波法”+“算术平均滤波法” 
连续采样N个数据,去掉一个最大值和一个最小值 
然后计算N-2个数据的算术平均值 
N值的选取:3~14 
B、优点: 
融合了两种滤波法的优点 
对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差 
C、缺点: 
测量速度较慢,和算术平均滤波法一样 
比较浪费RAM 

6、限幅平均滤波法 
A、方法: 
相当于“限幅滤波法”+“递推平均滤波法” 
每次采样到的新数据先进行限幅处理, 
再送入队列进行递推平均滤波处理 
B、优点: 
融合了两种滤波法的优点 
对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差 
C、缺点: 
比较浪费RAM 

7、一阶滞后滤波法 
A、方法: 
取a=0~1 
本次滤波结果=(1-a)*本次采样值+a*上次滤波结果 
B、优点: 
对周期性干扰具有良好的抑制作用 
适用于波动频率较高的场合 
C、缺点: 
相位滞后,灵敏度低 
滞后程度取决于a值大小 
不能消除滤波频率高于采样频率的1/2的干扰信号 

8、加权递推平均滤波法 
A、方法: 
是对递推平均滤波法的改进,即不同时刻的数据加以不同的权 
通常是,越接近现时刻的数据,权取得越大。 
给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低 
B、优点: 
适用于有较大纯滞后时间常数的对象 
和采样周期较短的系统 
C、缺点: 
对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号 
不能迅速反应系统当前所受干扰的严重程度,滤波效果差 

9、消抖滤波法 
A、方法: 
设置一个滤波计数器 
将每次采样值与当前有效值比较: 
如果采样值=当前有效值,则计数器清零 
如果采样值<>当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出) 
如果计数器溢出,则将本次值替换当前有效值,并清计数器 
B、优点: 
对于变化缓慢的被测参数有较好的滤波效果, 
可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动 
C、缺点: 
对于快速变化的参数不宜 
如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效值导 
入系统 

10、限幅消抖滤波法 
A、方法: 
相当于“限幅滤波法”+“消抖滤波法” 
先限幅,后消抖 
B、优点: 
继承了“限幅”和“消抖”的优点 
改进了“消抖滤波法”中的某些缺陷,避免将干扰值导入系统 
C、缺点: 
对于快速变化的参数不宜 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bird67/archive/2008/11/28/3401553.aspx

7月8日

CRC32 校验程序(查表法)

 

#include <stdio.h>
#include <stdlib.h>
/*ulPolynomial = 0x04c11db7*/
unsigned long  crctable[256] =
{
0X00000000L,  0X04c11db7L,  0X09823b6eL,  0X0d4326d9L, 
0X130476dcL,  0X17c56b6bL,  0X1a864db2L,  0X1e475005L, 
0X2608edb8L,  0X22c9f00fL,  0X2f8ad6d6L,  0X2b4bcb61L, 
0X350c9b64L,  0X31cd86d3L,  0X3c8ea00aL,  0X384fbdbdL, 
0X4c11db70L,  0X48d0c6c7L,  0X4593e01eL,  0X4152fda9L, 
0X5f15adacL,  0X5bd4b01bL,  0X569796c2L,  0X52568b75L,
0X6a1936c8L,  0X6ed82b7fL,  0X639b0da6L,  0X675a1011L, 
0X791d4014L,  0X7ddc5da3L,  0X709f7b7aL,  0X745e66cdL, 
0X9823b6e0L,  0X9ce2ab57L,  0X91a18d8eL,  0X95609039L, 
0X8b27c03cL,  0X8fe6dd8bL,  0X82a5fb52L,  0X8664e6e5L, 
0Xbe2b5b58L,  0Xbaea46efL,  0Xb7a96036L,  0Xb3687d81L, 
0Xad2f2d84L,  0Xa9ee3033L,  0Xa4ad16eaL,  0Xa06c0b5dL,
0Xd4326d90L,  0Xd0f37027L,  0Xddb056feL,  0Xd9714b49L, 
0Xc7361b4cL,  0Xc3f706fbL,  0Xceb42022L,  0Xca753d95L, 
0Xf23a8028L,  0Xf6fb9d9fL,  0Xfbb8bb46L,  0Xff79a6f1L, 
0Xe13ef6f4L,  0Xe5ffeb43L,  0Xe8bccd9aL,  0Xec7dd02dL, 
0X34867077L,  0X30476dc0L,  0X3d044b19L,  0X39c556aeL, 
0X278206abL,  0X23431b1cL,  0X2e003dc5L,  0X2ac12072L, 
0X128e9dcfL,  0X164f8078L,  0X1b0ca6a1L,  0X1fcdbb16L, 
0X018aeb13L,  0X054bf6a4L,  0X0808d07dL,  0X0cc9cdcaL, 
0X7897ab07L,  0X7c56b6b0L,  0X71159069L,  0X75d48ddeL, 
0X6b93dddbL,  0X6f52c06cL,  0X6211e6b5L,  0X66d0fb02L, 
0X5e9f46bfL,  0X5a5e5b08L,  0X571d7dd1L,  0X53dc6066L,
0X4d9b3063L,  0X495a2dd4L,  0X44190b0dL,  0X40d816baL, 
0Xaca5c697L,  0Xa864db20L,  0Xa527fdf9L,  0Xa1e6e04eL, 
0Xbfa1b04bL,  0Xbb60adfcL,  0Xb6238b25L,  0Xb2e29692L, 
0X8aad2b2fL,  0X8e6c3698L,  0X832f1041L,  0X87ee0df6L, 
0X99a95df3L,  0X9d684044L,  0X902b669dL,  0X94ea7b2aL, 
0Xe0b41de7L,  0Xe4750050L,  0Xe9362689L,  0Xedf73b3eL,
0Xf3b06b3bL,  0Xf771768cL,  0Xfa325055L,  0Xfef34de2L, 
0Xc6bcf05fL,  0Xc27dede8L,  0Xcf3ecb31L,  0Xcbffd686L, 
0Xd5b88683L,  0Xd1799b34L,  0Xdc3abdedL,  0Xd8fba05aL, 
0X690ce0eeL,  0X6dcdfd59L,  0X608edb80L,  0X644fc637L, 
0X7a089632L,  0X7ec98b85L,  0X738aad5cL,  0X774bb0ebL, 
0X4f040d56L,  0X4bc510e1L,  0X46863638L,  0X42472b8fL, 
0X5c007b8aL,  0X58c1663dL,  0X558240e4L,  0X51435d53L, 
0X251d3b9eL,  0X21dc2629L,  0X2c9f00f0L,  0X285e1d47L, 
0X36194d42L,  0X32d850f5L,  0X3f9b762cL,  0X3b5a6b9bL, 
0X0315d626L,  0X07d4cb91L,  0X0a97ed48L,  0X0e56f0ffL, 
0X1011a0faL,  0X14d0bd4dL,  0X19939b94L,  0X1d528623L,
0Xf12f560eL,  0Xf5ee4bb9L,  0Xf8ad6d60L,  0Xfc6c70d7L, 
0Xe22b20d2L,  0Xe6ea3d65L,  0Xeba91bbcL,  0Xef68060bL, 
0Xd727bbb6L,  0Xd3e6a601L,  0Xdea580d8L,  0Xda649d6fL, 
0Xc423cd6aL,  0Xc0e2d0ddL,  0Xcda1f604L,  0Xc960ebb3L, 
0Xbd3e8d7eL,  0Xb9ff90c9L,  0Xb4bcb610L,  0Xb07daba7L, 
0Xae3afba2L,  0Xaafbe615L,  0Xa7b8c0ccL,  0Xa379dd7bL,
0X9b3660c6L,  0X9ff77d71L,  0X92b45ba8L,  0X9675461fL, 
0X8832161aL,  0X8cf30badL,  0X81b02d74L,  0X857130c3L, 
0X5d8a9099L,  0X594b8d2eL,  0X5408abf7L,  0X50c9b640L, 
0X4e8ee645L,  0X4a4ffbf2L,  0X470cdd2bL,  0X43cdc09cL, 
0X7b827d21L,  0X7f436096L,  0X7200464fL,  0X76c15bf8L, 
0X68860bfdL,  0X6c47164aL,  0X61043093L,  0X65c52d24L, 
0X119b4be9L,  0X155a565eL,  0X18197087L,  0X1cd86d30L, 
0X029f3d35L,  0X065e2082L,  0X0b1d065bL,  0X0fdc1becL, 
0X3793a651L,  0X3352bbe6L,  0X3e119d3fL,  0X3ad08088L, 
0X2497d08dL,  0X2056cd3aL,  0X2d15ebe3L,  0X29d4f654L, 
0Xc5a92679L,  0Xc1683bceL,  0Xcc2b1d17L,  0Xc8ea00a0L,
0Xd6ad50a5L,  0Xd26c4d12L,  0Xdf2f6bcbL,  0Xdbee767cL,
0Xe3a1cbc1L,  0Xe760d676L,  0Xea23f0afL,  0Xeee2ed18L,
0Xf0a5bd1dL,  0Xf464a0aaL,  0Xf9278673L,  0Xfde69bc4L,
0X89b8fd09L,  0X8d79e0beL,  0X803ac667L,  0X84fbdbd0L,
0X9abc8bd5L,  0X9e7d9662L,  0X933eb0bbL,  0X97ffad0cL,
0Xafb010b1L,  0Xab710d06L,  0Xa6322bdfL,  0Xa2f33668L,
0Xbcb4666dL,  0Xb8757bdaL,  0Xb5365d03L,  0Xb1f740b4L
};

unsigned long CRC_32( unsigned char * aData, unsigned long aSize )
{
       unsigned long i;
       unsigned long crc32 = 0;
       unsigned long tabitem;

       while(aSize--)
       {
               tabitem=( crc32 >> 24 )^ *aData++;
               crc32 = ( crc32 << 8 ) ^ crctable[tabitem];
       }
       return crc32;

}

main()
{
        unsigned long result_CRC;
        unsigned char test[512]={0xd8,31,32,33,34,35,36,37,38,39};
        unsigned long i=0;

        result_CRC=CRC_32(test,1);
        printf("0X%08lxL\n",result_CRC);
}

原文地址:http://mxpopstar.blog.163.com/blog/static/737641200904101340416/

循环冗余校验码(CRC)的基本原理

 

循环冗余校验码(CRC)的基本原理

循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。
校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*2R,这样C(x)的右边就会空出R位,这就是校验码的位置。通过C(x)*2R除以生成多项式G(x)得到的余数就是校验码。
几个基本概念
1、多项式与二进制数码
多项式和二进制数有直接对应关系:x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:x的最高幂次为R,转换成对应的二进制数有R+1位。
多项式包括生成多项式G(x)和信息多项式C(x)。
如生成多项式为G(x)=x4+x3+x+1, 可转换为二进制数码11011。
而发送信息位 1111,可转换为数据多项式为C(x)=x3+x2+x+1。
2、生成多项式
是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。
在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。
应满足以下条件:
a、生成多项式的最高位和最低位必须为1。
b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做模2除后应该使余数不为0。
c、不同位发生错误时,应该使余数不同。
d、对余数继续做模2除,应使余数循环。
将这些要求反映为数学关系是比较复杂的。但可以从有关资料查到常用的对应于不同码制的生成多项式如图9所示:
N           K           码距d           G(x)多项式           G(x)
7           4           3           x3+x+1           1011
7           4           3           x3+x2+1           1101
7           3           4           x4+x3+x2+1           11101
7           3           4           x4+x2+x+1           10111
15           11           3           x4+x+1           10011
15           7           5           x8+x7+x6+x4+1           111010001
31           26           3           x5+x2+1           100101
31           21           5           x10+x9+x8+x6+x5+x3+1           11101101001
63           57           3           x6+x+1           1000011
63           51           5           x12+x10+x5+x4+x2+1           1010000110101
1041           1024                      x16+x15+x2+1           11000000000000101
图9 常用的生成多项式
3、模2除(按位除)
模2除做法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位。所以实际上就是异或。然后再移位移位做下一位的模2减。步骤如下:
a、用除数对被除数最高几位做模2减,没有借位。
b、除数右移一位,若余数最高位为1,商为1,并对余数做模2减。若余数最高位为0,商为0,除数继续右移一位。
c、一直做到余数的位数小于除数时,该余数就是最终余数。
【例】1111000除以1101:
1011———商
————
1111000-----被除数
1101———— 除数
————
010000
1101
————
01010
1101
————
111————余数
CRC码的生成步骤
1、将x的最高幂次为R的生成多项式G(x)转换成对应的R+1位二进制数。
2、将信息码左移R位,相当与对应的信息多项式C(x)*2R
3、用生成多项式(二进制数)对信息码做模2除,得到R位的余数。
4、将余数拼到信息码左移后空出的位置,得到完整的CRC码。
【例】假设使用的生成多项式是G(x)=x3+x+1。4位的原始报文为1010,求编码后的报文。
解:
1、将生成多项式G(x)=x3+x+1转换成对应的二进制除数1011。
2、此题生成多项式有4位(R+1),要把原始报文C(x)左移3(R)位变成1010000
3、用生成多项式对应的二进制数对左移4位后的原始报文进行模2除:
1001-------商
------------------------
1010000
1011----------除数
------------
1000
1011
------------
011-------余数(校验位)
5、编码后的报文(CRC码):
1010000
+          011
------------------
1010011
CRC的和纠错
在接收端收到了CRC码后用生成多项式为G(x)去做模2除,若得到余数为0,则码字无误。若如果有一位出错,则余数不为0,而且不同位出错,其余数也不同。可以证明,余数与出错位的对应关系只与码制及生成多项式有关,而与待测碼字(信息位)无关。图10给出了G(x)=1011,C(x)=1010的出错模式,改变C(x)(码字),只会改变表中码字内容,不改变余数与出错位的对应关系。
            收到的CRC码字           余数           出错位
码位           A7           A6           A5           A4           A3           A2           A1
正确           1           0           1           0           0           1           1
           000           无
错 误           1           0           1           0           0           1           0
1           0           1           0           0           0           1
1           0           1           0           1           1           1
1           0           1           1           0           1           1
1           0           0           0           0           1           1
1           1           1           0           0           1           1
0           0           1           0           0           1           1
           001010100011110111101           1234567
图10 (7,4)CRC码的出错模式(G(x)=1011)
如果循环码有一位出错,用G(x)作模2除将得到一个不为0的余数。如果对余数补0继续除下去,我们将发现一个有趣的结果;各次余数将按图10顺序循环。例如第一位出错,余数将为001,补0后再除,第二次余数为010,以后依次为100,0ll…,反复循环,这就是“循环码”名称的由来。这是一个有价值的特点。如果我们在求出余数不为0后,一边对余数补0继续做模2除,同时让被检测的校验码字循环左移。图10说明,当出现余数(101)时,出错位也移到A7位置。可通过异或门将它纠正后在下一次移位时送回A1。这样我们就不必像海明校验那样用译码电路对每一位提供纠正条件。当位数增多时,循环码校验能有效地降低硬件代价,这是它得以广泛应用的主要原因。
通信与网络中常用的CRC
在数据通信与网络中,通常k相当大,由一千甚至数千数据位构成一帧,而后采用CRC码产生r位的校验位。它只能检测出错误,而不能纠正错误。一般取r=16,标准的16位生成多项式有CRC-16=x16+x15+x2+1 和 CRC-CCITT=x16+x15+x2+1。
一般情况下,r位生成多项式产生的CRC码可检测出所有的双错、奇数位错和突发长度小于等于r的突发错以及(1-2-(r-1))的突发长度为r+1的突发错和(1-2-r)的突发长度大于r+1的突发错。例如,对上述r=16的情况,就能检测出所有突发长度小于等于16的突发错以及99.997%的突发长度为17的突发错和99.998%的突发长度大于17的突发错。所以CRC码的检错能力还是很强的。这里,突发错误是指几乎是连续发生的一串错,突发长度就是指从出错的第一位到出错的最后一位的长度(但是,中间并不一定每一位都错)。
【例1】某循环冗余码(CRC)的生成多项式 G(x)=x3+x2+1,用此生成多项式产生的冗余位,加在信息位后形成 CRC 码。若发送信息位 1111 和 1100 则它的 CRC 码分别为_A_和_B_。由于某种原因,使接收端收到了按某种规律可判断为出错的 CRC 码,例如码字_C_、_D_、和_E_。(1998年试题11)
供选择的答案
A:① lllll00           ② 1111101           ③ 1111110           ④ 1111111
B:① 1100100           ② 1100101           ③ 1100110           ④ 1100111
C~E:① 0000000           ② 0001100           ③ 0010111       
         ⑤ 1000110           ⑥ 1001111           ⑦ 1010001           ⑧ 1011000
解:
A:G(x)=1101,C(x)=1111 C(x)*23÷G(x)=1111000÷1101=1011余111
得到的CRC码为1111111
B:G(x)=1101,C(x)=1100 C(x)*23÷G(x)=1100000÷1101=1001余101
得到的CRC码为1100101
C~E:
分别用G(x)=1101对①~⑧ 作模2除: ① 0000000÷1101 余000     ② 1111101÷1101 余001
③ 0010111÷1101 余000     ④ 0011010÷1101 余000     ⑤ 1000110÷1101 余000
⑥ 1001111÷1101 余100     ⑦ 1010001÷1101 余000     ⑧ 1011000÷1101 余100
所以_C_、_D_和_E_的答案是②、⑥、⑧
【例2】计算机中常用的一种检错码是CRC,即 _A_ 码。在进行编码过程中要使用 _B_ 运算。假设使用的生成多项式是 G(X)=X4+X3+X+1, 原始报文为11001010101,则编码后的报文为 _C_ 。CRC码 _D_ 的说法是正确的。
在无线电通信中常采用它规定码字长为7位.并且其中总有且仅有3个“1”。这种码的编码效率为_E_。
供选择的答案:
A:① 水平垂直奇偶校验                        ② 循环求和                           ③ 循环冗余                           ④正比率
B:① 模2除法                        ②定点二进制除法                      ③二-十进制除法                    ④循环移位法
C:① 1100101010111              ② 110010101010011         ③ 110010101011100         ④ 110010101010101
D:① 可纠正一位差错                                                   ②可检测所有偶数位错
③ 可检测所有小于校验位长度的突发错                     ④可检测所有小于、等于校验位长度的突发错
E:① 3/7          ② 4/7          ③ log23/log27        ④ (log235)/7
解:从前面有关CRC的论述中可得出:     A:③ 循环冗余     B:① 模2除法
C:G(x)=11011,C(x)=11001010101,C(x)*24÷G(x)=110010101010000÷11011 余0011
得到的CRC码为② 110010101010011
D:从前面有关通信与网络中常用的CRC的论述中可得出:④ 可检测所有小于、等于校验位长度的突发错
E:定比码又叫定重码,是奇偶校验的推广。在定比码中,奇数或偶数的性质保持不变,然而附加一种限制,每个字中1的总数是固定的。随用途之不同,定比码要求的附加校验位可能多于一个,但较之单一的奇偶校验将增加更多的检错能力。
所谓7中取3定比码,就是整个码字长度为7位,其中1的位数固定为3。所有128个7位代码(0000000~1111111)中只有1的位数固定为3的才是其合法码字。可以用求组合的公式求出其合法码字数为:C73=7!/(3!*(7-3)!)=7*6*5/(1*2*3)=35
编码效率=合法码字所需位数/码字总位数=(log235)/7

原帖地址:http://blog.ednchina.com/acetuo/226000/Message.aspx

模2除(按位除)

模2除做法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位。所以实际上就是异或。然后再移位移位做下一位的模2减。步骤如下:

a、用除数对被除数最高几位做模2减,没有借位。

b、除数右移一位,若余数最高位为1,商为1,并对余数做模2减。若余数最高位为0,商为0,除数继续右移一位。

c、一直做到余数的位数小于除数时,该余数就是最终余数。

【例】1111000除以1101:

1011———商

————

1111000-----被除数

1101———— 除数

————

010000

1101

————

01010

1101

————

111————余数

最佳解释答案 :

CRC里的除法不是简单的二进制除法,不信用附件里的计算器算出的结果与它的结果不一样。
CRC的二进制除法是这样的:

1111000 被除数
1101 除数
————
够除数的位数,商1
0010 余(除数与被除数前4位求异或得到的)
————
100 把被除数第5位挪下来 (自动不上一个0)
1101 除数
————
不够除,商0                      (自动不上一个0还不够除1101,因而商为0)
1000 把被除数第6位挪下来 (在100的基础上再补个0变得1000,就够除了)
1101 除数
————
够除数的位数,商1
0101 余(仍然求异或)
————
1010 把被除数第7位挪下来
1101 除数
————
够除数的位数,商1
0111 余(仍然求异或)
————
被除数共7位,除完      (已经把后面的0全用上,且余0111小于1101,到此任务完成)

所以得到商1011,余111

end!

原帖地址:http://hi.baidu.com/%BE%B2%BE%B2%DF%BD%D3%EF/blog/item/7b1f4702e92b3d7f3812bb24.html

6月23日

ucGUI基于samsung 44B0的移植小结

本人在过去一段时间,由于工作缘故接触ucGUI一段时间,参考了网上的资料将ucGUI移植到44B0的目标板上。先转贴本人参考的一份资料,该份资料可以在网上搜索到:
    在网络上看到已经有不少人把UCGUI 成功移植到44BO 上了不过他们只提供了他们的演示程序而公开他们的
移植方法过程这里我把我的移植过程写写希望对各位有帮助
我们采用的是思创嵌入式开发网研发的S3C44B0 黄金开发板及其液晶显示模块
我的移植分两个大部分来做的一是液晶的正确初始化二是UCGUI 移植原本应该包括触控屏的移植可是因
为IAR 下的中断一直没有调通就没有做触控屏的移植
我的液晶是320 240 16 灰度的跟44BO 的连接方式是4 位单扫描
一 液晶的正确初始化
液晶的初始化可以参照下面的函数最后得到显示缓冲区数组跟视窗屏幕的对应关系如下
事实上液晶的正确初始化就是需要明确显示缓冲区跟视窗屏幕的对应关系为了达到这个目的可是通
过单步调试逐个显示点来观察这种对应关系在上图中那就是这样一个顺序
Bmp[0]=0xF000;//点0
Bmp[0]=0xFF00;//点0 1
Bmp[0]=0xFFF0;//点0 1 2
Bmp[0]=0xFFFF;//点0 1 2 3
单步执行查看液晶屏上显示点的位置这样就可以确定对应关系了
这44BO 中的液晶控制寄存器中有BSWP 这个设置位它是用于调整每4 个字节的字节顺序的也是通
过单步调试来明确这种对应关系的
#define SCR_XSIZE (320)//视窗屏幕大小
#define SCR_YSIZE (240)
#define LCD_XSIZE (320)//液晶屏幕大小
#define LCD_YSIZE (240)
#define MVAL_USED (0)
#define MVAL (13)
#define INVCLK (0)
#define INVFRAME (0)
思创嵌入式开发文档embed.8800.org
#define INVLINE (0)
#define CLKVAL_SL (8) //VCLK=MCLK/(CLKVAL*2) (CLKVAL >= 2)
#define M5D(n) ((n) & 0x1fffff)
#define ARRAY_SIZE_G16 (SCR_XSIZE*SCR_YSIZE)
unsigned short Bmp[ARRAY_SIZE_G16/2];//液晶显示缓冲数组
#define CLKVAL_G16 (10) //40Mhz, CLKVAL=10 ->101Hz
#define HOZVAL (LCD_XSIZE/4-1)
#define LINEVAL (LCD_YSIZE-1)
#define MVAL (13)
#define BSWP (1)//这个决定了每4 个字节的顺序是否进行交换
#define MODESEL (2)//Gray 16
void LcdInit(void)
{
//The following value has to be changed for better display.
rDITHMODE=0x12210;
//rDITHMODE=0x0;
rDP1_2 =0xa5a5;
rDP4_7 =0xba5da65;
rDP3_5 =0xa5a5f;
rDP2_3 =0xd6b;
rDP5_7 =0xeb7b5ed;
rDP3_4 =0x7dbe;
rDP4_5 =0x7ebdf;
rDP6_7 =0x7fdfbfe;
rLCDCON1 = (0)|(1<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_G16<<12);
// disable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk,
rLCDCON2 = (LINEVAL)|(HOZVAL<<10)|(10<<21);
//LINEBLANK=10 (without any calculation)
rLCDSADDR1 = (MODESEL<<27) | ( ((uint)Bmp>>22)<<21 ) | M5D((uint)Bmp>>1);
// 16-gray, LCDBANK, LCDBASEU
rLCDSADDR2 = (BSWP<<29)|M5D((((uint)Bmp+(SCR_XSIZE*LCD_YSIZE/2))>>1))|(MVAL<<21);
rLCDSADDR3 = (LCD_XSIZE/4) | ( ((SCR_XSIZE-LCD_XSIZE)/4)<<9 );
rLCDCON1 = (1)|(1<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_G16<<12);
}
二UCGUI 的移植
移植的思路是使用UCGUI 支持的buffer 型的LCD 控制器EPSON 1375 我想就是这样一个使用双口RAM 的LCD
控制器吧因为我注意到UCGUI 的代码中若是使用1375 控制器时需要定义四个读写函数
#define LCD_READ_MEM(Off) *((U16*) (0xc00000+(((U32)(Off))<<1)))
#define LCD_WRITE_MEM(Off,data) *((U16*) (0xc00000+(((U32)(Off))<<1)))=data
#define LCD_READ_REG(Off) *((volatile U16*)(0xc1ffe0+(((U16)(Off))<<1)))
#define LCD_WRITE_REG(Off,data) *((volatile U16*)(0xc1ffe0+(((U16)(Off))<<1)))=data
前两个是读写内存的定义
后两个是读写寄存器的定义
注意到常数0xc00000 和0xc1ffe0 没有
思创嵌入式开发文档embed.8800.org
0xc00000 是1375 控制器的显示缓冲区开始地址(Base Address)
0xc1ffe0 是1375 控制器的寄存器开始地址(Base Address)
读写显示缓冲区就是根据地址偏移off 和开始地址0xc00000 来读写Buffer 的
读写控制寄存器就是根据地址偏移off 和开始地址0xc1ffe0 来读写Buffer 的
我想可以使用欺骗的一招我们把我们液晶的显示缓冲区的开始地址(Bmp[0])告诉这几个函数那么就可以了而
读写寄存器的两个函数我们就不用了
等我移植完毕我发现网络上的其它移植版本也是如此使用了1375 控制器的了不信看看他们提供的演示DOME
显示的液晶控制器是不是EPSON 13705
在LCD.H 中定义数据类型
#define I8 signed char
#define U8 unsigned char /* unsigned 8 bits. */
#define I16 signed short /* signed 16 bits. */
#define U16 unsigned short /* unsigned 16 bits. */
#define I32 signed long /* signed 32 bits. */
#define U32 unsigned long /* unsigned 32 bits. */
#define I16P I16 /* signed 16 bits OR MORE ! */
#define U16P U16 /* unsigned 16 bits OR MORE ! */
在LCDConf.H 中定义
#define LCD_XSIZE (320) /* X-resolution of LCD, Logical coor. */
#define LCD_YSIZE (240) /* Y-resolution of LCD, Logical coor. */
#define LCD_BITSPERPIXEL (4) //16 灰度
#define LCD_CONTROLLER 1375
extern unsigned short Bmp[]; //引入显示缓冲区数组
#define LCD_READ_MEM(Off) *((U16*) (Bmp+(((U32)(Off)))))
#define LCD_WRITE_MEM(Off,data) *((U16*) (Bmp+(((U32)(Off)))))=data
//#define LCD_READ_REG(Off) //这个函数可以不用定义反正我们没有用到
#define LCD_WRITE_REG(Off,data) //有些地方用到了定义为空避免做大改动
#define LCD_SWAP_BYTE_ORDER (1) //这个是做字节转换的
在LCD13XX.C 中定义液晶总线宽度
#ifndef LCD_BUSWIDTH
#define LCD_BUSWIDTH (16)
#endif
这里提及关键对应部分
->定义显示缓冲区时使用的short数据类型,它是16bit的:
unsigned short Bmp[ARRAY_SIZE_G16/2];//液晶显示缓冲数组
->定义读写缓冲区时使用的数据类型,也是16bit的U16:
#define LCD_READ_MEM(Off) *((U16*) (Bmp+(((U32)(Off)))))
#define LCD_WRITE_MEM(Off,data) *((U16*) (Bmp+(((U32)(Off)))))=data
//#define LCD_READ_REG(Off) //这个函数可以不用定义反正我们没有用到
#define LCD_WRITE_REG(Off,data) //有些地方用到了定义为空避免做大改动
->定义液晶总线宽度定义位16bit 的
#ifndef LCD_BUSWIDTH
#define LCD_BUSWIDTH (16)
#endif
思创嵌入式开发文档embed.8800.org
->定义字节顺序
#define LCD_SWAP_BYTE_ORDER (1) //16bit时需要交换的
读者已经能看到了对应关系了都是使用16bit的数据类型这是关键别用错了
由此延伸若是把这些对应关系换成8bit的数据类型如下
->定义显示缓冲区时使用的char数据类型,它是8bit的:
unsigned char Bmp[ARRAY_SIZE_G16];//液晶显示缓冲数组
->定义读写缓冲区时使用的数据类型,也是8bit的U8:
#define LCD_READ_MEM(Off) *((U8*) (Bmp+(((U32)(Off)))))
#define LCD_WRITE_MEM(Off,data) *((U8*) (Bmp+(((U32)(Off)))))=data
//#define LCD_READ_REG(Off) //这个函数可以不用定义反正我们没有用到
#define LCD_WRITE_REG(Off,data) //有些地方用到了定义为空避免做大改动
->定义液晶总线宽度定义位8bit 的
#ifndef LCD_BUSWIDTH
#define LCD_BUSWIDTH (8)
#endif
->定义字节顺序
#define LCD_SWAP_BYTE_ORDER (0) //8bit时不需要交换的
这样的对应关系也是可行的我测试过不过若是你想把它换成32bit的话就不行了因为UCGUI不支持32bit
的液晶总线宽度的
以上两部分是整个移植工作的关键当然还有一些繁琐的事情请阅读UCGUI的手册中Getting Started一章
在IAR下移植时需要建立group 对照文件夹加入UCGUI代码
思创嵌入式开发文档embed.8800.org
需要说明的是
除了LCDDriver下只加入LCD13XX.C 在Config下额外加入GUI_X.C外其余的都是加入相应文件夹中的所有C文件
我还额外加入了跟开发板有关的文件:
LCDLIB.C(液晶的初始化函数LcdInit())
Platform.C(板级初始化函数它会调用LcdInit()来初始化液晶控制器)
设置include路径:
我加入的inclide路径为
D:\Program Files\IAR Systems\UCGUI\gui\core\
D:\Program Files\IAR Systems\UCGUI\Config\
D:\Program Files\IAR Systems\UCGUI\gui\WM\
D:\Program Files\IAR Systems\UCGUI\gui\Widget\
D:\Program Files\IAR Systems\UCGUI\Sample\GUIDemo\
在GUIConf.H中定义
#define GUI_OS (0) /* Compile with multitasking support */
#define GUI_WINSUPPORT (1) /* Use window manager if true (1) */
#define GUI_SUPPORT_MEMDEV (1) /* Support memory devices */
#define GUI_SUPPORT_TOUCH (0) /* Support a touch screen (req. win-manager) */
#define GUI_SUPPORT_UNICODE (1) /* Support mixed ASCII/UNICODE strings */
我们还没有移植到OS上也没有加入触摸屏的支持
在GUI_X.C中
定义三个未定义的函数
void GUI_X_Log (const char *s) {}
void GUI_X_Warn (const char *s) {}
void GUI_X_ErrorOut(const char *s) {}
修改一个函数定义
思创嵌入式开发文档embed.8800.org
void GUI_X_Delay(int ms) {
// int tEnd = OS_TimeMS + ms;
// while ((tEnd - OS_TimeMS) > 0);
extern void Delay(int time);//我自己的延时函数
Delay(150*ms);
}
原因是在UCGUI的应用中有一些函数是跟时间相关的UCGUI认为使用的是UCOS UCOS会维护时间OS_TimeMS;这里
我调用我自己的延迟程序来实现延迟事实上正是因为有一些函数跟时间有关因此在UCGUI提供的演示程序中就出
现了问题例如在GUIDEMO_Speed.C中有这么个循环
for (i = 0; (((t + 8000) - (int)GUI_GetTime()) > 0) && !GUIDEMO_CheckCancel(); i++) {
}
它调用了GUI_GetTime读取当前系统时间来控制循环若是系统没有维护时间OS_TimeMS 那就会出问题了我的简
单解决方法是改为
for (i = 0;i<0xFFF;i++){
}
在其它的GUIDEMO_XXXX.C中也有这样一些循环你要是调试是发现液晶屏上的显示一直停在一个画面上很久的话
估计就是碰上了上面的问题
好了加入那个最简单的主函数Basic_Helloworld.C
void BoardInit (void);
void main(void) {
/*
ToDo: Make sure hardware is initilized first!!
*/
BoardInit ();//板级初始化它调用了LcdInit()
GUI_Init();
GUI_DispString("Hello world!");
while(1);
}
应该能在你的液晶屏上看到UCGUI跟你打招呼的了"Hello world!"
这样UCGUI的移植基本上已经完成了当然了这里只提供了移植关键的部分更多的更完整的移植还需要做不
少的工作如触控屏的移植键盘鼠标的移植中文字体的移植UCGUI支持UNICODE 中文字体不成大问题的
还有DEBUG输出的移植不难吧直接输出到串口不久可以了嘛
若是在做UCGUI的移植前你的系统已经使用同一个编译环境移植了UCOS 那么UCGUI的演示效果将是更好的原
因就是由于UCGUI中有一些跟时间相关的调用
――liandao
lycld@163.com
以上是搜索的资料,本人的移植在基本上是根据这篇文档来的。随后将附上本人的一些移植总结。

前面我推荐了一篇网上很好的移植资料,下面是我的一些移植小结:

在这篇文章中介绍的是将gui移植到16级灰度的LCD上。我们现在移植的是256色的8位STN屏。下面是该款STN屏的接口图:

44b0     LFUBK9111A

PC4   ----D7

PC5   ----D6

PC6   ----D5

PC7   ----D4

PD3   ----D3

PD2   ----D2

PD1   ----D1

PD0   ----D0

PD4   ----CL2

PD5   ----CL1

PD7   ----FLM

DISP   ---/DP(或接+5V)

GND   ----GND

VDD50 --VDD(+5V)

VEE   -----外接+25V

V0   ------VEE与GND接20K微调电阻,V0接中间脚。

4.2 LCD初始化

由于移植的LCD不一样,我们必须对文档中介绍的方法进行必要修改,下面就是我在

移植过程中觉得需要注意的地方:

1.       由于LCD的不同,文档中的44B0的初始化必须修改,下面是我在程序中用到的初

始化程序:

    void LcdInitlib(int depth)

{

    rPCONC=rPCONC&~(0xff<<8)|(0xff<<8);      //GPC[4:7] => VD[7:4]

rLCDCON1=        

(0)| (2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<<12);

           // disable,8B_SNGL_SCAN,WDLY=8clk,WLH=8clk,

       rLCDCON2=(LINEVAL)|(HOZVAL_COLOR<<10)|(10<<21);

           //LINEBLANK=10 (without any calculation)

       rLCDSADDR1=

(0x3<<27) | ( ((U32)frameBuffer256>>22)<<21 ) | M5D((U32)frameBuffer256>>1);

           // 256-color, LCDBANK, LCDBASEU

       rLCDSADDR2=

M5D((((U32)frameBuffer256+(SCR_XSIZE*LCD_YSIZE))>>1)) | (MVAL<<21) | (1 << 29);

       rLCDSADDR3= (LCD_XSIZE/2) | ( ((SCR_XSIZE-LCD_XSIZE)/2)<<9 );

       //The following value has to be changed for better display.

       rREDLUT =0xfdb96420;   

rGREENLUT=0xfdb96420;

       rBLUELUT =0xfb40;

       rDITHMODE=0x0;

       rDP1_2 =0xa5a5;     

       rDP4_7 =0xba5da65;

       rDP3_5 =0xa5a5f;

       rDP2_3 =0xd6b;

       rDP5_7 =0xeb7b5ed;

       rDP3_4 =0x7dbe;

       rDP4_5 =0x7ebdf;

       rDP6_7 =0x7fdfbfe;

       rLCDCON1=

(0)| (1)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<<12);

           // enable,8B_SNGL_SCAN,WDLY=8clk,WLH=8clk,

    }     

}

其中frameBuffer256是显存数组。

4.3 ucgui移植

在 lcdconf.h我们对读写显存数组的宏定义进行修改

#define LCD_READ_MEM(Off)        frameBuffer256[Off]

#define LCD_WRITE_MEM(Off,data)   frameBuffer256[Off] = data

注意不要将这两个宏定义定义成GUI原来的形式:

#define LCD_READ_MEM(Off)         *((U16*) (frameBuffer+(((U32)(Off))<<1)))

#define LCD_WRITE_MEM(Off,data)   *((U16*) (frameBuffer +(((U32)(Off))<<1)))=data

定义显存数组的时候一定要注意数据类型,还有还需要注意的是定义数组是一维数组:

unsigned short int frameBuffer256[320*240/2];

还有关于颜色显示方面,在文档上没有提及,因为44B0的RGB数据的存储模式是332模式,所以在头文件中我们还必须定义以下宏:

#define LCD_FIXEDPALETTE 332

#define LCD_SWAP_RB       1

在config.h我们的定义的宏定义和文档中的一致。

#define GUI_OS                    (0) /* Compile with multitasking support */

#define GUI_SUPPORT_TOUCH         (0) /* Support a touch screen (req. win-manager) */

#define GUI_SUPPORT_UNICODE       (1) /* Support mixed ASCII/UNICODE strings */

#define GUI_DEFAULT_FONT          &GUI_Font6x8

#define GUI_ALLOC_SIZE            12500 /* Size of dynamic memory ... For WM and memory devices*/

/*********************************************************************

*

*         Configuration of available packages

*/

#define GUI_WINSUPPORT            0 /* Window manager package available */

#define GUI_SUPPORT_MEMDEV        1 /* Memory devices available */

#define GUI_SUPPORT_AA            1 /* Anti aliasing available */

下面是我整个工程文件的目录结构:

在HardWare文件下,HardwareMain.c主要是硬件初始化,在这里函数会调用LCDLIB.C文件中的LCD初始化函数。就是上面介绍的到的void LcdInitlib(int depth),其中44binit.s、44BLIB.c、44BLIB_A.s是44B0的启动代码文件。其余文件是测试时使用,可以不包含。

还有在ConverColor文件下,我们只包含文件LCDPM332。C文件就可以了,因为我们只用到332模式的色彩模式。其余文件下的文件也可以精简,但是初步移植时,不建议精简。待日后实际应用时,我们可以逐步精简我们没有用到的功能文件。

原帖地址:http://hi.baidu.com/mikenoodle/blog/item/6d2f08b31bf1a1a1d8335a3e.html

6月22日

在uC/GUI中实现汉字显示

以人为本的系统开发观念不断深入人心,GUI做为典型的人机交互接口,在系统开发工程中具有不可动摇的地位。易用的操作界面已成为衡量产品开发成功的重要因素。据统计,系统工程师要花去近三分之一的时间用于GUI系统的开发。完善的GUI开发系统,把设计人员从繁重的低层图形界面设计中解放出来,使其有更多的时间用于系统性能的提高。这极大的缩短了开发周期,使产品在激烈的市场竞争中抢占先机。

uC/GUI是Micrium公司专门针对嵌入式系统开发的一款通用图形界面开发系统。它提供高效的图形LCD管理,可以嵌于单任务和多任务嵌入式系统中。在小模式(small system)下,只需要100 B的RAM+500 B的STACK(RAM)+10~25 KB的ROM,全部代码用C语言完成,具有良好的可移植性,适用于各种CPU。
uC/GUI是一款非常简洁的图形界面开发系统,但是它缺乏对中文汉字的支持,严重阻碍了在国内的使用。本文结合工程实践,着重讲述汉字在uC/GUI上的实现过程,汉字字库的创建方法及其相关程序代码。
1uC/GUI中字体系统结构
uC/GUI中字体的显示是通过查找字模的方式实现的。字体库中的每一个字母都有其对应的字模,所有的字母的字模由GUI_FONT和GUI_FONT_PROP这两个结构体来进行统一管理。GUI_FONT结构体中定义了该字母的点阵大小(比如16×16或者8×8)和GUI_FONT_PROP结构体的入口地址。GUI_FONT_PROP这个结构体建立了字库中字母编码(比如字母A在ASCII中的字母编码为33)和字模数据存放地址的映像。值得一提的是,GUI_FONT_PROP中pNext指针指向下一个GUI_FONT_PROP数据的入口地址,这为解决在字母编码不连续的情况下,保证字模数据在程序段的存储连续这一问题提供了一个良好的解决方案。设计人员可以定义多个GUI_FONT_PROP结构,只要使上一个结构体的pNext指针指向下一个GUI_FONT_PROP结构体,并且保证该指针的最终指向零地址空间即可。
2汉字编码
(1) 汉字字模的获取
在工程中出于节省程序存储空间的需要, GB231280(国标字符集也就是常说的国标码)中的3755个一级常用汉字足以满足实际需求。如果通过单字手工取模的方式,工作量是不可想象的,所幸有了电脑,又有了汉字库,可以编程解决。找个标准的汉字库,比如UCDOS中的HZK16就可以,但是在HZK16中字模是按区位码的顺序排列的。只要把汉字内码的高低位都减去0xA0后,就得到了汉字的区位码。一级常用汉字的内码范围是高字节0xB0~0xD7,低字节0xA1~0xFE。以下是提取HZK16文件中的一级常用汉字的部分代码:
for(i=0;i<=(0xD7-0xB0);i++)
for(j=0;j<=(0xFE-0xA1);j++)
if(fseek(fin,((i+0xB0-0xA1)*94+(j+0xA1-0xA1))*32L,SEEK_SET))
printf("seek err\\n");
fread(buffer,32,1,fin);
(2) 程序中直接输入汉字的实现
uC/GUI手册中介绍的用unicode编码进行输入的方法相当烦琐,当需要输入大量汉字时,这一问题就更加突出。经过分析内核代码,会发现程序中输入的unicode码其实就是字库中GUI_FONT_PROP定义的该字映像地址。在程序中,直接输入字母后计算机获得的是汉字内码,所以只要把GUI_FONT_PROP中的映像地址改为字母的内码就可以了,对于英文字母就是其ASCII编码,而汉字就是汉字内码。下面是uC/GUI中F16_1HK.C文件中定义的GUI_FONT_PROP结构体对象,通过注释了解映像地址和字模数据存储地址的对应关系。
GUI_FLASH const GUI_FONT_PROP GUI_Font16_1HK_Prop1 = {
0x3041/* 映像地址起始位置*/
,0x3093/* 映像地址结束位置*/
,&GUI_Font16_HK_CharInfo\[0\] /*字模代码的入口地址*/
,(void GUI_FLASH *)&GUI_Font16_1HK_Prop2/* 下一个GUI_FONT_PROP的地址*/
};
3新建汉字字库
在uC/GUI中动态地读取字模是无法实现的,即当程序运行时动态地从汉字库中读取所需字母的字模,因此只有把所有一级常用汉字的字模全部读出,按照uC/GUI中字库创建的标准去创建新的字库就可以了。下面以在F16_HZ_ALL.C中创建字体GUI_Font16_HZ为例来说明具体的步骤。
第一步:声明全局字体结构体对象GUI_Font16_HZ,该声明必须在GUI.H文件中加以声明。
extern const GUI_FONT GUI_Font16_HZ;
第二步:定义一个用于存放字模数据的数组。
GUI_FLASH const unsigned char acFont16HZ\[\]\[32\] ={{/*单字字模数据1*/},……,{/*单字字模数据n*/}};
第三步:定义一个GUI_CHARINFO的结构体对象数组,用于说明每个字母的字模数据在程序段存储的方式。
GUI_FLASH const GUI_CHARINFO GUI_Font16_HZ_CharInfo\[3760\]={
{16,16,2,(void GUI_FLASH *)&acFont16HZ\[0\],……,16,16,2,(void GUI_FLASH *)&acFont16HZ\[3759\] },};
第四步:按汉字内码的高位来定义多个结构体GUI_FONT_PROP对象。
GUI_FLASH const GUI_FONT_PROP GUI_Font16_HZ_Prop0 = {
0xb0a1,
0xb0fe,
&GUI_Font16_HZ_CharInfo\[0\],
(void GUI_FLASH *)&GUI_Font16_HZ_Prop1
};
第五步:把创建的汉字字库文件F16_HZ_ALL.C添加到uC/GUI的工程中,通过以下语句实现在LCD上显示汉字:
GUI_SetFont(&GUI_Font16_HZ);
GUI_DispStringAt(GUI_UC_START
"成都理工大学"
GUI_UC_END
,20,10);
结语
本文介绍了怎样在uC/GUI中解决汉字的显示问题,作者的汉字字库文件全部通过C语言程序创建,字库文件在uC/GUI的评估软件simulation上编译通过,读者可以根据实际的需求创建自己的字库,以适应项目的需求。

原帖地址:http://www.laogu.com/wz_8456.htm

μC/GUI在MSGl9264液晶上的移植

 

μC/GUI是美国Micrium公司出品的一款针对嵌入式系统的优秀图形软件。与μC/OS一样,μC/GUI具有源码公开、可移植、可裁减、稳定性和可*性高的特点[1]。采用μC/GUI,开发人员可以很方便地在液晶上显示文本、曲线、图形以及各种窗口对象如按钮、编辑框、滑动条等,可完全产生类似于Windows的显示效果。另外,μC/GUI提供了在VC下的仿真库,这使得用户完全可以在Windows下仿真μC/GUI的各种效果。

采用μC/GUI,可以大大降低嵌入式系统中显示设计的难度,但μC/GUI的使用需针对不同的液晶编写相应的驱动程序才能实现。本文通过移植μC/GUI到MSGl9264液晶的过程,介绍了μC/GUI移植的原理以及移植中应注意的事项。

1 开发工具和运行环境

为了实现μC/GUI的移植,选用MSP430F149。MSP430F149是一款16位超低功耗单片机,具有强大的处理能力(RISC结构、125ns的指令周期)和丰富的片内外设(如硬件乘法器、ADC、定时器、看门狗等)。 它内部具有2KB的RAM和60KB的FLASH,能基本满足μC/GUI运行的需要[2]。

软件开发环境采用IAR公司的集成开发环境IAR EW430 2.10A。相对于较早的EW430 1.26A版本,2.10版本在各个方面有了较大改进,尤其是项目管理和调试上有了较大的改动,这使得移植μC/GUI更加方便。

2 μC/GUI移植

μc/GUI针对不同的液晶控制器提供了多种驱动程序,如KS0713、SEDl335、T6963等控制器都有对应的液晶驱动程序。但在很多情况下,用户采用的液晶,μC/GUI并没有提供其对应的驱动程序,需自己着手编写特定液晶的驱动程序。

2.1 液晶显示器工作原理

为了能编写正确的液晶驱动程序,了解相应液晶的显示原理非常重要。本文采用的MSGl9264液晶为192x64点阵单色液晶,其中包含一个行驱动器KS0107B和三个列驱动器KS0108B,每个列驱动器KS0108B对应一块64x64的液晶[3]。

MSGl9264液晶的控制线为R/W、RS、CSA、CSB和LCDEN,数据线为D0~D7。RS用于指示当前的操作是数据还是寄存器,R/W用于表明当前是读还是写,CSA、CSB用于选择相应的列驱动器(其选择关系可见图1)。RS和R/W的功能可见表1,液晶显示器的读写时序见图2。

MSGl9264模块一共提供7种指令(由RW、RS及数据总线的电子决定),用于对该模块状态及显示进行控制。这7种指令包括显示开关控制、设起始行、设起始列、设页地址、读状态、读/写显示内容。通过这些指令的组合,可以控制液晶显示各种图形。

2.2 μC/GUI结构 MSP430F149是一款低功耗单片机,其供电电压为1.8~3.6V,而MSGl9264液晶为5V供电液晶,输入高电平为3.3V。为确保与液晶的输入电平兼容,MSP430F149的供电电压可设置为3.6V,这样就可以把MSP430F149与液晶直接连接而无需额外的驱动芯片。MSP430F149与LCD的接口电路如图4所示。 μC/GUI提供的函数库和各种显示效果都是通过表2所示接口函数在LCD上实现,所以LCD驱动文件的实现也就是把这些硬件接口函数的实现。 由于MSGl9264液晶与μC/GUI提供的LCDSLin较相似,所以笔者以μC/GUI提供的LCDSLin.C文件为基础,编写针对MSGl9264液晶的驱动程序。

μC/GUI的软件体系结构如图3所示。μC/GUI函数库为用户程序提供GUI接口,包含的函数有文本、数值、二维图形、输入设备以及各种窗口对象。其中,输入设备可以是键盘、鼠标或触摸屏;二维图形包括图片、直线、多边形、园、椭圆、圆弧等;窗口对象包括按钮、编辑框、进度条、复选框等。μC/GUI函数库可以通过GUIConf.h文件进行配置,配置的内容包括是否采用内存设备,是否采用窗口管理器,是否支持操作系统、触摸屏,以及配置动态内存的大小等。

在LCDConf.h文件中定义了与硬件有关的各种属性,如液晶的大小、颜色以及与液晶的接口函数。而LCD驱动文件则负责把μC/GUI的各种函数解释成LCDConf.h文件中定义的液晶接口函数,这个文件与具体的硬件连接无关。

μC/GUI与LCD的硬件接口通过驱动文件把硬件接口函数转化为LCDConf.h中定义的LCD读写函数。

2.3 移植过程

2.3.1 修改LCDConf.h

LCDConf.h定义了LCD的大小、颜色,对应的LCD控制器以及与硬件连接有关的LCD读写函数。按照μC/GUI的规定,底层的读写LCD函数包括LCD_WRITE_A1()(即写LCD命令)、LCD_WRITE_A0()(写LCD数据)、LCD_READ_A0()(读LCD状态)、LCD_READ_A1()(读LCD数据)。这些函数的实现与底层硬件有关,必须根据硬件连接的具体情况编写这些函数。

LCD_WRITE A1()函数的具体实现如下:

#define LCD_WRITE_A1(Byte) //定义写LCD控制命令函数

{ //参数Byte为要写入液晶的数据。

P40UT:Byte; //把数据放到LCD的数据线上

_NOP(); //空指令,确保能可*地写入

P1OUT&=0xef; //LCDRS=0,表示写命令

P10UTI=Ox20; //LCDEN=1

_NOP(); //空指令

P1OUT&=0xcf; //LCDEN=0,把数据写入LCD

显示RAM

_NOP();

}

2.3.2 编写LCD驱动文件

图3中的μC/GUI硬件接口函数主要由表2所示函数构成。

通过分析LCDSLin文件可以发现,液晶驱动程序的核心是画点函数,大部分硬件接口函数都可由画点函数实现。因此,改造画点函数及其调用函数成为移植的重点问题。

画点函数的要求是改变液晶上任意点的颜色而不影响其他点的颜色。考虑到单片机MSP430F149的输入电压不能超过3.6V,笔者没有采取读液晶显示器内部显示RAM的方法,而是在MSP430F149的RAM中定义一个数组存储LCD显示的数据。此数组可定义为unsigned char Cache[((LCD_YSIZE+7)>>3)xLCD_XSIZE]。LCD_XSIZE、LCD_YSIZE表示液晶的大小,在LCDConf.h文件中定义。考虑到液晶的长度可能不是8的整倍数,可定义数组大小为(LCD_YSIZE+7)>>3)xLCD_XSIZE。

在定义了Cache的基础上,画点函数可如下实现:

static void_SetPixel(int x,int y,LCD_PIXELINDEX c) {

//画点函数

U8 Mask=1<<(y&7); //屏蔽字

int Adr=XY20FF(x,y); //由x,y的绝对位置得到

Cache中的相对位置

//XY20FF(x,y)可被定义为((y>>3)+x×((64+7)>>3))

U8 CacheByte=Cache[Adrl; //获得显示RAM的数值

if(c) //根据颜色修改显示RAM的值

CacheBytel=Mask; //对应位“置1”

else

CacheByte&=~Mask; //对应位清零

LCD_WRITE(Adr,CacheByte);

//把CacheByte写入液晶显存并更改

Cache[Adr]的值为CacheByte

}

函数的参数x,y代表要画点的位置(x为横坐标,y为纵坐标),参数c代表要画点的颜色。在函数内部,U8为μC/GUI提供的数据格式(相当于unsigned char),Mask为屏蔽字,Adr为x,y对应显示Cache的地址。

以把液晶的(5,5)处点亮为例,此时x=5,y=5,c=1,可计算出Mask=00100000,Adr=40(表示在Cache[40]处存有(5,5)点的颜色值)。由于c=1,所以应把Cache[40]中对应位“置1”,这是通过CacheByte的值“或”上Mask的值00100000实现的。最后通过调用LCD_WRITE函数把得到的新CacheByte值写入液晶对应的地址即可点亮该点。类似地,若要使某点不亮(c=0),则应该把对应位“清零”,这可以通过CacheByte&=~Mask这条命令实现。

画点函数中调用的LCD_Write函数可如下实现:

static void LCD_Write(int Adr,U8 Byte){

if(CacheIAdrl!=Byte){ //若写入值与原值不符则

把写入值保存到显示RAM中

Cache[Adr]=Byte;

if(LCD_Adr!=Adr){

LCD_SETADR(Adr); //设置液晶的起始行、起始列和CSA、CSB

}

LCD_WRITEl(Bytc);

}}

由于此液晶由三块64x64的液晶组成,LCD_SETADR函数除了设置液晶的起始行、起始列外还应根据Adr的值设置CSA和CSB的值,才能写到对应的液晶屏上。此外,在LCD_WRITEl()函数中通过调用LCDConf.h文件中的LCD_WRITE_A1()和LCD_WRITE_A0()实现液晶显示。

除了_SetPixel()函数,基本函数还包括_GetPixel()函数和XorPixel()函数。_GetPixel()函数可以返回指定点的颜色信息,XorPixel()则可以对指定点颜色取反,实现“反白”的效果。由于这两个函数较简单,这里不再给出具体代码。

以函数_SetPixel()、_GetPixel()和XorPixel()为基础,结合MSGl9264液晶的7种指令就可以实现表1所给的硬件接口函数,以此构成了LCD驱动文件。
表1 RS和R/W的功能

RS
R/W

功  能

0
0
写命令

0
1
读液晶状态(主要用于判忙)

1
0
写液晶的显示RAM数据

1
1
读液晶的显示RAM数据

3 讨论

为了能使用μC/GUI,必须调用GUI_Init()初始化。与硬件有关的初始化如CPU时钟频率的选择等既可以放在GUI_Init()中,也可以单独编写一个函数初始化。
表2 硬件接口函数的名称和功能

函数名称
功     能

LCD_L0_InIt()
显示初始化

LCD_L0_ReInIt()
重新初始化而不擦除显示内容

LCD_L0_OFF
关显示

LCD_L0_ON
开显示

LCD_L0_DrawBitmap()
画图

LCD_L0_DrawPixel()
以指定颜色画点

LCD_L0_DrwaVline()
画水平线

LCD_L0_DrwaVline()
画垂直线

LCD_L0_FillRect()
填充一矩形

LCD_L0_XorPixel()
翻转指定点颜色

调试时应从基本的显示字符串开始,逐渐增加显示的功能和复杂度。

由于笔者采用单色液晶, 在LCDConf.h中定义LCD_FIXEDPALETFE为1;若为彩色液晶,应根据液晶支持的颜色设置LCD_FIXEDPALETYE,具体可参考手册。

若使用窗口对象,则在GUI_Conf.h中定义GUI—WINSUPPORT为1。

在GUIConf.h中定义GUI_ALLOC_SIZE为动态内存的大小,应根据需要合理选择。窗口对象(如按钮)的创建需要申请内存,若申请不到内存则无法创建,相应地创建函数值为0。可由此判断GUI_ALLOC_SIZE已经不能满足需要,一方面可以考虑增加GUI_ALLOC_SIZE(受制于芯片内存的大小);另一方面也可以删除不用的窗口对象,释放内存,再创建新的窗口对象。

采用内存设备能有效克服闪烁现象,获得更快的显示速度,但它需要额外的内存。由于MSP430F149内存较小,笔者没有采用内存设备。

可以设置窗口对象的默认字体及颜色以获得更好的显示效果。在单色液晶中,简单地改变背景颜色和字体颜色即可获得反显效果。

可以通过μC/GUI提供的软件(位图转换器和字体转换器)转换需要的图像或字体为μC/GUI格式。

由于定义的Cache占用了大量的RAM,若从液晶读回显存的值则可以省去Cache占用的RAM,但同时也会降低系统运行的速度。

在LCDConf.h文件中定义了与硬件连接有关的LCD读写函数,在液晶驱动文件中调用这些LCD读写函数。这样做的好处是使驱动文件与硬件无关,一旦一种液晶的驱动编写完毕可以很方便地移植到各种系统中而只需更改LCDConf.h即可。

上面那个转贴已经很详细的说明了UCGUI的移值过程,把UCGUI的移值所要做的工作全部都从头到尾,从深到浅讲了一遍,并且让读者知道了UCGUI的驱动的机制,把其对上的接口讲了, 而且对下LCD硬件的接口也讲了, 我想多数人看了就会明白UCGUI的驱动应该如何写了.

以后大家写简单总线型的驱动, 在UCGUI中必须完成的接口如下:

[通常情况下并不是所有结口都要实现, 但是有一个是必须实现的, 就是向LCD写数据及写命令这两个接口]

void LCD_X_Write00(char c);//传命令, 必须实现...
void LCD_X_Write01(char c);//传数据, 必须实现...
char LCD_X_Read00(void);//读数据或是状态, 不是必须...
char LCD_X_Read01(void);
#define LCD_WRITE_A1(Byte) LCD_X_Write01(Byte)
#define LCD_WRITE_A0(Byte) LCD_X_Write00(Byte)
#define LCD_READ_A1(Byte)  Byte = LCD_X_Read01()
#define LCD_READ_A0(Byte)  Byte = LCD_X_Read00()

读的接口不一定要实现, 有的硬件控制器不支持从LCD读回数据, 此时一般会用到数据缓冲, 将写到LCD的数据缓存起来.

所有的驱动函数, 最终的数据都是通过如下接口写入LCD或是从LCD读取的.

这里我再进一步的将与LCD硬件部分相关的再补充几点:

1.数据/指令到LCD控制器的传送.

2.传送数据前如何设定前列地址.

3.初始化工作.

另外, 还提供了有关这种LCD屏幕的两个应用说明资料如下:

http://www.ucgui.com/ucgui/LM19264A-AppNote-V0.1.pdf

http://www.ucgui.com/ucgui/LM19264D-AppNote-V0.1.pdf

以及LCD屏的说明资料:

http://www.ucgui.com/ucgui/LM19264BBC-Manual-Rev0.1.pdf

以及此种LCD模块的驱动,仅供参考:

http://www.ucgui.com/ucgui/lcd19264.rar

一.液晶显示屏的区域


发送图片到手机

二.命令集


发送图片到手机

三.硬件连接图


发送图片到手机

四.驱动截图

原帖地址:http://www.ucgui.com/bbs/dispbbs.asp?boardID=1&ID=1307&page=1

6月20日

魔兽争霸 FATAL ERROR 解决办法

在点击魔兽争霸图标运行游戏时遇到FATAL ERROR 错误,后来又下载了光盘版本,安装后,还是这样的错误,后来在百度上找到解决办法,很有效~~

解决办法如下:

我以前就遇到过是不是会这样
FATAL ERROR!

Program: e:\program files\魔兽争霸3冰封王座1.21简体中文硬盘版\war3.exe
Exception: 0xC0000005 (ACCESS_VIOLATION) at 001B:6F6AC23E

The instruction at '0x6F6AC23E' referenced memory at '0x00000000'.
The memory could not be 'read'.
是要删除注册表....
注册表问题,把注册表里关于魔兽的信息都删除就可以了。
方法是单击开始菜单里的运行输入regedit.exe按回车,找到HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft III,单击右键Warcraft III删除就行了,接下来关闭注册表,应该就可以进魔兽了。

6月19日

Creating a CTabCtrl Application


Rating:

Ben Hill (view profile)
April 3, 2000

Environment: VC6 SP3, NT4, Windows 2000 Pro, Windows 2000 Server

Firstly add the CMyTabCtrl.cpp and CMyTabCtrl.h to your project.

Using Visual Studio add a CTabCtrl control to your dialog. Add a member variable for this control as a CMyTabCtrl type not a simple CTabCtrl. CMyTabCtrl is derived from CTabCtrl.

You can simply add a CTabCtrl member variable and manually edit the file to become CMyTabCtrl

Now create dialogs for every page you require. These must be child dialogs with no border. Any controls here in these dialogs are handled by their own class.

Create a Class for each dialog. In the example these are CTabOne, CTabTwo and CTabThree.

In the CmyTabCtrl constructor you must add a new for each page. Also in the Init function you must specify all tab dialogs to hide all but one

In this example the OnLButtonDown message handler is used to show and hide the various dialogs. The page is managed with a variable m_tabCurrent which holds the value of selected pages.

In the main app dialogs OnInitDialog message handler add the tabs you require for your dialog. In this example these are Tab One, Tab Two and Tab Three.

Functionality for the left and right cursor keys to select the tabs can be added in the CMyTabCtrl class.

CMyTabCtrl::CMyTabCtrl()
{
m_tabPages[0]=new CTabOne;
m_tabPages[1]=new CTabTwo;
m_tabPages[2]=new CTabThree;

m_nNumberOfPages=3;
}

CMyTabCtrl::~CMyTabCtrl()
{
for(int nCount=0; nCount < m_nNumberOfPages; nCount++){
  delete m_tabPages[nCount];
}
}

void CMyTabCtrl::Init()
{
m_tabCurrent=0;

m_tabPages[0]->Create(IDD_TAB_ONE, this);
m_tabPages[1]->Create(IDD_TAB_TWO, this);
m_tabPages[2]->Create(IDD_TAB_THREE, this);

m_tabPages[0]->ShowWindow(SW_SHOW);
m_tabPages[1]->ShowWindow(SW_HIDE);
m_tabPages[2]->ShowWindow(SW_HIDE);

SetRectangle();
}

void CMyTabCtrl::SetRectangle()
{
CRect tabRect, itemRect;
int nX, nY, nXc, nYc;

GetClientRect(&tabRect);
GetItemRect(0, &itemRect);

nX=itemRect.left;
nY=itemRect.bottom+1;
nXc=tabRect.right-itemRect.left-1;
nYc=tabRect.bottom-nY-1;

m_tabPages[0]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW);
for(int nCount=1; nCount < m_nNumberOfPages; nCount++){
  m_tabPages[nCount]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW);
}
}

//////////////////////////////////////////////////////
// CMyTabCtrl message handlers

void CMyTabCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
CTabCtrl::OnLButtonDown(nFlags, point);

if(m_tabCurrent != GetCurFocus()){
  m_tabPages[m_tabCurrent]->ShowWindow(SW_HIDE);
  m_tabCurrent=GetCurFocus();
  m_tabPages[m_tabCurrent]->ShowWindow(SW_SHOW);
  m_tabPages[m_tabCurrent]->SetFocus();
}
}
The Dialog Showing, Hiding and Drawing code is from the C++ Forum On this site. It was posted by someone whom I don't have name for.

If it was you then please let me know and I will have your name added

I hope this code is of some use. It has helped me to develop much more complex dialogs.

Downloads
Download demo project - 18 Kb
Download source - 2 Kb

原帖地址:http://www.codeguru.com/Cpp/controls/controls/tabcontrols/article.php/c5239

6月18日

VC中读写ini文件

我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下:
  一.将信息写入.INI文件中.
  1.所用的WINAPI函数原型为:
BOOL WritePrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpString,
LPCTSTR lpFileName
);
  其中各参数的意义:
   LPCTSTR lpAppName 是INI文件中的一个字段名.
   LPCTSTR lpKeyName 是lpAppName下的一个键名,通俗讲就是变量名.
   LPCTSTR lpString 是键值,也就是变量的值,不过必须为LPCTSTR型或CString型的.
LPCTSTR lpFileName 是完整的INI文件名.
2.具体使用方法:设现有一名学生,需把他的姓名和年龄写入 c:\stud\student.ini 文件中.
CString strName,strTemp;
int nAge;
strName="张三";
nAge=12;
::WritePrivateProfileString("StudentInfo","Name",strName,"c:\\stud\\student.ini");
此时c:\stud\student.ini文件中的内容如下:
[StudentInfo]
   Name=张三
  3.要将学生的年龄保存下来,只需将整型的值变为字符型即可:
strTemp.Format("%d",nAge);
::WritePrivateProfileString("StudentInfo","Age",strTemp,"c:\\stud\\student.ini");
  二.将信息从INI文件中读入程序中的变量.
  1.所用的WINAPI函数原型为:
DWORD GetPrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);
  其中各参数的意义:
   前二个参数与 WritePrivateProfileString中的意义一样.
   lpDefault : 如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量.
   lpReturnedString : 接收INI文件中的值的CString对象,即目的缓存器.
   nSize : 目的缓存器的大小.
   lpFileName : 是完整的INI文件名.
  2.具体使用方法:现要将上一步中写入的学生的信息读入程序中.
CString strStudName;
int nStudAge;
GetPrivateProfileString("StudentInfo","Name","默认姓名",strStudName.GetBuffer(MAX_PATH),MAX_PATH,"c:\\stud\\student.ini");
  执行后 strStudName 的值为:"张三",若前两个参数有误,其值为:"默认姓名".
  3.读入整型值要用另一个WINAPI函数:
UINT GetPrivateProfileInt(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
INT nDefault,
LPCTSTR lpFileName
);
  这里的参数意义与上相同.使用方法如下:
nStudAge=GetPrivateProfileInt("StudentInfo","Age",10,"c:\\stud\\student.ini");
  三.循环写入多个值,设现有一程序,要将最近使用的几个文件名保存下来,具体程序如下:
  1.写入:
CString strTemp,strTempA;
int i;
int nCount=6;
file://共有6个文件名需要保存
for(i=0;i {strTemp.Format("%d",i);
strTempA=文件名;
file://文件名可以从数组,列表框等处取得.
::WritePrivateProfileString("UseFileName","FileName"+strTemp,strTempA,"c:\\usefile\\usefile.ini");
}
strTemp.Format("%d",nCount);
::WritePrivateProfileString("FileCount","Count",strTemp,"c:\\usefile\\usefile.ini");
file://将文件总数写入,以便读出.
  2.读出:
nCount=::GetPrivateProfileInt("FileCount","Count",0,"c:\\usefile\\usefile.ini");
for(i=0;i {strTemp.Format("%d",i);
strTemp="FileName"+strTemp;
::GetPrivateProfileString("CurrentIni",strTemp,"default.fil", strTempA.GetBuffer(MAX_PATH),MAX_PATH,"c:\\usefile\\usefile.ini");
file://使用strTempA中的内容.
}
  补充四点:
   1.INI文件的路径必须完整,文件名前面的各级目录必须存在,否则写入不成功,该函数返回 FALSE 值.
   2.文件名的路径中必须为 \\ ,因为在VC++中, \\ 才表示一个 \ .
   3.也可将INI文件放在程序所在目录,此时 lpFileName 参数为: ".\\student.ini".
   4.从网页中粘贴源代码时,最好先粘贴至记事本中,再往VC中粘贴,否则易造成编译错误,开始时我也十分不解,好好的代码怎么就不对呢?后来才找到这个方法.还有一些代码中使用了全角字符如:<,\等,也会造成编译错误.

原帖地址:http://www.caisong.com/read.php/368.htm