【实例简介】简单的串口调试助手

【实例截图】

【核心代码】import gnu.io.CommPortIdentifier;

import gnu.io.NoSuchPortException;

import gnu.io.PortInUseException;

import gnu.io.SerialPort;

import gnu.io.SerialPortEvent;

import gnu.io.SerialPortEventListener;

import gnu.io.UnsupportedCommOperationException;

import java.io.BufferedInputStream;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.Enumeration;

import java.util.TooManyListenersException;

public class Comm implements SerialPortEventListener, Runnable {

private InputStream is = null;

private OutputStream os =null;

private byte[] chars = new byte[64];

private SerialPort port = null;

public ArrayList listPortChoices(){

ArrayList list = new ArrayList();

CommPortIdentifier portId;

Enumeration en = CommPortIdentifier.getPortIdentifiers();

while (en.hasMoreElements()) {

portId = (CommPortIdentifier)en.nextElement();

if(portId.getPortType() == CommPortIdentifier.PORT_SERIAL){

list.add(portId.getName());

}

}

return list;

}

public boolean openPort(String portName) throws TooManyListenersException{

boolean bl = false;

try {

CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier(portName);//获得串口管理对象

port = (SerialPort) portId.open(portName,3000);//打开并获得串口对象

port.setSerialPortParams(9600,8,1,0);//配置串口

is = port.getInputStream();//获得串口输入流

os = port.getOutputStream();//获得串口输出流

bl = true;

} catch (NoSuchPortException e) {

e.printStackTrace();

} catch (PortInUseException e) {

e.printStackTrace();

System.out.println("该串口已被其他程序占用");

} catch (UnsupportedCommOperationException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return bl;

}

public boolean checkPort(){

if(port == null){

return true;

}else{

return false;

}

}

public void closePort(){

if (port != null) {

try {

os.close();

is.close();

} catch (IOException e) {

System.err.println(e);

}

}

port.removeEventListener();

port.close();

port = null;

}

public void write(byte[] out,int len){

try{

for(int i=0;i

os.write(out[i]);

os.flush();

}

return;

}catch(IOException e1){

System.out.println(e1);

return;

}catch(ArrayIndexOutOfBoundsException e2){

System.out.println(e2);

}

}

public void Read() throws TooManyListenersException{

try{

is = new BufferedInputStream(port.getInputStream());

}catch(IOException e){

throw new RuntimeException();

}

try{

port.addEventListener(this);

}catch(TooManyListenersException e){

throw new RuntimeException(e.getMessage());

}

port.notifyOnDataAvailable(true);

if(true){

Thread thread = new Thread(this);

thread.start();

}

}

@Override

public void serialEvent(SerialPortEvent event) {

// TODO Auto-generated method stub

switch (event.getEventType())

{

case SerialPortEvent.BI:/*Break interrupt,通讯中断*/

case SerialPortEvent.OE:/*Overrun error,溢位错误*/

case SerialPortEvent.FE:/*Framing error,传帧错误*/

case SerialPortEvent.PE:/*Parity error,校验错误*/

case SerialPortEvent.CD:/*Carrier detect,载波检测*/

case SerialPortEvent.CTS:/*Clear to send,清除发送*/

case SerialPortEvent.DSR:/*Data set ready,数据设备就绪*/

case SerialPortEvent.RI:/*Ring indicator,响铃指示*/

case SerialPortEvent.OUTPUT_BUFFER_EMPTY:/*Output buffer is empty,输出缓冲区清空*/

break;

case SerialPortEvent.DATA_AVAILABLE:

byte[] readbuffer = new byte[1024];

String readstr = null;

String s2 = null;

try{

while(is.available()>0){

is.read(readbuffer);

readstr = new String(readbuffer).trim();

}

s2 = new String(readbuffer).trim();

}catch(IOException e){

}

}

}

@Override

public void run() {

// TODO Auto-generated method stub

String temp = null;

int len = 0;

try {

len = is.read(chars);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

while(true){

if(checkPort()){

while(len!=-1){

temp = new String(chars,0,len);

System.out.println(temp);

}

}else{

}

}

}

}

java串口助手_java 串口调试助手 源码相关推荐

  1. 计算机毕业设计JAVA糖助手服务交流平台mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA糖助手服务交流平台mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA糖助手服务交流平台mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: ...

  2. java华容道代码_Java 华容道完整源码

    时间:2018-12-19 概述:华容道 Java 华容道完整源码,本代码实现华容道游戏的整体功能.程序执行后,点击相应的人物,然后按上下左右键可以移动.点击重新开始按钮,可以将各个人物的位置重置.如 ...

  3. java 机器码 虚拟机_Java虚拟机:源码到机器码

    无论什么语言写的代码,其到最后都是通过机器码运行的,无一例外.那么对于 Java 语言来说,其从源代码到机器码,这中间到底发生了什么呢?这就是今天我们要聊的. 如下图所示,编译器可以分为:前端编译器. ...

  4. java 闹钟代码_JAVA可视化闹钟源码

    1 packageClock;2 3 importsun.audio.AudioPlayer;4 importsun.audio.AudioStream;5 6 import javax.swing. ...

  5. java arraylist 源代码_Java中ArrayList源码浅析

    ArrayList基本使用 public class ArrayListTest { public static void main(String[] args) { List list = new ...

  6. java五子棋源代码_java 五子棋游戏源码

    [实例简介] [实例截图] [核心代码] package game; import java.applet.Applet; import java.applet.AudioClip; import j ...

  7. java愤怒的小鸟代码_java 愤怒的小鸟(flybird)源码

    [实例简介] [实例截图] [核心代码] package game; import java.awt.Color; import java.awt.Font; import java.awt.Grap ...

  8. 倒计时java语言实现_java实现倒计时源码分享

    import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask ...

  9. 红黑树java源代码分析_JAVA 红黑树源码

    class RBTree>{ private static final String RedColor = "red"; private static final Strin ...

最新文章

  1. LeetCode简单题之最常见的单词
  2. QML UI 与逻辑分开
  3. boost::graph模块实现包含平均测地线示例
  4. POJ 3061 -- Subsequence(二分)
  5. 计算机应用基础山东省,2019年山东省中等职业学校对口升学考试:计算机文化基础+计算机应用基础模拟试卷...
  6. Windows 7服务器版 2008 R2安装图解
  7. BZOJ 1054: [HAOI2008]移动玩具(bfs)
  8. Wineskin不能打开添加的程序?macOS版本太高?
  9. 自学python能做erp吗_erp系统可以自学吗?应该怎么学习?
  10. 2022物联网工业互联网
  11. 树状数组基础版解析+区间修改
  12. QQ空间说说刷赞网页版开放公测
  13. my visitor
  14. 【北京站】技术沙龙第19期:千万日活量级 iOS 应用背后的技术
  15. Codeforces 712A Memory and Crow
  16. BackTrack3 硬盘安装教程
  17. android媲美微信扫码库
  18. Go 语言优势、对比
  19. 1字节不是一定是8位。
  20. 精彩回顾|Meetup 合肥站--云原生技术沙龙

热门文章

  1. 容器编排技术 -- Kubernetes 给 Pod 配置服务质量等级
  2. 快速搭建Nextcloud+OnlyOffice私有云办公平台
  3. MySQL抽稀_python安装mysql的依赖包mysql-python操作
  4. 基于随机游走的图嵌入之快速指南
  5. SpringMVC 文件上传
  6. 解决 Windows 端口被占用问题
  7. 比特飞-建站100天感悟
  8. C#LeetCode刷题之#237-删除链表中的节点(Delete Node in a Linked List)
  9. C#算法设计排序篇之09-基数排序(附带动画演示程序)
  10. windows软件设置快捷键