Java实现串口通信
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这是用Java编写的实现串口通信的程序源代码。至于支持串口通信的comm.jar 包,请各位从sun或别的网站处下载!这里只提供源码让大家参考。
gui.java算是一个框架;panel.java是面板,相当于前台;SerialCommunication.java是一个JavaBean,相当于后台。面板视图如下:
从串口中读入信息的机制如下:后台监测到有信息读入到缓存,就读取之,用一个字符串变量储存,并置“有新信息读入”的标识(相当于一个开关)为真。面板有一个计时器监听器,用轮询的方式查询后台的“有新信息读入”的标识是否为真,若为真则马上读入到前台,显示到文本框上,并置“有新信息读入”的标识为假(顺手关门)。
gui.java:
import java.awt.*;
import javax.swing.*;
public class gui
{
public static void main(String[] args)
{
JFrame frame=new JFrame("密谈");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new panel());
frame.pack();
frame.setVisible(true);
frame.setResizable(false);
}
}
panel.java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class panel extends JPanel
{
String SB;
JTextArea show;
JTextField text;
JButton submit,connect,stop;
SerialCommunication port;
Timer timer;
JPanel write;
JPanel read;
public panel()
{
SB=new String("");
port=new SerialCommunication(1);
timer=new Timer(100,new timeListener());
show=new JTextArea(20,25);
show.setLineWrap(true);
show.setAutoscrolls(true);
text=new JTextField("",25);
submit=new JButton("提交");
connect=new JButton("连接");
stop=new JButton("断开");
write=new JPanel();
read=new JPanel();
setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
submit.addActionListener(new submitListener());
connect.addActionListener(new connectListener());
stop.addActionListener(new stopListener());
write.setPreferredSize(new Dimension(300,70));
write.add(text);
write.add(connect);
write.add(submit);
write.add(stop);
write.setBackground(Color.CYAN);
read.setPreferredSize(new Dimension(300,375));
read.setBackground(Color.yellow);
read.add(show);
add(read);
add(write);
}
private class submitListener implements ActionListener {//提交按钮的监听器
public void actionPerformed(ActionEvent event)
{
String s=text.getText();
port.write(s);
SB=new String(port.readBuffer());
show.append(SB);
System.out.println("提交!");
}
}
private class connectListener implements ActionListener {//连接按钮的监听器
public void actionPerformed(ActionEvent event)
{
port.open();
timer.start();
System.out.println("连接!");
}
}
private class stopListener implements ActionListener
{//断开按钮的监听器
public void actionPerformed(ActionEvent event)
{
port.close();
timer.stop();
System.out.println("断开!");
}
}
private class timeListener implements ActionListener {//timer的监听器,用作轮询后台
public void actionPerformed(ActionEvent event)
{
if(port.dataComes())
{
SB=new String(port.readBuffer());
port.dataHadRead();
show.append(SB);