Android开发板串口读写操作

首先,把com.friendlyarm.AndroidSDK包(自己下载)添加到项目中。

//打开串口,返回串口描述符fd
fd = HardwareControler.openSerialPort(choose_serialport,choose_baudrate, choose_databits, choose_stopbit);
if (fd != -1) {//打开成功
	new readThread().start();//开始串口的监听线程
} else {//打开失败

 
}
					
//关闭串口操作
HardwareControler.close(fd);


读取串口信息操作:

Handler handler = new Handler() {
	public void handleMessage(Message msg) {
		switch (msg.arg1) {
		case 0:   
 			int len=HardwareControler.read(fd, buf, 300);  //读取串口
        		byte[] hexbuf =new byte[300];
        		byteToHex(buf, hexbuf, len);
       			String bufstring = new String(buf, 0, len);
        		String hexstring = toHex(bufstring); //16进制
                
        		//在这里进行数据的处理
 
       
        		new readThread().start();//处理完消息后立即开启监听线程
                	break;
       		case 1:
               	 	HardwareControler.setLedState(1, 0);
                	new readThread().start();
                	Log.d("readThread","没有数据,新线程启动");
                	break;
       		default:
                	break;
       		}
	}
};
    

//读取串口信息线程

public class readThread extends Thread {        
	public void run(){
            	Message msg = new Message();
            	HardwareControler.setLedState(0, 0);
            	if (HardwareControler.select(fd,5, 0)==1) {  //有数据可读          
                	msg.arg1 = 0;            
            	} else if (HardwareControler.select(fd,5, 0)==0) {  //无数据可读
                	msg.arg1 = 1;
                	HardwareControler.setLedState(0, 1);
            	} else {  //出错
            		msg.arg1 = -1;
            	}
            	handler.sendMessage(msg);
        }
}


往串口里写数据:

HardwareControler.write(fd, bytebuf);     //bytebuf为写入的数据,byte[]类型

//设置循环发送定时器
Handler handler2 = new Handler() {};
Runnable runnable=new Runnable(){
    	
	@Override
	public void run() {
    	 	// TODO Auto-generated method stub
    		//要做的事情
    		    		
		handler2.postDelayed(this, Long.parseLong(time) );  //time为循环发送的时间间隔
      	}
};


    注意,在执行上述的循环发送数据操作后,还需执行新的发送数据操作或者退出时都要先执行handler2.removeCallbacks(runnable)语句,否则之前的循环发送操作则会不断的执行。

 

 

 

你可能感兴趣的:(Android编程开发笔记)