1、以下是随笔,很乱的,也有错误和笔误。-记录的目的是后面 NDK 开发做前期的铺垫在 data/data/android.serialport.sample 中放有 lib 和 shared_prefs 中android.serialport.sample_preferences-来保存串口和波特率参数前面我们说过,Android 系统会将 Preference 元素的值存储在 sharedPreference 文件中。该文件存放路径位于DDMS 视图下的 data/data/packgename/shared_prefs/文件下,命名约定为:packagename_preferencse.xm
2、l。所以 android.serialport.sample_preferences.xml 就会存有我们在 SerialPortPreferences类中设定的设备和波特率,其就是一个共享文件哦public class Application extends android.app.Application public SerialPortFinder mSerialPortFinder = new SerialPortFinder();private SerialPort mSerialPort = null;public SerialPort getSerialPort() throws
3、 SecurityException, IOException, InvalidParameterException if (mSerialPort = null) /* Read serial port parameters */* Check parameters */if ( (path.length() = 0) | (baudrate = -1) throw new InvalidParameterException();/* Open the serial port */mSerialPort = new SerialPort(new File(path), baudrate);r
4、eturn mSerialPort;public void closeSerialPort() if (mSerialPort != null) mSerialPort.close();mSerialPort = null;1,跳转到 SerialPortPreferences;-建立”setup”获取 Application 自定义的数据类,类成员 mSerialPortFinder,在 Application 中构造(即初始化)addPreferencesFromResource(R.xml.serial_port_preferences);设置界面布局,对于device 和 baudra
5、tes 进行配置ListPreference 类!保存在 data/data/android.serialport.sample 中 lib 和 shared_prefs 中android.serialport.sample_preferences获取设备下面所有串口设备和路径,SerialPortFinder 类!SerialPortFinder 类!-如下itdriv = getDrivers().iterator();iterator 为迭代器给 getDrivers 加上一个迭代器,遍历所有的驱动。Getdrivers 中 proc/tty/drivers 遍历控制台设备得到要的驱动设
6、备的名称和路径:1, 先遍历 itdriv = getDrivers().iterator();即 getDRIVERS吧每遍历到一个即添加到设备 mDrivers.add(new Driver(w0, w1); driver 类java view plaincopy1. public String getAllDevices() 2. Vector devices = new Vector(); 3. / Parse each driver 4. Iterator itdriv; 5. try 6. /frank 7. Log.d(TAG, “getAllDevices1: “); 8. i
7、tdriv = getDrivers().iterator();/先遍历注册所有符合要求的终端设备9. 10. while(itdriv.hasNext() 11. Log.d(TAG, “getAllDevices2: “); 12. Driver driver = itdriv.next(); 13. Iterator itdev = driver.getDevices().iterator();/ 14. 比较/dev 下路径前缀是否相同的保存下来 然后再到/dev 下面去所搜前缀相同的设备名:譬如:上面遍历到/dev/tty ,那么这里就会搜索有没有 dev/tty0,1,2,3 等等
8、类推这样最后就能在初始化的地方映射到/dev/ttyGS0 dev/s3c2410_serial0/1/2/3 等等while(itdev.hasNext() Log.d(TAG, “getAllDevices3: “);String device = itdev.next().getName();String value = String.format(“%s (%s)“, device, driver.getName();devices.add(value); catch (IOException e) e.printStackTrace();return devices.toArray(
9、new Stringdevices.size();public String getAllDevicesPath() Vector devices = new Vector();/ Parse each driverIterator itdriv;try /frankLog.d(TAG, “getAllDevicesPath1: “);itdriv = getDrivers().iterator(); while(itdriv.hasNext() Log.d(TAG, “getAllDevicesPath1: “);Driver driver = itdriv.next();Iterator
10、itdev = driver.getDevices().iterator();while(itdev.hasNext() Log.d(TAG, “getAllDevicesPath1: “);String device = itdev.next().getAbsolutePath();devices.add(device); catch (IOException e) e.printStackTrace();return devices.toArray(new Stringdevices.size();输出D/SerialPort( 577): getAllDevices1:D/SerialP
11、ort( 577): Found new driver1: /dev/ttyGSD/SerialPort( 577): Found new driver3: 0D/SerialPort( 577): Found new driver2: 251D/SerialPort( 577): Found new driver0: g_serialD/SerialPort( 577): Found new driver1: /dev/ttyUSBD/SerialPort( 577): Found new driver3: 0-253D/SerialPort( 577): Found new driver2
12、: 188D/SerialPort( 577): Found new driver0: usbserialD/SerialPort( 577): Found new driver1: /dev/s3c2410_serialD/SerialPort( 577): Found new driver3: 64-67D/SerialPort( 577): Found new driver2: 204D/SerialPort( 577): Found new driver0: ttySACD/SerialPort( 577): getAllDevices2:D/SerialPort( 577): Fou
13、nd new deviceww: /dev/ttyGS0D/SerialPort( 577): getAllDevices3:D/SerialPort( 577): getAllDevices2:D/SerialPort( 577): getAllDevices2:D/SerialPort( 577): Found new deviceww: /dev/s3c2410_serial0D/SerialPort( 577): Found new deviceww: /dev/s3c2410_serial1D/SerialPort( 577): Found new deviceww: /dev/s3
14、c2410_serial2D/SerialPort( 577): Found new deviceww: /dev/s3c2410_serial3D/SerialPort( 577): getAllDevices3:D/SerialPort( 577): getAllDevices3:D/SerialPort( 577): getAllDevices3:D/SerialPort( 577): getAllDevices3:D/SerialPort( 577): getAllDevicesPath1:D/SerialPort( 577): getAllDevicesPath1:D/SerialP
15、ort( 577): getAllDevicesPath1:D/SerialPort( 577): getAllDevicesPath1:D/SerialPort( 577): getAllDevicesPath1:D/SerialPort( 577): getAllDevicesPath1:D/SerialPort( 577): getAllDevicesPath1:D/SerialPort( 577): getAllDevicesPath1:D/SerialPort( 577): getAllDevicesPath1:第一部分”setup”的初始化总的 device 基本到这里,遍历出了接口,波特率类似记录到这里