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");//加载串口库 } } }
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); }
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; } }
本文向大家介绍Python操作串口的方法,包括了Python操作串口的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python操作串口的方法。分享给大家供大家参考。具体如下: 首先需确保安装了serial模块,如果没安装的话就安装一下python-pyserial。 一个Python实现的串口Echo 希望本文所述对大家的Python程序设计有所帮助。
本文向大家介绍Android串口通信之串口读写实例,包括了Android串口通信之串口读写实例的使用技巧和注意事项,需要的朋友参考一下 在Android串口通信:基本知识梳理的基础上,我结合我项目中使用串口的实例,进行总结; Android使用jni直接进行串口设备的读写网上已经有开源项目了,本文是基于网上的开源项目在实际项目中的使用做的调整和优化; Google串口开源项目 下面是我项目中的相关
本文向大家介绍jQuery队列操作方法实例,包括了jQuery队列操作方法实例的使用技巧和注意事项,需要的朋友参考一下 jQuery核心中, 有一组队列控制方法, 这组方法由queue()/dequeue()/clearQueue()三个方法组成, 它对需要连续按序执行的函数的控制可以说是简明自如, 主要应用于animate ()方法, ajax以及其他要按时间顺序执行的事件中. 先解释一下这组方
本文向大家介绍C#串口通信实现方法,包括了C#串口通信实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#串口通信实现方法。分享给大家供大家参考。具体方法如下: 通过COM1发送数据,COM2接收数据。当COM2接收完本次发送的数据后,向COM1发送信息通知COM1本次数据已发完,COM1接到通知后,再发下一段数据。这样可以确保每次发送的数据都可以被正确接收。 代码如下: 辅助代码
KAG 的操作方法说明如下。 Note 这是通常情况下的操作。虽然根据游戏的不同,也会有些功能不开放,不过把这个直接复制粘贴到游戏说明书里也无所谓吧(汗) 基本的操作 「鼠标左键单击」或「滚轮向下滚动」或「确认键」或「空格键」 显示下一段文字、选择选项、按下按钮、选择勾选框等动作 「鼠标右键单击」或「ESC 键」 打开历史记录,或呼叫右键菜单 「↑」「↓」 或 「←」「→」 或 「TAB」「S
本文向大家介绍JavaScript操作Cookie方法实例分析,包括了JavaScript操作Cookie方法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript操作Cookie方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的javascript程序设计有所帮助。