Android串口开发祥解.docx
- 文档编号:4689847
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:8
- 大小:105.83KB
Android串口开发祥解.docx
《Android串口开发祥解.docx》由会员分享,可在线阅读,更多相关《Android串口开发祥解.docx(8页珍藏版)》请在冰豆网上搜索。
Android串口开发祥解
以下是随笔,很乱的,也有错误和笔误。
--记录的目的是后面NDK开发做前期的铺垫
在data/data/android.serialport.sample中放有lib和shared_prefs中android.serialport.sample_preferences----来保存串口和波特率参数前面我们说过,Android系统会将Preference元素的值存储在sharedPreference文件中。
该文件存放路径位于
DDMS视图下的data/data/[packgename]/shared_prefs/文件下,命名约定为:
packagename_preferencse.xml。
所以android.serialport.sample_preferences.xml就会存有我们在SerialPortPreferences类中设定的设备和波特率,其就是一个共享文件哦
publicclassApplicationextendsandroid.app.Application{
publicSerialPortFindermSerialPortFinder=newSerialPortFinder();
privateSerialPortmSerialPort=null;
publicSerialPortgetSerialPort()throwsSecurityException,IOException,InvalidParameterException{
if(mSerialPort==null){
/*Readserialportparameters*/
/*Checkparameters*/
if((path.length()==0)||(baudrate==-1)){
thrownewInvalidParameterException();
}
/*Opentheserialport*/
mSerialPort=newSerialPort(newFile(path),baudrate);
}
returnmSerialPort;
}
publicvoidcloseSerialPort(){
if(mSerialPort!
=null){
mSerialPort.close();
mSerialPort=null;
}
}
1,跳转到SerialPortPreferences;--》建立”setup”
获取Application自定义的数据类,类成员mSerialPortFinder,在Application中构造(即初始化)
addPreferencesFromResource(R.xml.serial_port_preferences);设置界面布局,对于device和baudrates进行配置
ListPreference类!
!
!
!
!
!
保存
在data/data/android.serialport.sample中lib和shared_prefs中android.serialport.sample_preferences
获取设备下面所有串口设备和路径,SerialPortFinder类!
!
!
!
SerialPortFinder类!
!
!
!
------------------------如下
itdriv=getDrivers().iterator();iterator为迭代器给getDrivers加上一个迭代器,遍历所有的驱动。
Getdrivers中proc/tty/drivers遍历控制台设备
得到要的驱动设备的名称和路径:
1,先遍历itdriv=getDrivers().iterator();即getDRIVERS
吧每遍历到一个即添加到设备mDrivers.add(newDriver(w[0],w[1]));driver类
[java] viewplaincopy
1.public String[] getAllDevices() {
2. Vector
3. // Parse each driver
4. Iterator
5. try {
6. //frank
7. Log.d(TAG, "getAllDevices1:
");
8. itdriv = getDrivers().iterator();//先遍历注册所有符合要求的终端设备
9.
10. while(itdriv.hasNext()) {
11. Log.d(TAG, "getAllDevices2:
");
12. Driver driver = itdriv.next();
13. Iterator
14.比较/dev下路径前缀是否相同的保存下来
然后再到/dev下面去所搜前缀相同的设备名:
譬如:
上面遍历到/dev/tty,那么这里就会搜索有没有dev/tty0,1,2,3等等类推
这样最后就能在初始化的地方映射到/dev/ttyGS0 dev/s3c2410_serial0/1/2/3等等
while(itdev.hasNext()){
Log.d(TAG,"getAllDevices3:
");
Stringdevice=itdev.next().getName();
Stringvalue=String.format("%s(%s)",device,driver.getName());
devices.add(value);
}
}
} catch (IOExceptione){
e.printStackTrace();
}
return devices.toArray(new String[devices.size()]);
}
public String[]getAllDevicesPath(){
Vector
//Parseeachdriver
Iterator
try {
//frank
Log.d(TAG,"getAllDevicesPath1:
");
itdriv=getDrivers().iterator(); while(itdriv.hasNext()){
Log.d(TAG,"getAllDevicesPath1:
");
Driverdriver=itdriv.next();
Iterator
while(itdev.hasNext()){
Log.d(TAG,"getAllDevicesPath1:
");
Stringdevice=itdev.next().getAbsolutePath();
devices.add(device);
}
}
} catch (IOExceptione){
e.printStackTrace();
}
return devices.toArray(new String[devices.size()]);
}
}
输出
D/SerialPort( 577):
getAllDevices1:
D/SerialPort( 577):
Foundnewdriver1:
/dev/ttyGS
D/SerialPort( 577):
Foundnewdriver3:
0
D/SerialPort( 577):
Foundnewdriver2:
251
D/SerialPort( 577):
Foundnewdriver0:
g_serial
D/SerialPort( 577):
Foundnewdriver1:
/dev/ttyUSB
D/SerialPort( 577):
Foundnewdriver3:
0-253
D/SerialPort( 577):
Foundnewdriver2:
188
D/SerialPort( 577):
Foundnewdriver0:
usbserial
D/SerialPort( 577):
Foundnewdriver1:
/dev/s3c2410_serial
D/SerialPort( 577):
Foundnewdriver3:
64-67
D/SerialPort( 577):
Foundnewdriver2:
204
D/SerialPort( 577):
Foundnewdriver0:
ttySAC
D/SerialPort( 577):
getAllDevices2:
D/SerialPort( 577):
Foundnewdeviceww:
/dev/ttyGS0
D/SerialPort( 577):
getAllDevices3:
D/SerialPort( 577):
getAllDevices2:
D/SerialPort( 577):
getAllDevices2:
D/SerialPort( 577):
Foundnewdeviceww:
/dev/s3c2410_serial0
D/SerialPort( 577):
Foundnewdeviceww:
/dev/s3c2410_serial1
D/SerialPort( 577):
Foundnewdeviceww:
/dev/s3c2410_serial2
D/SerialPort( 577):
Foundnewdeviceww:
/dev/s3c2410_serial3
D/SerialPort( 577):
getAllDevices3:
D/SerialPort( 577):
getAllDevices3:
D/SerialPort( 577):
getAllDevices3:
D/SerialPort( 577):
getAllDevices3:
D/SerialPort( 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:
D/SerialPort( 577):
getAllDevicesPath1:
D/SerialPort( 577):
getAllDevicesPath1:
第一部分”setup”的初始化总的device基本到这里,遍历出了接口,波特率类似
记录到这里
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 串口 开发