- 浏览: 485672 次
- 性别:
- 来自: 武汉
最新评论
-
zyzyzy123:
请问有工程吗,我现在正在实现打电话的功能,但是一直不通,怀疑是 ...
实用的java 串口通信程序 -
wuhaitong:
引用[img][/img][*][url][/url] ...
jbpm -
迷糊_le:
maven命令, 蛮好的,谢谢
maven eclipse -
Wuaner:
不错的文章 , 谢谢分享!
Hadoop -
yuqihengsheng:
strong 很细
HighLighter
实用的java 串口通信程序
/******************************************
* 程序文件名称:SendComm.java
* 功能:从串行口COM1中发送数据
******************************************/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.comm.*;
class S_Frame extends Frame implements Runnable,ActionListener
{
/*检测系统中可用的通讯端口类 */
static CommPortIdentifier portId;
/*Enumeration 为枚举型类,在util中 */
static Enumeration portList;
OutputStream outputStream;
/*RS-232的串行口 */
SerialPort serialPort;
Thread readThread;
Panel p=new Panel();
TextField in_message=new TextField("打开COM1,波特率9600,数据位8,停止位1.");
TextArea out_message=new TextArea();
Button btnOpen=new Button("打开串口, 发送数据");
Button btnClose=new Button("关闭串口, 停止发送数据");
byte data[]=new byte[10240];
/*设置判断要是否关闭串口的标志*/
boolean mark;
/*安排窗体*/
S_Frame()
{ super("串口发送数据");
setSize(200,200);
setVisible(true);
add(out_message,"Center");
add(p,"North");
p.add(btnOpen);
p.add(btnClose);
add(in_message,"South");
btnOpen.addActionListener(this);
btnClose.addActionListener(this);
} //R_Frame() end
/*点击按扭打开串口.*/
public void actionPerformed(ActionEvent event) {
if (event.getSource()==btnClose){
serialPort.close(); //关闭串口
mark=true; //用于中止线程的run()方法
in_message.setText("串口COM1已经关闭,停止发送数据.");
}
else { mark=false;
/*从文本区按字节读取数据*/
data=out_message.getText().getBytes();
/*打开串口*/
start();
in_message.setText("串口COM1已经打开,正在每2秒钟发送一次数据.....");
}
} //actionPerformed() end
/*打开串口,并调用线程发送数据*/
public void start(){
/*获取系统中所有的通讯端口 */
portList=CommPortIdentifier.getPortIdentifiers();
/* 用循环结构找出串口 */
while (portList.hasMoreElements()){
/*强制转换为通讯端口类型*/
portId=(CommPortIdentifier)portList.nextElement();
if(portId.getPortType() == CommPortIdentifier.PORT_SERIAL){
if (portId.getName().equals("COM1")) {
/*打开串口 */
try {
serialPort = (SerialPort) portId.open("ReadComm", 2000);
}
catch (PortInUseException e) { }
/*设置串口输出流*/
try {
outputStream = serialPort.getOutputStream();
}
catch (IOException e) {}
} //if end
} //if end
} //while end
/*调用线程发送数据*/
try{
readThread = new Thread(this);
//线程负责每发送一次数据,休眠2秒钟
readThread.start();
}
catch (Exception e) { }
} //start() end
/*发送数据,休眠2秒钟后重发*/
public void run() {
/*设置串口通讯参数*/
try {
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
}
catch (UnsupportedCommOperationException e) { }
/*发送数据流(将数组data[]中的数据发送出去)*/
try {
outputStream.write(data);
}
catch (IOException e) { }
/*发送数据后休眠2秒钟,然后再重发*/
try { Thread.sleep(2000);
if (mark)
{return; //结束run方法,导致线程死亡
}
start();
}
catch (InterruptedException e) { }
} //run() end
} //类S_Frame end
public class SendComm
{public static void main(String args[])
{ S_Frame S_win=new S_Frame();
S_win.addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{System.exit(0); }
});
S_win.pack();
}
}
/******************************************
* 程序文件名称:ReadComm.java
* 功能:从串行口COM1中接收数据
******************************************/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.comm.*;
class R_Frame extends Frame implements Runnable,ActionListener,SerialPortEventListener
{
/* 检测系统中可用的通讯端口类 */
static CommPortIdentifier portId;
/* Enumeration 为枚举型类,在java.util中 */
static Enumeration portList;
InputStream inputStream;
/* 声明RS-232串行端口的成员变量 */
SerialPort serialPort;
Thread readThread;
String str="";
TextField out_message=new TextField("上面文本框显示接收到的数据");
TextArea in_message=new TextArea();
Button btnOpen=new Button("打开串口");
/*建立窗体*/
R_Frame()
{
super("串口接收数据");
setSize(200,200);
setVisible(true);
btnOpen.addActionListener(this);
add(out_message,"South");
add(in_message,"Center");
add(btnOpen,"North");
} //R_Frame() end
/*点击按扭所触发的事件:打开串口,并监听串口. */
public void actionPerformed(ActionEvent event)
{
/*获取系统中所有的通讯端口 */
portList=CommPortIdentifier.getPortIdentifiers();
/* 用循环结构找出串口 */
while (portList.hasMoreElements()){
/*强制转换为通讯端口类型*/
portId=(CommPortIdentifier)portList.nextElement();
if(portId.getPortType() == CommPortIdentifier.PORT_SERIAL){
if (portId.getName().equals("COM1")) {
try {
serialPort = (SerialPort) portId.open("ReadComm", 2000);
out_message.setText("已打开端口COM1 ,正在接收数据..... ");
}
catch (PortInUseException e) { }
/*设置串口监听器*/
try {
serialPort.addEventListener(this);
}
catch (TooManyListenersException e) { }
/* 侦听到串口有数据,触发串口事件*/
serialPort.notifyOnDataAvailable(true);
} //if end
} //if end
} //while end
readThread = new Thread(this);
readThread.start(); //线程负责每接收一次数据休眠20秒钟
} //actionPerformed() end
/*接收数据后休眠20秒钟*/
public void run() {
try {
Thread.sleep(20000);
}
catch (InterruptedException e) { }
} //run() end
/*串口监听器触发的事件,设置串口通讯参数,读取数据并写到文本区中*/
public void serialEvent(SerialPortEvent event) {
/*设置串口通讯参数:波特率、数据位、停止位、奇偶校验*/
try {
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
}
catch (UnsupportedCommOperationException e) { }
byte[] readBuffer = new byte[20];
try {
inputStream = serialPort.getInputStream();
}
catch (IOException e) {}
try {
/* 从线路上读取数据流 */
while (inputStream.available() > 0) {
int numBytes = inputStream.read(readBuffer);
} //while end
str=new String(readBuffer);
/*接收到的数据存放到文本区中*/
in_message.append(str+"\n");
}
catch (IOException e) { }
} //serialEvent() end
} //类R_Frame end
public class ReadComm
{
public static void main(String args[])
{
/* 实例化接收串口数据的窗体类 */
R_Frame R_win=new R_Frame();
/* 定义窗体适配器的关闭按钮功能 */
R_win.addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{System.exit(0); }
});
R_win.pack();
}
}
发表评论
-
安装和使用memcached
2014-04-16 16:24 643如何将 memcached 融入到 ... -
applicationContext.xml
2013-08-09 09:05 946<?xml version="1.0&quo ... -
注释驱动的 Spring cache 缓存介绍
2013-08-08 07:04 663概述 Spring 3.1 引入了激动人心的基于注释(an ... -
Spring2.5 Annotations
2013-08-08 06:33 860完成setXxxx功能,即配置文件的 <propert ... -
Spring基于注解的缓存配置--EHCache AND OSCache
2013-08-07 23:21 1031本文将构建一个普通工程来说明spring注解缓存的使用方式, ... -
Ehcache 整合Spring 使用页面、对象缓存
2013-08-07 22:51 898Ehcache 整合Spring 使用页面、对象缓存 ... -
javassist教程和示例
2013-05-18 08:57 2012Javassist是一个执行字节 ... -
ZooKeeper官方文档
2013-05-16 17:09 1561介绍(源自ZooKeeper官方文档) 学习HBase过程 ... -
ZooKeeper -例子
2013-05-16 17:08 1215ZooKeeper ZooKeepe ... -
Spring整合Hessian访问远程服务
2013-05-15 13:44 858Spring整合Hessian访问远程服务 目录 1.1 ... -
redis
2013-05-14 11:44 771redis是一个key-value存储系统。和Memcach ... -
spring 资源访问
2013-05-13 08:26 1001spring在java基础上封装了资源访问,简单易用。 R ... -
ZooKeeper——入门
2013-05-08 16:12 912ZooKeeper——入门 博客分类: ZooK ... -
分布式服务框架 Zookeeper -- 管理分布式环境中的数据(IBM)
2013-05-08 14:07 786安装和配置详解 本文 ... -
分布式协调服务---Zookeeper
2013-05-08 14:05 7771、Zookeeper overview Zookee ... -
Hibernate
2013-03-28 13:04 925一、简述 Hibernate 和 JD ... -
Apache+Tomcat集群配置详解
2013-02-01 10:52 896Apache + Tomcat集群配置详解(1) 一、 ... -
Apache+Jboss集群基于反向代理的负载均衡
2013-02-01 10:40 2497假设三台机器IP分别为172.29.128.100、172. ... -
spring + ibatis 多数据源事务(分布式事务)管理配置方法
2012-12-17 15:18 1269spring + ibatis 多数据源事务(分布式事务 ... -
Hessian序列化不设SerializerFactory性能问题
2012-10-31 09:47 1502Hessian序列化不设SerializerFactor ...
相关推荐
Java 串口通信编程是指使用 Java 语言开发串口通信程序的过程。串口通信是一种常见的通信方式,广泛应用于工业自动化、机器人控制、物联网等领域。Java 语言作为一门跨平台的编程语言,能够在不同的操作系统上运行,...
Linux系统下用Java开发串口通信程序的类库,从Arduino的IDE中扒出来的,比官方的更加好用,Bug少,支持Arduino设备与Linux之间的串口通信;Linux系统下用Java开发串口通信程序的类库,从Arduino的IDE中扒出来的,比...
Java串口通信是一种在计算机之间或计算机与外部设备(如传感器、打印机)之间进行数据交换的方法,它基于串行通信协议。在这个Java程序中,开发者使用了Java的标准库`javax.comm`来实现串口通信的功能,并结合Java的...
RXTX库是Java中一个流行的开源串行通信库,它提供了与操作系统底层串口通信的接口。在Java应用中使用RXTX库可以方便地打开、配置和读写串口。为了使Java应用程序能够使用RXTX库,我们需要将`RXTXcomm.jar`添加到系统...
RS-232,全称为“电子工业协会标准232”,是一种广泛应用于计算机串行通信的接口标准。它允许计算机与其他设备,如打印机、调制解调器或者嵌入式系统进行通信。 在Java中实现串口通信,通常会用到javax.comm库,这...
Java串口通信程序详解 Java串口通信是Java编程中的一种技术,允许应用程序通过串行端口(如COM1、COM2等)与其他设备进行数据交换。这种通信方式广泛应用于单片机控制、嵌入式系统、自动化设备、遥测系统等领域。在...
Java串口通讯程序是利用Java语言进行硬件设备间通信的一种技术,主要应用于嵌入式系统、物联网设备或者工业自动化等领域。在Java中,通过Java Communications API(也称为 CommAPI)来实现串口通信,这个API提供了对...
### Java串口通信程序知识点详解 #### 一、前言 在进行嵌入式系统开发或设备间数据传输时,串口通信作为一种重要的通信手段,经常被用来实现计算机与单片机、PLC等设备之间的数据交换。Java作为一种广泛使用的编程...
Java串口通信是一种在计算机之间通过串行接口进行数据传输的技术。在Java中,我们可以使用javax.comm库或者RXTX库来实现串口通信。这个实例是关于如何使用GUI(图形用户界面)来构建一个Java应用程序,使得用户可以...
Java串口通信是一种在计算机与外部设备之间进行数据交换的技术,尤其在嵌入式系统、自动化设备、物联网应用中广泛应用。本资源“java串口通信全套完整代码-导入eclipse直接用”提供了一套完整的Java串口通信实现,...
Java串口通讯是一种在Java应用程序之间或Java程序与硬件设备之间建立通信的重要技术。它主要依赖于特定的库,如RXTX库,用于实现与物理串行端口的交互。RXTX是一个开源的Java库,提供了串行和并行通信的功能,使得...
Java串口程序源码是一种基于Java语言实现的通信程序,它允许通过计算机的串行端口(Serial Port)进行数据的发送和接收。在嵌入式系统、工业控制、物联网设备等场景中,串口通信扮演着重要的角色,因为它是简单、...
Java串口通信是指Java程序通过计算机的串行通信接口(通常称为“串口”)与其他设备进行数据交换的过程。这种通信方式广泛应用于工业自动化、物联网等领域。为了支持这种通信,Java提供了一套专门的API,即`javax....
### Java串口通信程序知识点详解 #### 一、Java串口通信概述 串口通信是电子设备间一种常见的数据传输方式。在Java中实现串口通信通常需要借助于额外的库,如Java Communications API,这是因为标准Java开发工具包...
JAVA串口曲线程序是一种基于Java编程语言开发的应用,主要用于通过串行端口与硬件设备进行通信,并实时显示接收到的数据的曲线图形。这种程序在工业自动化、数据采集、物联网等领域有着广泛的应用。以下是对该程序...
Java虽然不是直接支持串口操作的语言,但通过一些库和API,我们可以创建应用程序来实现串口通信。在本教程中,我们将讨论如何使用Java进行串口通信,并分析提供的源代码片段。 首先,我们需要了解Java中的串口通信...
Java USB串口通讯是将Java编程语言应用于USB设备与串口通信的一种技术。在工业自动化、物联网(IoT)和嵌入式系统中,这种通讯方式广泛应用,因为它们需要通过串行接口与各种硬件设备进行数据交换。Java的串口通讯主要...
`javacomm20-win32.rar`这个压缩包包含了一个适用于Windows系统的Java串口通信组件,它允许Java应用程序通过串行端口与外部设备进行数据交换。`javacomm20`是这个库的版本号,暗示这是一个较早的实现,可能针对JDK ...