# 珠海创芯 CAN 控制器 **Repository Path**: zhang_ningning/zhuhai_core_can_controller ## Basic Information - **Project Name**: 珠海创芯 CAN 控制器 - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2018-10-27 - **Last Updated**: 2023-09-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 珠海创芯 CAN 控制器 ## 项目介绍 珠海创芯 CAN 控制器python驱动程序 ## 安装教程 编译文件 python setup.py build 安装 python setup.py install ## 使用说明 ### zhcxgd_can 函数: #### 打开设备 open(DeviceType=4,DeviceInd=0) DeviceType: USBCAN-2A,USBCAN-2C,CANalyst-II 都是4 DeviceInd:第一个插入的设备是0,第二个插入的设备是1,以此类推 #### 关闭设备 close() #### 初始化设备 InitCAN(CANInd=0,AccCode=0x80000000,AccMask=0xFFFFFFFF,Filter=FILTER_ALL, BaudRate=BAUDRATE_250K,mode=NORMAL_MODE): CANInd:通道号 AccCode 验收码。SJA1000的帧过滤验收码。对经过屏蔽码过滤为“有关位”进行匹配,全部匹配成功后,此帧可以被接收。否则不接收。左对齐 AccMask 屏蔽码。SJA1000的帧过滤屏蔽码。对接收的CAN帧ID进行过滤,对应位为0的是“有关位”,对应位为1的是“无关位”。 屏蔽码推荐设置为0xFFFFFFFF,即全部接收。左对齐 Filter 滤波方式,包括 zhcxgd_can.FILTER_ALL zhcxgd_can.FILTER_STANDARD zhcxgd_can.FILTER_EXTEND BaudRate 波特率 ,包括 zhcxgd_can.BAUDRATE_10K zhcxgd_can.BAUDRATE_20K zhcxgd_can.BAUDRATE_40K zhcxgd_can.BAUDRATE_50K zhcxgd_can.BAUDRATE_80K zhcxgd_can.BAUDRATE_100K zhcxgd_can.BAUDRATE_125K zhcxgd_can.BAUDRATE_200K zhcxgd_can.BAUDRATE_250K zhcxgd_can.BAUDRATE_400K zhcxgd_can.BAUDRATE_500K zhcxgd_can.BAUDRATE_666K zhcxgd_can.BAUDRATE_800K zhcxgd_can.BAUDRATE_1000K zhcxgd_can.BAUDRATE_33K33 zhcxgd_can.BAUDRATE_66K66 zhcxgd_can.BAUDRATE_83K33 mode 模式 zhcxgd_can.NORMAL_MODE zhcxgd_can.SILENT_MODE zhcxgd_can.LOOP_BACK_MODE #### 读取设备信息 ReadBoardInfo() #### 清空指定CAN通道的缓冲区 ClearBuffer(CANInd): CANInd : 0或者1 #### 获取指定CAN通道的接收缓冲区中,接收到但尚未被读取的帧数量。主要用途是配合VCI_Receive使用,即缓冲区有数据,再接收。 GetReceiveNum(CANInd) CANInd : 0或者1 #### 启动CAN卡的某一个CAN通道。有多个CAN通道时,需要多次调用。 StartCAN(CANInd) CANInd : 0或者1 #### 复位 CAN卡的某一个CAN通道。主要用与 VCI_StartCAN配合使用,无需再初始化,即可恢复CAN卡的正常状态。比如当CAN卡进入总线关闭状态时,可以调用这个函数。 ResetCAN(CANInd) CANInd : 0或者1 #### 发送数据 Transmit(CANInd,pyvco_lsit) CANInd : 0或者1 pyvco_lsit :(详见pyvco_lsit 定义) #### 接收数据 Receive(self,CANInd,Length=2500): CANInd : 0或者1 Length 本次接收的最大帧数,实际返回值小于等于这个值 该值为所提供的存储空间大小,适配器中为每个通道设置了2000帧左右的接收缓存区,用户根据自身系统和工作环境需求,在1到2000之间选取适当的接收数组长度。一般Length设置大于2000,如:2500为宜,可有效防止数据溢出导致地址冲突。同时每隔30ms调用一次Receive为宜。(在满足应用的时效性情况下,尽量降低调用VCI_Receive的频率,只要保证内部缓存不溢出,每次读取并处理更多帧,可以提高运行效率。) #### 复位USB-CAN适配器,复位后需要重新使用VCI_OpenDevice打开设备。等同于插拔一次USB设备。 UsbDeviceReset(DeviceType=None,DeviceInd=None) DeviceType:设备类型 DeviceInd:设备ID 默认值是复位当前打开的设备 #### 当同一台PC上使用多个USB-CAN的时候,可用此函数查找当前的设备,并获取所有设备的序列号。 FindUsbDevice() ### zhcxgd_can_channel 函数: #### 清空当前CAN通道的缓冲区 ClearBuffer() #### 获取当前CAN通道的接收缓冲区中,接收到但尚未被读取的帧数量。主要用途是配合VCI_Receive使用,即缓冲区有数据,再接收。 GetReceiveNum() #### 启动当前CAN通道 StartCAN() #### 复位当前CAN通道 ResetCAN() #### 发送数据 Transmit(sdtat) sdtat 类型为bytes或者 pyvco_lsit(详见pyvco_lsit 定义) #### 设置remote参数 setRemote(remote) remote:class Remote(ID,RemoteFlag,ExternFlag) ### Remote 定义: #### Remote(ID,RemoteFlag,ExternFlag) ID:目标ID RemoteFlag:是否是远程帧。=False 或者0时为为数据帧,=True或者非0时为远程帧(数据段空)。 ExternFlag:是否是扩展帧。=False 或者0时为标准帧(11位ID),=True或者非0时为扩展帧(29位ID) ### pyvco_lsit 定义: [ ID,#帧ID RemoteFlag,#是否是远程帧。=0时为为数据帧,=1时为远程帧(数据段空) ExternFlag,#是否是扩展帧。=0时为标准帧(11位ID),=1时为扩展帧(29位ID)。 Data#CAN帧的数据,最大是8个字节 ] ## 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)