Android 串口通讯 获取卡号
生活随笔
收集整理的這篇文章主要介紹了
Android 串口通讯 获取卡号
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先你的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;@Overrideprotected 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 {@Overridepublic 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 串口通讯 获取卡号的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java.lang.RuntimeExc
- 下一篇: 关于英语电影配音的问题