Android模拟器使用PC端USB转串口调试
连接好线路之后,我就迫不及待地把开发板插上电脑,可能是由于自己电脑的缘故,驱动安装失败。
此时右键点击计算机,点击属性,打开设备管理器,展开端口。
有感叹号的表示驱动程序未安装,右键选择属性,再切换到驱动程序一项,安装或者更新驱动程序。
然后点击高级,把端口设置为COM1/COM2。因为发现使用其它端口根本无法启动模拟器,也没找到原因。
上面的步骤搞定之后,就可以开始连接模拟器调试了。
首先,创建一个模拟器,建议SDK为API23以下的,因为我使用的API23创建了模拟器,怎么都无法
通信,前车之鉴,不过大家也可以试一下,也许是我这边存在的问题。
模拟器创建完成,就需要挂载端口启动模拟器了。
运行cmd,进入Android sdk目录下的tools。比如我所在的目录为D:sdk/tools,输入cd D:sdk/tools回车即可。
-emulator @模拟器名 -qemu -serial COM1 回车,就是这么简单。模拟器未成功启动,说明配置还有问题,再去找找原因。
模拟器成功启动后就要开始与端口进行通信了,打开DDMS,我发现dev目录下有ttyS0,ttyS1,ttyS2,ttyS3等多个文件,究竟哪一个是可以与端口通信的?很多人说是ttyS2,我尝试使
用ttyS2。那么在打开端口通信之前,首先要确保有ttyS2的读写权限。
修改文件读写权限:运行cmd, adb shell cd dev chmod 777 ttyS2。使用这种方式修改
ttyS2的权限只能单次生效,然后运行就报错了,然后就用到了下面的方法。
/* 检查文件是否存在以及文件的读写权限 */
if (device != null && device.exists()) {
if (!device.canRead() || !device.canWrite()) {
try {
Log.e(TAG, “Test device name: ” + device.getName());
/* 没有读写权限,动态修改权限 */
Process su;
su = Runtime.getRuntime().exec(“/system/xbin/su”);
String cmd = “chmod 666 ” + device.getAbsolutePath() + “\n”
+ “exit\n”;
su.getOutputStream().write(cmd.getBytes());
if ((su.waitFor() != 0) || !device.canRead()
|| !device.canWrite()) {
throw new SecurityException();
}
} catch (Exception e) {
e.printStackTrace();
throw new SecurityException();
}
}
}
*
解决读写权限的问题后,就可以开始验证哪个文件才是我们需要用来通信的了,最终发现
ttyS0是我所需要的,可以愉快的开发调试了。