机器故障?购置更换零件?停产设备麻烦?不要犹豫,请速与我们联系,我们可以快速提供优质、合格的工业备件,解决您各处寻找的烦恼!
--------------------------------------------------
允许我给您介绍下这个产品和我们的服务:现货 全新原装*** 15天质量问题无条件包退换
一年质保 完善的***服务 雄厚的技术人才后盾 真正的为客户排忧解难
客户的满意 是对我们的肯定 更是我们的动力
单子,得之,我幸。不得,我力争到底 全心服务
--------------------------------------------------
ABB 3HAC2481-1 DSQC 372
优质的产品★优质的价格★优质的***★优质的服务,是您***佳的选择!
例如,仿真中基于PC的调试环境往往就比目标硬件的开发环境要好。因为目标硬件的***速度可能较慢,或者每次修改软件都必须重新烧录一块一次性可编程芯片。而且目标硬件的调试环境中可能也不支持单步调试和断点调试。即使目标硬件的调试环境较好,相对而言,PC仿真还是有其它优势。开发者可以将.exe文件通过电子邮件发送给不在同一工作地点的工作伙伴,以获得他们的反馈信息。
一旦开发者决定要在整个项目的开发周期中同时保留两个版本的函数,那么分隔它们就很容易。在CPB中的Project/Opti***下,可以定义宏。我通常会定义USING_CPB,然后在我的源代码中,利用一个#ifdef来区分不同的函数版本。另一种区分函数版本的方法就是将目标代码和仿真代码存放在不同的文件中,但让二者共享同一个头文件,以保证二者采用同样一组函数标记。
CPB环境是基于C++的一种环境,但许多嵌入式目标几乎都不支持C。这时,开发者只能采用共享代码中由交叉编译器所支持的C++子集,这其实并没有想象中的困难。解决该问题的方法之一就是针对嵌入式目标来编译代码,即使当前并没有硬件可以运行这些代码。这时那些在PC机上可用的而在目标硬件上则可能属于***的特性就显得突出起来。例如,有些较小型的处理器就不支持递归。同时,在嵌入式编译器上检查软件,还能快速地在程序中标出那些偶然被包含进目标可执行文件中的CPB专用代码。我本人就发觉这种方法在***的大小时非常有用,因为CPB库过于庞大,会完全扭曲程序的大小,所以PC机中进行编译时给出的软件大小并不真实。
这里采用了三种类型的代码。其中有些属于CPB专用代码,只能在PC机上编译;有些属于目标专用代码,只能在目标上编译;而其它的则属于公共代码,应该既能在PC机平台上运行,也能在目标平台上运行。在理想情况下,每个源文件应该都只包含一种类型的代码。设计工程师的IDE或makefile应允许其选择在每次创建可执行文件时需要包含哪些文件。
建议在命名文件时,将所有CPB专用的文件命名为.cpp文件,所有目标专用的文件和共享文件均取.c为扩展名。那么在目标环境中编译时,就只需编译扩展名为.c的文件,而不编译扩展名为.cpp的文件。
如果设计工程师遵循以上风格,那么在CPB环境中编译时还会遇到一个问题。CPB环境将.c文件假设为C代码编写的文件,而将.cpp文件假设为C++代码编写的文件。当从一个文件到另一个文件发生调用时,将会因 C++产生破损函数名的方式不同而产生链接错误。我们可以通过采用“extern C”构造来回避这个问题。但这样有点麻烦,尤其当调用发生在从C到C++或从C++到C时。可以为Borland编译器设置一个标志,告诉它,不***件名的后缀是什么,均将其作为C++文件来编译。遗憾的是IDE中没有这样的标志。于是我们只能手工编辑项目配置文件来实现这一功能。
代码举例
读者可以在/cpb 处找到一个可执行文件five.exe,文件中包含一行5个按钮和一组LED。按下前4个按钮中的任何一个都会打开相应的一个LED。第5个按钮是RESET(复位)按钮,按下该按钮会关断所有LED。 当然,在构造这样一个项目时,并不需要进行仿真。但该例旨在说明,只要具备初始的接口界面图象,那么仿真时,只需稍作努力就可得到与真实设备看起来相似的运行结果。同时,该例还说明,key.c模块中包含的代码既可在目标环境中运行,也可在仿真环境中运行,而且该代码不会因目标环境和仿真环境这两种平台之间的差异而需要任何条件代码才能运行。用于构造该应用的所有源代码和初始位图均可从该站点***。
建立类似的仿真需要设计工程师具备一定的C++知识,学习CPB开发环境也需要一定的过程,当设计工程师从未用过这种面向对象的事件驱动环境时尤其如此。然而只要建立起一个仿真,那么其它工作只需按相同的步骤进行即可。设计工程师如果曾编写过基于PC的程序,而且程序中用到了GUI,那么这一经验会有助于对CPB的学习。我过去就曾利用这样一个程序来完成过一个简单的***应用,实现与嵌入式目标的串行通信。
DS3800NCLA
DS3800NCT1B1B
DS3800NDAC1B1C
DS3800NDAC1D1E
DS3800NDAC1E1F
DS3800NDIC
DS3800NDID1M1D
DS3800NDIDIMID
DS3800NEPA1C1A
DS3800NEPA1C1B
DS3800NEPA1D1B
DS3800NEPA1D1C
DS3800NEPA1E1D
DS3800NEPA1F1E
DS3800NEPB1G1F
DS3800NFCD1K1C
DS3800NFCD1K1D
DS3800NFCD1K1E
DS3800NFCD1Q1H
DS3800NFCD1S1J
DS3800NFCD1S1K
DS3800NFCD1S1L
DS3800NFCF1F1D
DS3800NFCF1J1C
DS3800NFIB
DS3800NGRA1L1D
DS3800NGRA1L1E
DS3800NGRC1D1D
DS3800NGRC1H1F
DS3800NGRC1H1G
DS3800NGTA
DS3800NGTA1E1D
DS3800NGTC1B1C
DS3800NHVD
DS3800NHVD1C1B
DS3800NHVD1D1B
DS3800NHVD1E1B
DS3800NHVE
DS3800NHVE1C1C
DS3800NHVF11B1A
DS3800NHVF1B1A
DS3800NHVJ1A1A
DS3800NHVM1E1D
DS3800NLCB1H1E
DS3800NMEA1G1E
DS3800NMEA1H1E
DS3800NMEA1K1H
DS3800NMEA1L1J
DS3800NMEA1P1K
DS3800NMEC1D1C
DS3800NPCA1A1B
DS3800NPCT1B1B
DS3800NPRB1A1A
DS3800NPSE1B1A
DS3800NPSE1B1B
DS3800NPSE1C1C
DS3800NPSE1D1F
DS3800NPSE1E1G
DS3800NPSF1C1B
DS3800NPSF1D1E
DS3800NPSR
DS3800NRTB1A
DS3800NRTB1A1A
DS3800NTBD
DS3800NTBE
DS3800NTCA
DS3800NTCA1A1B
DS3800NTDA1B1E
DS3800NTEA1A1A
DS3800NVAA
DS3800XCIB1B1B
DS3810CLCB
DS3810CLCB1A1A
DS3810MMAC
DS3815PAAA1D1A
DS3815PMMA1F1B
DS3815RCA1BL004
DS3815RCC1BL018
DS3815RCC1BLO12
DS3815RCE1BL014
DS3815RCE1BL022
DS3815RCG1BL018
DS3815RCL1BL004
DS3815RCL1BL008
DS3820CLMA1A1A
DS3820DMCC1A1A
DS3820FDCA1A1A
DS3820FE1A1A
DS3820H***D
DS3820LIMA
DS3820MAUD
DS3820MSAB1A1A
DS3820OPSWA1C1A
DS3820PMMB1A1B
DS3820PSCC1D1B
DS3820PSSB1B1B
DS3820STMA
DS3827AMCCF
DS3827AMCLF
DS3827ASBB01
DS3827BMDHB
DS3827BMDJB
DS3827BMDLB
DS3827BMDMB
DS3827BP6A2EFAD
DS3827BS6
DS3828BH3AN
DS3860DMPK
DS3860HAIC
DS3860HCMC
DS3860HCVA
DS3860HIOD
DS3860HRDB
DS3860HUMA
DS3860HUMB
DS3860NTCF
DS3860NVCD
DS3860XTFP
DS3880AIPA
DS3880AIQA
DS3880AIRA
DS3880EPSA1A1A
DS3880PSCB1D1B
DS3880PSCC1D1B
DS3880RDMA
DS4875CHGA
DS6800CCIE1F1D
DS800NMEA1P1K
DS800NPSF1D1D
DS9445Y102
SB9BB300SUS2Y
400AQMR365 DS-24
507-DS77
5KCP39MGD184DS
5KCP39NG-H948DS
BC53P1A
DS200ACNAG1ADDU
DS200ADCIH1ADB
DS200ADGIH1AAA
DS200CPCAG1A
DS200CPCAG1ABB
DS200CVMAG3AEB
DS200FPSAG1ABB
DS200FSAAG2ABA
DS200GDPAG1AGC
DS200GDPAG1AKF
DS200GGXCG1AAA
DS200GGXCG1ACB
DS200GSIAG1ABA
DS200GSIAG1ACA
DS200GSIAG1BBB
DS200GSIAG1CGD
DS200IIBDG1AAA
DS200IIBDG1ACA
DS200IIBDG1ADA
DS200IIBDG1AEA
DS200IMCPG1AAA
DS200IMCPG1ADA
DS200IMCPG1AEA
DS200IMCPG1CBA
DS200IMCPG1CCB
DS200IPCSG1AA