使用带按钮的RXTX输入和输出流

时间:2013-05-21 21:56:11

标签: java rxtx electronics

首先,对不起我的英语,这不是我的母语。

我正在尝试与RxTx库建立Java接口以与串行端口通信。我使用Jigloo创建了我的界面(对我很羞耻),因为我的Java知识非常有限。

我现在要做的是通过在Java界面中推送JButton将数据从Java发送到我的电子板。但这是问题,我真的不知道该怎么做。我读到我必须使用InputStreamOutputStream,但我应该把它放在哪里?我应该创建另一个类还是类?

以下是我的Java UI的代码:

package projetPic;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.InetAddress;
import javax.swing.BorderFactory;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JTextPane;

import javax.swing.WindowConstants;
import javax.swing.border.BevelBorder;
import javax.swing.SwingUtilities;

import gnu.io.*;

public class ElectroFrame extends javax.swing.JFrame {
    private JPanel jPanel1;
    private JButton jButton1;
    private JButton jButton6;
    private JButton jButton5;
    private JTextField jTextField1;
    private JButton jButton4;
    private JButton jButton3;
    private JLabel jLabel1;
    private JLabel jLabel2;
    private JLabel jLabel3;
    private JLabel jLabel4;
    private JLabel jLabel5;
    private JComboBox jComboBox1;
    private JLabel jLabel8;
    private JLabel jLabel7;
    private JTextField jTextField3;
    private JLabel jLabel6;
    private JButton jButton7;
    private JTextField jTextField2;
    private JButton jButton2;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                ElectroFrame inst = new ElectroFrame();
                inst.setLocationRelativeTo(null);
                inst.setVisible(true);
            }
        });
    }

    public ElectroFrame() {
        super();
        initGUI();
    }

    private void initGUI() {
        try {
            setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
            {
                jPanel1 = new JPanel();
                getContentPane().add(jPanel1, BorderLayout.CENTER);
                GridBagLayout jPanel1Layout = new GridBagLayout();
                jPanel1Layout.rowWeights = new double[] {0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1};
                jPanel1Layout.rowHeights = new int[] {20, 75, 29, 32, 55, 36, -171, 35, 42, 38, 42, 20};
                jPanel1Layout.columnWeights = new double[] {0.0, 0.0, 0.0, 0.1};
                jPanel1Layout.columnWidths = new int[] {123, 150, 152, 7};
                jPanel1.setLayout(jPanel1Layout);
                jPanel1.setBackground(new java.awt.Color(198,226,255));
                jPanel1.setPreferredSize(new java.awt.Dimension(584, 500));
                {
                    jButton1 = new JButton();
                    jPanel1.add(jButton1, new GridBagConstraints(1, 4, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                    jButton1.setText("Compteur binaire");
                    jButton1.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent evt) {
                            jButton1ActionPerformed(evt);
                        }
                    });
                }

                {
                    jButton2 = new JButton();
                    jPanel1.add(jButton2, new GridBagConstraints(3, 4, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                    jButton2.setText("Compteur Chenillard");
                    jButton2.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent evt) {
                            jButton2ActionPerformed(evt);
                        }
                    });
                }
                {
                    jLabel1 = new JLabel();
                    jPanel1.add(jLabel1, new GridBagConstraints(3, 4, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                }
                {
                    jButton3 = new JButton();
                    jPanel1.add(jButton3, new GridBagConstraints(2, 4, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                    jButton3.setText("Compteur Johnson");
                    jButton3.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent evt) {
                            jButton3ActionPerformed(evt);
                        }
                    });
                }
                {
                    jButton4 = new JButton();
                    jPanel1.add(jButton4, new GridBagConstraints(0, 4, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                    jButton4.setText("Clignoter");
                    jButton4.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent evt) {
                            jButton4ActionPerformed(evt);
                        }
                    });
                }
                {
                    jTextField1 = new JTextField();
                    jPanel1.add(jTextField1, new GridBagConstraints(2, 6, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                    jTextField1.setPreferredSize(new Dimension(150,40));
                }
                {
                    jButton5 = new JButton();
                    jPanel1.add(jButton5, new GridBagConstraints(0, 6, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                    jButton5.setText("Calculer le CRC");
                    jButton5.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent evt) {
                            jButton5ActionPerformed(evt);
                        }
                    });
                }
                {
                    jButton6 = new JButton();
                    jPanel1.add(jButton6, new GridBagConstraints(0, 8, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                    jButton6.setText("Calculer le LRC");
                    jButton6.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent evt) {
                            jButton6ActionPerformed(evt);
                        }
                    });
                }
                {
                    jTextField2 = new JTextField();
                    jPanel1.add(jTextField2, new GridBagConstraints(2, 8, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                    jTextField2.setPreferredSize(new Dimension(150,40));
                }
                {
                    jButton7 = new JButton();
                    jPanel1.add(jButton7, new GridBagConstraints(0, 10, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                    jButton7.setText("Afficher");
                    jButton7.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent evt) {
                            jButton7ActionPerformed(evt);
                        }
                    });
                }
                {
                    jLabel2 = new JLabel();
                    jPanel1.add(jLabel2, new GridBagConstraints(1, 1, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                    jLabel2.setText("Projet 2TI - Electronique - 2012-2013");
                }
                {
                    jLabel3 = new JLabel();
                    jPanel1.add(jLabel3, new GridBagConstraints(1, 3, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                    jLabel3.setText("LED");
                }
                {
                    jLabel4 = new JLabel();
                    jPanel1.add(jLabel4, new GridBagConstraints(1, 5, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                    jLabel4.setText("CRC");
                }
                {
                    jLabel5 = new JLabel();
                    jPanel1.add(jLabel5, new GridBagConstraints(1, 7, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                    jLabel5.setText("LRC");
                }
                {
                    jLabel6 = new JLabel();
                    jPanel1.add(jLabel6, new GridBagConstraints(1, 9, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                    jLabel6.setText("7 segments");
                }
                {
                    jTextField3 = new JTextField();
                    jPanel1.add(jTextField3, new GridBagConstraints(2, 10, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                    jTextField3.setPreferredSize(new Dimension(150,40));
                }
                {
                    jLabel7 = new JLabel();
                    jPanel1.add(jLabel7, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                }
                {
                    jLabel8 = new JLabel();
                    jPanel1.add(jLabel8, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                    jLabel8.setText("Port COM");
                }
                {
                    ComboBoxModel jComboBox1Model = 
                            new DefaultComboBoxModel(
                                    new String[] { "Item One", "Item Two" });
                    jComboBox1 = new JComboBox();
                    jPanel1.add(jComboBox1, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
                    jComboBox1.setModel(jComboBox1Model);
                }
            }
            pack();
            setSize(600, 520);
        } catch (Exception e) {
            //add your error handling code here
            e.printStackTrace();
        }
    }



    private void jButton1ActionPerformed(ActionEvent evt) {
        System.out.println("jButton1.actionPerformed, event="+evt);

    }

    private void jButton2ActionPerformed(ActionEvent evt) {
        System.out.println("jButton2.actionPerformed, event="+evt);
        //TODO add your code for jButton2.actionPerformed
    }

    private void jButton3ActionPerformed(ActionEvent evt) {
        System.out.println("jButton3.actionPerformed, event="+evt);
        //TODO add your code for jButton3.actionPerformed
    }

    private void jButton4ActionPerformed(ActionEvent evt) {
        System.out.println("jButton4.actionPerformed, event="+evt);
        //TODO add your code for jButton4.actionPerformed
    }

    private void jButton5ActionPerformed(ActionEvent evt) {
        System.out.println("jButton5.actionPerformed, event="+evt);
        //TODO add your code for jButton5.actionPerformed
    }

    private void jButton6ActionPerformed(ActionEvent evt) {
        System.out.println("jButton6.actionPerformed, event="+evt);
        //TODO add your code for jButton6.actionPerformed
    }

    private void jButton7ActionPerformed(ActionEvent evt) {
        System.out.println("jButton7.actionPerformed, event="+evt);
        //TODO add your code for jButton7.actionPerformed
    }
}

1 个答案:

答案 0 :(得分:0)

我想您可以查看以下链接中的RXTX示例,以了解此库的工作原理:

http://rxtx.qbang.org/wiki/index.php/Two_way_communcation_with_the_serial_port

别担心,不是那么困难。你需要:

一个处理串口连接的类:TwoWaySerialComm

另一个写入串口的人:SerialWriter

最后(这不是严格必要但强烈建议)另一个类在GUI和串口编写器之间建立桥梁(换句话说,Controller模型中的MVC)。

因此,每当您按下JButton时,您都应该调用一些Controller方法,而这个方法应该弄明白该怎么办。