当前位置: 首页 > wzjs >正文

阜阳网站制作公司找哪家网站提交收录入口链接

阜阳网站制作公司找哪家,网站提交收录入口链接,网页制作常用的技术有哪些,专门做教育咨询有限公司网站文章目录 一、周立功官网下载函数库和例程二、周立功设备及通道的打开和关闭三、获取设备信息四、通道配置五、获取接收的报文数据# 六、报文发送提示:加载 zlgcan.dll 时报错 - OSError: [WinError 193] %1 不是有效的 Win32 应用程序提示:无法打开设备…

文章目录

  • 一、周立功官网下载函数库和例程
  • 二、周立功设备及通道的打开和关闭
  • 三、获取设备信息
  • 四、通道配置
  • 五、获取接收的报文数据
  • # 六、报文发送
  • 提示:加载 zlgcan.dll 时报错 - OSError: [WinError 193] %1 不是有效的 Win32 应用程序
  • 提示:无法打开设备
  • 参考

本文以 USBCANFD200U CAN盒为例

基于python ,使用ZLG USBCANFD200U CAN盒进行收发报文等上位机Demo

一、周立功官网下载函数库和例程

下载链接:https://manual.zlg.cn/web/#/55?page_id=2286

在这里插入图片描述
在这里插入图片描述

二、周立功设备及通道的打开和关闭

在这里插入图片描述

import zlgcandef main():# 创建can实例zcanlib = zlgcan.ZCAN()# 打开CAN设备canDriveHandle = zcanlib.OpenDevice(zlgcan.ZCAN_USBCANFD_200U, 0, 0)if canDriveHandle == zlgcan.INVALID_DEVICE_HANDLE:print("打开设备失败!")else:print("打开设备成功!")# 初始化chn_cfg = zlgcan.ZCAN_CHANNEL_INIT_CONFIG()chn0_handle = zcanlib.InitCAN(canDriveHandle, 0, chn_cfg)# 启动CAN通道zcanlib.StartCAN(chn0_handle)# 关闭CAN设备zcanlib.CloseDevice(canDriveHandle)if __name__ == '__main__':main()

三、获取设备信息

import zlgcandef main():# 创建can实例zcanlib = zlgcan.ZCAN()# 打开CAN设备canDriveHandle = zcanlib.OpenDevice(zlgcan.ZCAN_USBCANFD_200U, 0, 0)if canDriveHandle == zlgcan.INVALID_DEVICE_HANDLE:print("打开设备失败!")else:print("打开设备成功!")# 获取设备信息deviceInfo = zcanlib.GetDeviceInf(canDriveHandle)print("获取 硬件版本号:", deviceInfo.hw_version)print("获取 固件版本号:", deviceInfo.fw_version)print("获取 驱动程序版本号:", deviceInfo.dr_version)print("获取 接口库版本号:", deviceInfo.in_version)print("获取 支持通道数量:", deviceInfo.can_num)print("获取 板卡的序列号:", deviceInfo.serial)print("获取 硬件类型:", deviceInfo.hw_type)# 关闭CAN设备zcanlib.CloseDevice(canDriveHandle)if __name__ == '__main__':main()

四、通道配置

import zlgcandef main():# 创建can实例zcanlib = zlgcan.ZCAN()# 打开CAN设备canDriveHandle = zcanlib.OpenDevice(zlgcan.ZCAN_USBCANFD_200U, 0, 0)if canDriveHandle == zlgcan.INVALID_DEVICE_HANDLE:print("打开设备失败!")else:print("打开设备成功!")'''仲裁域波特率:"50K":12696558,"100K":4307950,"125K":4304830,"250K":110526,"500K":104286,"800K":101946,"1M":101166数据域波特率:"1M":8487694,"2M":4260362,"4M":66058,"5M":66055'''# 初始化chn0_cfg = zlgcan.ZCAN_CHANNEL_INIT_CONFIG()    chn0_cfg.can_type = zlgcan.ZCAN_TYPE_CANFD  # 设置为 CANFD 协议chn0_cfg.config.canfd.abit_timing = 104286  # 设置仲裁域波特率 500Kchn0_cfg.config.canfd.dbit_timing = 4260362 # 设置数据域波特率 2Mchn0_handle = zcanlib.InitCAN(canDriveHandle, 0, chn0_cfg)# 启动CAN通道zcanlib.StartCAN(chn0_handle)# 关闭CAN设备zcanlib.CloseDevice(canDriveHandle)if __name__ == '__main__':main()

五、获取接收的报文数据

import zlgcan
import timedef main():# 创建can实例zcanlib = zlgcan.ZCAN()# 打开CAN设备canDriveHandle = zcanlib.OpenDevice(zlgcan.ZCAN_USBCANFD_200U, 0, 0)if canDriveHandle == zlgcan.INVALID_DEVICE_HANDLE:print("打开设备失败!")else:print("打开设备成功!")'''仲裁域波特率:"50K":12696558,"100K":4307950,"125K":4304830,"250K":110526,"500K":104286,"800K":101946,"1M":101166数据域波特率:"1M":8487694,"2M":4260362,"4M":66058,"5M":66055'''# 初始化chn0_cfg = zlgcan.ZCAN_CHANNEL_INIT_CONFIG()    chn0_cfg.can_type = zlgcan.ZCAN_TYPE_CANFD  # 设置为 CANFD 协议chn0_cfg.config.canfd.abit_timing = 104286  # 设置仲裁域波特率 500Kchn0_cfg.config.canfd.dbit_timing = 4260362 # 设置数据域波特率 2Mchn0_handle = zcanlib.InitCAN(canDriveHandle, 0, chn0_cfg)# 启动CAN通道zcanlib.StartCAN(chn0_handle)total_ReceiveNum = 0 # 总共接收到的报文数量while(1):can_num = zcanlib.GetReceiveNum(chn0_handle, zlgcan.ZCAN_TYPE_CAN) # 获取缓冲区 CAN 报文数量canfd_num = zcanlib.GetReceiveNum(chn0_handle, zlgcan.ZCAN_TYPE_CANFD) # # 获取缓冲区 CANFD 报文数量if can_num != 0 or canfd_num != 0:while can_num >= 1:read_cnt = 10 if can_num >= 10 else can_num # 若接收缓冲区的报文数量小于10,就以缓冲区内的数量进行读取can_msgs, act_num = zcanlib.Receive(chn0_handle, read_cnt, 5) # 5 表示缓冲区无数据,函数阻塞等待时间,单位毫秒for i in range(act_num): #update datatotal_ReceiveNum += 1rev_Data = " "print("接收到的报文数量:", total_ReceiveNum)print("报文ID:", can_msgs[i].frame.can_id)print("数据长度:", can_msgs[i].frame.can_dlc)for j in range(can_msgs[i].frame.can_dlc): rev_Data = rev_Data + str(can_msgs[i].frame.data[j]) + " "print("数据:", rev_Data)else:breakcan_num -= act_numwhile canfd_num >= 1:read_cnt = 10 if canfd_num >= 10 else canfd_num # 若接收缓冲区的报文数量小于10,就以缓冲区内的数量进行读取canfd_msgs, act_num = zcanlib.ReceiveFD(chn0_handle, read_cnt, 5) # 5 表示缓冲区无数据,函数阻塞等待时间,单位毫秒for i in range(act_num): #update datatotal_ReceiveNum += 1rev_Data = " "print("接收到的报文数量:", total_ReceiveNum)print("报文ID:", canfd_msgs[i].frame.can_id)print("数据长度:", canfd_msgs[i].frame.len)for j in range(canfd_msgs[i].frame.len): rev_Data = rev_Data + str(canfd_msgs[i].frame.data[j]) + " "print("数据:", rev_Data)else:breakcanfd_num -= act_numelse:# print("can_num = ", can_num, "canfd_num = ", canfd_num)time.sleep(0.002) #wait 2ms# 关闭CAN设备zcanlib.CloseDevice(canDriveHandle)if __name__ == '__main__':main()

# 六、报文发送

import zlgcan
import timedef main():# 创建can实例zcanlib = zlgcan.ZCAN()# 打开CAN设备canDriveHandle = zcanlib.OpenDevice(zlgcan.ZCAN_USBCANFD_200U, 0, 0)if canDriveHandle == zlgcan.INVALID_DEVICE_HANDLE:print("打开设备失败!")else:print("打开设备成功!")'''仲裁域波特率:"50K":12696558,"100K":4307950,"125K":4304830,"250K":110526,"500K":104286,"800K":101946,"1M":101166数据域波特率:"1M":8487694,"2M":4260362,"4M":66058,"5M":66055'''# 初始化chn0_cfg = zlgcan.ZCAN_CHANNEL_INIT_CONFIG()    chn0_cfg.can_type = zlgcan.ZCAN_TYPE_CANFD  # 设置为 CANFD 协议chn0_cfg.config.canfd.abit_timing = 104286  # 设置仲裁域波特率 500Kchn0_cfg.config.canfd.dbit_timing = 4260362 # 设置数据域波特率 2Mchn0_handle = zcanlib.InitCAN(canDriveHandle, 0, chn0_cfg)# 启动CAN通道zcanlib.StartCAN(chn0_handle)total_ReceiveNum = 0 # 总共接收到的报文数量while(1):send_data = [1,2,3,4,5,6,7,8,9,10,11,12]# 发送 CAN 报文msg_Can = zlgcan.ZCAN_Transmit_Data()msg_Can.transmit_type =  1 # 发送方式, 0=正常发送, 1=单次发送, 2=自发自收, 3=单次自发自收。msg_Can.frame.can_id = 25msg_Can.frame.can_dlc = 8for i in range(msg_Can.frame.can_dlc):msg_Can.frame.data[i] = send_data[i]zcanlib.Transmit(chn0_handle, msg_Can, 1) # 1 表示报文数目time.sleep(0.5) #wait 500ms# 发送 CANFD 报文msg_Canfd = zlgcan.ZCAN_TransmitFD_Data()msg_Canfd.frame.can_id = 45msg_Canfd.frame.len = 12for i in range(msg_Canfd.frame.len):msg_Canfd.frame.data[i] = send_data[i]zcanlib.TransmitFD(chn0_handle, msg_Canfd, 1) # 1 表示报文数目time.sleep(0.5) #wait 500ms# 关闭CAN设备zcanlib.CloseDevice(canDriveHandle)if __name__ == '__main__':main()

提示:加载 zlgcan.dll 时报错 - OSError: [WinError 193] %1 不是有效的 Win32 应用程序

这通常是由于 Python 解释器的位数(32 位或 64 位)与 DLL 文件的位数不兼容导致的。
可以通过以下 Python 代码来确认 Python 解释器的位数:

import struct
print(struct.calcsize("P") * 8)

运行上述代码后,如果输出结果是 32,则表示你使用的是 32 位的 Python 解释器;如果输出结果是 64,则表示使用的是 64 位的 Python 解释器。

提示:无法打开设备

从下载的 demo 中,找到 kerneldlls 文件夹,将其放到 zlgcan.py 同一路径下
在这里插入图片描述

  • 返回 Python 专栏目录索引

参考

  • Python+周立功can卡+can收发
http://www.dtcms.com/wzjs/320817.html

相关文章:

  • 网站开发的工作流程数据分析平台
  • 网站开发品牌有哪些域名ip查询查网址
  • 网站建设包括什么科目企业培训
  • 手机移动端网站是什么搜索引擎收录提交入口
  • 15.下面对网站结构描述正确的是( )网球新闻最新消息
  • 域名刚到期就被跳转到其他网站域名收录查询
  • 网站套站是什么意思站长工具最近查询
  • 定制做网站服务广点通官网
  • 一流的上海网站建设公武汉seo网站推广
  • 昌黎县城乡建设局网站网站设计需要什么
  • 个人网站备案所需材料手机优化游戏性能的软件
  • 从客户—管理者为某一公司做一份电子商务网站管理与维护的方案seo1域名查询
  • 电子商务网站建设指导思想360搜索优化
  • 网站服务器做缓存漯河网站推广公司
  • 网站优化待遇网站数据分析
  • 珠海斗门建设局官方网站上百度首页
  • 长春长春网站建设公司短链接购买
  • 锦州做网站公司百度如何优化排名靠前
  • 营销型网站备案网络推广课程培训
  • 怎样建设网站后台百度网页版主页网址
  • 十堰做网站排名百度seo关键词优化
  • 网站自建设需要买什么手续域名注册需要什么条件
  • 衡水安徽学校网站建设北京网络优化推广公司
  • 网站建设验收程序广州seo服务外包
  • 自己怎么建购物网站seo怎么收费seo
  • 密云区免费网站建设微信引流被加软件
  • 蛋糕网站建设方案深圳整站全网推广
  • 广州seo网站推广公司全网整合营销
  • 个人网站后期怎么做企业公司管理培训课程大全
  • h5开发需要掌握什么厦门seo测试