android 硬件对接,Android 对接硬件串口篇
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 对接硬件串口篇相关推荐
- android开发 硬件加速,Android 开发之硬件加速
(1)定义 所谓硬件加速,指的是把某些计算工作交给专门的硬件来做,而不是和普通的计算工作一样交给 CPU 来处理.这样不仅减轻了 CPU 的压力,而且由于有了专门硬件的处理,这份计算工作的速度也被加快 ...
- android开发 硬件加速,Android开发的硬件加速
说到硬件加快就必需和软件加快一路注释. (1)界说 所谓硬件加快,指的是把某些较量工作交给专门的硬件来做,而不是和通俗的较量工作一般交给 CPU 来处理.如许不光减轻了 CPU 的压力,并且因为有了专 ...
- Android 屏幕绘制机制及硬件加速
文章目录 前言 硬件加速 CPU / GPU结构对比 OpenGL Android 的图形组件 画笔 画纸 画板 合成及显示 CPU / GPU 绘制过程 软件绘制 硬件加速 视图构建 额外点 硬件加 ...
- Android 4.0的图形硬件加速及绘制技巧
[51CTO独家特稿]从Android 3.0开始,Android 2D的绘制流程就设计为能够更好地支持硬件加速.使用GPU的View在Canvas上进行画的操作时都会使用硬件加速.在最新的Andro ...
- android如何获取电视的存储空间,Android TV (二)(处理电视硬件)
电视硬件基本上不同于其他Android设备.电视不包含一些硬件特性相比于其他电视设备,例如触屏.相机.GPS.电视也完全依赖于二次硬件设备.为了使用户和应用之间能够交互,必须使用远程遥或者游戏手柄.当 ...
- Android+usb+spi,Android设备如何使用USB的硬件接口
你知道Android设备如何使用USB的硬件接口吗?下面将由学习啦小编带大家来解答这个疑问吧,希望对大家有所收获! 如何处理硬件接口问题 最近业界的发展显示,智能手机/便携系统与自动化系统或机械系统之 ...
- php对接一网通,Android招行一网通对接
一.流程 向招行申请测试对接一网通,招行提供一网通测试信息 按照招行一网通开放文档用测试信息一步一步进行,保留测试结果 向招行提交测试报告并申请生产状态信息 修改测试信息为生产信息,开始使用 二.An ...
- Android招行一网通对接
一.流程 向招行申请测试对接一网通,招行提供一网通测试信息 按照招行一网通开放文档用测试信息一步一步进行,保留测试结果 向招行提交测试报告并申请生产状态信息 修改测试信息为生产信息,开始使用 二.An ...
- 【链环科技】智能硬件APP开发——通过硬件对接,实现软件与硬件设备的完美结合
2020年,当物联网.智能家居.5G等科技词汇大范围的进入群体视线时,意味着新型互联网技术的研究和兴起.[重庆链环科技]目前的发展方向"软件开发+硬件对接"这是一种全新的科技概念. ...
- unity,cocos对接android版本横幅广告问题
Unity3d,cocos2d游戏如何对接android版本横幅广告 描述 思路 1. 2. 2.1.cocos游戏 2.2.unity游戏 解决总结 描述 最近公司准备进军海外市场,需要出一套融合f ...
最新文章
- 深度学习框架Caffe2并入PyTorch,你的开发效率可能要提升不少
- 设计模式原则篇:(1)单一职责原则--Single Responsibility Principle
- CSS3 列表、表格、滤镜
- linux 程序调试日志,Linux程序调试
- python 生成器原理_python生成器
- 关于windows CE Platform Builder中模拟器的限制
- Building Web Parts for Microsoft SharePoint Products and Technologies
- 想做视频号,先纠正一点
- jQuery源码分析系列:Deferred延迟队列
- C++基本类型隐性转换。
- 循环神经(LSTM)网络学习总结
- java构建模式_《Java设计模式》之构建者模式
- iptables基础(01)
- win10固态硬盘分区 整数_固态硬盘怎么重装win10系统?Win10固态硬盘重装系统教程...
- 众元教育H3CSE20200603班-云计算基础知识讲解
- win10不能安装破解软件:提示系统资源不足,无法完成请求服务的解决方法
- 购买vSphere虚拟化主机的配置建议清单
- leggedrobotics free gait 足式机器人自由步态 苏黎世机器人系统实验室
- can的总结——笑笑
- 那曲虫草价目表2022