当前位置: 首页 > news >正文

临沂做商城网站建设有什么网上做c 的网站

临沂做商城网站建设,有什么网上做c 的网站,做网站代理怎么赚钱,企业网络搭建论文串口发送实质就是向串口设备写入、读取字节流,和文件的操作很相似,安卓官方已经提供了android-serialport-api,在开源社区上也有很多衍生项目可以借鉴,本文介绍其中一种用法。 添加依赖 在Module下的 build.gradle 中添加: implementation com.aill:A…

串口发送实质就是向串口设备写入读取字节流,文件操作很相似,安卓官方已经提供了android-serialport-api,在开源社区上也有很多衍生项目可以借鉴,本文介绍其中一种用法。

  • 添加依赖

在Module下的 build.gradle 中添加:

implementation 'com.aill:AndroidSerialPort:1.0.8'

  • 检测权限

首先要有ROOT权限,而且打开串口时,检测读写权限,当没有权限时,会尝试对其进行授权,默认su路径是/system/bin/su,有些设备su路径是/system/xbin/su:

SerialPort.setSuPath("/system/xbin/su");

  • 串口打开及关闭

/**

* @param 1 串口路径

* @param 2 波特率  

*@param 3 flags 给0就好

 */

SerialPort serialPort = new SerialPort(new File("/dev/ttyS1"), 9600, 0);

//关闭串口

serialPort.close();

  • 往串口中写入数据

//从串口对象中获取输出流

OutputStream outputStream = serialPort.getOutputStream();

//定义需要发送的数据

byte[] data = new byte[2];

data[0] = 0x01;

data[1] = 0x02;

//写入数据

outputStream.write(data);

outputStream.flush();

五、读取串口数据

读取数据时候会遇到不能一次性读取正确的完整的数据,可以这样解决:

1、在开始读取数据前,让读取数据的线程先睡眠一段时间,等待数据都准备好,再开始读取出来,这样应该可以避免大部分的分包情况

2、如果是固定的数据长度,循环读取完固定长度的字节数据再退出

//从串口对象中获取输入流

InputStream inputStream = serialPort.getInputStream();

//循环读取数据,放到子线程去,避免堵塞主线程

boolean readContinue=true;

new Thread(new Runnable() {

    @Override

    public void run() {

while (readContinue) {

      if (inputStream.available() > 0) {

         //等待一段时间再读取数据,基本上大部分情况下都是完整的数据

         Thread.sleep(50);

         byte[] buffer = new byte[12];

    int readCount=0;

    int availableCount=inputStream.available();

//每次接收都是固定长度的字节

  while (readCount < 12 && availableCount > 0) {

              readCount += inputStream.read(buffer, readCount, 12 -readCount);

              Thread.sleep(5);

              availableCount = inputStream.available();

           }

        }

       }

  }

}).start();

3、在实际开发中,有一种应用场景是先发送数据到开发板,开发板再响应返回数据,而且是循环发送读取数据,时间间隔要求极其短,很可能出现了数据错乱情况,可以先在发送数据前判断输入流中有无数据,有数据时先读取完流中的数据。

while (readContinue) {

//判断输入流中有无数据,有数据先读取完清空缓冲,即清空残留数据

    while (inputStream.available() > 0) {

            byte[] buffer = new byte[12];

     inputStream.read(buffer);

     Thread.sleep(5);

    }

//写入数据

outputStream.write(data);

outputStream.flush();

//开始读数据及其他操作

while (readCount < 12 && availableCount > 0) {

              readCount += inputStream.read(buffer, readCount, 12 -readCount);

              Thread.sleep(5);

              availableCount = inputStream.available();

           }

Thread.sleep(100);

}

http://www.yayakq.cn/news/386226/

相关文章:

  • 医生做兼职有什么网站吗邯郸市嘉禾网络科技
  • 媒体发稿网站开发wordpress连接网盘插件
  • 网站创建app郑州哪家公司做网站好
  • 专业建站提供商有空间与域名 怎么做网站
  • 关于网站建设的大学wordpress七牛
  • 亚圣信息科技做网站怎么样小程序开发外包如何约定质量
  • 网站外链价格云南网络营销seo
  • 网站二级目录建站网站建设配置文件无法粘贴
  • 天津网站开发公司电话没有做老千的斗牛网站6
  • 中建材建设有限公司网站网站建设公司营业执照
  • 晋江市住房和城乡建设局网站北京微信网站建设报价单
  • 如何查网站域名备案信息个人电脑搭建云服务器
  • 互联网网站建设公司成都装修设计公司
  • 为企业做网站还有前途吗企业建设网站的价值
  • 个人做网站需要什么资料做网站属于技术开发吗
  • 有个网站是做视频相册的深圳福田地址随便来一个
  • 电脑上制作网站的软件网站后台管理系统html
  • 做网站推广电话晋江论坛网站
  • 穿衣搭配的网站如何做商品展示软件
  • 技术短期培训班合肥seo整站优化
  • 固原网络推广王通seo
  • 杭州做网站哪里好wordpress搭建内网导航
  • 优化网站建设人员组成好的素材下载网站
  • 哈尔滨网站快速排名网站预算表怎么做
  • 延安有哪些做网站的公司wordpress邮件找客户端
  • 顺德做网站那家好多用户商城系统网站建设
  • 网站建站服务公司电话行业网址大全
  • 大型视频网站开发河北网站建设案例
  • 衡水做网站建设公司商品列表页面html模板
  • 网站上的地图导航怎么做的盐山县网站建设公司