Android 串口编程原理和实现方式附源码Word格式文档下载.docx
- 文档编号:18920884
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:21
- 大小:60.94KB
Android 串口编程原理和实现方式附源码Word格式文档下载.docx
《Android 串口编程原理和实现方式附源码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Android 串口编程原理和实现方式附源码Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
6.
{
7.
speed
=
getBaudrate(baudrate);
8.
if
(speed
==
-1)
9.
TODO:
throw
an
exception
10.
LOGE("
Invalid
baudrate"
);
11.
return
NULL;
12.
}
13.
14.
15.
Opening
device
16.
17.
jboolean
iscopy;
18.
const
char
*path_utf
(*env)->
GetStringUTFChars(env,
path,
&
iscopy);
19.
LOGD("
serial
port
%s
with
flags
0x%x"
path_utf,
O_RDWR
|
flags);
20.
fd
open(path_utf,
21.
open()
%d"
fd);
22.
ReleaseStringUTFChars(env,
path_utf);
23.
(fd
24.
25.
Throw
26.
Cannot
open
port"
27.
28.
29.
30.
31.
32.
Configure
33.
34.
struct
termios
cfg;
35.
Configuring
36.
(tcgetattr(fd,
cfg))
37.
38.
tcgetattr()
failed"
39.
close(fd);
40.
41.
42.
43.
44.
cfmakeraw(&
cfg);
45.
cfsetispeed(&
cfg,
speed);
46.
cfsetospeed(&
47.
48.
(tcsetattr(fd,
TCSANOW,
49.
50.
tcsetattr()
51.
52.
53.
54.
55.
56.<
/span>
(二)FileDescritor:
文件描述符类的实例用作与基础机器有关的某种结构的不透明句柄,该结构表示开放文件、开放套接字或者字节的另一个源或接收者。
文件描述符的主要实际用途是创建一个包含该结构的FileInputStream
或FileOutputStream。
这是API的描述,不太好理解,其实可简单的理解为:
FileDescritor就是对一个文件进行读写。
(三)实现串口通信细节
1)
建工程:
SerialDemo包名:
org.winplus.serial,并在工程目录下新建jni和libs两个文件夹和一个org.winplus.serial.utils,如下图:
2)新建一个类:
SerialPortFinder,添加如下代码:
[java]
package
org.winplus.serial.utils;
3.import
java.io.File;
4.import
java.io.FileReader;
5.import
java.io.IOException;
6.import
java.io.LineNumberReader;
7.import
java.util.Iterator;
8.import
java.util.Vector;
10.import
android.util.Log;
12.public
class
SerialPortFinder
private
static
final
String
TAG
SerialPort"
;
Vector<
Driver>
mDrivers
null;
public
Driver
Driver(String
name,
root)
mDriverName
name;
mDeviceRoot
root;
mDriverName;
mDeviceRoot;
File>
mDevices
getDevices()
(mDevices
null)
new
();
File
dev
File("
/dev"
File[]
files
dev.listFiles();
i;
for
(i
0;
i
<
files.length;
i++)
(files[i].getAbsolutePath().startsWith(mDeviceRoot))
Log.d(TAG,
Found
device:
+
files[i]);
mDevices.add(files[i]);
mDevices;
getName()
getDrivers()
throws
IOException
(mDrivers
LineNumberReader
r
LineNumberReader(new
FileReader(
/proc/tty/drivers"
));
l;
while
((l
r.readLine())
!
56.
//
Issue
3:
57.
Since
driver
name
may
contain
spaces,
we
do
not
extract
58.
split()
59.
drivername
l.substring(0,
0x15).trim();
60.
String[]
w
l.split("
+"
61.
((w.length
5)
(w[w.length
-
1].equals("
serial"
)))
62.
on
63.
w[w.length
4]);
64.
mDrivers.add(new
Driver(drivername,
4]));
65.
66.
67.
r.close();
68.
69.
mDrivers;
70.
71.
72.
getAllDevices()
73.
String>
devices
74.
Parse
each
75.
Iterator<
itdriv;
76.
try
77.
itdriv
getDrivers().iterator();
78.
(itdriv.hasNext())
79.
itdriv.next();
80.
itdev
driver.getDevices().iterator();
81.
(itdev.hasNext())
82.
itdev.next().getName();
83.
value
String.format("
(%s)"
device,
84.
driver.getName());
85.
devices.add(value);
86.
87.
88.
catch
(IOException
e)
89.
e.printStackTrace();
90.
91.
devices.toArray(new
String[devices.size()]);
92.
93.
94.
getAllDevicesPath()
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
itdev.next().getAbsolutePath();
105.
devices.add(device);
106.
107.
108.
109.
110.
111.
112.
113.}
114.<
上面这个类在“android-serialport-api串口工具测试随笔”中有详细的说明,我就不多说了。
3)新建SerialPort类,这个类主要用来加载SO文件,通过JNI的方式打开关闭串口
java.io.FileDescriptor;
java.io.FileInputStream;
java.io.FileOutputStream;
java.io.InputStream;
9.import
java.io.OutputStream;
11.import
13.public
SerialPort
*
Do
remove
or
rename
the
field
mFd:
it
is
used
by
native
method
close();
FileDescriptor
mFd;
FileInputStream
mFileInputStream;
FileOutputStream
mFileOutputStream;
SerialPort(File
baudrate,
flags)
SecurityException,
access
permission
(!
device.canRead()
||
device.canWrite())
Missing
read/write
permission,
trying
to
chmod
file
Process
su;
su
Runtime.getRuntime().exec("
/system/bin/su"
cmd
666
device.getAbsolutePath()
\n"
exit\n"
su.getOutputStream().write(cmd.getBytes());
((su.waitFor()
0)
SecurityException();
(Exception
mFd
open(device.getAbsolutePath(),
(mFd
Log.e(TAG,
returns
null"
IOException(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 串口编程原理和实现方式附源码 串口 编程 原理 实现 方式 源码