No.65662 作者:emtronixuser 邮件:support@sw996.com ID:136446 登陆:1次 文章数:48篇 最后登陆IP:118.115.14.158 最后登陆:2010/1/6 21:57:10 注册:2009/9/9 12:45:20 财富:100 发帖时间:2009/9/28 12:06:22 发贴者IP:60.255.30.10 标题:emtronixuser:CAN接口COM组件在WinCE平台上的实现 摘要:No.65662CAN接口COM组件在WinCE平台上的实现 文章来源: 控制器局域网(CAN)是一个串行、异步、多主的通信协议,它以其高性能、高可靠性以及灵活的设计受到人们的重视,应用越来越广泛。英创公司的ARM9工控主板如EM9161,EM9260等均支持CAN总线接口,并实现了基于Windows CE规范的流式驱动程序(Stream Device Driver),对于大多数基于C/C++开发环境的应用,英创公司以静态库can_api.lib形式提供了相应接口函数,客户通过相应的API函数即可完成对CAN接口的操作。但对于使用像C#这样高级语言的应用,由于一般不支持静态库的调用,因此需要新的方法来解决这个问题。我们目前采用的基本方法是在该静态库的基础上,针对CAN通讯接口的数据收发以及对出错情况监测的应用,封装一个基于CAN通讯接口应用的COM组件,该组件中提供了一套更为简洁的接口方法函数,可以方便多种开发工具的调用,如:C#、VB、LabView等。使用时客户只需在系统中一次性注册该组件,并在应用程序中引用对应的DLL或TLB文件,就能方便使用其相应的接口方法函数了。 本文介绍的基于英创工控主板CAN通讯接口的COM组件提供五个接口方法函数:打开CAN接口,关闭CAN接口,向CAN接口写数据,从CAN接口读取数据以及读取接口错误代码。客户方调用COM组件打开CAN接口后,COM组件服务器便在组件内部创建两个线程,一个用于接收CAN接口数据,一个用于CAN通讯错误处理。数据接收线程里通过WaitForSingleObject来等待CAN接口的接收事件发生,当CAN接口收到数据后,将数据放入指定的接收数据缓存中,客户通过调用读数据函数,将数据从缓存中读出。后面会对各函数做详细的说明。 一、数组作为组件参数 作为通信类组件,数组常常作为接口方法函数参数传递,以交换数据,COM 组件是运行在分布式环境中的,对于一个组件程序(DLL或EXE) ......
>>返回讨论的主题
|