亲测可用!!CANalyst

您所在的位置:网站首页 can自发自收硬件怎么接 亲测可用!!CANalyst

亲测可用!!CANalyst

2024-07-11 18:56| 来源: 网络整理| 查看: 265

目录

一、设备连通步骤 

二、手动测试步骤

三、python收发测试

四、双向收发测试 

官网:珠海创芯科技有限公司 - 珠海创芯科技,可下载相应的驱动程序和说明文档

一、设备连通步骤 

1. 将CANalyst—Ⅱ按照如下方式接线方式连接

实物图

2. USB一端连电脑,另一端连CANalyst—Ⅱ

 3.安装USB-CAN Tool 调试软件

除了不想安装到C盘外,其它步骤一直点下一步就行 

下载链接:

        https://pan.baidu.com/s/1-_OvIwui0VXQS46-12sa6Q?pwd=o67h 

提取码:o67h

安装完毕后:

4.运行USB-CAN Tool

4.1 USB-CAN Tool 界面菜单中,点击“设备操作-》USBCAN 测试工具”:

 4.2 接好线,插入设备,点击左上角的“打开并测试”按钮,软件会自动测试(依次打开设备->初始化 CAN1/CAN2 两个通道->CAN1 发送一个序列、CAN2 接收并校验->CAN2发送一个序列、CAN1 接收并校验->关闭设备->结果显示):

 点击后:

 此时CANalyst—Ⅱ会有灯光闪烁:

 如果出现以下结果,请按提示检查接线、终端电阻配置,插拔 USB 重新测试:

二、手动测试步骤

1.在弹出的 USB-CAN Tool 界面菜单中,点击“设备操作-》启动设备”:

 2.在接下来弹出的初始化参数对话框中,将 CAN1 通道和 CAN2 通道参数设置为相同波特率,这里将 CAN1 与 CAN2 的波特率配置为 500K,单击“确定”即可:

 

 3.打开成功后,在界面上选择 CAN1 通道,点击“发送”按钮发送一帧数据,此时 CAN2 通道将接收一帧相同的数据,说明 CAN1 通道发送正常,CAN2 通道接收正常。

然后切换发送通道为CAN2 通道,点击“发送”按钮发送一帧数据,此时 CAN1 通道将接收一帧相同的数据,说明 CAN2 通道发送正常,CAN1 通道接收正常。

注:如果点击发送后,没有接收到数据,请检查端子接线是否牢固!

三、python收发测试

共7步:

1.读取动态链接库 2.VCI_OpenDevice 打开设备 3.VCI_InitCAN 初始化指定CAN通道 4.VCI_StartCAN 打开指定CAN通道 5.VCI_Transmit 发送数据 6.VCI_Receive 接收数据 7.VCI_CloseDevice 关闭设备

完整代码: 

from ctypes import * STATUS_OK = 1 RESERVED = 0 # 保留字段 """1.读取动态链接库""" # 依赖的DLL文件(存放在根目录下) CAN_DLL_PATH = './ControlCAN.dll' # 读取DLL文件 Can_DLL = windll.LoadLibrary(CAN_DLL_PATH) """2.VCI_OpenDevice 打开设备""" # 打开设备, 一个设备只能打开一次 # return: 1=OK 0=ERROR def connect(VCI_USB_CAN_2, DEV_INDEX): # VCI_USB_CAN_2: 设备类型 # DEV_INDEX: 设备索引 # RESERVED: 保留参数 ret = Can_DLL.VCI_OpenDevice(VCI_USB_CAN_2, DEV_INDEX, RESERVED) if ret == STATUS_OK: print('VCI_OpenDevice: 设备开启成功') else: print('VCI_OpenDevice: 设备开启失败') return ret """3.VCI_InitCAN 初始化指定CAN通道""" # 通道初始化参数结构 # AccCode: 过滤验收码 # AccMask: 过滤屏蔽码 # Reserved: 保留字段 # Filter: 滤波模式 0/1=接收所有类型 2=只接收标准帧 3=只接收扩展帧 # Timing0: 波特率 T0 # Timing1: 波特率 T1 # Mode: 工作模式 0=正常工作 1=仅监听模式 2=自发自收测试模式 class VCI_CAN_INIT_CONFIG(Structure): _fields_ = [ ("AccCode", c_uint), ("AccMask", c_uint), ("Reserved", c_uint), ("Filter", c_ubyte), ("Timing0", c_ubyte), ("Timing1", c_ubyte), ("Mode", c_ubyte) ] # 过滤验收码 ACC_CODE = 0x80000000 # 过滤屏蔽码 ACC_MASK = 0xFFFFFFFF # 滤波模式 0/1=接收所有类型 FILTER = 0 # 波特率 T0 TIMING_0 = 0x03 # 波特率 T1 TIMING_1 = 0x1C # 工作模式 0=正常工作 MODE = 0 # 初始化通道 # return: 1=OK 0=ERROR def init(VCI_USB_CAN_2, DEV_INDEX, can_index): init_config = VCI_CAN_INIT_CONFIG(ACC_CODE, ACC_MASK, RESERVED, FILTER, TIMING_0, TIMING_1, MODE) # VCI_USB_CAN_2: 设备类型 # DEV_INDEX: 设备索引 # can_index: CAN通道索引 # init_config: 请求参数体 ret = Can_DLL.VCI_InitCAN(VCI_USB_CAN_2, DEV_INDEX, can_index, byref(init_config)) if ret == STATUS_OK: print('VCI_InitCAN: 通道 ' + str(can_index + 1) + ' 初始化成功') else: print('VCI_InitCAN: 通道 ' + str(can_index + 1) + ' 初始化失败') return ret """4.VCI_StartCAN 打开指定CAN通道""" # 打开通道 # return: 1=OK 0=ERROR def start(VCI_USB_CAN_2, DEV_INDEX, can_index): # VCI_USB_CAN_2: 设备类型 # DEV_INDEX: 设备索引 # can_index: CAN通道索引 ret = Can_DLL.VCI_StartCAN(VCI_USB_CAN_2, DEV_INDEX, can_index) if ret == STATUS_OK: print('VCI_StartCAN: 通道 ' + str(can_index + 1) + ' 打开成功') else: print('VCI_StartCAN: 通道 ' + str(can_index + 1) + ' 打开失败') return ret """5.VCI_Transmit 发送数据""" # CAN帧结构体 # ID: 帧ID, 32位变量, 数据格式为靠右对齐 # TimeStamp: 设备接收到某一帧的时间标识, 时间标示从CAN卡上电开始计时, 计时单位为0.1ms # TimeFlag: 是否使用时间标识, 为1时TimeStamp有效, TimeFlag和TimeStamp只在此帧为接收帧时才有意义 # SendType: 发送帧类型 0=正常发送(发送失败会自动重发, 重发时间为4秒, 4秒内没有发出则取消) 1=单次发送(只发送一次, 发送失败不会自动重发, 总线只产生一帧数据)[二次开发, 建议1, 提高发送的响应速度] # RemoteFlag: 是否是远程帧 0=数据帧 1=远程帧(数据段空) # ExternFlag: 是否是扩展帧 0=标准帧(11位ID) 1=扩展帧(29位ID) # DataLen: 数据长度DLC( 0: for i in range(receive_res): # print(hex(vci_can_obj[i].ID)) # print(list(vci_can_obj[i].Data)) yield hex(vci_can_obj[i].ID), list(vci_can_obj[i].Data) else: print("接收区缓存区为空")


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3