import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import android.util.Log;
public class SerialPort {
private static final String TAG = "SerialProt";
private FileDescriptor mFd = null; //--文件描述符
private FileInputStream fis = null; //--串口输入流
private FileOutputStream fos = null; //--串口输出流
public SerialPort(File device, int baudrate, int flags)
throws InterruptedException {
/****** 判断文件是否可读可写 *******/
if (!device.canRead() || !device.canRead()) {
try {
Process su;
su = Runtime.getRuntime().exec("/System/xbin/su");
String cmd = "chmod 777" + device.getAbsolutePath() + "\n"
+ "exit\n";
su.getOutputStream().write(cmd.getBytes()); //--更改权限可读可写
if (su.waitFor() != 0 || !device.canRead()
|| !device.canWrite()) { // --更改权限后在判断,如果不能读写则抛出新异常
throw new SecurityException();
}
} catch (IOException e) {
e.printStackTrace();
throw new SecurityException();
}
}
mFd = open(device.getAbsolutePath(), baudrate, flags);
if (mFd == null) {
Log.d(TAG, "native open returns null");
}
fis = new FileInputStream(mFd);
fos = new FileOutputStream(mFd);
}
public FileInputStream getFis() {
return fis;
}
public FileOutputStream getFos() {
return fos;
}
// --JNI
private native static FileDescriptor open(String path, int baudrate, int flags); //--打开串口本地方法
public native void close(); //--关闭串口本地方法
static {
System.loadLibrary("serial_port");
}
}
android 串口编程
最新推荐文章于 2021-05-25 20:10:54 发布