C#使用ADB工具获取手台消息
来源:互联网 发布:淘宝子账号要下载什么 编辑:程序博客网 时间:2024/06/15 06:19
放最近项目中用到ADB工具,在C#程序中获取手台的LTE消息,并进行解析处理。下面说一下如何通过C#控制ADB工具,从手台获取LTE消息。
首先通过进程类Process设置进程信息,代码如下:
然后获取ADB进程
adb = processHelper.GetProcess(AppSettings.GetValue("adb_file"));adb.StartInfo.Arguments = "shell su \"cat /dev/ttyUSB-21\"; cat /dev/ttyUSB-21" ;上述代码中adb_file是adb.exe文件的绝对路径。
获取进程后启动ADB进程并设置数据重定向点,开始异步读取
if (adb.Start()) {try { adb.OutputDataReceived += OutputDataOnReceived; adb.ErrorDataReceived += OutputErrorDataOnReceived; adb.BeginOutputReadLine();} catch (Exception e) { log.Error(e.Message);}}
然后在OutputDataOnReceived函数中接收并处理数据。
有几点需要注意:
1. 进入ADB shell之后就可以直接同手台进行互通,这里给手台发送消息的格式为 shell + 命令,比如查看当前目录的命令为:shell pwd;如果需要发送多条命令,则可以使用字符‘&’或者‘;’,比如查看当前目录并显示当前目录下的文件命令为:shell pwd & ls或者shell pwd; ls。有部分命令需要特殊权限,此时需要先获取命令权限,然后再执行,如上述例子中所示,命令为:shell su \"cat /dev/ttyUSB-21\"; cat /dev/ttyUSB-21
2. 我重定向了输入之后,使用adb.StandardInput.Write()命令无效,不了能写入命令,原因没有查清楚;如果遇到这种情况,请自行查阅,也烦请告知鄙人解决方法。
3. 使用异步读取时,不能与同步操作同时使用,原因见此
使用Process类控制进程的启动和结束,以及向启动的进程写入命令、参数或者从进程中读取输出操作,会时常出现这样那样的问题,有些问题是控制程序本身的问题,许多时候也跟我们要控制的进程有关,所以遇到的问题形形色色,有时候只能另辟他径。
阅读全文
0 0
- C#使用ADB工具获取手台消息
- Android ADB工具-操作手机和获取手设备信息(四)
- Android ADB工具使用
- adb工具的使用
- Android ADB 工具使用
- ANDROID ADB工具使用
- Android ADB 工具使用
- ADB工具的使用
- Android ADB 工具使用
- ADB工具的使用
- adb 工具使用
- adb工具使用
- 工具使用: adb
- 关于adb工具使用
- 使用adb命令操作多台设备
- 使用adb命令操作多台设备
- 关键字: android 工具使用 adb
- Android的ADB工具使用
- maven命令
- Mysql学习历程(17)-事务
- 微信服务器在五秒内无响应多次请求去重
- 服务器发送事件SSE
- 泛型和通配符
- C#使用ADB工具获取手台消息
- Java中时间和字符串转化
- 设计模式(2)工厂模式、工厂方法模式、抽象工厂模式
- py2vspy3
- JavaScript中new String()和直接""有什么区别?
- Leetcode#53 Maximum Subarray
- 个推(App端)
- 由哈希表所联想到的相关问题
- 记一次OOM堆栈信息泄漏分析过程