控制卡应用编程技巧.docx

控制卡应用编程技巧.docx

ID:50676501

大小:232.07 KB

页数:22页

时间:2020-03-07

控制卡应用编程技巧.docx_第1页
控制卡应用编程技巧.docx_第2页
控制卡应用编程技巧.docx_第3页
控制卡应用编程技巧.docx_第4页
控制卡应用编程技巧.docx_第5页
资源描述:

《控制卡应用编程技巧.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、控制卡应用编程技巧几招(1)发布日期:2009-7-1310:45:23浏览次数:4764声明一下,写下这些编程技巧,即不是什么祖传秘籍,也不是什么必杀招或绝招,在此只为方便同仁们在编程控制软件时,对此可以进行适当的斟酌。以下展现的编程思想及奉上的源代码都非常简易,但并不是随手写写,可都是经过实践的。若没有成功经验作后盾,我也就没有必要在此打字练五笔了。事实上,正如一个编程大师所言(MichaelAbrash),当你的软件正常而且有效率的运行起来时,好像一切都是那么显而易见。故,在此,我仍坚持那句编程口号,将事情变得越简单越好,越简单就越有效率,越稳定。在以

2、下的介绍中,我将尽可能的展示本人的编程思想,最大可能的给出知其然也知其所然的解释。若你有更好的见解,希望能得到你的指正。人长大了明显标志就是变得不太负责,而且不敢承认自己还需要努力,害怕面对自己的错误。若是这样,放心,我还没长大。因为我无法保证我能面面俱到。关于源代码的阅读,需要读者有一定的C++编程基础,至少对以下表示形式不会产生误解:constchar*pString;//指定pString邦定的数据不能被修改char*constpString;//指定pString的地址不能被修改constchar*constpString;//含上面两种指定功能当然

3、,随便提醒一下,这些源代码若需要加入你的软件工程当中,还需要作一些调整和修改,因此,这些源代码实质上称为伪代码也可以,之所以展现它们,是让程序员们有个可视化的快感,特别是那些认为源代码就是一切的程序员。同时,为了提高针对性,大部分控制卡调用的函数会明确指出是邦定哪些卡的,实际应用时,程序员可自行选择,以体现一下自己的智商是可以写写软件的。一、控制卡类的单一实例实现把控制卡类作一个类来处理,几乎所有C++程序员都为举双手表示赞同,故第一个什么都没有的伪代码就此产生,如下表现:classCCtrlCard{public:…Functionpublic:…attr

4、ib}于是,用这个CctrlCard可以产生n多个控制卡实例,只要内存足够。然而,针对现实世界,情况并不那么美好。通常情况下,PC机内只插同种类型的控制卡1到2张,在通过调用d1000_board_init或d3000_board_init函数时,它们会负责返回有效卡数nCards,然后从0-nCards*4-1自行按排好轴数。初始化函数就是C++的new或malloc的操作,取得系统的资源,但是控制卡的资源与内存不一样,取得资源后必需要释放才可以再次获取,即控制卡资源是唯一的。既然控制卡资源是唯一的,那么最好Cctrlcard产生的实例也是唯一的,这样,我

5、们可以方便的需要定义一个全局变量即可:CctrlCardg_Dmcard;在其它需要调用的地方,进行外部呼叫:externCctrlCardg_DmcCard;以上方法实在太简单了,很多人都会开心起来。实质上,方法还有很多,即然可以产生n多对实例,我们的核心是只要保证调用board_init函数一次即可,故也可以单独定义一个InitBoard函数:classCctrlCard{public:staticintInitBoard();//定义一个静态函数,以表警示}intCctrlCard::InitBoard(){returnd1000_board_init

6、();}还有一种方法,情况稍加复杂,但表达的功能也要强一些,以下展现可以稍微安慰一下代码狂。ClassCctrlCard{public:CctrlCard();//请注意这个构造函数的定义}CctrlCard::CctrlCard(){//呵呵,也很明了staticintn(0);//注意,是个静态变量n++;//每次调用CctrlCard生成实例时,都会计数一次assert(n==1);//在DEBUG版本下,只有n==1的情况下可以通过//否则,会出现致命错误,还好,它会告诉你错在哪个文件,//哪一行,呵呵,是个好东东啊。}通过强行报警处理,当你有g_D

7、mcCard这个实例时,其它的所有控制卡的定义都只能是以引用或指针的方式进行了,不会再产生新有效的实例了,对于由小组编程的项目软件,而你又恰好负责编程控制卡这一块的话,以上的显性报警,会让其它人心领神会。当然,你也可以将上面的方法加入到InitBoard当中去,可以避你的无意识的多次调用了。附:无意识的多次调用经常发生,特别是那些对MFC机制不明确的程序员,在多文档框架下,不知道这个CctrlCard::InitBoard函数到底是应该放在CmainFrame的OnCreate里面,还是应该放在CchildFrame的OnCreate,或者是Cview的On

8、InitUpdate里面进行调用。在一言难尽MFC的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。