private DispQueueThread DispQueue;

private AssistBean AssistData;

private SerialControl ComA;

@Override

public void initView() {

ComA = new SerialControl();//开启串口

DispQueue = new DispQueueThread();//开启线程实时获取数据

DispQueue.start();//线程启动

AssistData = getAssistData();//串口实体类

ComA.setPort("/dev/ttyS5");//串口号,需要向硬件工作人员要

ComA.setBaudRate("115200");//波特率,后台要

OpenComPort(ComA);//发送指令

new Thread() {

@Override

public void run() {

executorService = Executors.newSingleThreadScheduledExecutor();

executorService.scheduleAtFixedRate(new Runnable() {

@Override

public void run() {

ComA.sendHex("fc0000000000");

}

}, 0, 500, TimeUnit.MILLISECONDS);

}

}.start();

private void endExecutorScan() {

if(executorService != null) {

executorService.shutdownNow();

}

executorService = null;//非单例模式,置空防止重复的任务

}

//这是没有指令直接获取硬件数据的方法,假如需要发送指令ComA.setHexLoopData(“指令”);

//假如,要求一秒获取多次数据的情况,上面多出来的代码就是,在需要开始发送的地方写线程开启,在需要关闭和OnDestiory里面条用关闭

//还有一种方法是用sleep不推荐使用,一般硬件要求比较严格sleep对于时间有一个累计的过程不提倡使用,在SerialHelper.Java里面有个方法也是做的一个自动发送功能,其原理就是sleep。SO,我这边直接用的这个

}

private class SerialControl extends SerialHelper {//工具

public SerialControl() {

}

@Override

protected void onDataReceived(final ComBean ComRecData) {

//数据接收量大或接收时弹出软键盘,界面会卡顿,可能和6410的显示性能有关

//直接刷新显示,接收数据量大时,卡顿明显,但接收与显示同步。

//用线程定时刷新显示可以获得较流畅的显示效果,但是接收数据速度快于显示速度时,显示会滞后。

//最终效果差不多-_-,线程定时刷新稍好一些。

DispQueue.AddQueue(ComRecData);//线程定时刷新显示(推荐)

}

}

private class DispQueueThread extends Thread {//线程

private Queue QueueList = new LinkedList();

@Override

public void run() {

super.run();

while (!isInterrupted()) {

final ComBean ComData;

while ((ComData = QueueList.poll()) != null) {

runOnUiThread(new Runnable() {

public void run() {

DispRecData(ComData);

}

});

// try

// {

// Thread.sleep(100);//显示性能高的话,可以把此数值调小。

// } catch (Exception e)

// {

// e.printStackTrace();

// }

break;

}

}

}

public synchronized void AddQueue(ComBean ComData) {

QueueList.add(ComData);

}

}

private int count = 0;

private void DispRecData(ComBean ComRecData) {//获取硬件数据的地方

StringBuilder sMsg = new StringBuilder();

sMsg.append(ComRecData.sRecTime);

sMsg.append("[");

sMsg.append(ComRecData.sComPort);

sMsg.append("]");

sMsg.append(MyFunc.ByteArrToHex(ComRecData.bRec));

count++;

String substring = MyFunc.ByteArrToHex(ComRecData.bRec).trim().replaceAll(" ", "").substring(MyFunc.ByteArrToHex(ComRecData.bRec).trim().replaceAll(" ", "").length() - 8);

long i = Long.valueOf(substring, 16);

Log.d("aaaaaaaaaa", "" + i);

if (ComA != null) {

ComA.stopSend();

ComA.close();

}

}

private AssistBean getAssistData() {

SharedPreferences msharedPreferences = getSharedPreferences("ComAssistant", Context.MODE_PRIVATE);

AssistBean AssistData = new AssistBean();

try {

String personBase64 = msharedPreferences.getString("AssistData", "");

byte[] base64Bytes = Base64.decode(personBase64.getBytes(), 0);

ByteArrayInputStream bais = new ByteArrayInputStream(base64Bytes);

ObjectInputStream ois = new ObjectInputStream(bais);

AssistData = (AssistBean) ois.readObject();

return AssistData;

} catch (Exception e) {

e.printStackTrace();

}

return AssistData;

}

private void OpenComPort(SerialHelper ComPort) {

try {

ComPort.open();

} catch (SecurityException e) {

ShowMessage("打开串口失败:没有串口读/写权限!");

} catch (IOException e) {

ShowMessage("打开串口失败:未知错误!");

} catch (InvalidParameterException e) {

ShowMessage("打开串口失败:参数错误!");

}

}

private void ShowMessage(String sMsg) {

Toast.makeText(this, sMsg, Toast.LENGTH_SHORT).show();

}

android 硬件对接,Android 对接硬件串口篇相关推荐

  1. android开发 硬件加速,Android 开发之硬件加速

    (1)定义 所谓硬件加速,指的是把某些计算工作交给专门的硬件来做,而不是和普通的计算工作一样交给 CPU 来处理.这样不仅减轻了 CPU 的压力,而且由于有了专门硬件的处理,这份计算工作的速度也被加快 ...

  2. android开发 硬件加速,Android开发的硬件加速

    说到硬件加快就必需和软件加快一路注释. (1)界说 所谓硬件加快,指的是把某些较量工作交给专门的硬件来做,而不是和通俗的较量工作一般交给 CPU 来处理.如许不光减轻了 CPU 的压力,并且因为有了专 ...

  3. Android 屏幕绘制机制及硬件加速

    文章目录 前言 硬件加速 CPU / GPU结构对比 OpenGL Android 的图形组件 画笔 画纸 画板 合成及显示 CPU / GPU 绘制过程 软件绘制 硬件加速 视图构建 额外点 硬件加 ...

  4. Android 4.0的图形硬件加速及绘制技巧

    [51CTO独家特稿]从Android 3.0开始,Android 2D的绘制流程就设计为能够更好地支持硬件加速.使用GPU的View在Canvas上进行画的操作时都会使用硬件加速.在最新的Andro ...

  5. android如何获取电视的存储空间,Android TV (二)(处理电视硬件)

    电视硬件基本上不同于其他Android设备.电视不包含一些硬件特性相比于其他电视设备,例如触屏.相机.GPS.电视也完全依赖于二次硬件设备.为了使用户和应用之间能够交互,必须使用远程遥或者游戏手柄.当 ...

  6. Android+usb+spi,Android设备如何使用USB的硬件接口

    你知道Android设备如何使用USB的硬件接口吗?下面将由学习啦小编带大家来解答这个疑问吧,希望对大家有所收获! 如何处理硬件接口问题 最近业界的发展显示,智能手机/便携系统与自动化系统或机械系统之 ...

  7. php对接一网通,Android招行一网通对接

    一.流程 向招行申请测试对接一网通,招行提供一网通测试信息 按照招行一网通开放文档用测试信息一步一步进行,保留测试结果 向招行提交测试报告并申请生产状态信息 修改测试信息为生产信息,开始使用 二.An ...

  8. Android招行一网通对接

    一.流程 向招行申请测试对接一网通,招行提供一网通测试信息 按照招行一网通开放文档用测试信息一步一步进行,保留测试结果 向招行提交测试报告并申请生产状态信息 修改测试信息为生产信息,开始使用 二.An ...

  9. 【链环科技】智能硬件APP开发——通过硬件对接,实现软件与硬件设备的完美结合

    2020年,当物联网.智能家居.5G等科技词汇大范围的进入群体视线时,意味着新型互联网技术的研究和兴起.[重庆链环科技]目前的发展方向"软件开发+硬件对接"这是一种全新的科技概念. ...

  10. unity,cocos对接android版本横幅广告问题

    Unity3d,cocos2d游戏如何对接android版本横幅广告 描述 思路 1. 2. 2.1.cocos游戏 2.2.unity游戏 解决总结 描述 最近公司准备进军海外市场,需要出一套融合f ...

最新文章

  1. 深度学习框架Caffe2并入PyTorch,你的开发效率可能要提升不少
  2. 设计模式原则篇:(1)单一职责原则--Single Responsibility Principle
  3. CSS3 列表、表格、滤镜
  4. linux 程序调试日志,Linux程序调试
  5. python 生成器原理_python生成器
  6. 关于windows CE Platform Builder中模拟器的限制
  7. Building Web Parts for Microsoft SharePoint Products and Technologies
  8. 想做视频号,先纠正一点
  9. jQuery源码分析系列:Deferred延迟队列
  10. C++基本类型隐性转换。
  11. 循环神经(LSTM)网络学习总结
  12. java构建模式_《Java设计模式》之构建者模式
  13. iptables基础(01)
  14. win10固态硬盘分区 整数_固态硬盘怎么重装win10系统?Win10固态硬盘重装系统教程...
  15. 众元教育H3CSE20200603班-云计算基础知识讲解
  16. win10不能安装破解软件:提示系统资源不足,无法完成请求服务的解决方法
  17. 购买vSphere虚拟化主机的配置建议清单
  18. leggedrobotics free gait 足式机器人自由步态 苏黎世机器人系统实验室
  19. can的总结——笑笑
  20. 那曲虫草价目表2022

热门文章

  1. Java中的记录类型
  2. Spring Boot应用程序浪费了内存
  3. it编年史_Java的编年史和低延迟
  4. Zuul 2 –样本过滤器
  5. Java 8中的功能接口是什么? @功能注释和示例
  6. jdk7默认gc算法_JDK 7的算法和数据结构
  7. 将Swagger与Spring Boot REST API集成
  8. 包装类型与包装类别_包装的重要性
  9. 预期的异常规则和模拟静态方法– JUnit
  10. 应用JDK 9 @不推荐使用的增强功能