【小编推荐】android操作串口

2017-03-19   |   发布者:梁国芳   |   查看:3320次

android
 一些Android 手机是有串口可以提供打开,读取一些底层的数据。如果手机本身没有串口的话,那么打开估计会报错。串口读取数据肯定是使用jni调用c代码来完成的。有一个开源的串口库android-serialport-api。其主页在这里http://code.google.com/p/android-serialport-api/  ,这里可以下到APK及对源码。谷歌的代码库,无奈国内无法下载https://github.com/cepr/android-serialport-api ,GITHUB的地址,这个可以下载 但是下载源码之后发现源码不能直接使用,而且源码结构较为复杂。

在这里我是使用服务来读取串口数据,都出来数据直接写入到txt文件里面。

串口读写的库的地址:https://code.google.com/p/android-serialport-api/

github地址:https://github.com/cepr/android-serialport-api 

本篇博客的下载地址:http://download.csdn.net/detail/qq_16064871/9731908

1,注意事项

选择串口时候,需要加上dev/。如果我选择ttyMT2,路径就是dev/ttyMT2。波特率就是整型38400,或者其他。

打开串口以及读取数据的串口类调用加载so库一定放在这个包下面android_serialport_api。不能放在其他包的下面。

SerialPortDevice.class

 

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1.   
  2. package android_serialport_api;  
  3.   
  4. import java.io.FileDescriptor;  
  5. import java.io.FileInputStream;  
  6. import java.io.FileOutputStream;  
  7. import java.io.InputStream;  
  8. import java.io.OutputStream;  
  9.   
  10. import android.util.Log;  
  11.   
  12. public class SerialPortDevice{  
  13.   
  14.     private FileDescriptor mFd;  
  15.     private InputStream mInputStream;  
  16.     private OutputStream mOutputStream;  
  17.       
  18.     private String path;  
  19.     private int baudrate;  
  20.     int flags=0;  
  21.   
  22.     public SerialPortDevice(String path, int baudrate, int flags) {  
  23.         mFd = new FileDescriptor();  
  24.         this.path=path;  
  25.         this.baudrate=baudrate;  
  26.         this.flags=flags;  
  27.     }  
  28.   
  29.       
  30.     public boolean connect()  {  
  31.         mFd = open(path, baudrate, 0);  
  32.         if (mFd == null) {  
  33.             return false;  
  34.         }  
  35.         else  
  36.         {  
  37.             return true;  
  38.         }  
  39.     }     
  40.   
  41.       
  42.     public InputStream getInputStream() {  
  43.         // TODO Auto-generated method stub  
  44.         return new FileInputStream(mFd);  
  45.     }  
  46.   
  47.