20240823 system()读取io口状态 popen()接收io操作的返回信息

news2024/11/18 1:51:00

读取工控机io system 与 popen

  • io操作API
  • c++ system()
  • popen
  • open

os.system()、os.popen()和subprocess的区别(一)

函数system

直接读文件最快![Linux] Ubuntu实机下控制GPIO

io操作API

工控机的io口操作的函数
需要通过命令行执行
在这里插入图片描述
具体指令内容:
在这里插入图片描述

c++ system()

返回数据为字符串
c++程序中通过sytem(cmd)可以执行该操作,但无法接收到返回值
system()操作成功的返回值是0
io信息只打印在终端中
执行过程平均15ms
在这里插入图片描述

popen

通过popen可以开启管道接收system返回的字符串到程序中
在这里插入图片描述
但是耗时更久了,平均55ms
在这里插入图片描述

open

通过文件直接读取DIO电平

#include "stdio.h"
#include "fcntl.h"
#include "unistd.h"//引用需要的头文件
 
int main(void)
{
	int fd;
	char value=0;
	
	fd = open("/sys/class/gpio/export",O_RDWR);     //fd作为可读可写的/sys/class/gpio/export
	write(fd,"36",2);                               //启用36号ID引脚,返回的期望值为2个字符
	close(fd);                                      //释放FD
 
	fd = open("/sys/class/gpio/gpio36/direction",O_RDWR);
	write(fd,"in",3);                               //36号ID设为输入
	close(fd);
 
    fd = open("/sys/class/gpio/gpio36/value",O_RDWR); //fd作为IO口的电平状态value
	while(1)
    {
		read(fd,&value,1);                          //读入电平
		printf("Value =%c \r\n",value);             //打印电平状态
        sleep(1);                                   //延时1S
	}
	return 0;
}

类似地

	char tmp[1024];
    memset(tmp, 0 , 1024);
    std::string result;
    int fd ;
    fd = open("/sys/kernel/debug/asus-nb-wmi/call", O_RDWR);
    // cout << " open call res : " << fd  << endl;
   int rest =   read(fd, tmp, 100 );
    result += tmp;
    close(fd);
	// 从返回字符串中截取倒数第二个字符为电平状态
   fd= result.size();
    string res = result.substr(fd-2,1);
    fd = atoi(res.c_str());
    // cout << " res : " << x << endl;
    return fd;

时间测试,1.3ms读取一次
在这里插入图片描述

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

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

相关文章

【机器学习】CNN在计算机视觉中的应用

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 CNN在计算机视觉中的应用1. 引言2. 图像分类3. 目标检测3.1 基于区域的目标检测…

总结拓展八:SAP常见的系统间接口方式

&#xff08;01&#xff09;-远程函数调用 所谓系统接口&#xff0c;实际上就是不同系统间的数据交换方式。 对于一个企业来说&#xff0c;肯定不是一个系统就能够支持所有业务的运转&#xff0c;几乎所有企业都会使用多个系统&#xff0c;比如较为常见的ERP/MES等。 当企业有多…

【STM32单片机_(HAL库)】3-4-4【中断EXTI】【智能排队控制系统】项目实现

3-4-2系统框图及硬件接线 3-4-3系统代码框架搭建 4.软件—tasks.c文件编写 排队控制系统状态机 tasks.c #include "tasks.h" #include "led.h" #include "beep.h" #include "exti.h" #include "lcd1602.h" #include &…

直流负载的必要性

直流负载在电力系统中扮演着至关重要的角色&#xff0c;它的必要性主要体现在以下几个方面&#xff1a; 1. 能源转换效率&#xff1a;在现代电力系统中&#xff0c;电能的生成、传输和使用过程中&#xff0c;需要经过多次能量形式的转换。在这个过程中&#xff0c;直流负载可以…

虚幻引擎UE5入坑记

前言 Unreal Engine 和Unity Engine作为目前主流的游戏引擎&#xff0c;各有优缺点。而我目前的工作还是以Unity开发为主&#xff0c;在使用Unity的过程中&#xff0c;总避免不了听到或看到过UE相关的东西&#xff0c;从开始的好奇到后面想要去学习它&#xff0c;但是&#xf…

数据结构之AVL树的 “奥秘“

二叉树查询性能分析&#xff1a; 插入和删除操作都必须先查找&#xff0c;查找效率代表了二叉搜索树中各个操作的性能 对有n个结点的二叉搜索树&#xff0c;若每个元素查找的概率相等&#xff0c;则二叉搜索在二叉搜索树树平均查找长度是结点的深度的函数&#xff0c;即结点越深…

继电器的工作原理及作用

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言1.基本概念3.主要作用4.基本结构5.工作原理 前言 送给大学毕业后找不到奋斗方向的你&#xff08;每周不定时更新&…

联合贷款系统架构与流程解析

在联合贷款作为一种创新的融资模式&#xff0c;正逐渐受到越来越多金融机构和借款人的青睐。本文将分析联合贷款产品的优势&#xff0c;详细描述其流程&#xff0c;并结合实际案例展示联合贷款在实际应用中的场景。帮助读者增进对于联合贷款系统架构及其运作机制的了解。 一、…

600条最强 Linux 命令总结(非常详细)零基础入门到精通,收藏这一篇就够了

一、基本命令 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作系统信息 arch 显示机器的处理器架构 uname -…

UE5 UMG UI编辑器工作流

创建UI控件 1.在内容菜单&#xff08;Content Browser&#xff09;面板&#xff0c;点击添加&#xff08;Add&#xff09;或者右键空白处&#xff0c;依次选择用户界面&#xff08;User Interface&#xff09;/ 控件蓝图&#xff08;Widget Blueprint&#xff09;。 2.在弹出…

领域驱动模型设计与微服务架构落地(四)之DDD分层架构设计

那么聊完领域模型之后,其实我们会发现,接下来,很多的程序员可能就会直接上代码,因为很多的程序员觉得这个你的战略设计跟我们落地的代码没有关系。哪怕你可能说得天花乱坠,可是做为底层的开发人员,我只关心手头上的功能有没有实现,实现完成之后有没有BUG。 那么我们该如…

全网最详细的自动化测试

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 软件测试作为软件生命周期中不可缺少的组成部分&#xff0c;对提高软件质量起着重要作用。随着软件测试的发展&#xff0c;自动化测试技术也得到了很大提高。 …

CART算法:决策树的双面剑

一 引言 上一篇文章 决策树算法&#xff1a;ID3与C4.5的对比分析 中介绍了ID3和C4.5两种决策树算法&#xff0c;这两种决策树都只能用于分类问题&#xff0c;而CART&#xff08;classification and regression tree&#xff09;决策树算法它可以处理分类问题&#xff08;Class…

修复数据库中的 “Access Denied: SUPER Privilege Required” 错误

当您使用数据库时&#xff0c;您可能会看到错误消息&#xff1a;“Access denied; you need (at least one of) the SUPER privilege(s) for this operation”。当您的数据库用户没有足够的权限来执行某些操作时&#xff0c;就会发生这种情况。 本文中&#xff0c;我们将查看导…

SQL手工注入漏洞测试(MongoDB数据库)靶场通关攻略

构造数据回显 });return ({title:1,content:2 成功回显1,2&#xff0c;接下来我们开始尝试查询数据库 });return({title:tojson(db),content:2 得到之后我们就可以继续查询他的表名了 });return({title:tojson(db.getCollectionNames()),content:2 最后我们就可以爆出他表里的数…

【EI会议截稿通知】第六届光电科学与材料学术会议 (ICOSM 2024)

第六届光电科学与材料学术会议 (ICOSM 2024) 2024 6th Conference on Optoelectronic Science and Materials 重要通知 重要通知&#xff1a;经组委会商议决定&#xff0c;第六届光电科学与材料学术会议 (ICOSM 2024) 将于2024年9月7日线上召开&#xff0c;具体议程及线上参…

20L水箱植保无人机技术详解

1. 性能与载重 高效作业能力 本款20L水箱植保无人机专为大面积农田作业设计&#xff0c;具备出色的性能与载重能力。其最大载重量可达20kg&#xff0c;不仅轻松搭载20L的水箱及药液&#xff0c;还能根据实际作业需求配置额外的传感器、摄像头等设备&#xff0c;实现多功能集成…

string类题目(上)

string类题目 题目来源&#xff08;Leetcode&#xff09; 题目一&#xff1a;仅仅反转字母 分析 这个反转的特点在于只反转字母&#xff0c;不反转特殊字符。 法一&#xff1a;如果我们让一个正向迭代器指向第一个字符&#xff0c;让一个反向迭代器指向最后一个字符&#xf…

如何使用C4D云渲染服务打开图片渲染器窗口?

C4D以其对第三方渲染器的广泛支持而闻名&#xff0c;能够创造出高质量的视觉作品。这些渲染效果涵盖了逼真的光照和阴影效果、真实的材质质感、精细入微的图像细节&#xff0c;以及令人印象深刻的快速渲染能力。C4D云渲染功能进一步增强了其性能&#xff0c;用户可以通过一个统…

Win10用户必备!三款超实用第三方录屏软件大推荐

大家好&#xff01;今天我要和大家分享一下Win10的录屏操作以及使用体验&#xff0c;并且还会推荐几款好用的录屏工具&#xff0c;希望对大家有所帮助。 Win10录屏操作以及使用体验&#xff1a; Win10自带的录屏主要是为游戏录制而开发的&#xff0c;系统自带不需要额外下载客…