📄 bigmsgdisplay.java
字号:
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; subPanel.add(jButton1, gridBagConstraints); getContentPane().add(subPanel, java.awt.BorderLayout.SOUTH); pack(); }//GEN-END:initComponents private void typeTextFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_typeTextFieldFocusLost // Add your handling code here: }//GEN-LAST:event_typeTextFieldFocusLost private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed javax.swing.JFileChooser chooser = new javax.swing.JFileChooser(); chooser.setDialogTitle("Choose Directory to save"); int returnVal = chooser.showSaveDialog(this); if(returnVal == javax.swing.JFileChooser.APPROVE_OPTION) { saveFile = chooser.getSelectedFile(); jTextField1.setText(saveFile.getName()); } }//GEN-LAST:event_jButton1ActionPerformed private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField1ActionPerformed typeTextFieldActionPerformed(null); }//GEN-LAST:event_jTextField1ActionPerformed private void saveCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_saveCheckBoxItemStateChanged try{ if (evt.getStateChange() == java.awt.event.ItemEvent.SELECTED) { jButton1.setEnabled(false); fileOut = new java.io.FileOutputStream(saveFile); out = new java.io.PrintWriter(fileOut); } else if(evt.getStateChange() == java.awt.event.ItemEvent.DESELECTED) { jButton1.setEnabled(true); fileOut=null; out = null; } }catch(java.io.FileNotFoundException fnfe){ } }//GEN-LAST:event_saveCheckBoxItemStateChanged private void typeTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_typeTextFieldActionPerformed try{ String arg = typeTextField.getText(); if( !arg.toUpperCase().startsWith("0X") ) { typeTextField.setText("0X"+Integer.toHexString(activeMessage)); arg = typeTextField.getText(); } SerialConnector.instance().removePacketListener(this,activeMessage); activeMessage =(byte)Integer.parseInt(arg.substring(2), 16) ; SerialConnector.instance().registerPacketListener(this,activeMessage); prefs.putInt("ActiveMessage",activeMessage); }catch(java.lang.NumberFormatException nfe){ System.err.println("Cannot parse type field: "+nfe.getMessage()); } }//GEN-LAST:event_typeTextFieldActionPerformed 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 private void noidCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_noidCheckBoxItemStateChanged if (evt.getStateChange() == java.awt.event.ItemEvent.SELECTED) { supressId = true; } else if(evt.getStateChange() == java.awt.event.ItemEvent.DESELECTED) { supressId = false; } }//GEN-LAST:event_noidCheckBoxItemStateChanged static protected class BigMsg { int lastSeqNum; int nextPosition; byte[] packet; } protected HashMap bigMsgs = new HashMap(); static final int PACKET_TYPE_FIELD = 2; static final int PACKET_LENGTH_FIELD = 4; static final int PACKET_SOURCE = 5; static final int PACKET_SEQNUM = 7; static final int PACKET_DATA = 8; // the first 5 bytes are: addr(2), type(1), group(1), length(1) public void packetReceived(byte[] packet) { if( packet[PACKET_TYPE_FIELD] != activeMessage ) return; byte len = packet[PACKET_LENGTH_FIELD]; int source = getShort(packet[PACKET_SOURCE], packet[PACKET_SOURCE+1]); int seqNum = packet[PACKET_SEQNUM] & 0xFF; // wrong format if( len < 4 || PACKET_SOURCE + len > packet.length ) return; len -= 3; // omit the source and seqnum fields byte[] data = new byte[len]; System.arraycopy(packet, PACKET_DATA, data, 0, len); BigMsg bigMsg; if( seqNum == 0 ) { bigMsgs.remove(new Integer(source)); bigMsg = new BigMsg(); bigMsg.lastSeqNum = 0; bigMsg.packet = new byte[getShort(data[0], data[1])]; bigMsg.nextPosition = data.length - 2; System.arraycopy(data, 2, bigMsg.packet, 0, bigMsg.nextPosition); bigMsgs.put(new Integer(source), bigMsg); } else { bigMsg = (BigMsg)bigMsgs.get(new Integer(source)); if( bigMsg == null || seqNum == bigMsg.lastSeqNum ){ return; }else if( seqNum != bigMsg.lastSeqNum+1 ){ bigMsgs.remove(new Integer(source)); } bigMsg.lastSeqNum = seqNum; System.arraycopy(data, 0, bigMsg.packet, bigMsg.nextPosition, data.length); bigMsg.nextPosition += data.length; } stateTextField.setText("mote"+source+":"+ bigMsg.nextPosition +"/" + bigMsg.packet.length ); //System.out.println("mote"+source+":"+ bigMsg.nextPosition +"/" + bigMsg.packet.length ); if( bigMsg.nextPosition == bigMsg.packet.length ) { bigMsgs.remove(new Integer(Integer.toString(source))); if( timestamp != null ){ jTextArea1.append(timestamp.format(new java.util.Date()) + ' '); if(out != null) out.print(timestamp.format(new java.util.Date()) + ' '); } if( !supressId ) { jTextArea1.append(Integer.toString(source)); jTextArea1.append(" "); if(out != null) out.print(Integer.toString(source)+" "); } for(int i = 0; i < bigMsg.packet.length; ++i ) { jTextArea1.append(Integer.toString(bigMsg.packet[i] & 0xFF)); jTextArea1.append(" "); if(out != null) out.print(Integer.toString(bigMsg.packet[i] & 0xFF) + " "); } jTextArea1.append("\n"); this.jTextArea1.setCaretPosition(this.jTextArea1.getDocument().getLength()); if(out != null) out.println(""); if(out != null) out.flush(); } } protected int getShort(byte a, byte b) { return (a & 0x00FF) + ((b << 8) & 0xFF00); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButton1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JSeparator jSeparator1; private javax.swing.JSeparator jSeparator2; private javax.swing.JTextArea jTextArea1; private javax.swing.JTextField jTextField1; private javax.swing.JCheckBox noidCheckBox; private javax.swing.JCheckBox saveCheckBox; private javax.swing.JLabel stateLabel; private javax.swing.JTextField stateTextField; private javax.swing.JPanel subPanel; private javax.swing.JCheckBox timestampCheckBox; private javax.swing.JLabel typeLabel; private javax.swing.JTextField typeTextField; // End of variables declaration//GEN-END:variables }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -