Android 应用程序查找设备的方法——以串口为例
youlianyiran 2011-11-03 12:12:08 3834 收藏 2
分类专栏: Android APP
版权
Android 应用程序要经常访问底层设备,访问设备就要用到设备文件描述符,在应用 open ()函数打开设备前,需要先找到设备的路径,因此我们需要通过 JDK 中各种访问文件的方法来查找到设备的路径。这里以串口设备的查找为例,分析一下 Android 应用程序查找设备路径的过程:
1. 查找设备驱动
这是查找串口驱动的源码程序:
private Vector
Vector
if ( mDrivers == null ) {
mDrivers = new Vector
LineNumberReader r = new LineNumberReader(new FileReader("/proc/tty/drivers"));
String l;
while ((l = r.readLine()) != null ) {
String[] w = l.split( " +" );
if ((w. length == 5) && (w[4].equals( "serial" ))) {
Log.d( TAG , "Found new driver: " + w[1]);
mDrivers .add( new Driver(w[0], w[1]));
}
}
r.close();
}
return mDrivers ;
}
该步骤先创建一个新的行号阅读器 LineNumberReader ,读取 /proc/tty/drivers 文件,我在开发板上摘取 /proc/tty/drivers 的文件内容如下:
# cat drivers
/dev/tty /dev/tty 5 0 system:/dev/tty
/dev/console /dev/console 5 1 system:console
/dev/ptmx /dev/ptmx 5 2 system
/dev/vc/0 /dev/vc/0 4 0 system:vtmaster
sdio_uart /dev/ttySDIO 250 0-7 serial
usbserial /dev/ttyUSB 188 0-253 serial
ttySAC /dev/s3c2410_serial 204 64-67 serial
serial /dev/ttyS 4 64-67 serial
pty_slave /dev/pts 136 0-1048575 pty:slave
pty_master /dev/ptm 128 0-1048575 pty:master
pty_slave /dev/ttyp 3 0-255 pty:slave
pty_master /dev/pty 2 0-255 pty:master
unknown /dev/tty 4 1-63 console
然后,逐行读取,取出满足条件的行,添加到驱动队列中。
2. 查找设备
这是查找串口设备的源码程序:
Vector
public Vector
if ( mDevices == null ) {
mDevices = new Vector
File dev = new File( "/dev" );
File[] files = dev.listFiles();
int i;
for (i=0; i if ( files[i].getAbsolutePath().startsWith(mDeviceRoot) ) { Log.d( TAG , "Found new device: " + files[i]); mDevices .add(files[i]); } } } return mDevices ; } 在找到驱动后,就要查找符合驱动的设备,本段程序实现在 "/dev" 文件下查找串口驱动的设备,这里 mDeviceRoot 是 /dev/ttySDIO 、 /dev/ttyUSB 、 /dev/s3c2410_serial 和 /dev/ttyS 。 下面是开发板上的 "/dev" 文件部分内容: # cd /dev # ls : : s3c-pp s3c-rotator s3c2410_serial0 s3c2410_serial1 s3c2410_serial2 s3c2410_serial3 snd socket : : ttyS0 ttyS1 ttyS2 ttyS3 : : 通过这个方法的实现,便可以查找到串口设备的路径。
————————————————
版权声明:本文为CSDN博主「youlianyiran」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/youlianyiran/article/details/6931640