Android模拟器使用PC端USB转串口调试

时间:2024-04-07 22:35:21

连接好线路之后,我就迫不及待地把开发板插上电脑,可能是由于自己电脑的缘故,驱动安装失败。 
此时右键点击计算机,点击属性,打开设备管理器,展开端口。 
Android模拟器使用PC端USB转串口调试 
有感叹号的表示驱动程序未安装,右键选择属性,再切换到驱动程序一项,安装或者更新驱动程序。 
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是我所需要的,可以愉快的开发调试了。