亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android串口操作方法實例

2020-04-11 11:36:12
字體:
來源:轉載
供稿:網友

1.首先下載一個libserial_port.so,新建目錄libs/armeabi,將so文件放到該目錄下。
2.定義串口類,在類的構建函數中修改權限,打開設備,創建輸入流和輸出流,通過native接口訪問串口打開關閉函數

復制代碼 代碼如下:

public class SerialPort {
 /*Do not remove or rename the field mFd: it is used by native method close();*/
 public SerialPort(File device, int baudrate, int flags) throws SecurityException, IOException, InvalidParameterException{
//如果串口權限不夠,改變權限
  /* Check access permission */
  if (!device.canRead() || !device.canWrite()) {
   try {
    /* Missing read/write permission, trying to chmod the file */
    Process su;
    su = Runtime.getRuntime().exec("/system/bin/su");
    String cmd = "chmod 666 " + device.getAbsolutePath() + "/n"
      + "exit/n";
    su.getOutputStream().write(cmd.getBytes());
    if ((su.waitFor() != 0) || !device.canRead()
      || !device.canWrite()) {
     throw new SecurityException();
    }
   } catch (Exception e) {
    e.printStackTrace();
    throw new SecurityException();
   }
  }
  mFd = open(device.getAbsolutePath(), baudrate, flags);//打開串口
  if (mFd == null) {
   Log.e(TAG, "native open returns null");
   throw new IOException();
  }
  mFileInputStream = new FileInputStream(mFd);//串口輸入流
  mFileOutputStream = new FileOutputStream(mFd);//串口輸出流
 }
 // Getters and setters
 public InputStream getInputStream() {
  return mFileInputStream;
 }
 public OutputStream getOutputStream() {
  return mFileOutputStream;
 }
 // JNI
 private native static FileDescriptor open(String path, int baudrate, int flags);//c文件中的串口open()函數
 public native void close();//c文件中的串口close()函數
 static {
  System.loadLibrary("serial_port");//加載串口庫
 }
}
}

3.定義抽象類ServerData
復制代碼 代碼如下:

public abstract class ServerData {
 protected SerialPort mSerialPort;
 protected OutputStream mOutputStream;
 private InputStream mInputStream;
 private ReadThread mReadThread;
 private class ReadThread extends Thread {
  @Override
  //在線程中讀取數據并處理數據
  public void run() {
   super.run();
   byte[] buffer = new byte[128];
   int size;
   while(true) {
    try {
     if (mInputStream == null) return;
     size = mInputStream.read(buffer);//讀取數據
     if (size > 0) {
      onDataReceived(buffer, size);//處理數據
     }
    } catch (IOException e) {
     e.printStackTrace();
     return;
    }
   }
  }
 }
4.實例化串口類,輸出流和輸入流,實例化讀取線程并開始執行該線程
[code]
 public ServerData(String path, int baudrate){
  try {
   mSerialPort = new SerialPort(new File(path), baudrate, 0);
   mOutputStream = mSerialPort.getOutputStream();
   mInputStream = mSerialPort.getInputStream();
   /* Create a receiving thread */
   mReadThread = new ReadThread();
   mReadThread.start();
  } catch (SecurityException e) {
  } catch (IOException e) {
  } catch (InvalidParameterException e) {
  }
 }
 protected abstract void onDataReceived(final byte[] buffer, final int size);
}

[/code]
5.然后再新建一個類,在新建的類中實現上面的抽象函數,并寫一個函數返回讀取到的數據。
復制代碼 代碼如下:

package View;
//導入R類,所在包不同,不能直接飲用,需要導入才可以使用
import android_serialport_api.sample.R;
/* EtcView類,Etc界面管理 */
public class SerialView {
 private Activity context = null;
 private Serial mEtcServer = null;
 /* Etc界面構造函數 */
 public SerialView(Activity context) {
  this.context = context;
 }
 public void EtcInitView() {
  //這樣才可以找到android_serialport_api.sample包下的id
  TextView mytext=(TextView)context.findViewById(R.id.mytext);
  mEtcServer = new Serial("/dev/s3c2410_serial3", 9600);
 }
 public void EtcRefresh() {
  //返回串口線程讀取的數據
  byte[] buffer = mEtcServer.getdata();
  String recString=new String(buffer);//將byte[]的數組轉換成字符串string
  mytext.setText(recString);//設置字符文本
  buffer = null;
 }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕日韩欧美| 欧美日韩国产一区二区三区| 国产一区二区三区三区在线观看| 91久久国产精品91久久性色| 亚洲国产成人爱av在线播放| 精品国产精品三级精品av网址| 亚洲永久免费观看| 久久久国产91| 欧美专区在线视频| 色哟哟亚洲精品一区二区| 精品无人国产偷自产在线| 国产精品白嫩初高中害羞小美女| 国产精品美乳一区二区免费| 久久久久久九九九| 久久频这里精品99香蕉| 国产一区二区三区在线观看网站| 日韩天堂在线视频| 精品中文字幕久久久久久| 欧美激情性做爰免费视频| 亚洲少妇中文在线| 国产suv精品一区二区| 国产精品精品一区二区三区午夜版| 精品香蕉在线观看视频一| 亚洲第一精品电影| 美女黄色丝袜一区| 欧美壮男野外gaytube| 精品久久久一区二区| 在线精品播放av| 亚洲男子天堂网| 91精品视频在线免费观看| 最新亚洲国产精品| 国产精品第七十二页| 九九精品在线观看| 亚洲第一精品福利| 少妇激情综合网| 在线成人中文字幕| 日韩大陆欧美高清视频区| 亚洲欧美三级伦理| 亚洲国产欧美一区| 国产午夜精品美女视频明星a级| 国产精品福利在线观看网址| 日韩大片在线观看视频| 丝袜亚洲另类欧美重口| 在线观看日韩www视频免费| 欧美裸体男粗大视频在线观看| 欧美黄色片在线观看| 国产狼人综合免费视频| 美乳少妇欧美精品| 亚洲精品成人久久电影| 亚洲国产高清高潮精品美女| 亚洲桃花岛网站| 日韩欧美在线网址| 91久久久久久久| 国产精品久久久久久久久久久久久| 亚洲qvod图片区电影| 国产亚洲精品久久久久久777| 8090理伦午夜在线电影| 亚洲成人久久电影| 久久久影视精品| 国产丝袜高跟一区| 欧美成人免费小视频| 一区二区三区无码高清视频| 日韩成人激情影院| 久久躁狠狠躁夜夜爽| 一本色道久久88精品综合| 欧美视频二区36p| 国内精品视频在线| 久久中文字幕国产| 亚洲自拍偷拍福利| 成人欧美一区二区三区黑人| 国产成+人+综合+亚洲欧洲| 欧美老少做受xxxx高潮| 国产suv精品一区二区| 国产精品欧美日韩| 久久影视电视剧免费网站| 97人人爽人人喊人人模波多| 久久这里有精品视频| www.亚洲免费视频| 91久久嫩草影院一区二区| 欧美床上激情在线观看| 亚洲成人av中文字幕| 国产精品av电影| 国产精品1234| 成人信息集中地欧美| 97在线日本国产| 在线丨暗呦小u女国产精品| 日本精品免费一区二区三区| 国内外成人免费激情在线视频网站| zzijzzij亚洲日本成熟少妇| 欧美精品激情blacked18| 日韩免费视频在线观看| 精品久久久久久| 亚洲自拍偷拍色图| 国产欧美日韩专区发布| 人人爽久久涩噜噜噜网站| 欧美日韩视频免费播放| 精品国产91久久久久久| 黄色91在线观看| 欧美午夜女人视频在线| 欧美成人精品h版在线观看| 久久久精品亚洲| 国产精品久久网| 久久精品视频网站| 久久久国产影院| 自拍偷拍亚洲区| 国产欧洲精品视频| 日韩av网址在线| 亚洲自拍小视频| 92看片淫黄大片看国产片| 欧美日韩免费在线| 国产精品久久久久久久久久久久久| 欧美老女人在线视频| 久久精品国产96久久久香蕉| 日本精品一区二区三区在线播放视频| 成人中文字幕+乱码+中文字幕| 欧美在线视频一二三| 高清欧美性猛交xxxx| 亚洲欧美国产日韩中文字幕| 亚洲第一偷拍网| 欧美激情影音先锋| 3344国产精品免费看| 九九热精品在线| 国产视频亚洲视频| 国产丝袜一区二区| 亚洲成人在线网| 国产成人涩涩涩视频在线观看| 亚洲自拍偷拍区| 热久久99这里有精品| 色噜噜国产精品视频一区二区| 国产精品久久久久久av下载红粉| 国产成人免费av电影| 亚洲国产成人在线视频| 亚洲国产欧美自拍| 亚洲理论在线a中文字幕| 欧美电影免费看| 欧美黑人一级爽快片淫片高清| 久久视频免费观看| 97超视频免费观看| 亚洲精品成人久久久| 国产精品美女久久| 日韩中文字在线| 久久久欧美一区二区| 亚州欧美日韩中文视频| 欧美性猛交丰臀xxxxx网站| 不用播放器成人网| 国产精品视频播放| 欧美wwwwww| 日韩av中文字幕在线免费观看| 一区二区三区四区精品| 国产精品欧美日韩一区二区| 懂色av一区二区三区| 91精品久久久久久久久久另类| 久久天堂电影网| 日韩精品中文字幕在线播放| 国产日韩欧美在线视频观看| 57pao成人永久免费视频| 国产中文日韩欧美| 亚洲欧美日韩第一区| 在线观看日韩www视频免费| 最近中文字幕mv在线一区二区三区四区| 日韩在线免费高清视频| 一区二区三区无码高清视频| 亚洲国产精品久久久久秋霞不卡| 国产精品午夜国产小视频|