Android 串口开发,发送串口命令,读卡,反扫码,USB通讯,实现demo。——持续更新

应用场景:APP发送串口命令到打印机,打印相应数据小票

// 串口
implementation 'com.github.licheedev.Android-SerialPort-API:serialport:1.0.1'

 1、获取全部串口地址devicePath

private String[] mDevices;
public void getcuankou(){SerialPortFinder serialPortFinder = new SerialPortFinder();mDevices = serialPortFinder.getAllDevicesPath();for (int c = 0;c<mDevices.length;c++){Log.i("lgq","......  "+mDevices[c]);}
}

2、连接串口,以及关闭串口

/*** 打开串口** @param devicePath* @param baudrateString* @return*/
public SerialPort open(String devicePath, String baudrateString) {if (mSerialPort != null) {close();}try {File device = new File(devicePath);int baurate = Integer.parseInt(baudrateString);mSerialPort = new SerialPort(device, baurate, 0);mReadThread = new SerialReadThread(mSerialPort.getInputStream());mReadThread.start();mOutputStream = mSerialPort.getOutputStream();mWriteThread = new HandlerThread("write-thread");mWriteThread.start();mSendScheduler = AndroidSchedulers.from(mWriteThread.getLooper());return mSerialPort;} catch (Throwable tr) {LogPlus.e(TAG, "打开串口失败", tr);close();return null;}
}/*** 关闭串口*/
public void close() {if (mReadThread != null) {mReadThread.close();}if (mOutputStream != null) {try {mOutputStream.close();} catch (IOException e) {e.printStackTrace();}}if (mWriteThread != null) {mWriteThread.quit();}if (mSerialPort != null) {mSerialPort.close();mSerialPort = null;}
}

Android接收读卡器以及扫码器返回数据实现方法

 工具类

public class CardSwipingHelper {private static final String TAG = CardSwipingHelper.class.getSimpleName();private static class SingletonHolder {private static final CardSwipingHelper INSTANCE = new CardSwipingHelper();}private CardSwipingHelper() {}public static final CardSwipingHelper getInstance() {return SingletonHolder.INSTANCE;}private StringBuffer stringBuffer=null ;public boolean dispatchKeyEvent(KeyEvent event) {if (event.getAction() == KeyEvent.ACTION_DOWN) {char pressedKey = (char) event.getUnicodeChar();if(stringBuffer==null){stringBuffer=new StringBuffer();}if (event.getUnicodeChar()==0){return false;}stringBuffer.append(pressedKey);}if (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {if (mCardSwipingCallBack != null) {mCardSwipingCallBack.enterCardSwipingCont(replaceBlank(stringBuffer.toString()));}stringBuffer = null;return true;}return false;}private CardSwipingCallBack mCardSwipingCallBack;public void setCardSwipingCallBack(CardSwipingCallBack cardSwipingCallBack) {mCardSwipingCallBack = cardSwipingCallBack;}public interface CardSwipingCallBack {void enterCardSwipingCont(String cont);}public static String replaceBlank(String src) {String dest = "";if (src != null) {Pattern pattern = Pattern.compile("\t|\r|\n|\\s*");Matcher matcher = pattern.matcher(src);dest = matcher.replaceAll("");}return dest;}
}

回调

private CardSwipingHelper.CardSwipingCallBack mCardSwipingCallBack = new CardSwipingHelper.CardSwipingCallBack() {@Overridepublic void enterCardSwipingCont(String cont) {try {String str2 = new String(cont.getBytes("utf-8"), "gbk");LgqLogutil.e("刷卡返回=====  "+cont+"...."+str2);tologin(cont);//刷卡登录}catch (Exception e){}}
};//拦截刷卡的情况http://weixin.qq.com/r/Ti3s9NXE2oilrZGX93hchttp://weixin.qq.com/r/Ti3s9NXE2oilrZGX93hc
@Override
public boolean dispatchKeyEvent(KeyEvent event) {if (CardSwipingHelper.getInstance().dispatchKeyEvent(event)) {return true;}return super.dispatchKeyEvent(event);
}

CardSwipingHelper.getInstance().setCardSwipingCallBack(mCardSwipingCallBack);//扫码回调

注意:

EditText回拦截回调

USB连接 

action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter"

 

 

 在线回复bug:QQ1085220040

实现demo:https://download.csdn.net/download/meixi_android/12515052

demo云盘地址:https://pan.baidu.com/s/1lOun6ekdOrLoiuQH_WPxag

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10-Flutter移动电商实战-使用FlutterSwiper制作轮播效果

10-Flutter移动电商实战-使用FlutterSwiper制作轮播效果 1、引入flutter_swiper插件 flutter最强大的siwiper, 多种布局方式&#xff0c;无限轮播&#xff0c;Android和IOS双端适配. 好牛X得介绍&#xff0c;一般敢用“最”的一般都是神级大神&#xff0c;看到这个介绍后我也是…

python中的分号

很多编程语言是以分号作为一行代码的的结束标志&#xff0c;但是在Python中不是这样的&#xff0c;而是靠缩进来识别程序结构。 Python中一行代码以分号结束&#xff0c;并不是必须的&#xff0c;准确来说是不被推荐的&#xff0c;因为加上分号就是画蛇添足的行为&#xff0c;吃…

工作271:打开弹出框调用当前页面接口

<template><div><button-dialogopen"open"ref"dialog"width"1000px"title"内容关联"ok-button-text"确认关联":destroy-on-close"true"ok"confirmAssociation"><!----><cus…

Android char数据类型乱码��解决方法

一般char类型是在一个循环当中使用的。同时会结合其他数据类型使用&#xff0c;如StringBuffer。通过stringBuffer.append(pressedKey);方法把循环的char组合成一个String。 通过打印数据可以看到当0转换为char类型时&#xff0c;会出现乱码&#xfffd;&#xfffd; 所以解决…

11-Flutter移动电商实战-首页_屏幕适配方案和制作

11-Flutter移动电商实战-首页_屏幕适配方案和制作 1、flutter_ScreenUtil插件简介 flutter_ScreenUtil屏幕适配方案&#xff0c;让你的UI在不同尺寸的屏幕上都能显示合理的布局。 插件会让你先设置一个UI稿的尺寸&#xff0c;他会根据这个尺寸&#xff0c;根据不同屏幕进行缩…

历史:古代:秦朝

秦&#xff0c;南进两广吞百越&#xff0c;北打匈奴连燕赵秦长城 焚书坑儒 扶苏蒙恬&#xff0c;胡亥赵高&#xff0c;指鹿为马 陈胜吴广起义 刘邦&#xff08;萧何&#xff09;斩白蛇起义&#xff0c;投靠项羽&#xff08;楚国人&#xff09; 刘项进关中&#xff0c;收张良&am…

Android 友盟推送开发

推送厂商集成文档&#xff1a;https://developer.umeng.com/docs/67966/detail/98589?spma311a.9588098.0.0#h1-vivo-push-5 SDK下载&#xff1a;https://developer.umeng.com/sdk/android 集成步骤 1、导入依赖 implementation com.umeng.sdk:common:1.5.3 implementation …

12-Flutter移动电商实战-首页导航区域编写

12-Flutter移动电商实战-首页导航区域编写 1、导航单元素的编写 从外部看&#xff0c;导航是一个GridView部件&#xff0c;但是每一个导航又是一个上下关系的Column。小伙伴们都知道Flutter有多层嵌套的问题&#xff0c;如果我们都写在一个组件里&#xff0c;那势必造成嵌套严…

Day3_操作记录

python基础&#xff1a; 回顾 1. 条件判断 if &#xff1a; x else&#xff1a; xx 循环 while for for i in range(5): 2. 数据类型&#xff1a; int 类型 float 小数类…

Android 全局悬浮按钮,悬浮按钮点击事件

实现效果&#xff1a; 实现方法&#xff1a; 在自定义baseActivity里面添加viwe即可。在子activity里刷新悬浮View即可 public abstract class BaseActivity extends BaseCommonActivity {LinearLayout saoli,ewmli;ImageView imageView;private QrCodeDialog mMQrCodeDialog;p…

13-Flutter移动电商实战-ADBanner组件的编写

1、AdBanner组件的编写 我们还是把这部分单独出来&#xff0c;需要说明的是&#xff0c;这个Class你也是可以完全独立成一个dart文件的。代码如下&#xff1a; 广告图片class AdBanner extends StatelessWidget { final String advertesPicture; AdBanner({Key key, this.adv…

android远程调试工具,android投屏工具

远程调试工具 说明&#xff1a;远程对方电脑需下载安装两个软件&#xff1a;Android studio 和向日葵 android投屏工具 说明&#xff1a;涉及硬件开发时&#xff0c;有的硬件没有安卓屏&#xff0c;可以使用 两个工具exe文件下载连接&#xff1a; https://download.csdn.net/…

14-Flutter移动电商实战-ADBanner组件的编写

拨打电话的功能在app里也很常见&#xff0c;比如一般的外卖app都会有这个才做。其实Flutter本身是没给我们提供拨打电话的能力的&#xff0c;那我们如何来拨打电话那? 1、编写店长电话模块 这个小伙伴们一定轻车熟路了&#xff0c;我也就不再多介绍吧。直接看代码&#xff0c;…

Android 捕获异常,上报异常日志,捕获奔溃日志,bugly使用实例

1、登录腾讯bugly平台创建应用 腾讯Bugly - 一种愉悦的开发方式 _android anr_android anr分析_iOS崩溃日志分析平台 2、1加载依赖 /*崩溃处理 */ implementation com.tonystark.android:defense_crash:2.0.0 //bugly implementation com.tencent.bugly:crashreport_upgrade:1.…

Android 获取天气数据

/** * 天气API * param cityname * return */ private String getUrl(String cityname){ return "http://wthrcdn.etouch.cn/weather_mini?city"cityname; } 传入城市&#xff0c;即可返回天气数据

windows下dos窗口实现持续ping显示时间保存至日志

效果图 右击新建 ping.bat 文件&#xff08;ping为文件名称&#xff0c;随便起&#xff09;&#xff0c;内容如下&#xff1a; cscript ping.vbs 127.0.0.1 -t >log.txt127.0.0.1 修改为你自己的ip地址&#xff0c;log 为记录日志的文件名 右击新建 ping.vbs 文件&#x…