⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialdemo.java

📁 这是我自己写的,请各位高手看一下!!是关于串口方面的编程,用java
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * @(#)SerialDemo.java	1.9 98/06/05 SMI * * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved. * * Sun grants you ("Licensee") a non-exclusive, royalty free, license * to use, modify and redistribute this software in source and binary * code form, provided that i) this copyright notice and license appear * on all copies of the software; and ii) Licensee does not utilize the * software in a manner which is disparaging to Sun. * * This software is provided "AS IS," without a warranty of any kind. * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND * ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE * SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS * BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, * HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING * OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * * This software is not designed or intended for use in on-line control * of aircraft, air traffic, aircraft navigation or aircraft * communications; or in the design, construction, operation or * maintenance of any nuclear facility. Licensee represents and * warrants that it will not use or redistribute the Software for such * purposes. */import javax.comm.*;import java.awt.*;import java.awt.event.*;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.FileNotFoundException;import java.util.Properties;import java.util.Enumeration;/** Main file for SerialDemo program. This program illustrates many of the  abilities of the javax.comm api. This file contains the GUI framework that the program runs in.*/public class SerialDemo extends Frame implements ActionListener {    final int HEIGHT = 450;    final int WIDTH  = 410;    private MenuBar mb;    private Menu fileMenu;    private MenuItem openItem;    private MenuItem saveItem;    private MenuItem exitItem;        private Button openButton;    private Button closeButton;    private Button breakButton;    private Panel buttonPanel;    private Panel    messagePanel;    private TextArea messageAreaOut;    private TextArea messageAreaIn;    private ConfigurationPanel configurationPanel;    private SerialParameters parameters;    private SerialConnection connection;    private Properties props = null;    /**    Main method. Checks to see if the command line agrument is requesting    usage informaition (-h, -help), if it is, display a usage message and    exit, otherwise create a new <code>SerialDemo</code> and set it visible.    */    public static void main(String[] args) {	if ((args.length > 0) 	    && (args[0].equals("-h") 	    || args[0].equals("-help"))) {	    System.out.println("usage: java SerialDemo [configuration File]");	    System.exit(1);	}	SerialDemo serialDemo = new SerialDemo(args);	serialDemo.setVisible(true);	serialDemo.repaint();    }    /**    Create new <code>SerialDemo</code> and initilizes it. Parses args to    find configuration file. If found, initial state it set to parameters    in configuration file.    @param args command line arguments used when program was invoked.    */    public SerialDemo(String[] args){	super("Serial Demo");	parameters = new SerialParameters();	// Set up the GUI for the program	addWindowListener(new CloseHandler(this));	mb = new MenuBar();	fileMenu = new Menu("File");	openItem = new MenuItem("Load");	openItem.addActionListener(this);	fileMenu.add(openItem);	saveItem = new MenuItem("Save");	saveItem.addActionListener(this);	fileMenu.add(saveItem);	exitItem = new MenuItem("Exit");	exitItem.addActionListener(this);	fileMenu.add(exitItem);	mb.add(fileMenu);	setMenuBar(mb);	messagePanel = new Panel();	messagePanel.setLayout(new GridLayout(2, 1));	messageAreaOut = new TextArea();	messagePanel.add(messageAreaOut);	messageAreaIn = new TextArea();	messageAreaIn.setEditable(false);	messagePanel.add(messageAreaIn);	add(messagePanel, "Center");	configurationPanel = new ConfigurationPanel(this);		buttonPanel = new Panel();	openButton = new Button("Open Port");	openButton.addActionListener(this);	buttonPanel.add(openButton);	closeButton = new Button("Close Port");	closeButton.addActionListener(this);	closeButton.setEnabled(false);	buttonPanel.add(closeButton);	breakButton = new Button("Send Break");	breakButton.addActionListener(this);	breakButton.setEnabled(false);	buttonPanel.add(breakButton);		Panel southPanel = new Panel();	GridBagLayout gridBag = new GridBagLayout();	GridBagConstraints cons = new GridBagConstraints();	southPanel.setLayout(gridBag);	cons.gridwidth = GridBagConstraints.REMAINDER;	gridBag.setConstraints(configurationPanel, cons);	cons.weightx = 1.0;	southPanel.add(configurationPanel);	gridBag.setConstraints(buttonPanel, cons);	southPanel.add(buttonPanel);	add(southPanel, "South");	parseArgs(args);	connection = new SerialConnection(this, parameters, 					  messageAreaOut, messageAreaIn);	setConfigurationPanel();		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();	setLocation(screenSize.width/2 - WIDTH/2, 		    screenSize.height/2 - HEIGHT/2);	setSize(WIDTH, HEIGHT);    }    /**    Sets the GUI elements on the configurationPanel.    */    public void setConfigurationPanel() {	configurationPanel.setConfigurationPanel();    }    /**    Responds to the menu items and buttons.    */    public void actionPerformed(ActionEvent e) {	String cmd = e.getActionCommand();	// Loads a configuration file.	if (cmd.equals("Load")) {	    if (connection.isOpen()) {		AlertDialog ad = new AlertDialog(this, "Port Open!",						"Configuration may not",						"be loaded",						"while a port is open.");	    } else {		FileDialog fd = new FileDialog(this, 					       "Load Port Configuration",					       FileDialog.LOAD);		fd.setVisible(true);		String file = fd.getFile();		if (file != null) {		    String dir = fd.getDirectory();		    File f = new File(dir + file);		    try {		    	FileInputStream fis = new FileInputStream(f);		    	props = new Properties();		    	props.load(fis);		    	fis.close();		    } catch (FileNotFoundException e1) {			System.err.println(e1);		    } catch (IOException e2) {			System.err.println(e2);		    }		    loadParams();	 	}	    }	}	// Saves a configuration file.	if (cmd.equals("Save")) {	    configurationPanel.setParameters();	    FileDialog fd = new FileDialog(this, "Save Port Configuration",						   FileDialog.SAVE);	    fd.setFile("serialdemo.properties");	    fd.setVisible(true);	    String fileName = fd.getFile();	    String directory = fd.getDirectory();	    if ((fileName != null) && (directory != null)) {                writeFile(directory + fileName);            } 	}	// Calls shutdown, which exits the program.	if (cmd.equals("Exit")) {	    shutdown();	}	// Opens a port.	if (cmd.equals("Open Port")) {	    openButton.setEnabled(false);	    Cursor previousCursor = getCursor();	    setNewCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));	    configurationPanel.setParameters();	    try {	    	connection.openConnection();	    } catch (SerialConnectionException e2) {		AlertDialog ad = new AlertDialog(this, 					 "Error Opening Port!",					 "Error opening port,",					 e2.getMessage() + ".",					 "Select new settings, try again.");	        openButton.setEnabled(true);		setNewCursor(previousCursor);		return;	    }	    portOpened();	    setNewCursor(previousCursor);	}	// Closes a port.	if (cmd.equals("Close Port")) {	    portClosed();	}	// Sends a break signal to the port.	if (cmd.equals("Send Break")) {	    connection.sendBreak();	}    }    /**    Toggles the buttons to an open port state.    */    public void portOpened() {	openButton.setEnabled(false);	closeButton.setEnabled(true);	breakButton.setEnabled(true);    }    /**    Calls closeConnection on the SerialConnection and toggles the buttons    to a closed port state.    */    public void portClosed() {	connection.closeConnection();	openButton.setEnabled(true);	closeButton.setEnabled(false);	breakButton.setEnabled(false);    }    /**    Sets the <code>Cursor</code> for the application.    @param c New <code>Cursor</code>    */    private void setNewCursor(Cursor c) {	setCursor(c);	messageAreaIn.setCursor(c);	messageAreaOut.setCursor(c);    }    /**    Writes the current parameters to a configuration file of the 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -