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

然后在去下载谷歌的的demo

下载地址

把这些直接复制到代码中

一般  jni C语言调用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();

}

});

}

}

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

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

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

android 查找所有的串口,Android 串口通讯 获取卡号相关推荐

  1. Android 串口通讯 获取卡号

    首先你的andoridstudio 需要配置ndk 环境 然后在去下载谷歌的的demo 下载地址 把这些直接复制到代码中 一般  jni C语言调用java 是指定包名调用的 所有android_se ...

  2. android查找本地图片数据库,Android 图片数据库那些事儿

    1 .图片数据库都有哪些字段 [_data] /storage/emulated/0/baidu/searchbox/downloads/u_869433472_2689249404&fm_5 ...

  3. android获取卡号号码,Android银行卡扫描获取银行卡号

    ard.io开源的银行卡扫描的三方库真的是很好用啊. 首先需要在你的module的gradle的依赖文件中添加依赖 compile 'io.card:android-sdk:5.5.1' 2 清单文件 ...

  4. Android 银行卡扫描识别获取卡号

    用card.io 实现的银行卡扫描,免费 Card.io是让手机摄像头获取信用卡的信息,中间利用了OCR(光学字符识别)的扫描技术返回结果,它还推出了SDK(软件开发包),让开发者们可以把card.i ...

  5. libusb 串口 android,libusb开发通讯问题

    libusb开发通讯问题 本篇文章继续记录使用libusb通讯是遇到的问题 问题描述: 使用libusb与一台新的虚拟串口下位机通讯,扫描.打开.关闭都是正常的,就是无法收发数据,也没有报错,这是为什 ...

  6. Android模拟器虚拟串口实现串口通信

    第一步: 根据博文<Android SDK安装及配置模拟器>安装JDK,Android SDK,设置环境变量. 第二步: 运行android-sdk下的SDK Manager.exe 安装 ...

  7. Android 操作串口 (android serial port api)

    Android 操作串口 (android serial port api)

  8. s5p4418 android 驱动 hal 应用之led 串口 rs485 can总线应用(app 有源码)

    本篇是继上篇的jni层后的app应用层. 由于app相对比较大,说起来也比较麻烦,这里就用一个串口来说明即可,实际上也就串口最具代表性,这个明白了,其他都不是问题. 串口涉及的java文件如下图红色圈 ...

  9. android开发板只有网口和串口如何使用android studio进行调试

    android开发板只有网口和串口如何使用android studio进行调试 1.要先准备一条串口线,或者串口转usb的线,用于在pc端与开发板端建立连接. 2.要下载一个在pc端运行的超级终端,我 ...

最新文章

  1. lua学习笔记之闭包
  2. 1、MySQL为什么需要事务?
  3. finite state machine drawer online
  4. cpp加密php,常用的数据加密规则算法(php包含MD5和RSA)
  5. EClipse开发NDK流程
  6. Java多线程之Callable、Future和FutureTask
  7. 八杯水微博程序演示及下载
  8. 石头机器人红灯快闪_机器人集体“快闪”活动爆红网络 “我是AI”与您相约智能新时代...
  9. 使用Python将字符串转换为格式化的日期时间字符串
  10. Python3.x:pyodbc调用sybase的存储过程
  11. oracle bpm 教学视频,oracle BPM直接更新流程
  12. 网络编程(三)sqlist轻量级数据库的简单应用
  13. DV EV OV证书
  14. 2021年南京大学软件工程专硕考研初试410分(数学满分)总成绩第二上岸经验贴
  15. 错误 C2248 “Bus::operator ()”: 无法访问 private 成员(在“Bus”类中声明)
  16. 我给新加坡华人送外卖,一趟5000块
  17. centos6.5安装openoffice和swftools 错误信息
  18. #Python中创建一个字符串映射表
  19. 恶意软件免杀与技术(2022.10.08)
  20. redux与flux

热门文章

  1. CCF202006-4 1246【矩阵快速幂】(100分题解链接)
  2. Bailian4141 砝码称重【DP】
  3. Bailian2722 学分绩点【序列处理】
  4. HDU4548 美素数【水题】
  5. 辨异 —— Java 中的抽象类和接口
  6. Java 定制工具库 —— Print(import static)
  7. 机器学习基础(五十一)—— 决策树的剪枝
  8. CentOS 下的包管理工具RPM
  9. 面向对象——意图与逻辑
  10. C++基础::Stream(二)