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

相关文章

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Java发送SNMP至交换机获取交换机状态实现方式

《Java发送SNMP至交换机获取交换机状态实现方式》文章介绍使用SNMP4J库(2.7.0)通过RCF1213-MIB协议获取交换机单/多路状态,需开启SNMP支持,重点对比SNMPv1、v2c、v... 目录交换机协议SNMP库获取交换机单路状态获取交换机多路状态总结交换机协议这里使用的交换机协议为常

Python内存管理机制之垃圾回收与引用计数操作全过程

《Python内存管理机制之垃圾回收与引用计数操作全过程》SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式,本文将介绍如何使用SQLAlc... 目录安装核心概念连接数据库定义数据模型创建数据库表基本CRUD操作创建数据读取数据更新数据删除数据查

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

java读取excel文件为base64实现方式

《java读取excel文件为base64实现方式》文章介绍使用ApachePOI和EasyExcel处理Excel文件并转换为Base64的方法,强调EasyExcel适合大文件且内存占用低,需注意... 目录使用 Apache POI 读取 Excel 并转换为 Base64使用 EasyExcel 处

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4

Java 字符串操作之contains 和 substring 方法最佳实践与常见问题

《Java字符串操作之contains和substring方法最佳实践与常见问题》本文给大家详细介绍Java字符串操作之contains和substring方法最佳实践与常见问题,本文结合实例... 目录一、contains 方法详解1. 方法定义与语法2. 底层实现原理3. 使用示例4. 注意事项二、su