java jssc_我的SerialPortEvent在连续循环中不使用jSSC接收数据
我一直在尝试使用与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接收数据相关推荐
- 求android 中串口的发送接收数据代码
RT,求高手帮忙! 就是 /dev/ttyS0 和/dev/ttyS1 两个设备的通信问题.. 同求~ 这个是不是需要串口驱动啊?最近正在搞这个串口通信的案子,头疼 同样也没有搞出来,老是报:不能扫描 ...
- 【Java数据库】CLOB BLOB 在数据库中存入/取出大量文本数据、二进制文件(图片)
CLOB(Character Large Object) – 用于存储大量的文本数据 – 大字段有些特殊,不同数据库处理的方式不一样,大字段的操作常常是以流的 方式来处理的.而非一般的字段,一次即可读 ...
- java的sas数据安全_使用sas中的do循环指定数据信息
这里有一些方法可行 . 最直接可以翻译的方法是使用宏语言 . 你需要将这两个循环翻译成这样的东西: %do i = 1940 %to 2018; %do j = 1 %to 12; informat ...
- java gzip压缩json_将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
1.使用压缩与不使用压缩的HTTP输出比较 2.开启gzip 利用apache mod_deflate module 开启gzip 开启方法: sudo a2enmod deflate sudo /e ...
- 浅谈ASP中Web页面间的数据传递
[简 介] 基于Web的动态网页设计必会涉及到页面间的数据传递,文章探讨了ASP设计中常用的Web页面间的数据传递方式,分析各种数据传递方式的使用方法.使用场合及优缺点,其都是设计阶段选择数据传递方式 ...
- java restful接口开发实例_Spring Boot 中 10 行代码构建 RESTful 风格应用!
点击上方"Java后端技术",选择"置顶或者星标" 你关注的就是我关心的! 作者:江南一点雨 微信公众号:牧码小子(ID:a_javaboy) 推荐阅读:10个 ...
- java怎么加定时器_JAVA WEB程序中添加定时器
JAVA WEB程序中添加定时器 //这是我的定时器类,用来定时执行某段任务: package com.my.time; import java.text.ParseException; import ...
- java 修改wav文件头_使用Java聲音API從WAV文件中修剪開頭和結尾
我有製作的基礎知識.但是,輸出文件一遍又一遍地重複WAV標頭字節.生成的文件大小合適,但是它與垃圾一起提交.使用Java聲音API從WAV文件中修剪開頭和結尾 我想使用一個擴展AudioInputSt ...
- java: 在相应的 try 语句主体中不能抛出异常错误java.io.IOException
java: 在相应的 try 语句主体中不能抛出异常错误java.io.IOException 参考文章: (1)java: 在相应的 try 语句主体中不能抛出异常错误java.io.IOExcep ...
最新文章
- android之利用SQLite数据库实现登陆和注册
- svn hook同步更新svn到web服务器
- Java 多线程模拟卖票
- Pycharm(社区版) 创建Flask项目
- java beanutil 工具类_实现BeanFactoryAware来达到Spring静态方法获取Bean对象的BeanUtil工具类...
- Yii防注入攻击笔记
- 使用PyQt4和twisted写的局域网聊天室(2)
- 学软件测试看什么书籍推荐?
- php接收get数组数据,php-如何从wordpress数据库中获取数组值get_results
- 2021-06-09使用IAR软件进行TMS470程序刷写说明
- 黑白群晖用做airplay一条命令实现USB声卡转音箱的网络播放(Docker-shairport-sync容器)
- Oracle中SQL*plus常用命令
- 【机器人学:运动规划】快速搜索随机树(RRT---Rapidly-exploring Random Trees)入门及在Matlab中演示
- Android 视频裁剪 (含裁剪 View)
- JAVA查询银行卡信息
- 台式机机械硬盘 - 简单快捷的安装
- OCO-2卫星数据批量化下载教程
- 微信页面打开链接,引导在其他浏览器打开的引导页
- lldb +debugserver调试环境部署
- Python:Excel自动录入、Excel表格快速合并(附有源代码)