2013-05-21 111 views
0

首先的输出流,对不起,我的英语,这不是我的母语。输入和使用RXTX与按钮

我试图让与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 
    } 
} 

回答

0

我想你可以看看在链接RXTX样品下方,以找出如何这个库的工作原理:

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

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

一个类来处理串行端口连接:TwoWaySerialComm

另一条写的串口:SerialWriter

最后(这不是绝对必要的,但强烈推荐)其他类使图形用户界面和串行端口作家之间的桥梁(换句话说,在ControllerMVC模型)。

所以每次按JButton你都应该调用一些Controller的方法,这个人应该弄清楚该怎么做。