周立功 zlg PCIe-9120I CAN卡无法使用python开启

2018年走了…
2019年来了…
工作日第一天就排了一颗打雷…

前两天领导指派任务做一个仪表的上位机, 公司用的都是zlg的USB-CAN盒或者PCIe-CAN卡, 且官方提供的接口\例程都是非python的, 对于我这么一个只会python的小白就尴尬了, 但是还好官方提供有dll文件, 因而就可以通过python的ctype来调用接口命令:

首先从官网下载api(CAN接口卡二次开发函数库)
在这里插入图片描述
根据操作系统选择32位或64位
在该目录下保存如下代码

from ctypes import *

class _VCI_INIT_CONFIG(Structure):
    _fields_ = [('AccCode', c_ulong),
                ('AccMask', c_ulong),
                ('Reserved', c_ulong),
                ('Filter', c_ubyte),
                ('Timing0', c_ubyte),
                ('Timing1', c_ubyte),
                ('Mode', c_ubyte)]


class _VCI_CAN_OBJ(Structure):
    _fields_ = [('ID', c_uint),
                ('TimeStamp', c_uint),
                ('TimeFlag', c_byte),
                ('SendType', c_byte),
                ('RemoteFlag', c_byte),
                ('ExternFlag', c_byte),
                ('DataLen', c_byte),
                ('Data', c_byte*8),
                ('Reserved', c_byte*3)]


vic = _VCI_INIT_CONFIG()
vic.AccCode = 0x00000000
vic.AccMask = 0xffffffff
vic.Filter = 0
vic.Timing0 = 0x01
vic.Timing1 = 0x1c
vic.Mode = 0

vco = _VCI_CAN_OBJ()
vco.ID = 0x00000001
vco.SendType = 0
vco.RemoteFlag = 0
vco.ExternFlag = 1
vco.DataLen = 8
vco.Data = (57, 0, 0, 0, 0, 0, 0, 0)


canLib = windll.LoadLibrary('./ControlCAN.dll')
print('打开设备: %d' % (canLib.VCI_OpenDevice(21, 0, 0)))
print('设置波特率: %d' % (canLib.VCI_SetReference(21, 0, 0, 0, pointer(c_int(0x1C0008)))))
print('初始化: %d' % (canLib.VCI_InitCAN(21, 0, 0, pointer(vic))))
print('启动: %d' % (canLib.VCI_StartCAN(21, 0, 0)))
print('清空缓冲区: %d' % (canLib.VCI_ClearBuffer(21, 0, 0)))
print('发送: %d' % (canLib.VCI_Transmit(21, 0, 0, pointer(vco), 1)))

运行后发现:
如果是PCIe-9120I CAN卡(对应的设备ID:17), 无法开启设备,即:

打开设备: 0
设置波特率: 0
初始化: 0
启动: 0
清空缓冲区: 0
发送: 0

但是用官方提供的CANtest工具可以正常访问, 折腾好久最终放弃使用PCIe-9120I.
USBCAN-2E-U CAN盒可以正常访问,即:

打开设备: 1
设置波特率: 1
初始化: 1
启动: 1
清空缓冲区: 1
发送: 1

结论:

  • PCIe-9120I CAN卡无法通过python访问, 问题原因不详

  • USBCAN-2E-U CAN盒可以正常访问

另外, 尽量不要在linux,如Ubuntu上开发zlg CAN上位机, 你会发现这样会耽误你大量的时间精力的.

参考: Python调用周立功CAN接口卡接口库函数

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值