基于WinCE的智能车载仪表设计
WCHAR * szRegKey=L"DriversBuiltInCAN";
WCHAR * szPrefix=L"CAN";
WCHAR * szDLL=L"can.dll";
WCHAR * szFriendlyName=L"CANDriver";
DWORD * DrvIndex=1;
DWORD * DrvOrder=0;
通过以上代码完成注册之后,调用 ActivateDeviceEx()函数进行加载驱动。
3.3 CAN总线驱动通信流程
CAN总线控制器驱动程序主要用于设置MCP2515的波特率、MCP2515的验收过滤器、CAN消息传送模式和CAN收发数据方式。驱动程序是连接上位应用程序和硬件的一个中间纽带。智能车载仪表系统在EVC++环境下进行CAN总线开发。
流式驱动以文件的方式打开函数CreateFile( ):驱动成功打开后,CreateFile( )函数返回不为INVALIDHANDLEVALUE的句柄,此句柄也是关闭驱动函数CloseHandle( )的参数。CAN设置函数DeviceIoControl( )接收由CreateFile( )函数获得的句柄及控制命令码,设置输入/输出缓冲区以及缓冲区的大小。函数执行完成后返回实际输出的缓冲区大小等。CAN总线发送与接收函数WriteFile( )和ReadFile( ),利用驱动文件句柄、发送和接收缓冲区等参数完成数据的发送和接收,操作成功后返回实际发送和接收的字节数。
为了不让主线程一直处于等待数据到来的状态,让主线程拥有时间令牌来操作其他事情,程序采用多线程设计,创建一个接收数据线程。接收数据线程是一个无限循环,它不断查询CAN总线数据退出标志,如果退出标志有效,则该循环结束退出。驱动程序流程如图3所示。
图3 CAN总线驱动通信流程
结语
目前,基于嵌入式技术的车载仪表逐渐开始流行。本文使用基于WinCE的ARM9微处理器作为开发平台,处理速度快,功能强大;使用CAN总线技术进行信号的相互传输,CAN总线实时接收汽车部件发送来的信息,并进行处理与分析;使用WinCE操作系统,界面友好。本智能车载仪表系统可以节约成本、降低功耗,并且可维护性强,便于扩展和升级。
智能车载仪表 S3C2440 WinCE CAN总线 相关文章:
- 基于PXA270与WinCE的分布式地铁车载系统开发(01-06)
- GPS导航数据提取的设计与研究(01-25)
- 现代电动车辆中电控技术应用(03-01)
- CAN总线混合动力汽车电控系统的设计与实现(08-29)
- 利用CAN总线的进行汽车轮速传感器系统设计(09-22)