Android模拟器USB转串口调试

    最近公司需要做一个智能手表的指纹模块,在此硬件的基础上,做一个指纹登记、验证的系统应用。
    拿到指纹的开发板的时候,我整个人是懵逼的。这一块电路板和模拟器连接调试,完全没做过啊,但
是任务都下达了,作为公司Android挑大梁的(弱弱的说一句,只有我一个Android开发),这光荣而艰巨
的任务自然必须由我来完成了。然后就各种百度,几经波折,总算是解决了这一问题。 
    连接好线路之后,我就迫不及待地把开发板插上电脑,可能是由于自己电脑的缘故,驱动安装失败。 
    此时右键点击计算机,点击属性,打开设备管理器,展开端口。 
查看端口 
    有感叹号的表示驱动程序未安装,右键选择属性,再切换到驱动程序一项,安装或者更新驱动程序。 
驱动程序 
    然后点击高级,把端口设置为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是我所需要的,可以愉快的开发调试了。 
第一次写博客,不对的地方还请多多指正,谢谢!