尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
linux程序与相机驱动的通信
1、fcntl.ioctl()# 定义V4L2控制结构体classv4l2_control(Structure):_fields_[(id,c_uint32),(value,c_int32)]defset_camera_param(device_path,param_id,value):fdopen(device_path,rb,buffering0)ctrlv4l2_control()ctrl.idparam_id ctrl.valuevaluetry:fcntl.ioctl(fd,0xC008561C,ctrl)finally:fd.close()defget_camera_param(device_path,param_id):fdopen(device_path,rb,buffering0)ctrlv4l2_control()ctrl.idparam_idtry:fcntl.ioctl(fd,0xC008561B,ctrl)# 驱动把当前值填入 ctrl.valuereturnctrl.valuefinally:fd.close()fcntl 名字来自 file control可以理解为Python 用来调用 Linux“文件控制类系统调用”的模块。它不只是操作普通文件也能操作摄像头、串口、磁盘、网卡等设备因为在 Linux 中这些设备通常也被表示成“文件”。摄像头除了传输图像还有很多特殊操作这些操作不能简单表示成“读取一段数据”或“写入一段数据”。普通读写不够因此 Linux 提供了 ioctl I/O Control它允许程序告诉驱动我要执行某种特殊操作这是这次操作需要的参数。0xC008561C代表执行什么操作这里表示设置控制参数具体含义如下C 数据可以在程序和内核之间双向传输 008 参数结构体大小为8字节56V4L2 类型标识“V”的 ASCII 编码 1C 第28号操作即设置控制项关于结构体ctypes.Structure 的作用是让 Python 按照 C 语言结构体的内存格式排列数据。因为 Linux 内核驱动是用 C 写的它不认识 Python 字典或 Python 对象只认识固定格式的一段内存。所以不能直接这样传{id:123,value:10000}而是必须准备成驱动期待的二进制布局。ctrl 是一块可以被修改的内存在查询控制参数时工作流程是fcntl.ioctl() 把这块内存交给内核内核驱动将查询结果写回然后 Python 再读取2、V4L2defsend_v4l2_stop_command(device):try:cmdfv4l2-ctl -d{device}--set-ctrlstop1subprocess.run(cmd,shellTrue,checkTrue)logger.debug(命令执行成功)exceptsubprocess.CalledProcessErrorase:logger.error(f命令执行失败:{e})defsend_infra_integral_time_command(device,camera_identity):ifcamera_identityswir_fix:cmdfv4l2-ctl -d{device}--set-ctrlexposure{50}elifcamera_identitymwir_fix:cmdfv4l2-ctl -d{device}--set-ctrlexposure{60000}elifcamera_identitylwir_fix:cmdfv4l2-ctl -d{device}--set-ctrlexposure{1500}else:logger.warning(不存在的积分时间转换)return0try:subprocess.run(cmd,shellTrue,checkTrue)logger.debug(红外初始积分时间命令执行成功)exceptsubprocess.CalledProcessErrorase:logger.error(f红外初始积分时间命令执行失败:{e})defsend_v4l2_focus_absolute_command(device,camera_identity,value10000):ifcamera_identityvis_zoom:returnelifcamera_identityvis_fix:cmdfv4l2-ctl -d{device}--set-ctrlfocus_absolute{13500}elifcamera_identityswir_fix:cmdfv4l2-ctl -d{device}--set-ctrlfocus_absolute{13500}elifcamera_identitymwir_fix:cmdfv4l2-ctl -d{device}--set-ctrlfocus_absolute{13500}elifcamera_identitylwir_fix:cmdfv4l2-ctl -d{device}--set-ctrlfocus_absolute{16500}else:logger.warning(不存在的对焦绝对值转换)return0try:subprocess.run(cmd,shellTrue,checkTrue)logger.debug(对焦绝对值命令执行成功)exceptsubprocess.CalledProcessErrorase:logger.error(f对焦绝对值命令执行失败:{e})3、I2Cdefsend_v4l2_vis_command():try:cmdi2ctransfer -y -f 9 w50x28 0x00 0x64 0x01 0x00 0x00subprocess.run(cmd,shellTrue,checkTrue)logger.debug(可见变焦命令执行成功)exceptsubprocess.CalledProcessErrorase:logger.error(f可见变焦命令执行失败:{e})
RELATED

相关推荐

Windows C盘空间清理全攻略:从原理到实践的安全优化方案

Windows C盘空间清理全攻略:从原理到实践的安全优化方案

1. 先别急着下软件,搞懂C盘为什么“红”才是关键 C盘飘红,空间告急,这几乎是每个Windows用户迟早要面对的问题。很多人第一反应是去搜“C盘清理工具”,然后下载一堆来路不明的软件,一通操作后可能空间没释放多少&#…

📅 2026/10/21 3:00:25
汽车座舱显示系统升级:从硬件参数到用户体验的工程实践

汽车座舱显示系统升级:从硬件参数到用户体验的工程实践

1. 从“屏幕”到“体验”:佛吉亚升级车内显示器的深层逻辑 最近看到佛吉亚(Faurecia,现在应该叫佛瑞亚集团了)关于升级车内显示器的新闻,很多报道可能就停留在“技术升级”、“屏幕更大更清晰”的层面。但作为一个在汽…

📅 2026/9/8 19:09:00
基于LLM的智能体语义轨迹模拟:SenseWalk系统设计与实践

基于LLM的智能体语义轨迹模拟:SenseWalk系统设计与实践

1. 项目概述:当智能体学会“思考”与“行走” 最近在做一个挺有意思的项目,我把它叫做“SenseWalk”。简单来说,这是一个基于智能体(Agent)的语义轨迹模拟系统,核心目标是让虚拟的“人”在划分了功能区域的…

📅 2026/10/10 21:02:43
MORE NEWS

更多资讯

📰

NVFP4:让大模型从零预训练跑在4位浮点上

训练大模型最怕的从来不是模型推不动,而是显存和带宽在物理上先投降。我最近读了一篇硬核的预训练论文,标题是“Pretraining Large Language Models with NVFP4”,核心就一句话:让大语言模型从零预训练阶段,前向、反向…

📰

MX Linux 25.1双Init并存:SysVinit与systemd自由切换

一提到“你的发行版到底该用哪套init”,Linux社区的讨论经常就变成立场之争。systemd派觉得日志、依赖、资源控制统统内置才是现代系统该有的样子;传统派则认为一个脚本一个脚本顺序执行、每步都可预期的SysVinit才叫优雅。大多数发行版早就不纠结这个问…

📰

SheerID-Verification-Tool部署指南:从本地到生产环境的无缝迁移

SheerID-Verification-Tool部署指南:从本地到生产环境的无缝迁移 SheerID-Verification-Tool是一款轻量级工具,专为集成和测试SheerID验证工作流设计,能简化API请求、处理响应并支持学生等项目的资格检查。本指南将帮助你实现从本地开发到生…

📰

NVFP4预训练大模型:从量化训练到部署的全面解析

最近把这篇《Pretraining Large Language Models with NVFP4》翻来覆去读了几遍,越读越觉得它不只是“又一篇4位精度论文”,更像是给整个量化生态指了一个新方向。过去大家默认FP4只能做推理阶段的压缩,谁在预训练里碰4位精度,谁就…

📰

统一API架构下GPT-5.2与DeepSeek-V3.2模型选型与路由降级实战

最近在做模型网关项目时,我需要在同一个系统里同时接入GPT-5.2和DeepSeek-V3.2。如果你也正在搞Agent应用、企业内部知识库或者面向C端的智能助手,大概率会和我遇到同一类麻烦:模型各有各的强项,但应用层总不能为每一个模型单独写…

📰

AI驱动流程自动化实战:架构师视角的拆解与落地要点

这两年我听到最多的一个词就是“AI驱动流程自动化”,不少做架构的朋友都在琢磨怎么靠它往上走一档。作为AI应用架构师,很多人觉得我们干的就是接几个大模型接口、写点提示词,但真正深入做过端到端自动化的人才会明白,这套东西的难…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬