首先,对不起我的英语,这不是我的母语。
我正在尝试与RxTx库建立Java接口以与串行端口通信。我使用Jigloo创建了我的界面(对我很羞耻),因为我的Java知识非常有限。
我现在要做的是通过在Java界面中推送JButton
将数据从Java发送到我的电子板。但这是问题,我真的不知道该怎么做。我读到我必须使用InputStream
和OutputStream
,但我应该把它放在哪里?我应该创建另一个类还是类?
以下是我的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 :(得分:0)
我想您可以查看以下链接中的RXTX
示例,以了解此库的工作原理:
http://rxtx.qbang.org/wiki/index.php/Two_way_communcation_with_the_serial_port
别担心,不是那么困难。你需要:
一个处理串口连接的类:TwoWaySerialComm
,
另一个写入串口的人:SerialWriter
,
最后(这不是严格必要但强烈建议)另一个类在GUI和串口编写器之间建立桥梁(换句话说,Controller
模型中的MVC
)。
因此,每当您按下JButton
时,您都应该调用一些Controller
方法,而这个方法应该弄明白该怎么办。