Uart API

Chinese, Simplified

简介


android/linux而言,串口设备可以看作一个特殊文件,访问串口跟访问一般文件有点类似,创建对应的outstream/inpustream,然后读写即可。特殊的地方在于串口需要配置诸如波特率等参数,java没有对应的接口,所以还须借助于jni来完成


AmLink平台 m100有4个串口可用,m100c有2个,对应的设备文件路径分别是ttyMT0~ttyMT3.

参考例子

下面是一个可用于我们系统的开源的代码可供参考(android-serialport-api)

1.     code (android比较官方的,但版本很老):

android-serialport-api-master.zip

2.     APK:

serialtest_v1.2.apk.zip



    3. 我们的Demo code :

TmlApplication.zip



简单介绍下SerialPort类的使用

1.     串口初始化,参考代码如下:

 private SerialPort mSerialPort = null;
 protected OutputStream mOutputStream;
 protected InputStream mInputStream;
 /*AmLink平台 m100有4个串口可用,m100c有2个,对应的设备文件路径分别是
    /dev/ttyMT0
    /dev/ttyMT1   
    /dev/ttyMT2
    /dev/ttyMT3
 */
 String portPath = "/dev/ttyMT0";
 /*波特率:115200,flag:0*/
 mSerialPort = new SerialPort(new File(portPath), 115200, 0);  
 mOutputStream = mSerialPort.getOutputStream();
 mInputStream = mSerialPort.getInputStream();

2.     串口输出,主要通过mOutputStream,参考代码:

   /*输出10个字符‘A’*/
  byte[] mBuffer;
  mBuffer = new byte[10];
  Arrays.fill(mBuffer, (byte) 'A');
  try {
       mOutputStream.write(mBuffer);
  } catch (IOException e) {
       e.printStackTrace();
  }

3.     串口输入,主要通过mInputStream,参考代码:

  byte[] buffer = new byte[64];
  size = mInputStream.read(buffer);
  if (size > 0) {
      //处理接收到的数据(在buffer里)
  }

      接收数据一般建议单起一个线程来完成,如:

private class ReadThread extends Thread {
 
        @Override
        public void run() {
            super.run();
            while(!isInterrupted()) {
                int size;
                try {
                    byte[] buffer = new byte[64];
                    if (mInputStream == null) return;
                    size = mInputStream.read(buffer);
                    if (size > 0) {
                            //process data here !
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                    return;
                }
            }
        }
}

 

* 对于m100c/m101c 模块,只有2组独立串口,uart0和uart1,uart1对应的引脚模块开机不是串口模式,需要软件配置,根据具体的硬件需求,软件在用uart1前,需设置对应的引脚为串口模式。例如,如果用模块的127/50 引脚作为uart1的tx/rx ,需调用参考代码里的switchUartMode_Pin127_50函数。以此类推。


移植步骤

(不同的android studio版本会有差异, 特别是step 3和step 5只适合比较老的版本,

建议联系support@temolin.com获取最新参考代码,最新的参考代码,uart相关接口以aar/so形式提供,用户不需要写jni.

用户移植只需要参考libs/, jnilibs/,  build.gradle等几个地方的内容即可。 )



文档中心

以上内容是否对您有帮助?