概述
一.Linux内核驱动层
1. 确定你想进行数据交互的驱动模块, 比如要与驱动名为 serio_module的驱动交互
2. 确定在驱动模块文件中使用的交互变量, 比如需要交互的变量为 static int s_connect_value[3] ={1,2,3};
那么需要在驱动程序中添加
module_param_array(s_connect_value,int NULL,S_IRUGO | S_IWUSR);
接着, 在adb shell中会存在 /sys/module/ serio_module/parameters/s_connect_value这样一个文件. 我们可以通过
echo 1, 2, 3 > /sys/module/serio_module/parameters/s_connect_value
改变其中的值, 在内核中添加打印会发现 终端 echo 完后, s_connect_value数组的值也会发生改变
二.android 应用层
int ConnectValue[3] = {1,2,3};
StringBuilder screenRawData = new StringBuilder();
screenRawData.append(ConnectValue[0]);
screenRawData.append(",");
screenRawData.append(ConnectValue[1]);
screenRawData.append(",");
screenRawData.append(ConnectValue[2]);
screenRawData.append(" ");
String CMDData= new String( "echo " + screenRawData + " > /sys/module/serio_module/parameters/s_connect_value");
java.lang.Process process = null;
DataOutputStream os = null;
BufferedReader successResult = null;
BufferedReader errorResult = null;
StringBuilder successMsg = null;
StringBuilder errorMsg = null;
try {
process = Runtime.getRuntime().exec("");
os = new DataOutputStream(process.getOutputStream());
//将命令数据写入
os.write(CMDData.getBytes());
os.writeBytes("n");
os.writeBytes("exitn");
os.flush();
//执行命令
process.waitFor();
//获取返回结果
successMsg = new StringBuilder();
errorMsg = new StringBuilder();
successResult = new BufferedReader(new InputStreamReader(process.getInputStream()));
errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String s;
while ((s = successResult.readLine()) != null) {
successMsg.append(s);
}
while ((s = errorResult.readLine()) != null) {
errorMsg.append(s);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (os != null) {
os.close();
}
if (process != null) {
process.destroy();
}
if (successResult != null) {
successResult.close();
}
if (errorResult != null) {
errorResult.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
//显示结果
Log.d(TAG, "命令执行结果:" + successMsg.toString() + ",错误消息: " + errorMsg.toString());
最后
以上就是现实羽毛为你收集整理的android应用与Linux内核驱动数据交互的全部内容,希望文章能够帮你解决android应用与Linux内核驱动数据交互所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复