package swingex;
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
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();
}
}
// class MyFrame extends JFrame implements Runnable,ActionListener {
// JPanel contentPane;
// BorderLayout borderLayout1 = new BorderLayout();
//
// public MyFrame() {
// try {
// setDefaultCloseOperation(EXIT_ON_CLOSE);
// jbInit();
// } catch (Exception exception) {
// exception.printStackTrace();
// }
// }
//
// /**
// * Component initialization.
// *
// * @throws java.lang.Exception
// */
// private void jbInit() throws Exception {
// contentPane = (JPanel) getContentPane();
// contentPane.setLayout(borderLayout1);
// setSize(new Dimension(440, 347));
// setTitle("串口收发数据");
// }
//}
没有合适的资源?快使用搜索试试~ 我知道了~
java串口编程时候学习用
共27个文件
class:6个
java~1~:4个
java:2个
3星 · 超过75%的资源 需积分: 3 35 下载量 87 浏览量
2008-12-28
10:42:13
上传
评论 1
收藏 135KB RAR 举报
温馨提示
很不错的java串口编程,大家参考参考。。。
资源详情
资源评论
资源推荐
收起资源包目录
java串口编程,适合初学者的.rar (27个子文件)
java串口编程,适合初学者的
swingEx
swingEx.jpx.local~ 2KB
bak
swingex
MyFrame.java~1~ 981B
SendComm.java~3~ 2KB
MyFrame.java~4~ 909B
MyFrame.java~3~ 911B
MyFrame.java~6~ 4KB
MyFrame.java~2~ 1005B
SendComm.java~2~ 2KB
ReadComm.java~1~ 3KB
One.java~1~ 2KB
MyFrame.java~5~ 911B
SendComm.java~4~ 2KB
SendComm.java~1~ 2KB
src
swingex
SendComm.java 4KB
ReadComm.java 3KB
com.rar 2KB
swingEx.jpx 4KB
classes
swingex
ReadComm$1.class 608B
R_Frame.class 4KB
SendComm$1.class 608B
SendComm.class 633B
S_Frame.class 4KB
ReadComm.class 633B
package cache
swingex.dep2 7KB
swingEx.jpx.local 2KB
comm.jar 116KB
www.pudn.com.txt 218B
共 27 条
- 1
陈军chenjun
- 粉丝: 0
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1