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

📄 diagmsgdisplay.java

📁 无线通信的主要编程软件,是无线通信工作人员的必备工具,关天相关教程我会在后续传上.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (c) 2003, Vanderbilt University * All rights reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without written agreement is * hereby granted, provided that the above copyright notice, the following * two paragraphs and the author appear in all copies of this software. *  * IN NO EVENT SHALL THE VANDERBILT UNIVERSITY BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE VANDERBILT * UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *  * THE VANDERBILT UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE VANDERBILT UNIVERSITY HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */package net.tinyos.mcenter;import net.tinyos.packet.*;/** * * @author  nadand */public class DiagMSGDisplay extends MessageCenterInternalFrame implements PacketListenerIF {        protected String delimiter = " ";    protected java.text.SimpleDateFormat timestamp = null;        static final int PACKET_TYPE_FIELD = 2;    static final int PACKET_LENGTH_FIELD = 4;    static final int PACKET_DATA_FIELD = 5;    static final int PACKET_CRC_SIZE = 0;        private byte diagActiveMessage = (byte)0xB1;        private java.util.prefs.Preferences prefsRoot = java.util.prefs.Preferences.userNodeForPackage(this.getClass());    private java.util.prefs.Preferences prefs;           /** Creates new form DiagMSGDisplay */    public DiagMSGDisplay() {        super("Diag Message Display");        prefs = prefsRoot.node(prefsRoot.absolutePath()+"/DiagMSGDisplay");        diagActiveMessage = (byte)prefs.getInt("DiagActiveMessage",0xB1);        initComponents();        SerialConnector.instance().registerPacketListener(this,diagActiveMessage);    }        /** This method is called from within the constructor to     * initialize the form.     * WARNING: Do NOT modify this code. The content of this method is     * always regenerated by the Form Editor.     */    private void initComponents() {//GEN-BEGIN:initComponents        java.awt.GridBagConstraints gridBagConstraints;        jScrollPane1 = new javax.swing.JScrollPane();        jTextArea1 = new javax.swing.JTextArea();        subPanel = new javax.swing.JPanel();        timestampCheckBox = new javax.swing.JCheckBox();        jLabel1 = new javax.swing.JLabel();        jTextField1 = new javax.swing.JTextField();        setTitle("Diag Message Display");        jScrollPane1.setPreferredSize(new java.awt.Dimension(320, 240));        jScrollPane1.setViewportView(jTextArea1);        getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);        subPanel.setLayout(new java.awt.GridBagLayout());        timestampCheckBox.setText("print timestamp");        timestampCheckBox.addItemListener(new java.awt.event.ItemListener() {            public void itemStateChanged(java.awt.event.ItemEvent evt) {                timestampCheckBoxItemStateChanged(evt);            }        });        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.weightx = 1.0;        subPanel.add(timestampCheckBox, gridBagConstraints);        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);        jLabel1.setText("msg type");        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;        gridBagConstraints.weightx = 1.0;        subPanel.add(jLabel1, gridBagConstraints);        jTextField1.setHorizontalAlignment(javax.swing.JTextField.TRAILING);        jTextField1.setText("0XB1");        jTextField1.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                jTextField1ActionPerformed(evt);            }        });        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;        gridBagConstraints.weightx = 2.0;        subPanel.add(jTextField1, gridBagConstraints);        getContentPane().add(subPanel, java.awt.BorderLayout.SOUTH);        pack();    }//GEN-END:initComponents    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField1ActionPerformed        String arg = jTextField1.getText();        arg.toUpperCase();        if( !arg.startsWith("0X") ) {            jTextField1.setText("0X"+Integer.toHexString(diagActiveMessage));        }        else{                                    SerialConnector.instance().removePacketListener(this,diagActiveMessage);            diagActiveMessage = (byte)Integer.parseInt(arg.substring(2), 16);            SerialConnector.instance().registerPacketListener(this,diagActiveMessage);            prefs.putInt("DiagActiveMessage",diagActiveMessage);        }    }//GEN-LAST:event_jTextField1ActionPerformed        private void timestampCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_timestampCheckBoxItemStateChanged        if (evt.getStateChange() == java.awt.event.ItemEvent.SELECTED) {            timestamp = new java.text.SimpleDateFormat("HH:mm:ss.SSSS");        } else if(evt.getStateChange() == java.awt.event.ItemEvent.DESELECTED) {            timestamp = null;        }    }//GEN-LAST:event_timestampCheckBoxItemStateChanged            // Variables declaration - do not modify//GEN-BEGIN:variables    private javax.swing.JLabel jLabel1;    private javax.swing.JScrollPane jScrollPane1;    private javax.swing.JTextArea jTextArea1;    private javax.swing.JTextField jTextField1;    private javax.swing.JPanel subPanel;    private javax.swing.JCheckBox timestampCheckBox;    // End of variables declaration//GEN-END:variables    protected String getTimeStamp() {        if( timestamp != null )            return timestamp.format(new java.util.Date()) + delimiter;                return "";    }        /**  .     */    public void packetReceived(byte[] packet) {        if( packet[PACKET_TYPE_FIELD] == diagActiveMessage ) {            try {                jTextArea1.append(getTimeStamp() + decode(packet)+ "\n");                jTextArea1.setCaretPosition(this.jTextArea1.getDocument().getLength());                            }            catch(DiagMsgException e) {                System.out.println(e.getMessage());            }        }    }        static protected class DiagMsgException extends Exception {        public DiagMsgException(String cause) {            super(cause);        }    }        protected byte[] packet;    protected int end;    protected int head;    protected StringBuffer line;        protected synchronized String decode(byte[] packet) throws DiagMsgException {        this.packet = packet;                head = PACKET_DATA_FIELD;        end = PACKET_DATA_FIELD + packet[PACKET_LENGTH_FIELD];        if( end < head || end > packet.length - PACKET_CRC_SIZE )            throw new DiagMsgException("illegal message length");                line = new StringBuffer();                while(head < end) {            byte code = getByte();                        addSimple(code & 0xF);            addSimple((code >> 4) & 0xF);        }                // delete the leading space        if( line.length() > 0 && line.substring(0, delimiter.length()).equals(delimiter) )            line.delete(0, delimiter.length());                return new String(line);    }        static final int TYPE_END = 0;    static final int TYPE_INT8 = 1;    static final int TYPE_UINT8 = 2;    static final int TYPE_HEX8 = 3;    static final int TYPE_INT16 = 4;    static final int TYPE_UINT16 = 5;    static final int TYPE_HEX16 = 6;    static final int TYPE_INT32 = 7;    static final int TYPE_UINT32 = 8;    static final int TYPE_HEX32 = 9;    static final int TYPE_FLOAT = 10;    static final int TYPE_CHAR = 11;    static final int TYPE_INT64 = 12;    static final int TYPE_UINT64 = 13;    static final int TYPE_TOKEN = 14;    static final int TYPE_ARRAY = 15;        protected void addSimple(int type) throws DiagMsgException {        switch(type) {            case TYPE_END:                 break;            case TYPE_INT8:   addInt8();   break;            case TYPE_UINT8:  addUint8();  break;            case TYPE_HEX8:   addHex8();   break;            case TYPE_INT16:  addInt16();  break;            case TYPE_UINT16: addUint16(); break;            case TYPE_HEX16:  addHex16();  break;            case TYPE_INT32:  addInt32();  break;            case TYPE_UINT32: addUint32(); break;            case TYPE_HEX32:  addHex32();  break;            case TYPE_FLOAT:  addReal();   break;

⌨️ 快捷键说明

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