簡體   English   中英

使用帶按鈕的 RXTX 輸入和輸出流

[英]Input and output stream using RXTX with button

我正在嘗試使用 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
    }
}

我認為您可以查看以下鏈接中的RXTX示例,以了解該庫的工作原理:

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

別擔心,沒那么難。 你會需要:

處理串口連接的一類: TwoWaySerialComm

另一個寫入串口的: SerialWriter

最后(不是絕對必要但強烈推薦)另一個類來在 GUI 和串行端口編寫器(換句話說, MVC模型中的Controller )之間建立橋梁。

所以每次你按下JButton你應該調用一些Controller方法,這個方法應該弄清楚如何處理它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM