Can.cpp 模块设计说明 1. 总则: 传送故障记录数据或运行记录数据时,不传送参数数据和实时数据。 传送参数数据和实时数据可同时传送。 在界面层: 1. 读故障记录数据BUTTON 和运行记录数据BUTTON 和记录实时数据BUTTON 没有按下,参数没有操作时,才能按下读故障记录数据BUTTON 或运行记录数据BUTTON。否则弹出信息框。 2. 按下故障记录数据BUTTON 后,把运行记录数据BUTTON 和记录实时数据BUTTON 变灰,参数MENU 和参数界面上的读和修改BUTTON 变灰,故障记录数据读完后,上述按钮复原。 对按下运行记录数据BUTTON 作同样处理。 3. 按下记录实时数据BUTTON 时,把故障记录数据BUTTON 和运行记录数据BUTTON 变灰。按下停止记录实时数据BUTTON 时,把故障记录数据BUTTON 和运行记录数据BUTTON 复原。 4. 对参数上载和修改时,把故障记录数据BUTTON 和运行记录数据BUTTON 变灰,完成操作后把故障记录数据BUTTON 和运行记录数据BUTTON 复原。 CAN 和以太网类似,相应7 种事件:关闭CAN、实时数据请求、读参数、写参数、发送心跳报文,读故障记录,读运行记录。 2 功能 模块类名为: Class Can 类对象定义在Can.cpp 中,是一个全局对象。 Class Lan g_Can; 该模块的功能为: 1. 通过USB转CAN与下位机进行实时数据请求和参数的上传下载, 读故障记录,读运行记录; 2. 通过PCI 插卡与下位机进行实时数据请求和参数的上传下载, 读故障记录,读运行记录; 3. 出错处理。 3 流程逻辑 CAN 部分由线程CanThread()完成5 个事件。 OpenCan(DWORD DevType,DWORD DevIndex,DWORD Reserved)函数通过调用API 函数VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD Reserved)打开CAN; CloseCan(DWORD DevType,DWORD DevIndex)函数通过调用API 函数VCI_CloseDevice(DWORD DevType,DWORD DevIndex)关闭CAN; StartCanThread()函数用于开启Can 线程; SuspendedCanThread()函数用于关闭线程; CanThread()为Can 线程函数,用于执行五种事件:关闭Can、发送实时数据请求、读参数、写参数和发送心跳报文。 SendCanPacket(int iEvent,int Index = 0,int SubIndex = 0,*Data = NULL)为CAN 发送报文函数,iEvent 为事件值,Index、SubIndex、Data 用于参数的读写事件。根据不同的事件,发送相应的报文。 RecvCanPacket() JudgeOvertime(); 以...