当前位置: 首页 > news >正文

Android单片机硬件通信《GPIO通信》

一、什么是GPIO?

GPIO(英语:General-purpose input/output),通用型输入输出端口,在单片机上一般是通过一个GND引脚和若干个io引脚配合工作。
单片机可以配置GPIO输入输出模式,与外界环境进行通信交互。在输入环境下,可以读取指定端口的高低电平状态。在输出环境下,可以控制指定端口的高低电平状态。

二、Android GPIO通信

使用Runtime.getRuntime()获取本地GPIO文件并与之通信,直接上代码。


/*** gpio通讯工具*/
class GpioUtil private constructor(){companion object{private var instance:GpioUtil?=nullget() {if (field == null) {field = GpioUtil()}return field}@Synchronizedfun get():GpioUtil{return instance!!}}/*** 执行外部程序指令** @param instruct 指令*/fun chmod(instruct: String?) {try {val runtime = Runtime.getRuntime()val process = runtime.exec("su")val dataOutputStream = DataOutputStream(process.outputStream)dataOutputStream.writeBytes(instruct)dataOutputStream.flush()dataOutputStream.close()} catch (ex: Exception) {ex.printStackTrace()}}/*** 获取gpio编号对应的值,即是高电平或低电平** @return高低电平(0或者1)* * 注意:使用该方法时,initGpio()的dire参数值应为in*/fun getValue(gpioNum:String): Int {val localFile = File("/sys/class/gpio/gpio" + gpioNum+ "/value")if (!localFile.exists()) println(localFile.absoluteFile.toString() + " not exist!")while (true) {try {val localFileReader = FileReader(localFile)val arrayOfChar = CharArray(1)val i = localFileReader.read(arrayOfChar, 0, 1)localFileReader.close()if (i == 1) {val j = arrayOfChar[0].codereturn if (j == 48) 0 else 1}} catch (localFileNotFoundException: FileNotFoundException) {localFileNotFoundException.printStackTrace()return -1} catch (localIOException: IOException) {localIOException.printStackTrace()return -1}}}/*** 发送指令,设置gpio值* 设置gpio值,即设置高电屏* @param  paramInt 写入值(0或者1)* @param  gpioPort gpio端口* * 注意:使用该方法时,initGpio()的dire参数值应为out*/fun setValue(gpioPort:String,paramInt: Int) {val exportPath1 = "echo $paramInt > /sys/class/gpio/gpio$gpioPort/value"chmod(exportPath1)}/*** 初始化gpio* @param gpioPort  gpio端口(单片机服务商提供)* @param dire      输入(只读)/输出(读写)方向**/fun initGpio(gpioPort:String,dire:String){//写入编号val exportPath = "echo $gpioPort > /sys/class/gpio/export"chmod(exportPath)//定义输入输出方向(out / in)val directionPath = ("echo $dire > " + " /sys/class/gpio/gpio" + gpioPort+ "/direction")chmod(directionPath)//赋予引脚编号的读写权限val permissionGpio = "chmod 0777 /sys/class/gpio/$gpioPort/value"chmod(permissionGpio)}
}

本文完毕,下班……

相关文章:

Android单片机硬件通信《GPIO通信》

一、什么是GPIO? GPIO(英语:General-purpose input/output),通用型输入输出端口,在单片机上一般是通过一个GND引脚和若干个io引脚配合工作。 单片机可以配置GPIO输入输出模式,与外界环境进行通信交互。在输入环境下&…...

C# WPF编程-事件

C# WPF编程-路由事件 路由事件概要路由事件的三种方式 WPF事件WPF最重要的5类事件:生命周期事件 鼠标事件键盘事件多点触控输入原始触控 路由事件概要 路由事件是具有更强传播能力的事件,它们可在元素树中向上冒泡和向下隧道传播,并沿着传播…...

C语言 预处理器 注释 基本案例讲解

上文 程序设计语言与C语言发展 我们简述了 计算机语言的发展 以及编程语言与指令的概念 那么 今天 我们就来 初始C语言 并完成 第一个C语言案例 这里 我们需要完成 C语言 Hello World案例 以及 C语言程序举例 任何编程语言 开始的案例 都是 Hello World 所以说 Hello World 是…...

Flutter学习10 - Json解析与Model使用

对于网络请求返回的 Json 数据&#xff0c;一般会进行如下解析&#xff1a; 将 Json String 解析为 Map<String, dynamic>将 Json String 解析为 Dart Model 发起一个返回 Json String 的网络请求 import package:http/http.dart as http;void main() {_doGet(); }_do…...

Clickhouse异常:Exception: No operation equals between Decimal(X, X) and Float64

在使用clickhouse中的Decimal类型存储数字时&#xff0c;使用Decimal类型字段作为查询条件时&#xff0c;比如&#xff1a; SELECT COUNT(*) AS total FROM table WHERE ( my_number10.2) 会报错如下&#xff1a;Exception: No operation equals between Decimal(X, X) and F…...

会员中心微服务

文章目录 1.环境配置1.创建会员中心模块2.检查父子模块的pom.xml1.父模块注意&#xff1a;如果父模块中的依赖显示not found&#xff0c;原因是子模块并没有引用&#xff0c;不用在意 2.子模块 3.pom.xml 引入相关依赖&#xff08;别忘记刷新maven&#xff09;4.application.ym…...

element el-dialog里再调用其他组件,查找不到组件的方法

需求描述&#xff1a;点击编辑按钮&#xff0c;跳出编辑弹窗&#xff0c;回显图片组件里面的图片问题&#xff1a;element el-dialog里再调用组件&#xff0c;打开该弹窗的瞬间找不到弹窗里调用子组件的方法原因&#xff1a;弹窗显示时&#xff0c;调用的子组件还没渲染出来所以…...

【深度学习】四种天气分类 模版函数 从0到1手敲版本

引入该引入的库 import torch import torch.nn as nn import matplotlib.pyplot as plt import torch.nn.functional as F import torchvision import torch.optim as optim %matplotlib inline import os import shutil import glob os.environ["KMP_DUPLICATE_LIB_OK&q…...

Linux文件 profile、bashrc、bash_profile区别

Linux系统中&#xff0c;有三种文件 出现的非常频繁&#xff0c;那就是 profile、bash_profile、bashrc 文件。 1、profile 作用 profile&#xff0c;路径&#xff1a;/etc/profile&#xff0c;用于设置系统级的环境变量和启动程序&#xff0c;在这个文件下配置会对所有用户…...

blender记一下法线烘焙

这里主要记一下使用cage的方式 原理 看起来是从cage发射射线&#xff0c;打中高模了就把对应uv那个地方的rgb改成打中的点的normal的rgb 正事 那么首先需要一个高模 主要是几何要丰富 无所谓UV 然后一个低模&#xff0c;既然上面提到UV&#xff0c;那低模就要展UV, 展完之后…...

【LabVIEW FPGA入门】FPGA 存储器(Memory)

可以使用内存项将数据存储在FPGA块内存中。内存项以2kb为倍数引用FPGA目标上的块内存。每个内存项引用一个单独的地址或地址块&#xff0c;您可以使用内存项访问FPGA上的所有可用内存。如果需要随机访问存储的数据&#xff0c;请使用内存项。 内存项不消耗FPGA上的逻辑资源&…...

vue3+element Plus form 作为子组件,从父组件如何赋值?

刚开始接触vue3时&#xff0c;碰到一个很low的问题&#xff0c;将form作为子组件&#xff0c;在页面中给form表单项输入内容&#xff0c;输入框不显示值&#xff0c;知道问题出在哪&#xff0c;但因为vue3组合式api不熟悉&#xff0c;不知从哪下手... 效果图&#xff1a; 父组…...

Kafka系列之:Exactly-once support

Kafka系列之:Exactly-once support 一、Sink connectors二、Source connectors三、Worker configuration四、ACL requirementsKafka Connect 能够为接收器连接器(从版本 0.11.0 开始)和源连接器(从版本 3.3.0 开始)提供一次性语义。请注意,对一次语义的支持高度依赖于您运…...

Spring Boot2

SpringBoot 配置文件 properties配置文件 application.properties 以配置端口和访问路径为例 server.port8080 yaml配置文件 application.yml / application.yaml server:port: 81 在实际开发中&#xff0c;更常用的是yaml配置文件 yaml层级表示更加明显 yml配置信息书…...

【idea做lua编辑器】IDEA下lua插件报错编辑器打不开(同时安装EmmyLua和Luanalysis这2个插件就报错,保留EmmyLua插件即可)

C:\Users\Administrator\AppData\Roaming\JetBrains\IntelliJIdea2021.1\plugins 同时安装EmmyLua和Luanalysis就报错&#xff0c;删除Luanalysis这个文件夹只使用EmmyLua这个插件即可&#xff01; 为啥不用vscode呢&#xff1f; 我个人不太喜欢vscode&#xff0c;更喜欢idea&…...

SpringCloud之网关组件Gateway学习

SpringCloud之网关组件Gateway学习 GateWay简介 Spring Cloud Gateway是Spring Cloud的⼀个全新项目&#xff0c;目标是取代Netflix Zuul&#xff0c;它基于Spring5.0SpringBoot2.0WebFlux&#xff08;基于高性能的Reactor模式响应式通信框架Netty&#xff0c;异步⾮阻塞模型…...

全球大型语言模型(LLMS)现状与比较

我用上个博文的工具将一篇ppt转换成了图片&#xff0c;现分享给各位看官。 第一部分&#xff1a;国外大语言模型介绍 1&#xff0c;openai的Chatgpt 免费使用方法1&#xff1a;choose-carhttps://share.freegpts.org/list 免费使用方法2&#xff1a;Shared Chathttps://share…...

Git Commit 提交规范,变更日志、版本发布自动化和 Emoji 提交标准

前言 Git Commit 是开发的日常操作, 一个优秀的 Commit Message 不仅有助于他人 Review, 还可以有效的输出 CHANGELOG, 对项目的管理实际至关重要, 但是实际工作中却常常被大家忽略&#xff0c;希望通过本文&#xff0c;能够帮助大家规范 Git Commit&#xff0c;并且展示相关 …...

Spark与flink计算引擎工作原理

Spark是大批量分布式计算引擎框架&#xff0c;scale语言开发的&#xff0c;核心技术是弹性分布式数据集&#xff08;RDD&#xff09;可以快速在内存中对数据集进行多次迭代&#xff0c;支持复杂的数据挖掘算法及图形计算算法&#xff0c;spark与Hadoop区别主要是spark多个作业之…...

Excel数字乱码怎么回事 Excel数字乱码怎么调回来

在日常工作中&#xff0c;Excel是我们最常使用的数据处理软件之一&#xff0c;它强大的功能使得数据处理变得既简单又高效。然而&#xff0c;用户在使用Excel时偶尔会遇到数字显示为乱码的问题&#xff0c;这不仅影响了数据的阅读&#xff0c;也大大降低了工作效率。那么&#…...

Windows与Office激活终极指南:告别弹窗烦恼的完整解决方案

Windows与Office激活终极指南&#xff1a;告别弹窗烦恼的完整解决方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否曾经遇到过Windows系统突然弹出激活提示&#xff0c;或者Office软件…...

PHP表单开发效率提升370%的秘密:基于Swoole+Vue3的低代码引擎架构拆解(含性能压测对比数据)

第一章&#xff1a;PHP低代码表单引擎开发概述 PHP低代码表单引擎是一种面向业务人员与开发者协同的轻量级开发范式&#xff0c;它将表单结构定义、校验逻辑、数据绑定与渲染流程抽象为可配置、可复用的组件体系&#xff0c;显著降低CRUD类表单应用的构建门槛。该引擎不依赖重型…...

Go语言SQL构建器goqu与标准库sql对比:为什么选择SQL构建器的完整指南

Go语言SQL构建器goqu与标准库sql对比&#xff1a;为什么选择SQL构建器的完整指南 【免费下载链接】goqu SQL builder and query library for golang 项目地址: https://gitcode.com/gh_mirrors/go/goqu 在Go语言开发中&#xff0c;数据库操作是每个后端开发者必须面对的…...

幻想梦境风格 AI 绘画提示词合集|Midjourney 直用

今天给大家分享一组幻想梦境风格的提示词&#xff0c;使用工具为 Midjourney&#xff1a;https://www.midjourney.com/所有提示词均适配 Midjourney 生成&#xff0c;贴合幻想梦境、梦核怪核、超现实氛围感的核心风格&#xff0c;可直接复制使用。一、提示词 1 - 鱼眼小猪风格定…...

3个黑科技解决百度网盘限速难题:开源工具实现本地优化加速

3个黑科技解决百度网盘限速难题&#xff1a;开源工具实现本地优化加速 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 你是否经历过这样的场景&#xf…...

国产信创库fio破坏主备库以及备份故障处理--惜分飞旁

一、各自优势和对比 这是检索出来的数据&#xff0c;据说是根据第三方评测与企业数据&#xff0c;三款产品在代码生成质量上各有侧重&#xff1a; 产品 语言优势 场景亮点 核心差异 百度 Comate C核心代码质量第一&#xff1b;Python首生成率达92.3% SQL生成准确率提升35%&…...

pgloader:从数据孤岛到PostgreSQL的高效迁移引擎

pgloader&#xff1a;从数据孤岛到PostgreSQL的高效迁移引擎 【免费下载链接】pgloader Migrate to PostgreSQL in a single command! 项目地址: https://gitcode.com/gh_mirrors/pg/pgloader 一、工具定位与核心优势&#xff1a;为什么选择pgloader&#xff1f; 1.1 数…...

华为AP有线口除了供电还能干啥?解锁‘瘦AP’变身小型接入交换机的高阶玩法

华为AP有线口的隐藏技能&#xff1a;从无线覆盖到多功能接入的华丽转身 当你走进一家精品酒店的房间&#xff0c;墙面上那个看似普通的华为面板AP&#xff0c;可能正在默默为房间里的智能电视、迷你吧台终端和书桌上的台式机提供网络接入——而这一切都通过那根被大多数人忽略的…...

3分钟解锁B站缓存视频:m4s-converter让你真正拥有数字收藏

3分钟解锁B站缓存视频&#xff1a;m4s-converter让你真正拥有数字收藏 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾在B站缓存了珍贵的…...

3分钟解锁OBS直播新玩法:免费RTSP服务器插件完全指南

3分钟解锁OBS直播新玩法&#xff1a;免费RTSP服务器插件完全指南 【免费下载链接】obs-rtspserver RTSP server plugin for obs-studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-rtspserver 还在为OBS直播流无法接入监控系统而烦恼吗&#xff1f;想要让专业直播…...