android怎么知道连接的是哪个串口,android下连接串口

本文介绍了在Android中连接串口及开发串口程序的方法。先通过命令启动模拟器并加载PC串口,使用adb shell命令查看串口是否加载,修改权限后即可开发。还给出了串口程序实例,包含相关代码及操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.模拟器可以使用PC的串口

启动模拟器并加载PC串口 命令如下:

运行 emulator @模拟器名称 -qemu -serial COM1

2.查看串口是否被加载

启动后使用 adb shell 命令打开命令行

cd dev 查看会发现ttyS0 ttyS1 ttyS2,其他ttyS2就是我们加载上来的串口COM1

3.修改权限

chmod 777 ttyS2

现在我们可以开发串口程序了。

4.串口程序实例

下载libserial_port.so ,放入libs/armeabi 目录,可以自己创建此目录

libserial_port.so 下载地址:

import java.io.File;

import java.io.FileDescriptor;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import android.util.Log;

public class SerialPort {

private static final String TAG ="SerialPort";

private FileDescriptor mFd;

private FileInputStream mFileInputStream;

private FileOutputStream mFileOutputStream;

public SerialPort(File device, int baudrate)throws SecurityException, IOException {

if (!device.canRead() ||!device.canWrite()) {

try {

Processsu;

su= Runtime.getRuntime().exec("/system/bin/su");

Stringcmd = "chmod 666 " + device.getAbsolutePath() + "n"

+"exitn";

su.getOutputStream().write(cmd.getBytes());

if((su.waitFor() != 0) || !device.canRead()

||!device.canWrite()) {

thrownew SecurityException();

}

} catch(Exception e) {

e.printStackTrace();

thrownew SecurityException();

}

}

mFd =open(device.getAbsolutePath(), baudrate);

if (mFd == null) {

Log.e(TAG,"native open returns null");

throw newIOException();

}

mFileInputStream = newFileInputStream(mFd);

mFileOutputStream = newFileOutputStream(mFd);

}

public InputStream getInputStream() {

return mFileInputStream;

}

public OutputStream getOutputStream() {

return mFileOutputStream;

}

//JNI

private native static FileDescriptor open(Stringpath, int baudrate);

public native void close();

static {

System.loadLibrary("serial_port");

}

}

####################################

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

public class PrintClass {

//输入流

private static InputStream in;

//输出流

private static OutputStream out;

private static final String PORT ="/dev/ttyS2";//串口

private SerialPort serialPort;

private void Connect()

{

try {

serialPort =new SerialPort(new File(PORT), 38400);

in =serialPort.getInputStream();

out =serialPort.getOutputStream();

} catch (SecurityException e){

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

public void CloseSerialPort()

{

try {

out.close();

in.close();

serialPort.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值