900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > android 查找所有的串口 Android 串口通讯 获取卡号

android 查找所有的串口 Android 串口通讯 获取卡号

时间:2023-01-22 05:26:37

相关推荐

android 查找所有的串口 Android 串口通讯 获取卡号

首先你的andoridstudio 需要配置ndk 环境

然后在去下载谷歌的的demo

下载地址

把这些直接复制到代码中

一般jniC语言调用java是指定包名调用的 所有android_serialport_api的包名不要改变

直接复制过去就行

对了 jniLibs 需要指向下,如果不想指向可以把里面的内容复制到 libs里面

我写的指向

sourceSets {

main {

jni.srcDirs = []

jniLibs.srcDirs = ['src/main/jniLibs']

}

}

准备好之后就可以开始写了,,为了更好的了解串口我拍了一张我们机器上的图片如下

这个名字不要弄错了

完整的demo如下

package com.hly.main;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.util.Log;

import android.widget.Toast;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import android_serialport_api.SerialPort;

public class Good extends AppCompatActivity {

protected SerialPort mSerialPort;

protected InputStream mInputStream;

protected OutputStream mOutputStream;

private ReadThread mReadThread;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.text_layout);

try {

//临时卡

mSerialPort = new SerialPort(new File("/dev/ttyS4"), 19200, 0);

mInputStream = mSerialPort.getInputStream();

mOutputStream = mSerialPort.getOutputStream();

mReadThread = new ReadThread();

Toast.makeText(Good.this, "串口已经打开", Toast.LENGTH_SHORT).show();

mReadThread.start();

} catch (SecurityException e) {

e.printStackTrace();

} catch (IOException e) {

Log.v("test", "启动失败");

e.printStackTrace();

}

}

private class MReadThread extends Thread {

@Override

public void run() {

super.run();

while (!isInterrupted()) {

try {

if (mInputStream == null)

return;

byte[] buffer = new byte[64];

int mcount;

if (mInputStream.available() <= 0) {

continue;

} else {

Thread.sleep(300);

}

mcount = mInputStream.read(buffer);

if (mcount > 8) {

//根据自己的情况添加

onDataReceived(buffer, mcount, 1);//根据自己需要的情况添加内容

}

} catch (IOException e) {

e.printStackTrace();

return;

} catch (InterruptedException e) {

e.printStackTrace();

return;

}

}

}

}

protected void onDataReceived(final byte[] buffer, final int size) {

runOnUiThread(new Runnable() {

public void run() {

String msg = new String(buffer);

Toast.makeText(Good.this, msg, Toast.LENGTH_SHORT).show();

//这个是需要截取的卡号

// byte[] bytes = buffer;

// String mealCardData = HexUtils.bytes2Hex(bytes);

// //截取餐卡卡号,临时餐卡为AA55打头

// if (mealCardData != null && mealCardData.length() >= 14) {

// String cardNo = mealCardData.substring(10, 12);

// cardNo = cardNo + mealCardData.substring(8, 10);

// cardNo = cardNo + mealCardData.substring(6, 8);

// cardNo = cardNo + mealCardData.substring(4, 6);

// Toast.makeText(Good.this, cardNo, Toast.LENGTH_SHORT).show();

}

});

}

}

需要注意的地方就是 地址与波特率 不要弄错了

这样就拿到卡号了,如果项目需要截取卡号之类的,自己在处理就行了 。。。

如果有不懂的可以提问,谢谢。。。。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。