Android节点读写实现

embedded/2025/1/24 14:22:13/


在工作中,我们会对一些节点进行读写操作。比如控制闪光灯,指示灯;降噪芯片开关或其低功耗开关,因为项目中常用到,在此记录,备忘~

直接上代码,想用直接拿去

一 监听某个节点的写入值的反馈

有些节点写入是可以监听到写入结果的,比如降噪芯片低功耗节点写入后可以监听其写入结果,代码如下

java">/*** 读取操作低功耗的开启/关闭结果*/
private void readOpenLowPowerCOnsumptionResult() {Log.e(TAG, "readOpenLowPowerCOnsumptionResult init");new Thread(() -> {try {File deviceFile = new File("/dev/ttyS0");if (!deviceFile.exists()) {Log.e(TAG,"Device file not found: " + "/dev/ttyS0");return;}FileInputStream fis = new FileInputStream(deviceFile);BufferedReader reader = new BufferedReader(new InputStreamReader(fis));Log.d(TAG, "Reading from " + "/dev/ttyS0" + "...");String line;while ((line = reader.readLine()) != null) {Log.d(TAG,"Log: " + line);if ("OK: low_pw 1".equals(line)) {Log.e(TAG, "auxstatus open low_pw success");// isWaitingRead =false;}else if ("OK: low_pw 0".equals(line)) {Log.e(TAG, "auxstatus close low_pw success");// isWaitingRead =false;}else {Log.e(TAG, "readOpenAudResult result :" + line);}}Log.d(TAG, "Reading from " + "/dev/ttyS0" + "---");reader.close();} catch (IOException e) {e.printStackTrace();Log.e(TAG, "Error reading from /dev/ttyS0");}}).start();}

二 写入节点

2.1

java">/*** 开启降噪低功耗模式* @param  isOpen true:开启低功耗;false 关闭低功耗* @return        [description]*/
private synchronized boolean openAudLowPower(boolean isOpen) {Log.d(TAG, "openAudLowPower init----1 isOpen:" + isOpen);java.lang.Process process = null;DataOutputStream os = null;try {String[] command = {"sh"};process = Runtime.getRuntime().exec(command);os = new DataOutputStream(process.getOutputStream());os.writeBytes( "stty -F /dev/ttyS0 -echo\n");os.writeBytes( "stty -F /dev/ttyS0 ispeed 115200 ospeed 115200 cs8\n");if (isOpen) {os.writeBytes("printf 'low_pw 1' > /dev/ttyS0\n");}else {os.writeBytes("printf 'low_pw 0' > /dev/ttyS0\n");}os.writeBytes("exit\n");os.flush();int result = process.waitFor();Log.d(TAG, "openAudch result : " + result);} catch (Exception e) {Log.d(TAG, "openAudLowPower exception msg: " + e.getMessage());Log.e(TAG, "openAudLowPower , send error");e.printStackTrace();return false;} finally {try {if (os != null) {os.close();}process.destroy();} catch (Exception e) {Log.e(TAG, "send error");return false;}Log.e(TAG, "openAudLowPower finally end");}return true;}

2.2还有使用echo 实现写入节点,代码如下

java"> public boolean openEncLvl() {if (DEBUG_INPUT) {Slog.d(TAG, "openEncLvl init---- ");}java.lang.Process process = null;DataOutputStream os = null;try {process = Runtime.getRuntime().exec("sh");os = new DataOutputStream(process.getOutputStream());os.writeBytes( "stty -F /dev/ttyS0 -echo\n");os.writeBytes( "stty -F /dev/ttyS0 ispeed 115200 cs8\n");os.writeBytes( "echo enc_lvl 1 > /dev/ttyS0\n");os.writeBytes("exit\n");os.flush();process.waitFor();} catch (Exception e) {if (DEBUG_INPUT) {Slog.d(TAG, "openEncLvl exception msg: " + e.getMessage());}Log.e(TAG, "openEncLvl , 发送失败。");e.printStackTrace();return false;} finally {try {if (os != null) {os.close();}process.destroy();} catch (Exception e) {Log.e(TAG, "发送失败");return false;}if (DEBUG_INPUT) {Slog.d(TAG, "openEncLvl finally end");}}return true;}

2.1和2.2 实现的区别就是写入值的时候

2.1如下实现:

os.writeBytes("printf 'low_pw 1' > /dev/ttyS0\n");

2.2如下实现:

os.writeBytes( "echo enc_lvl 1 > /dev/ttyS0\n");

----------------------------------------

若使用直接拿去,可运行!

 大家新年快乐~


http://www.ppmy.cn/embedded/156589.html

相关文章

python将txt文件转成csv文件

1.才开始使用Jupyter Notebook,发现用此软件做些实践性的工作还是非常方便的,在此强烈推荐 2)网上下个txt文本文件,为了想做后续词云统计方便,果断转换为csv,代码如下: import csv data[] with open(C:\\Users\\Administrator\\Desktop\\修行大智慧\\《道德经》原文全文&#…

大数据技术笔记

大数据技术概述 本章初步介绍大数据领域技术涉及的一些基础理论,如分布式、存储、网络等知识。 分布式理论 大数据意味数据量大,那么存储和计算数据的节点就不大可能只有一个,而是采用分而治之的思想在多个节点中存储和计算,提…

springboot图书馆管理系统前后端分离版本

springboot图书馆管理系统前后端分离版本, 系统供的功能全部都可以使用 这是一个成品,系统的架构包括代码的层次都比较清晰而且功能比较丰富大家可以拿到手里改改界面改改文字的描述细节稍微修改一下就可以完成自己的毕业设计了,也可二次开发 系统特性 技术先进:使用了最新…

Frida使用指南(三)

当需要输出其他格式的数据时: Java.perform(function () {var SignManager = Java.use("com.che168.atclibrary.base.SignManager");

Git Bash 配置 zsh

博客食用更佳 博客链接 安装 zsh 安装 Zsh 安装 Oh-my-zsh github仓库 sh -c "$(curl -fsSL https://install.ohmyz.sh/)"让 zsh 成为 git bash 默认终端 vi ~/.bashrc写入: if [ -t 1 ]; thenexec zsh fisource ~/.bashrc再重启即可。 更换主题 …

【LeetCode】--- MySQL刷题集合

1.组合两个表(外连接) select p.firstName,p.lastName,a.city,a.state from Person p left join Address a on p.personId a.personId; 以左边表为基准,去连接右边的表。取两表的交集和左表的全集 2.第二高的薪水 (子查询、if…

防火墙安全策略

目录 一.拓扑信息 二.需求分析 三.命令行详细配置信息 1.配置IP 2.交换机配置 3.修改安全区域 4.安全策略 四.web界面详细配置 1.配置IP和设置安全区域 2.交换机配置 3.安全策略 五.测试 一.拓扑信息 二.需求分析 1.VLAN 2属于办公区域;VLAN 3属于生…

webrtc入门系列(五)amazon-kinesis-video-streams-webrtc-sdk-c编译

《webrtc入门系列(一)easy_webrtc_server 入门环境搭建》 《webrtc入门系列(二)easy_webrtc_server 入门example测试》 《webrtc入门系列(三)云服务器coturn环境搭建》 《webrtc入门系列(四&…