python通过调用海康SDK打开工业相机(全流程)

安装海康SDK

从海康威视官网下载对应的工业相机SDK开发包,通常包含动态库(.dll或.so)和头文件。将SDK解压到本地目录,确保路径无中文或特殊字符。

运行以下命令安装Python绑定库(以hikvision为例):

pip install hikvision 

初始化SDK环境

调用NET_DVR_Init函数初始化SDK环境,设置回调函数和日志路径:

from hikvision import NetSdk NetSdk.NET_DVR_Init() NetSdk.NET_DVR_SetLogToFile(3, "./sdk_log/") # 日志级别3,保存到指定目录 

登录相机设备

使用NET_DVR_Login_V40函数通过IP地址、端口、用户名和密码登录相机:

device_info = NetSdk.NET_DVR_DEVICEINFO_V40() login_params = NetSdk.NET_DVR_USER_LOGIN_INFO() login_params.bUseTLS = 0 login_params.sDeviceAddress = "192.168.1.64".encode('utf-8') login_params.wPort = 8000 login_params.sUserName = "admin".encode('utf-8') login_params.sPassword = "password".encode('utf-8') user_id = NetSdk.NET_DVR_Login_V40(login_params, device_info) if user_id < 0: print("Login failed, error code:", NetSdk.NET_DVR_GetLastError()) 

启动实时预览

调用NET_DVR_RealPlay_V40配置预览参数并启动视频流:

preview_params = NetSdk.NET_DVR_PREVIEWINFO() preview_params.hPlayWnd = 0 # 窗口句柄,0表示不显示 preview_params.lChannel = 1 # 通道号 preview_params.dwStreamType = 0 # 主码流 preview_params.dwLinkMode = 0 # TCP模式 realplay_handle = NetSdk.NET_DVR_RealPlay_V40(user_id, preview_params) if realplay_handle < 0: print("Preview failed, error code:", NetSdk.NET_DVR_GetLastError()) 

设置回调函数接收数据

定义回调函数处理视频流数据,并通过NET_DVR_SetStandardDataCallBack注册:

def data_callback(lRealHandle, dwDataType, pBuffer, dwBufSize, pUser): if dwDataType == NetSdk.NET_DVR_STREAMDATA: print("Received data size:", dwBufSize) NetSdk.NET_DVR_SetStandardDataCallBack(realplay_handle, data_callback, None) 

释放资源

结束预览并注销登录,最后清理SDK环境:

NetSdk.NET_DVR_StopRealPlay(realplay_handle) NetSdk.NET_DVR_Logout(user_id) NetSdk.NET_DVR_Cleanup() 


 

异常处理

检查每一步的返回值,通过NET_DVR_GetLastError获取错误码:

error_code = NetSdk.NET_DVR_GetLastError() if error_code != 0: print("Error occurred, code:", error_code) 

注意事项

  • SDK版本需与相机固件匹配,跨版本可能导致兼容性问题
  • 工业相机通常需要配置特定的网络参数(如子网掩码、网关)
  • 实时预览的数据回调函数应避免耗时操作,建议使用队列异步处理

Read more

从麦克斯韦到无人机:有感 FOC 与无感 FOC 的深度解析

引言:为什么 FOC 是电机控制的 “天花板”? 如果你拆开无人机、扫地机器人或工业机械臂的电机驱动部分,大概率会看到 “FOC” 这个词。磁场定向控制(Field-Oriented Control,简称 FOC)不是什么新鲜技术 —— 它诞生于 1960 年代,但直到嵌入式芯片算力提升后,才真正在民用领域普及。 简单说,FOC 的核心是 “让电机像直流电机一样好控制”。直流电机通过电刷切换电流方向,实现稳定转矩输出,但电刷磨损、噪音大的问题始终存在;交流电机(尤其是永磁同步电机 PMSM)无电刷、效率高,但三相电流的 “旋转特性” 让控制变得复杂。FOC 通过数学变换,把三相交流电流 “拆解” 成两个直流分量,从此交流电机也能实现毫秒级的转矩响应。 但 FOC 分两种:有感和无感。有感 FOC 靠传感器

By Ne0inhk

突破MCU瓶颈:FPGA重构电机控制的实战指南

突破MCU瓶颈:FPGA重构电机控制的实战指南 【免费下载链接】FPGA-FOCFPGA-based Field Oriented Control (FOC) for driving BLDC/PMSM motor. 基于FPGA的FOC控制器,用于驱动BLDC/PMSM电机。 项目地址: https://gitcode.com/gh_mirrors/fp/FPGA-FOC 在工业自动化与机器人领域,电机控制技术正面临前所未有的性能挑战。传统MCU方案受限于串行处理架构,难以满足永磁同步电机(PMSM)对实时性和控制精度的双重需求。本文将深入剖析当前电机控制领域的核心痛点,揭示FPGA技术如何通过并行计算架构突破这些限制,并提供一套从硬件选型到算法实现的完整实践路径。作为技术探索者,我们将通过"问题-方案-实践"的三段式框架,重新定义高性能电机控制的实现方式,特别聚焦FPGA在无刷电机驱动与场定向控制(FOC)领域的技术突破价值。 电机控制的三大核心挑战:为何MCU方案渐显乏力? 现代电机控制系统在追求更高性能指标的过程中,正遭遇来自硬件架构的根本性限制。这些瓶颈不仅影响控制

By Ne0inhk
Vivado 使用教程

Vivado 使用教程

目录 一、创建工程 二、创建文件 三、编写代码 四、仿真验证 五、配置管脚 六、生成Bitstream文件并烧录 一、创建工程 1.左边创建(或打开)工程,右侧可以快速打开最近打开过的工程。 2.来到这一步,命名工程并设置工程的存放路径(这里以D触发器为例) 3.选择RTL点击next。会来到添加文件环节(可以在这里添加.v等文件,不过后面再添加是一样的)直接点击next。 4.选择芯片型号(根据开发板选,这里随便选的),完成后点next会弹出信息概要,finish完成。         二、创建文件 完成上述步骤会进入当前界面: 1.工程管理器add sourse添加(创建)设计文件,创建文件后选择Verilog语言并命名。 2.定义端口(可选),若在这定义后,

By Ne0inhk
Formality:原语(primitive)的概念

Formality:原语(primitive)的概念

相关阅读 Formalityhttps://blog.ZEEKLOG.net/weixin_45791458/category_12841971.html?spm=1001.2014.3001.5482         原语(primitive)一般指的是语言内置的基本构件,它们代表了基本的逻辑门和构件,通常用于建模电路的基本功能,例如Verilog中的门级建模会使用and、or等关键词表示单元门。Formality也存在原语的概念,这一般出现在对门级网表进行建模时,本文将对此进行详细解释。         假设以例1所示的RTL代码作为参考设计(可以看出添加了// synopsys sync_set_reset综合指令让Design Compiler将其实现为带同步复位端的D触发器),例2所示的综合后网表作为实现设计,其中data_out_reg原语是一个带同步复位端的D触发器(FDS2)。 // 例1 module ref( input clk, input reset, input data_in, output reg data_

By Ne0inhk