Linux--V4L2应用程序开发(二)改变亮度

一、思路流程

创建一个新线程用来控制亮度,线程通过读取用户输入来增加或减少亮度值,并使用 ioctl 函数将新亮度值设置到视频设备。

二、代码

/*创建线程来控制亮度*/
pthread_t thread;
pthread_create(&thread, NULL, thread_brightness_contrl,(void*)fd);static void*thread_brightness_contrl(void* args)
{int fd = (int)args;unsigned char c;int brightness;int delta;struct v4l2_queryctrl qctrl;memset(&qctrl,0,sizeof(qctrl));qctrl.id = V4L2_CID_BRIGHTNESS;if(0 != ioctl(fd,VIDIOC_QUERYCTRL,&qctrl)){printf("can not query brightness\n");return NULL;}printf("brightness min = %d,max = %d\n",qctrl.minimum,qctrl.maximum);struct v4l2_control ctl;ctl.id = V4L2_CID_BRIGHTNESS;ioctl(fd, VIDIOC_G_CTRL,&ctl);while(1){c= getchar();if (c=='u'||c=='U'){ctl.value += delta;}else if(c =='D'||c=='d'){ctl.value -=delta;}if(ctl.value >= qctrl.maximum) ctl.value = qctrl.maximum;if(ctl.value <= qctrl.minimum) ctl.value = qctrl.minimum;ioctl(fd,VIDIOC_S_CTRL,&ctl);}return NULL;
};

三、知识点补充

while循环关键点

  1. 阻塞等待:当执行 c = getchar(); 时,如果没有输入,程序会在这里阻塞。这意味着线程会在此暂停,直到用户输入一个字符。

  2. 循环继续:一旦用户输入一个字符,getchar() 返回字符并继续执行循环的剩余部分。循环并未终止,它只是被阻塞等待输入。

  3. 线程挂起:由于 getchar() 阻塞等待输入,线程会被挂起,等待输入字符。挂起状态并不意味着 while 循环终止,而是线程暂停在 getchar() 这行代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/39114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++利用常量来防止形参误修改

#include<iostream> using namespace std;void displayInfo(const int& num) {// 函数体内不能修改num的值cout << "num " << num << endl; }int main() {int myNumber 5;displayInfo(myNumber);// 传递myNumber的引用&#xff0c;但不…

Latex 绘图:Tikz 包

参考文献&#xff1a; TiKZ入门教程 - LaTeX工作室 (latexstudio.net)Latex-TiKZ绘制数学平面几何图教程_latex绘制几何图形-CSDN博客【TikZ 简单学习(上)&#xff1a;基础绘制】Latex下的绘图宏包-CSDN博客LaTeX—Tikz 宏包入门使用教程 - 知乎 (zhihu.com)Latex 实时编译 &a…

安卓Framework开发快速分析日志及定位源码

文章目录 如何区分源码中 main system events 日志查看 Activity 生命周期日志分析 events 日志在源码中位置应用进程ID助分析具体应用ProtoLog 动态开关日志如何快速定位相关流程的代码位置 本文首发地址 https://h89.cn/archives/285.html 最新更新地址 https://gitee.com/ch…

代码随想录算法训练营第11天|232.用栈实现队列、225. 用队列实现栈、20. 有效的括号、1047. 删除字符串中的所有相邻重复项

打卡Day11 1.232.用栈实现队列2.225. 用队列实现栈3.20. 有效的括号4.1047. 删除字符串中的所有相邻重复项 1.232.用栈实现队列 题目链接&#xff1a;用栈实现队列 文档讲解&#xff1a; 代码随想录 思路&#xff1a;需要用两个栈来实现队列的先进先出。一个输入栈&#xff0…

2024年【建筑电工(建筑特殊工种)】考试报名及建筑电工(建筑特殊工种)考试资料

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 建筑电工(建筑特殊工种)考试报名参考答案及建筑电工(建筑特殊工种)考试试题解析是安全生产模拟考试一点通题库老师及建筑电工(建筑特殊工种)操作证已考过的学员汇总&#xff0c;相对有效帮助建筑电工(建筑特殊工种)考…

10年铲屎官亲自体验后,告诉你好用的空气净化器排名

作为一名资深铲屎官博主&#xff0c;很多铲屎官一到春季换季就开始各种疯狂打喷嚏、全身过敏红肿&#xff0c;这是因为猫咪在换季的时候就疯狂掉毛&#xff0c;家里就想下雪一样&#xff0c;空气中都是猫浮毛。而猫毛上附带的细菌会跟随浮毛被人吸入人体&#xff0c;从而产生打…

【redis】redis发布/订阅模型

1、基本概念 Redis 发布/订阅模型&#xff08;Pub/Sub, Publish/Subscribe&#xff09;是 Redis 提供的一种消息通信模式&#xff0c;它允许发送者&#xff08;发布者&#xff09;发送消息到一个或多个频道&#xff08;channel&#xff09;&#xff0c;而接收者&#xff08;订…

Graspnet复现笔记

前言 参考文章&#xff1a;Baseline model for "GraspNet-1Billion: A Large-Scale Benchmark for General Object Grasping" (CVPR 2020).[paper] [dataset] [API] [doc] 代码仓库&#xff1a;https://github.com/graspnet/graspnet-baseline 一、确定配置 Ubunt…

mysql8 锁表与解锁

方法1不行&#xff0c;就按方法2来执行&#xff1b; (一) 解锁方法1 连接mysql &#xff0c;直接执行UNLOCK TABLES&#xff0c;细节如下&#xff1a; – 查询是否锁表 SHOW OPEN TABLES WHERE in_use >0 ; – 查询进程 show processlist ; – 查询到相对应的进程&#xf…

第26集《大乘起信论》

请大家打开《讲义》第五十五页&#xff0c;癸二、释发心。 在大乘的修学当中&#xff0c;我们成就的第一个功德是信成就发心。信成就发心前面一科&#xff0c;先讲到信心的成就&#xff0c;就是我们依止内外善根的熏习&#xff0c;成就所谓的菩萨种性&#xff0c;对于大乘菩萨…

固态硬盘好用,还是机械硬盘好用?

在当前的电脑存储设备市场中&#xff0c;固态硬盘&#xff08;SSD&#xff09;和机械硬盘&#xff08;HDD&#xff09;是两种最主流的选择。它们各有优缺点&#xff0c;适用于不同的使用场景和需求。本文将详细对比固态硬盘和机械硬盘的性能、价格、耐用性等方面&#xff0c;并…

C# 验证PDF数字签名的有效性

数字签名作为PDF文档中的重要安全机制&#xff0c;不仅能够验证文件的来源&#xff0c;还能确保文件内容在传输过程中未被篡改。然而&#xff0c;如何正确验证PDF文件的数字签名&#xff0c;是确保文件完整性和可信度的关键。本文将详细介绍如何使用免费.NET控件通过C#验证PDF签…

2024年特种设备作业人员考试题库及答案(流动式起重机Q2)

一、单选题 201、起重机制动器的制动带磨损超过原厚度的()时&#xff0c;应更换。 A.0.4 B.0.5 C.0.6 答案&#xff1a;B 202、履带式起重机自行转移时&#xff0c;每行驶&#xff08;&#xff09;小时&#xff0c;应对行走机构进行检查和润滑。 …

js制作随机四位数验证码图片

<div class"lable lable2"><div class"l"><span>*</span>验证码</div><div class"r"><input type"number" name"vercode" placeholder"请输入验证码"></div>&l…

window系统openssl开发环境搭建(VS2017)

window系统openssl开发环境搭建 VS2017 一、下载openssl二、安装openssl三、openssl项目配置3.1 配置include文件3.2 配置openssl动态库四、编写openssl测试代码五、问题总结5.1 问题 一5.2 问题二一、下载openssl https://slproweb.com/products/Win32OpenSSL.html 根据自己…

2024年地球生态学与绿色发展国际会议 (EEGD 2024)

2024年地球生态学与绿色发展国际会议 (EEGD 2024) International Conference on Earth Ecology and Green Development in 2024 【重要信息】 大会地点&#xff1a;济南 大会官网&#xff1a;http://www.iceegd.com 投稿邮箱&#xff1a;iceegdsub-conf.com 【注意&#xff1a…

【docker】容器内配置环境变量

背景&#xff1a; 我要把下面的环境变量写到bash脚本里&#xff0c;起名叫environment_start.sh。 目的&#xff1a; 用于每次进入容器dev_into.sh的时候&#xff0c;让系统获取到环境变量。 先进入容器找个合适的位置写环境变量bash脚本&#xff0c;environment_start.sh …

当下环境下如何提升自己以拥抱未来的机会-程序员的自我提升

一、前言 看看今年的行情,无论是国内还是国外,仿佛都没有什么活力,经济下行压力越来越大,企业经营越来越困难。对于程序员的工作机会越来越少。这可能是现阶段乃至几年内的现象。现在是现金为王,拥有其他资产仿佛没有多大的增值空间,经济一片惨淡,消费不活跃,我看到的…

电脑重启后,不能远程连接服务器,该如何解决

文章目录 前言&#xff1a;系统情况&#xff1a;情况一&#xff1a;先检查网络连接情况情况二&#xff1a;检查服务器的 ssh 服务器转态情况三&#xff1a; 检查防火墙设置情况四&#xff1a;检查 SSH 配置文件情况五&#xff1a;其他可能性 前言&#xff1a; 电脑重启后&…

LLM RAG with Agent

题意&#xff1a;基于代理的LLM检索增强生成 问题背景&#xff1a; I was trying the application code in the link. 我正在尝试链接中的应用程序代码。 I am using the following Llang Chain version 我正在使用以下Llang Chain版本 langchain 0.0.327 langchain-commun…