1.模拟器可以使用PC的串口
启动模拟器并加载PC串口 命令如下:
运行 emulator @模拟器名称 -qemu -serial COM1
2.查看串口是否被加载
启动后使用 adb shell 命令打开命令行
cd dev 查看会发现ttyS0 ttyS1 ttyS2,其他ttyS2就是我们加载上来的串口COM1
3.修改权限
chmod 777 ttyS2
现在我们可以开发串口程序了。
4.串口程序实例
下载libserial_port.so ,放入libs/armeabi 目录,可以自己创建此目录
libserial_port.so 下载地址:
http://code.google.com/p/android-serialport-api/
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.util.Log;
public class SerialPort {
private static final String TAG ="SerialPort";
private FileDescriptor mFd;
private FileInputStream mFileInputStream;
private FileOutputStream mFileOutputStream;
public SerialPort(File device, int baudrate)throws SecurityException, IOException {
if (!device.canRead() ||!device.canWrite()) {
try {
Processsu;
su= Runtime.getRuntime().exec("/system/bin/su");
Stringcmd = "chmod 666 " + device.getAbsolutePath() + "n"
+"exitn";
su.getOutputStream().write(cmd.getBytes());
if((su.waitFor() != 0) || !device.canRead()
||!device.canWrite()) {
thrownew SecurityException();
}
} catch(Exception e) {
e.printStackTrace();
thrownew SecurityException();
}
}
mFd =open(device.getAbsolutePath(), baudrate);
if (mFd == null) {
Log.e(TAG,"native open returns null");
throw newIOException();
}
mFileInputStream = newFileInputStream(mFd);
mFileOutputStream = newFileOutputStream(mFd);
}
public InputStream getInputStream() {
return mFileInputStream;
}
public OutputStream getOutputStream() {
return mFileOutputStream;
}
//JNI
private native static FileDescriptor open(Stringpath, int baudrate);
public native void close();
static {
System.loadLibrary("serial_port");
}
}
####################################
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class PrintClass {
//输入流
private static InputStream in;
//输出流
private static OutputStream out;
private static final String PORT ="/dev/ttyS2";//串口
private SerialPort serialPort;
private void Connect()
{
try {
serialPort =new SerialPort(new File(PORT), 38400);
in =serialPort.getInputStream();
out =serialPort.getOutputStream();
} catch (SecurityException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void CloseSerialPort()
{
try {
out.close();
in.close();
serialPort.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}