我一直在尝试使用与Arduino Uno的串行通信,并使用了库jSSC-2.6.0 . 我正在使用 SeriaPortEvent 侦听器从串行端口(Arduino)接收字节并将它们存储在链接列表中 .

public synchronized void serialEvent(SerialPortEvent serialPortEvent) {

if (serialPortEvent.isRXCHAR()) { // if we receive data

if (serialPortEvent.getEventValue() > 0) { // if there is some existent data

try {

byte[] bytes = this.serialPort.readBytes(); // reading the bytes received on serial port

if (bytes != null) {

for (byte b : bytes) {

this.serialInput.add(b); // adding the bytes to the linked list

// *** DEBUGGING *** //

System.out.print(String.format("%X ", b));

}

}

} catch (SerialPortException e) {

System.out.println(e);

e.printStackTrace();

}

}

}

}

现在,如果我在循环中发送单个数据并且不等待任何响应,则serialEvent通常会将收到的字节打印到控制台 . 但是如果我试着等到链表中有一些数据,那么程序就会继续循环,而SerialEvent永远不会向LinkedList添加字节,它甚至都不会记录任何正在接收的字节 .

这有效,并且由SerialEvent收到的Arduino发送正确的字节并打印到控制台:

while(true) {

t.write((byte) 0x41);

}

但是这个方法只是停留在this.available(),它返回LinkedList的大小,因为实际上没有数据从Arduino接收或者被serialEvent接收:

public boolean testComm() throws SerialPortException {

if (!this.serialPort.isOpened()) // if port is not open return false

return false;

this.write(SerialCOM.TEST); // SerialCOM.TEST = 0x41

while (this.available() < 1)

; // we wait for a response

if (this.read() == SerialCOM.SUCCESS)

return true;

return false;

}

我调试了程序,有时调试,程序确实有效,但并非总是如此 . 当我尝试检查链表中是否有一些字节,即(available()<1)时,程序只会卡住 . 否则,如果我不检查,我最终会从Arduino收到正确的字节响应

java jssc_我的SerialPortEvent在连续循环中不使用jSSC接收数据相关推荐

  1. 求android 中串口的发送接收数据代码

    RT,求高手帮忙! 就是 /dev/ttyS0 和/dev/ttyS1 两个设备的通信问题.. 同求~ 这个是不是需要串口驱动啊?最近正在搞这个串口通信的案子,头疼 同样也没有搞出来,老是报:不能扫描 ...

  2. 【Java数据库】CLOB BLOB 在数据库中存入/取出大量文本数据、二进制文件(图片)

    CLOB(Character Large Object) – 用于存储大量的文本数据 – 大字段有些特殊,不同数据库处理的方式不一样,大字段的操作常常是以流的 方式来处理的.而非一般的字段,一次即可读 ...

  3. java的sas数据安全_使用sas中的do循环指定数据信息

    这里有一些方法可行 . 最直接可以翻译的方法是使用宏语言 . 你需要将这两个循环翻译成这样的东西: %do i = 1940 %to 2018; %do j = 1 %to 12; informat ...

  4. java gzip压缩json_将PHP程序中返回的JSON格式数据用gzip压缩输出的方法

    1.使用压缩与不使用压缩的HTTP输出比较 2.开启gzip 利用apache mod_deflate module 开启gzip 开启方法: sudo a2enmod deflate sudo /e ...

  5. 浅谈ASP中Web页面间的数据传递

    [简 介] 基于Web的动态网页设计必会涉及到页面间的数据传递,文章探讨了ASP设计中常用的Web页面间的数据传递方式,分析各种数据传递方式的使用方法.使用场合及优缺点,其都是设计阶段选择数据传递方式 ...

  6. java restful接口开发实例_Spring Boot 中 10 行代码构建 RESTful 风格应用!

    点击上方"Java后端技术",选择"置顶或者星标" 你关注的就是我关心的! 作者:江南一点雨 微信公众号:牧码小子(ID:a_javaboy) 推荐阅读:10个 ...

  7. java怎么加定时器_JAVA WEB程序中添加定时器

    JAVA WEB程序中添加定时器 //这是我的定时器类,用来定时执行某段任务: package com.my.time; import java.text.ParseException; import ...

  8. java 修改wav文件头_使用Java聲音API從WAV文件中修剪開頭和結尾

    我有製作的基礎知識.但是,輸出文件一遍又一遍地重複WAV標頭字節.生成的文件大小合適,但是它與垃圾一起提交.使用Java聲音API從WAV文件中修剪開頭和結尾 我想使用一個擴展AudioInputSt ...

  9. java: 在相应的 try 语句主体中不能抛出异常错误java.io.IOException

    java: 在相应的 try 语句主体中不能抛出异常错误java.io.IOException 参考文章: (1)java: 在相应的 try 语句主体中不能抛出异常错误java.io.IOExcep ...

最新文章

  1. android之利用SQLite数据库实现登陆和注册
  2. svn hook同步更新svn到web服务器
  3. Java 多线程模拟卖票
  4. Pycharm(社区版) 创建Flask项目
  5. java beanutil 工具类_实现BeanFactoryAware来达到Spring静态方法获取Bean对象的BeanUtil工具类...
  6. Yii防注入攻击笔记
  7. 使用PyQt4和twisted写的局域网聊天室(2)
  8. 学软件测试看什么书籍推荐?
  9. php接收get数组数据,php-如何从wordpress数据库中获取数组值get_results
  10. 2021-06-09使用IAR软件进行TMS470程序刷写说明
  11. 黑白群晖用做airplay一条命令实现USB声卡转音箱的网络播放(Docker-shairport-sync容器)
  12. Oracle中SQL*plus常用命令
  13. 【机器人学:运动规划】快速搜索随机树(RRT---Rapidly-exploring Random Trees)入门及在Matlab中演示
  14. Android 视频裁剪 (含裁剪 View)
  15. JAVA查询银行卡信息
  16. 台式机机械硬盘 - 简单快捷的安装
  17. OCO-2卫星数据批量化下载教程
  18. 微信页面打开链接,引导在其他浏览器打开的引导页
  19. lldb +debugserver调试环境部署
  20. Python:Excel自动录入、Excel表格快速合并(附有源代码)

热门文章

  1. uboot start.S分析
  2. 社交小程序,支持评论、点赞、浏览、聊天等。
  3. vmware将文件传入windows虚拟机中的方法
  4. Doxygen —— 快来为你的代码自动生成一份专属说明文档
  5. 腾讯视频QLV格式转换成mp4格式,只需这样做!
  6. 如何快速推广微信小程序,并通过微信小程序赚取睡后收入
  7. 述职报告_官方正式版
  8. 计算机教学简案,电子表格EXCEL教学教案 简案 授课便签
  9. Java培训学些什么?
  10. 安卓应用hook测试