Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Tiny210(Android)串口收发测试通过

Tiny210搭载Android2.3.1系统,Android程序实现对板子上的串口的读写。首先将友善之臂的非开源的libfriendlyarm-hardware.so文件导入工程:在源码文件夹下新建libs文件夹,在里面新建armeabi文件夹,拷贝libfriendlyarm-hardware.so到armeabi里面,然后在eclipse的工程目录上右击点Refresh;然后添加HardwareControler.java:新建名为com.friendlyarm.AndroidSDK的Package包,新建HardwareControler.java文件,然后将代码拷进去;最后写自己的Android应用程序。注意:路径不能有一点错误,因为友善之臂提供的是静态库,所以必须按照他们给定的路径来。下面是读写串口的程序。工程目录为:
Java主程序代码:
package com.android.zxw;import java.util.Arrays;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.os.Bundle;import android.os.Handler;import android.util.Xml.Encoding;import android.view.KeyEvent;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import com.friendlyarm.AndroidSDK.HardwareControler;
public class Zxw2Activity extends Activity { private TextView fdText; private EditText senddata; private EditText data1; private Button openSerial; private Button closeSerial; private Button sendSerial; private int fd; Handler handler=new Handler(); Handler sendHandler=new Handler();   Runnable runnable=new Runnable(){ @Override public void run()  { ReadSerial();     //handler.postDelayed(this, 3000); handler.post(this); } };  Runnable sendrunnable=new Runnable(){ @Override public void run()  { SendSerial();     //handler.postDelayed(this, 3000); handler.post(this); } };  /** *接收函数  */  public void ReadSerial(){    //data1.setText(null);    //System.out.println(fd);    int m=HardwareControler.select(fd,2,20);   // System.out.println("a");    //System.out.println(m);    if(m==1)    {   byte[] buf =new byte[10];   try {    Thread.sleep(90);   } catch(InterruptedException e) {    //TODO Auto-generated catch block    e.printStackTrace();   }   int n=HardwareControler.read(fd, buf, buf.length);  // System.out.println("b");   //System.out.println(n);   System.out.println(Arrays.toString(buf));   data1.setText(data1.getText() + "  " + Arrays.toString(buf));   } }     @Override   public void onCreate(Bundle savedInstanceState)   {       super.onCreate(savedInstanceState);       setContentView(R.layout.main);       fdText=(TextView) findViewById(R.id.fdText);       senddata=(EditText) findViewById(R.id.data);       data1=(EditText) findViewById(R.id.data1);       openSerial = (Button) findViewById(R.id.openSerial);       closeSerial = (Button) findViewById(R.id.closeSerial);       sendSerial = (Button) findViewById(R.id.sendSerial);        /**        * 软件运行就直接打开串口        */       //TODO Auto-generated method stub       fd=HardwareControler.openSerialPort("/dev/s3c2410_serial3",115200,8,1);       fdText.setText(Integer.toString(fd));       handler.post(runnable);        sendHandler.post(sendrunnable);       // System.out.println("启动串口线程");       fdText.setText(fdText.getText() + "打开线程");
              closeSerial.setOnClickListener(new Button.OnClickListener(){   @Override   public void onClick(View v) {    //TODO Auto-generated method stub    handler.removeCallbacks(runnable);    HardwareControler.close(fd);    fdText.setText("关闭串口");   }       });              /**        * 发送按钮        */       sendSerial.setOnClickListener(new Button.OnClickListener(){       public void onClick(View v){       SendSerial();       }       });    }      /**    * 发送函数,直接调用友善之臂提供的函数接口    * 我这里将(EditText)senddata中的内容变字符串再变bytes[]    * 接收到的结果有点不对    */   public void SendSerial(){   HardwareControler.write(fd,senddata.gettext().toString().getBytes());     } }接收发送正常。