<?xml version="1.0" encoding="gb2312"?>

<!-- RSS generated by oioj.net on 4/16/2004 ; 感谢LeXRus提供 RSS 2.0 文档; 此文件可自由使用，但请保留此行信息 --> 
<!-- Source download URL: http://blogger.org.cn/blog/rss2.asp       -->
<rss version="2.0">

<channel>
<title>zhu_ruixian的博客</title>
<link>http://blogger.org.cn/blog/blog.asp?name=zhu_ruixian</link>
<description>zhu_ruixian的博客</description>
<copyright>blogger.org.cn</copyright>
<generator>W3CHINA Blog</generator>
<webMaster>webmaster@blogger.org.cn</webMaster>
<item>
<title><![CDATA[亲身经历，送给男生的一段话...（转：byr论坛）]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=24513</link>
<author>zhu_ruixian</author>
<pubDate>2007/5/4 18:14:19</pubDate>
<description><![CDATA[以我的亲身经历，送给男生一段话，希望那些现在还在为女孩伤心的男孩能获得一些启发，因为我以前也和你们一样，太傻太傻......... <BR><BR>当一个男孩追一个女孩时，男孩就像是在进行一场赌博，赌徒用的是金钱，你是用自己的真心，当你第一次爱一个人时，很可能你会用尽所有，你会把你的真心用在一个人身上，你会不断的付出，当你第一次被拒绝你会坚持，那只是因为你已经付出太多，就像赌徒，那时你已经收不住自己的情感，那时你是拿的起但放不下，有一天你终于失败了，你会一无所有，你会伤心，痛苦，甚至绝望，那是因为你付出太多太多，结果一无所有 <BR><BR>当你有一天走出来后，你就长大了，成熟了，你以后再也不会像以前一样投入，你会变的聪明圆滑，所以男孩的真爱一生只有一次，第一次是爱别人，以后都是爱自己 <BR><BR>追女孩是件很简单的事，换句话说，女孩根本不用追，你想想？如果女孩对你很有好感，你用追她吗？？？如果你在３个月里追不到一个女孩，那你就追错了人，因为女孩肯定是对你心有不满才会迟迟不答应你，就算你很努力的追到一个人，那这段感情对你也不值得，因为你们的感情从一开始就不平等，以后女孩对你稍有不满，你们的感情就有危机，她最后还是会离开你，这段感情对你不值得，感情最重要的是平等，否则，很难长久 <BR><BR>什么样的女孩最好追？被男孩伤过的女孩最好追，因为她们以后只想找爱她的人，不是她爱的人 <BR>什么样的女孩最难追？伤男孩的女孩最难追，因为她把别人伤害肯定是男孩有让她不满意的地方，你去追她，她会把你和以前男孩进行比较，她会对你有更高的要求，除非她对你很满意，否则，你很难追到她 <BR><BR>情感是男孩走向成熟的必修课，不用怕伤痛，因为挫折和失败才能让你更加成熟，北邮的男孩都很优秀，真的 <BR><BR>谨以此帖与男生共勉，希望男孩在情感上少走弯路，愿每个男孩都能美梦成真：）]]></description>
</item><item>
<title><![CDATA[GWT 中文乱码解决方法]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=23649</link>
<author>zhu_ruixian</author>
<pubDate>2007/4/3 13:00:39</pubDate>
<description><![CDATA[<SPAN class=postbody><FONT size=2>1.把你要显示的中文“测试字符串”输入到一个文件，如:1.txt <BR>2.进入命令行,进入1.txt所在的目录,敲入以下命令:native2ascii.exe 1.txt 2.txt 回车。这样就生成了另外一个文件2.txt。 <BR>3.2.txt的内容如下:\u6d4b\u8bd5\u5b57\u7b26\u4e32 <BR>4.然后用上面的编码，在gwt中使用，就可以了. <BR><BR>Good Luck!</FONT></SPAN>]]></description>
</item><item>
<title><![CDATA[C++中的空类，默认产生哪些类成员函数？[]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=23466</link>
<author>zhu_ruixian</author>
<pubDate>2007/3/27 16:30:40</pubDate>
<description><![CDATA[class Empty<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp; Empty();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 缺省构造函数<BR>&nbsp;&nbsp;&nbsp; Empty( const Empty&amp; );&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 拷贝构造函数<BR>&nbsp;&nbsp;&nbsp; ~Empty();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 析构函数<BR>&nbsp;&nbsp;&nbsp; Empty&amp; operator=( const Empty&amp; ); // 赋值运算符<BR>&nbsp;&nbsp;&nbsp; Empty* operator&amp;();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 取址运算符<BR>&nbsp;&nbsp;&nbsp; const Empty* operator&amp;() const;&nbsp;&nbsp; // 取址运算符 const<BR>};]]></description>
</item><item>
<title><![CDATA[#define与const的差别]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=23461</link>
<author>zhu_ruixian</author>
<pubDate>2007/3/27 14:32:23</pubDate>
<description><![CDATA[<P align=left><SPAN>虽然他们在使用中感觉“差不多”，但是他们在实现上有什么区别？</SPAN></P>
<P align=left><SPAN>请看下面的代码：</SPAN></P>
<P align=left><SPAN>#define T 13 /*</SPAN><SPAN>用</SPAN><SPAN>#define</SPAN><SPAN>定义的一个常量</SPAN><SPAN>T*/</SPAN></P>
<P align=left><SPAN>int main()</SPAN></P>
<P align=left><SPAN>{</SPAN></P>
<P align=left><SPAN><SPAN>&nbsp;&nbsp;&nbsp; </SPAN>const int t=13;/*</SPAN><SPAN>用</SPAN><SPAN>const</SPAN><SPAN>定义的一个常量</SPAN><SPAN>*/</SPAN></P>
<P align=left><SPAN><SPAN>&nbsp;&nbsp;&nbsp; </SPAN>int n=t;/*</SPAN><SPAN>把<SPAN>t</SPAN>赋值给<SPAN>n*/</SPAN></SPAN></P>
<P align=left><SPAN><SPAN>&nbsp;&nbsp;&nbsp; </SPAN>int m=T;/*</SPAN><SPAN>把<SPAN>T</SPAN>赋值给<SPAN>m*/</SPAN></SPAN></P>
<P><SPAN>}</SPAN></P>
<P><STRONG><SPAN>1.</SPAN></STRONG><STRONG><SPAN>差别</SPAN></STRONG><STRONG><SPAN>:</SPAN></STRONG></P>
<P align=left><SPAN>const</SPAN><SPAN>与</SPAN><SPAN>#define</SPAN><SPAN>最大的差别在于：前者在堆栈分配了空间，而后者只是把具体数值直接传递到目标变量罢了。或者说，</SPAN><SPAN>const</SPAN><SPAN>的常量是一个</SPAN><SPAN>Run-Time</SPAN><SPAN>的概念，他在程序中确确实实的存在可以被调用、传递。而</SPAN><SPAN>#define</SPAN><SPAN>常量则是一个</SPAN><SPAN>Compile-Time</SPAN><SPAN>概念，它的生命周期止于编译期：在实际程序中他只是一个常数、一个命令中的参数，没有实际的存在。</SPAN></P>
<P align=left><SPAN>const</SPAN><SPAN>常量存在于程序的数据段</SPAN><SPAN>.</SPAN></P>
<P align=left><SPAN>#define</SPAN><SPAN>常量存在于程序的代码段。</SPAN></P>
<P align=left><STRONG><SPAN>2</SPAN></STRONG><STRONG><SPAN>优缺点</SPAN><SPAN>: </SPAN></STRONG></P>
<P align=left><SPAN>至于两者的优缺点，要看具体的情况了。一般的常数应用，我个人认为</SPAN><SPAN>#define</SPAN><SPAN>是一个更好的选择：</SPAN></P>
<P align=left><SPAN>i.</SPAN><SPAN>从</SPAN><SPAN>run-time</SPAN><SPAN>的角度来看，他在空间上和时间上都有很好优势。</SPAN></P>
<P align=left><SPAN>ii.</SPAN><SPAN>从</SPAN><SPAN>compile-time</SPAN><SPAN>的角度来看，类似</SPAN><SPAN>m=t*10</SPAN><SPAN>的代码不会被编译器优化，</SPAN><SPAN>t*10</SPAN><SPAN>的操作需要在</SPAN><SPAN>run-time</SPAN><SPAN>执行。而</SPAN><SPAN>#define</SPAN><SPAN>的常量会被合并。</SPAN></P>
<P><SPAN>但是：如果你需要粗鲁的修改常数的值，那就的使用</SPAN><SPAN>const</SPAN><SPAN>了，因为后者在程序中没有实际的存在.</SPAN></P>
<P><STRONG>另外在头文件中使用 #define&nbsp; 可以避免头文件重复包含的问题，这个功能，是const无法取代的。</STRONG></P>]]></description>
</item><item>
<title><![CDATA[全局变量和局部变量在内存里的区别？]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=23460</link>
<author>zhu_ruixian</author>
<pubDate>2007/3/27 14:30:10</pubDate>
<description><![CDATA[<A></A>
<P><SPAN>一、预备知识—程序的内存分配</SPAN> </P>
<P><SPAN>一个由</SPAN><SPAN>c/C++</SPAN><SPAN>编译的程序占用的内存分为以下几个部分</SPAN> </P>
<P><SPAN>1</SPAN><SPAN>、栈区（</SPAN><SPAN>stack</SPAN><SPAN>）—</SPAN> <SPAN>由编译器自动分配释放</SPAN> <SPAN>，存放函数的参数值，局部变量的值等。其操作方式类似于数据结构中的栈。</SPAN> </P>
<P><SPAN>2</SPAN><SPAN>、堆区（</SPAN><SPAN>heap</SPAN><SPAN>）</SPAN> <SPAN>—</SPAN> <SPAN>一般由程序员分配释放，</SPAN> <SPAN>若程序员不释放，程序结束时可能由</SPAN><SPAN>OS</SPAN><SPAN>回收</SPAN> <SPAN>。注意它与数据结构中的堆是两回事，分配方式倒是类似于链表，呵呵。</SPAN> </P>
<P><SPAN>3</SPAN><SPAN>、全局区（静态区）（</SPAN><SPAN>static</SPAN><SPAN>）—，全局变量和静态变量的存储是放在一块的，初始化的全局变量和静态变量在一块区域，</SPAN> <SPAN>未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。</SPAN><SPAN> - </SPAN><SPAN>程序结束后有系统释放</SPAN> </P>
<P><SPAN>4</SPAN><SPAN>、文字常量区</SPAN> <SPAN>—常量字符串就是放在这里的。</SPAN> <SPAN>程序结束后由系统释放</SPAN> </P>
<P><SPAN>5</SPAN><SPAN>、程序代码区—存放函数体的二进制代码。</SPAN> </P>
<P>&nbsp;</P>
<P><SPAN>二、例子程序</SPAN> </P>
<P><SPAN>这是一个前辈写的，非常详细</SPAN> </P>
<P><SPAN>&nbsp;//main.cpp </SPAN></P>
<P><SPAN>&nbsp;int a = 0; </SPAN><SPAN>全局初始化区</SPAN> </P>
<P><SPAN>&nbsp;char *p1; </SPAN><SPAN>全局未初始化区</SPAN> </P>
<P><SPAN>&nbsp;main() </SPAN></P>
<P><SPAN>&nbsp;{ </SPAN></P>
<P><SPAN>&nbsp;int b;// </SPAN><SPAN>栈</SPAN> </P>
<P><SPAN>&nbsp;char s[] = "abc"; //</SPAN><SPAN>栈</SPAN> </P>
<P><SPAN>&nbsp;char *p2; //</SPAN><SPAN>栈</SPAN> </P>
<P><SPAN>&nbsp;char *p3 = "123456"; 123456\0";//</SPAN><SPAN>在常量区，</SPAN><SPAN>p3</SPAN><SPAN>在栈上。</SPAN> </P>
<P><SPAN>&nbsp;static int c =0</SPAN><SPAN>；</SPAN><SPAN> //</SPAN><SPAN>全局（静态）初始化区</SPAN> </P>
<P><SPAN>&nbsp;p1 = (char *)malloc(10); </SPAN></P>
<P><SPAN>&nbsp;p2 = (char *)malloc(20); </SPAN></P>
<P><SPAN>&nbsp;//</SPAN><SPAN>分配得来得</SPAN><SPAN>10</SPAN><SPAN>和</SPAN><SPAN>20</SPAN><SPAN>字节的区域就在堆区。</SPAN> </P>
<P><SPAN>&nbsp;strcpy(p1, "123456"); //123456\0</SPAN><SPAN>放在常量区，编译器可能会将它与</SPAN><SPAN>p3</SPAN><SPAN>所指向的</SPAN><SPAN>"123456"</SPAN><SPAN>优化成一个地方。</SPAN> </P>
<P><SPAN>&nbsp;}&nbsp;</SPAN></P>]]></description>
</item><item>
<title><![CDATA[封尘之门]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=21635</link>
<author>zhu_ruixian</author>
<pubDate>2007/1/10 11:31:03</pubDate>
<description><![CDATA[ 我想把门对她打开，我就说：“我把门打开让你看看吧。我们作好朋友吧。” <BR> 她说：“算了吧，我没什么兴趣。” <BR> 我说：“哦，好吧，那就算了吧。” <BR><BR>　　我的门总是关着，从不肯轻易打开。有时候我想，也许打开一下会好一些。也许打开一下，就不会那么寂寞了。把门打开，也许就会有风进来，就会吹走一些积落的灰尘；也许就会有阳光进来，就会照亮一些暗黑的角落；也许就会有一个人走进来，用欣喜的目光打量这一切，说：“我喜欢这里，喜欢这里的摆设。”也许，那时候，我就不那么寂寞了。 <BR><BR>　　也许是因为我的门太斑驳而显得陈旧了，就不会让人生出爱恋的感觉。也许是因为从门缝里透漏出来的气息太难以捉摸而显得诡异了，就让走近门口的人望而却步。所以，当我说：“我把门打开让你看看吧。”她说：“算了吧。”我说：“好吧，那就算了吧。” <BR><BR>　　我并不伤心，也没有太多遗憾。因为寂寞了太久，继续寂寞下去并没有什么不好。而且，把门打开未必就会不寂寞了，有这个可能，但我从没有对这个可能抱很多希望。因为没有希望，就不会有失望。我知道，每个人都很忙，他们匆匆忙忙地在路上走着。不知道究竟要走到何处，还是很匆忙地走着。我看着匆匆的路人，并不好奇他们的去处，正如他们对我的门也一无兴趣。我的门就这样一直关着。有时候我心情很好，就邀请经过的人来我的门内稍事歇息，但因着我斑驳的门面和门内诡异的气息，没有人能够走进门内。于是我的门就从未开启过。没有风也没有光，积尘就一点点堆落，而角落就日甚一日的黑暗。我就那么一直地寂寞着。 <BR><BR>　　直到有一天。有一个人走到我的门前，她反复地打量了我的门，对我说：“把门打开好吗？我想进去看看。” <BR>　　我正躺在温暖的阳光里睡觉，有微风轻轻吹过我的面颊，非常舒适。我听到有人说：“把门打开好吗？我想进去看看。”我睁开眼。 <BR><BR>　　我的门依旧陈旧而斑驳，从里面透漏出妖幻而显得诡异的气息。 <BR>　　我说：“哦，算了吧，你还是不要看吧。” <BR><BR>　　我就像童话故事里那个被所罗门王封进瓶子里的魔鬼。魔鬼说，如果有人在这个一千年里救了我，我就满足他三个愿望，让他富有、尊贵。一千年过去了，没有人来救它。在第二个一千年里，魔鬼说，如果有人在这个一千年里救了我，我就满足他所有的愿望，让他一生幸福。第二个一千年过去了，还是没有人来救它。在第三个一千年里，魔鬼说，如果有人在这个一千年里救了我，我就吃了他。一个渔夫从海里捞出了瓶子，打开了瓶塞，放出了魔鬼，魔鬼便要吃了渔夫。 <BR><BR>　　她说：“把门打开好吗？我想进去看看。” <BR>　　我说：“哦，算了吧，你还是不要看吧。” <BR><BR>　　我就像那个魔鬼。我一向理解魔鬼的行为，如果我被关在瓶子里，两千年后我也想杀了那个救了我的渔夫。两千年的等待已不再需要拯救了。两千年这样漫长的时间足以让一颗狂燥的心平静，让一个盲目的大脑明澈。两千年如一的生活不想再被打扰了，两千年都这样过去了，不妨就永远这样过下去吧，没有什么不好。在瓶子里就这样等着时间流过，想或者什么都不想，没有什么不好。当瓶子被打开，两千年的习惯全部被打破，一切要重新开始，又要去面对那个纷乱的世界，去体味狂欢或剧痛的滋味，两千年的平静都不再有意义。所以，渔夫，你给了魔鬼自由，但魔鬼并不准备感谢你。它是如此的慌乱和不安，只能选择杀了你来祭奠两千年的过去，来开始另一段莫测的生涯。 <BR>　　渔夫，并不是拯救魔鬼错了，是错了时机。当瓶子里的生活已被当作良好习惯安然接受，当外面的世界已失去了诱惑，不再被向往，打开的瓶子并不是对魔鬼的拯救。渔夫，你犯了错，你不该如此好奇，你期望瓶子里是奇珍异宝吗？不，瓶子里是个魔鬼，一个安静地思考了两千年终于不想再被打扰的魔鬼。你的手指那么轻易地就撕破了所罗门王的封印，从瓶子里放出了魔鬼，现在，魔鬼要吃了你。 <BR>　　 <BR>　　我说：“我把门打开让你看看吧。” <BR>　　她说：“算了吧，我没什么兴趣。” <BR>　　我说：“那好吧，那就算了吧。” <BR>　　因为我从不是一个强求的人，如果某人不愿意做某件事情，我绝不会再作要求。 <BR><BR>　　她说：“把门打开，让我进去看看好吗？” <BR>　　我说：“哦，算了吧，没什么好看的。” <BR>　　因为我从来都是一个冷淡的人，没有太多希望，也就没有太多失望。不给别人太多希望，也不给别人太多失望。 <BR><BR>　　她看着我，又看了看门，说：“把门打开吧，或许我可以在屋子里歇一歇，这里面的气息让我很迷恋。”我不知道这之间究竟过了多久，但我知道，斑驳的门面更陈旧了，妖幻的气息更诡异了，我不知道有人会对这样的门这样的气息产生迷恋的感觉吗？把门打开，也许风就会进来，也许阳光就会进来，也许她会走进来说：“我喜欢这里，喜欢这里的摆设。”可是我的门总是关着，在关着的门内，我能看到尘一点一点积落在每一个角落上，我已经喜欢上了尘积落的样子，喜欢尘一层一层不断地堆积。我能看到暗影一点一点加深，我喜欢上了暗影加深的样子，喜欢暗影一点一点不断变深。我怕，把门打开，我怕风会进来，吹走我的积尘，我怕阳光会进来，照亮我的暗影。我怕她进来，不喜欢我的尘和影。 <BR>　　如果寂寞就寂寞吧，因为寂寞从来就不可避免，我不痛恨寂寞，我喜欢寂寞。我喜欢我的门关着的样子，虽然偶尔有时候我会想打开试一下，但我喜欢门关着的样子。就这样几千年都可以安然度过，何况是一个人的一百年。 <BR>　　我说：“真的没有什么好看的，里面只有尘和暗影。” <BR><BR>　　渔夫并没有让魔鬼吃掉，他让魔鬼回到了瓶内，盖上了瓶塞，把瓶子扔进了大海。是因为渔夫的聪明救了他自己吗？不，是因为魔鬼太善良了。如果我是魔鬼，我不会和渔夫罗嗦那么久，我出来后，马上就会吃了渔夫，然后走出去吃更多的人。我终究不是魔鬼，因为我没有被封印于瓶内两千多年。也许，当我也被封印两千年这么久，我也会困于渔夫的聪明。魔鬼无论如何都打不开的封印不就被渔夫的手指轻轻撕破吗？这世间的事本就不可以用道理来说明白。 <BR><BR>　　她望着我，眼中有许多哀怨。 <BR>　　我就像你，从不会强求，可是当我第二次提出请求，你怎可第二次拒绝，我就像你，从不会有很多希望，可是当我如此希望于你，你怎可让我如此失望。你的门如此斑驳，已经不断地在脱落，斑驳得如此陈旧，总有一天会朽烂。你的气息如此妖幻，已经不断在激变，妖幻得如此诡异，总有一天会崩溃。如果，我可以帮助你维护你的门，不至朽烂，如果我可以帮助你维持你的气息，不至崩溃，如果我喜欢你门内的一切，包括积尘和暗影，你仍要坚持不允许我进入你的门吗？ <BR><BR>　　我看着她，整个世界都在我眼中。 <BR>　　我只是不明白，所罗门王的封印已被撕破，瓶子不可能再能够困住魔鬼，那么魔鬼是选择出来还是继续呆在瓶子里？ <BR>　　我看着她，整个世界都不在我眼中。 <BR>　　我想起我斑驳的门，妖幻的气息，我想起我曾经想打开门，我想起我曾经寂寞的心，我想起门内不断积落的尘，还有暗影，我想起我自己。 <BR><BR>　　当我忘记了寂寞的时候，当我不想再打开门的时候，当我已喜欢上了蒙尘和暗影的时候， <BR>　　我只是不知道，我的门要不要打开，向这个看着我，在我眼中的，执意要进来的女孩。]]></description>
</item><item>
<title><![CDATA[HMP学习－srl相关函数－sr_getevttype( )]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=21605</link>
<author>zhu_ruixian</author>
<pubDate>2007/1/9 16:31:16</pubDate>
<description><![CDATA[作用：返回当前事件的类型]]></description>
</item><item>
<title><![CDATA[HMP学习－srl相关函数－sr_getevtlen( )]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=21604</link>
<author>zhu_ruixian</author>
<pubDate>2007/1/9 16:30:09</pubDate>
<description><![CDATA[作用：返回与当前事件相关数据的长度]]></description>
</item><item>
<title><![CDATA[HMP学习－srl相关函数－sr_getevtdev（）]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=21603</link>
<author>zhu_ruixian</author>
<pubDate>2007/1/9 16:24:39</pubDate>
<description><![CDATA[返回当前事件的设备句柄]]></description>
</item><item>
<title><![CDATA[HMP学习－srl相关函数－sr_getevtdatap( )]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=21602</link>
<author>zhu_ruixian</author>
<pubDate>2007/1/9 16:10:02</pubDate>
<description><![CDATA[<P>函数原型：</P>
<P>Linux: void *sr_getevtdatap( )<BR>Windows: void *sr_getevtdatap(ehandle)</P>
<P>参数：Linux 无。Windows上sr_waitevtEx( )返回的事件句柄。</P>
<P>返回值：指向数据块的指针</P>
<P>作用：返回与该事件相关的变量数据块的地址。</P>
<P>示例函数：</P>
<P>#include &lt;srllib.h&gt;<BR>#include &lt;dxxxlib.h&gt;<BR>long int dx_handler(void*)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "Got event with event data 0x%s\n",(char*)(sr_getevtdatap()));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Tell SRL to keep the event */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return( 1 );<BR>}<BR>int main(){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int dxxxdev;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int mode = SR_POLLMODE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Set SRL to run in polled mode */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( sr_setparm( SRL_DEVICE, SR_MODEID, &amp;mode ) == -1 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "Cannot set SRL to polled mode\n" );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit( 1 );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* open the device */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(( dxxxdev = dx_open( "dxxxB1C1", 0 )) == -1 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "failed to open device\n" );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit( 1 );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Enable handlers */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( sr_enbhdlr( dxxxdev, EV_ANYEVT, dx_handler ) == -1 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "Could not enable handler: error = %s\n", ATDV_ERRMSGP( SRL_DEVICE ));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit( 1 );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Generate events via async calls */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( dx_sethook( dxxxdev, DL_ONHOOK, EV_ASYNC ) == -1 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "dx_sethook failed: error = %s\n", ATDV_ERRMSGP( dxxxdev ));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit( 1 );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Wait forever while handlers deal with events<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * All handlers return 0 except the one for the last<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * event returns 1 telling SRL to leave the event to wake up<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * sr_waitevt().<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (void)sr_waitevt( -1 );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Cleanup */<BR>}</P>]]></description>
</item><item>
<title><![CDATA[HMP学习－srl相关函数－sr_getboardcnt( )]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=21600</link>
<author>zhu_ruixian</author>
<pubDate>2007/1/9 16:02:07</pubDate>
<description><![CDATA[<P>函数原型：long sr_getboardcnt(char* class_namep,int* boardcntp)</P>
<P>参数：指向类名的指针，记录主板卡的数目</P>
<P>返回值：0成功 －1失败</P>
<P>作用：仅仅用在windows平台。返回特定类型的板卡资源数量。</P>
<P>#include &lt;windows.h&gt;<BR>#include &lt;srllib.h&gt;<BR>#include &lt;dxxxlib.h&gt;<BR>long chdev[MAXDEVS];<BR>long evt_handle;<BR>main( ... )<BR>{<BR>char channel_name[12], board_name[12];<BR>int brd_handle;<BR>int brd, ch, devcnt = 0;<BR>int numvoxbrds = 0;<BR>if ( sr_getboardcnt(DEV_CLASS_VOICE, &amp;numvoxbrds) == -1)<BR>{<BR>/* error retrieving voice boards */<BR>}<BR>for (brd = 1; brd &lt;= numvoxbrds; brd++)<BR>{<BR>/* build the board name and open the board device to get number of channels */<BR>sprintf(board_name, "dxxxB%d",brd);<BR>if ( (brd_handle = dx_open(board_name, 0)) == -1)<BR>{<BR>/* Board open error */<BR>}<BR>for (ch = 1; ch &lt;= ATDV_SUBDEVS(brd_handle); ch++)<BR>{<BR>sprintf(channel_name, "%sC%d", board_name, ch);<BR>if ( (chdev[devcnt++] = dx_open(channel_name, 0)) == -1)<BR>{<BR>/* Channel open error */<BR>}<BR>} /* End of channel for loop */<BR>dx_close(brd_handle);<BR>} /* End of board loop */<BR>}</P>]]></description>
</item><item>
<title><![CDATA[HMP学习－srl相关函数－sr_enbhdlr( )]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=21599</link>
<author>zhu_ruixian</author>
<pubDate>2007/1/9 15:53:24</pubDate>
<description><![CDATA[<P>函数原型：long sr_enbhdlr(long dev,long evt_type, handler)</P>
<P>Linux: long (*handler)( )<BR>Windows: long (*handler) (unsigned long parm)</P>
<P>参数：设备句柄，事件类型，事件处理函数</P>
<P>返回值：0成功 －1失败</P>
<P>作用：让事件处理函数开始监听事件</P>
<P>示例程序：</P>
<P>#include &lt;srllib.h&gt;<BR>#include &lt;dxxxlib.h&gt;<BR>/* LINUX: set up handler */<BR>long int dx_handler(void* pData)<BR>{<BR>printf( "dx_handler() called, event is 0x%x\n", sr_getevttype());<BR>return( 0 );<BR>/* tell SRL to dispose of the event */<BR>}<BR>main()<BR>{<BR>int dxxxdev;<BR>int mode = SR_POLLMODE;<BR>/* LINUX: set SRL to run in non-signal mode */<BR>if( sr_setparm( SRL_DEVICE, SR_MODEID, &amp;mode ) == -1 )<BR>{<BR>printf( "Failed to set SRL mode\n" );<BR>exit( 1 );<BR>}<BR>/* open dxxx channel device */<BR>if(( dxxxdev = dx_open( "dxxxB1C1", 0 )) == -1 )<BR>{<BR>printf( "dx_open failed\n" );<BR>exit( 1 );<BR>}<BR>/* Enable a handler for all events on dxxxdev */<BR>if( sr_enbhdlr( dxxxdev, EV_ANYEVT, dx_handler ) == -1 )<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "Error: could not enable handler\n");<BR>exit( 1 );<BR>}<BR>}</P>]]></description>
</item><item>
<title><![CDATA[HMP学习－srl相关函数－sr_dishdlr( )]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=21596</link>
<author>zhu_ruixian</author>
<pubDate>2007/1/9 15:29:26</pubDate>
<description><![CDATA[<P>函数原型：long sr_dishdlr(long dev,long evt_type, handler)</P>
<P>Linux: long (*handler)( )<BR>Windows: long (*handler) (unsigned long parm)</P>
<P>参数：设备句柄，事件类型，事件处理函数</P>
<P>返回值：0成功 －1失败</P>
<P>作用：让一个事件处理函数不在起作用。</P>
<P>示例程序：</P>
<P>#include &lt;srllib.h&gt;<BR>#include &lt;dxxxlib.h&gt;<BR>#include &lt;cstdio&gt;<BR>using namespace std;<BR>/* LINUX: set up handler */<BR>long int dx_handler(void * pdata){<BR>&nbsp;&nbsp;&nbsp; printf( "dx_handler() called, event is 0x%x\n", sr_getevttype());<BR>&nbsp;&nbsp;&nbsp; return( 0 );<BR>}<BR>main()<BR>{<BR>int dxxxdev;<BR>int mode = SR_POLLMODE;<BR>/* LINUX: set SRL to run in non-signal mode */<BR>if( sr_setparm( SRL_DEVICE, SR_MODEID, &amp;mode ) == -1 )<BR>{<BR>&nbsp;&nbsp; printf( "Failed to set SRL mode\n" );<BR>&nbsp;&nbsp; exit( 1 );<BR>}<BR>/* open dxxx channel device */<BR>if(( dxxxdev = dx_open( "dxxxB1C1", 0 )) == -1 )<BR>{<BR>printf( "dx_open failed\n" );<BR>exit( 1 );<BR>}<BR>/* enable handler dx_handler on device dxxxdev ..... */<BR>if( sr_enbhdlr( dxxxdev, EV_ANYEVT, dx_handler ) == -1 )<BR>{<BR>printf( "Error: could not enable handler\n" );<BR>exit( 1 );<BR>}<BR>getchar();<BR>/* Disable the handler */<BR>if( sr_dishdlr( dxxxdev, EV_ANYEVT, dx_handler ) == -1 )<BR>{<BR>printf( "Error: could not disable handler\n" );<BR>exit( 1 );<BR>}<BR>}</P>]]></description>
</item><item>
<title><![CDATA[HMP学习－srl相关函数－sr_GetThreadDeviceGroup( )]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=21594</link>
<author>zhu_ruixian</author>
<pubDate>2007/1/9 15:25:05</pubDate>
<description><![CDATA[<P>函数原型：</P>
<P>Linux &nbsp;long sr_GetThreadDeviceGroup (long *Devices,int *NumDevices)<BR>Windows &nbsp;int sr_GetThreadDeviceGroup (long *Devices,int *NumDevices)</P>
<P>参数：设备指针，设备个数</P>
<P>返回值：0成功 －1失败</P>
<P>作用：返回该线程创建的所有设备句柄。</P>
<P>示例程序：</P>
<P>#define MAX_DEVICES 96<BR>#define DEVICES_PER_TRUNK 24</P>
<P>EventPollThread ()<BR>{<BR>long Devices [MAX_DEVICES];<BR>int DevNum, index;<BR>long EventHandle;<BR>for (DevNum = 0; DevNum &lt; DEVICES_PER_TRUNK; DevNum++)<BR>{<BR>Devices [DevNum] = dx_open(...);<BR>}<BR>sr_CreateThreadDeviceGroup (Devices);<BR>while (1)<BR>{<BR>sr_WaitThreadDeviceGroup (-1);<BR>// do something with the event<BR>if (done == true)<BR>{<BR>break;<BR>}<BR>}<BR>DevNum = MAX_DEVICES;<BR>sr_GetThreadDeviceGroup (&amp;Devices, &amp;DevNum);<BR>printf ("%d devices in the device group:\n", DevNum);<BR>for (index = 0; index &lt; DevNum; index++)<BR>{<BR>// NOTE: This loop will execute 24 times<BR>printf ("Device handle #%2d: %d\n", index, Devices[index]);<BR>}<BR>sr_DeleteThreadDeviceGroup();<BR>}</P>]]></description>
</item><item>
<title><![CDATA[HMP学习－srl相关函数－sr_DeleteThreadDeviceGroup( )]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=21592</link>
<author>zhu_ruixian</author>
<pubDate>2007/1/9 15:20:08</pubDate>
<description><![CDATA[<P>函数原型：</P>
<P>Linux long sr_DeleteThreadDeviceGroup(void)<BR>Windows &nbsp;int sr_DeleteThreadDeviceGroup(void)</P>
<P>参数：空</P>
<P>返回值：0成功&nbsp; －1 失败</P>
<P>作用：移除所有的该线程创建的设备句柄组。</P>
<P>示例程序：</P>
<P>EventPollThread ()<BR>long Devices [24];<BR>int DevNum;<BR>long EventHandle;<BR>for (DevNum = 0; DevNum &lt; 24; DevNum++)<BR>Devices [DevNum] = dx_open(...);<BR>sr_CreateThreadDeviceGroup (Devices);<BR>while (1)<BR>sr_WaitThreadDeviceGroup (-1);<BR>// do something with the event<BR>if (done == true)<BR>{<BR>break;<BR>}<BR>}<BR>sr_DeleteThreadDeviceGroup();<BR>}</P>
<P>&nbsp;</P>]]></description>
</item><item>
<title><![CDATA[HMP学习－srl相关函数－sr_CreateThreadDeviceGroup( )]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=21591</link>
<author>zhu_ruixian</author>
<pubDate>2007/1/9 15:16:32</pubDate>
<description><![CDATA[<P>函数原型：</P>
<P>Linux long sr_CreateThreadDeviceGroup (long *Devices,int NumDevices)<BR>Windows int sr_CreateThreadDeviceGroup (long *Devices,int NumDevices)</P>
<P>参数：设备句柄指针。设备句柄个数。</P>
<P>返回值：0成功 －1失败</P>
<P>示例程序：</P>
<P>EventPollThread ()<BR>{<BR>long Devices [24];<BR>int DevNum;<BR>long EventHandle;<BR>for (DevNum = 0; DevNum &lt; 24; DevNum++)<BR>{<BR>Devices [DevNum] = dx_open(...);<BR>}<BR>sr_CreateThreadDeviceGroup (Devices, 24);<BR>while (1)<BR>{<BR>sr_WaitThreadDeviceGroup (-1);<BR>// do something with the event<BR>}<BR>}<BR></P>]]></description>
</item><item>
<title><![CDATA[HMP学习－srl相关函数－sr_AddToThreadDeviceGroup( )]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=21590</link>
<author>zhu_ruixian</author>
<pubDate>2007/1/9 15:10:46</pubDate>
<description><![CDATA[<P>函数原型：</P>
<P>Linux long sr_AddToThreadDeviceGroup (long *evices, int NumDevices)<BR>Windows: int sr_AddToThreadDeviceGroup (long *evices,int NumDevices)</P>
<P>参数：一列设备句柄列表的头指针。设备列表中设备句柄的个数。</P>
<P>返回值：0成功&nbsp; -1失败</P>
<P>示例程序;</P>
<P>EventPollThread ()<BR>{<BR>long Devices [24];<BR>int DevNum;<BR>long EventHandle;<BR>for (DevNum = 0; DevNum &lt; 24; DevNum++)<BR>{<BR>Devices [DevNum] = dx_open(...);<BR>}<BR>sr_CreateThreadDeviceGroup (Devices);<BR>while (1)<BR>{<BR>sr_WaitThreadDeviceGroup (-1);<BR>// do something with the event<BR>if (done == true)<BR>{<BR>break;<BR>}<BR>}<BR></P>]]></description>
</item><item>
<title><![CDATA[HMP学习－srl相关函数－ATDV_SUBDEVS()]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=21589</link>
<author>zhu_ruixian</author>
<pubDate>2007/1/9 15:04:21</pubDate>
<description><![CDATA[
<P>函数原型：long ATDV_SUBDEVS(int dev)</P>
<P>参数：设备句柄</P>
<P>返回值：设备句柄的子设备的数目</P>
<P>示例程序：</P>
<P>#include &lt;srllib.h&gt;<BR>#include &lt;dxxxlib.h&gt;<BR>int main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int dxxxdev;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Open a dxxx channel device */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(( dxxxdev = dx_open( "dxxxB1", 0 )) == -1 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "Error: cannot open device\n" );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit( 1 );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "Device has %d subdevices\n", ATDV_SUBDEVS( dxxxdev ));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<BR>}<BR></P>]]></description>
</item><item>
<title><![CDATA[HMP学习－srl相关函数－ATDV_NAMEP()]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=21588</link>
<author>zhu_ruixian</author>
<pubDate>2007/1/9 14:53:16</pubDate>
<description><![CDATA[<P>函数原型：char * ATDV_NAMEP(int dev)</P>
<P>参数：设备句柄</P>
<P>返回值：用来打开这个设备的字符串。设备名例如:<BR>&#8226; dxxxBbCc</P>
<P>&#8226; dtiBbTt</P>
<P>b 代表系统中的板卡号。</P>
<P>c 代表真实或虚拟D/4x板卡中的频道号</P>
<P>t&nbsp; 表示数字网络接口中的时间片序号</P>
<P>示例程序：</P>
<P>#include &lt;srllib.h&gt;<BR>#include &lt;dxxxlib.h&gt;<BR>int main(){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int dxxxdev;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Open a dxxx channel device */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(( dxxxdev = dx_open( "dxxxB1C1", 0 )) == -1 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "Error: cannot open device\n" );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit( 1 );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "Device name is %s\n", ATDV_NAMEP( dxxxdev ));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 1;<BR>}</P>]]></description>
</item><item>
<title><![CDATA[HMP学习－srl相关函数－ATDV_LASTERR（）]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=zhu_ruixian&amp;id=21587</link>
<author>zhu_ruixian</author>
<pubDate>2007/1/9 14:45:43</pubDate>
<description><![CDATA[<P>函数原型：long ATDV_LASTERR(int dev)</P>
<P>参数：设备句柄</P>
<P>返回值：句柄无效Linux返回EDV_BADDESC Windows返回<BR>AT_FAILURE，否则返回一个错误代码。错误代码在DEVICElib.h中定义。</P>
<P>示例程序：</P>
<P>#include &lt;srllib.h&gt;<BR>#include &lt;dxxxlib.h&gt;<BR>int main(){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int dxxxdev;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int parm = ET_RON;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Open dxxx channel device */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(( dxxxdev = dx_open( "dxxxB1C1", 0 )) == -1 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "Error: cannot open device\n" );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit( 1 );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*Attempt to set a board level parameter on a channel device-will fail */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( dx_setparm( dxxxdev, DXBD_R_EDGE, &amp;parm ) == -1 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "The last error on the device was 0x%x\n", ATDV_LASTERR( dxxxdev ));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>}</P>]]></description>
</item>
</channel>
</rss>