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

2024-08-26 16:52

本文主要是介绍20240823 system()读取io口状态 popen()接收io操作的返回信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

读取工控机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/exportwrite(fd,"36",2);                               //启用36号ID引脚,返回的期望值为2个字符close(fd);                                      //释放FDfd = 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口的电平状态valuewhile(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读取一次
在这里插入图片描述

这篇关于20240823 system()读取io口状态 popen()接收io操作的返回信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109139

相关文章

Python如何实现读取csv文件时忽略文件的编码格式

《Python如何实现读取csv文件时忽略文件的编码格式》我们再日常读取csv文件的时候经常会发现csv文件的格式有多种,所以这篇文章为大家介绍了Python如何实现读取csv文件时忽略文件的编码格式... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍我们再日常读取csv文件的时候经常

springMVC返回Http响应的实现

《springMVC返回Http响应的实现》本文主要介绍了在SpringBoot中使用@Controller、@ResponseBody和@RestController注解进行HTTP响应返回的方法,... 目录一、返回页面二、@Controller和@ResponseBody与RestController

MySQL 中的服务器配置和状态详解(MySQL Server Configuration and Status)

《MySQL中的服务器配置和状态详解(MySQLServerConfigurationandStatus)》MySQL服务器配置和状态设置包括服务器选项、系统变量和状态变量三个方面,可以通过... 目录mysql 之服务器配置和状态1 MySQL 架构和性能优化1.1 服务器配置和状态1.1.1 服务器选项

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE