📄 registermanager.java
字号:
setSize(new java.awt.Dimension(657, 357)); setLocation((screenSize.width-657)/2,(screenSize.height-357)/2); }//GEN-END:initComponents private void bcastCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_bcastCheckBoxItemStateChanged if (evt.getStateChange() == java.awt.event.ItemEvent.SELECTED) { broadcastEnabled = true; } else if(evt.getStateChange() == java.awt.event.ItemEvent.DESELECTED) { broadcastEnabled = false; } }//GEN-LAST:event_bcastCheckBoxItemStateChanged private void moteTextFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_moteTextFieldFocusLost updateMoteID(); }//GEN-LAST:event_moteTextFieldFocusLost private void moteTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_moteTextFieldActionPerformed updateMoteID(); }//GEN-LAST:event_moteTextFieldActionPerformed private void radioDelayCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_radioDelayCheckBoxItemStateChanged if (evt.getStateChange() == java.awt.event.ItemEvent.SELECTED) { radioDelay = 250; } else if(evt.getStateChange() == java.awt.event.ItemEvent.DESELECTED) { radioDelay = 10; } }//GEN-LAST:event_radioDelayCheckBoxItemStateChanged private void writeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_writeButtonActionPerformed if(!changes.isEmpty()){ int address, data; int destinationAddress = moteAddress; java.util.Iterator changesIterartor= changes.iterator(); while(changesIterartor.hasNext()){ int changedAddress = ((Integer)changesIterartor.next()).intValue(); changesIterartor.remove(); if(0 <= changedAddress && changedAddress < registerCount){ address = registerAddress[0] + changedAddress; }else if(registerCount <= changedAddress && changedAddress < (2*registerCount)){ address = registerAddress[1] + changedAddress-registerCount; }else if((2*registerCount) <= changedAddress && changedAddress < (3*registerCount)){ address = registerAddress[2] + changedAddress-(2*registerCount); }else if((3*registerCount) <= changedAddress && changedAddress < (4*registerCount)){ address = registerAddress[3] + changedAddress-(3*registerCount); }else{ return; } data = registerSpace[changedAddress]; sendPacket[2] = (byte)(WRITE_REQ & 0xff); // Type = AM_WRITE_REQ sendPacket[6] = (byte)((destinationAddress >> 8) & 0xff); // Mote Address high byte sendPacket[5] = (byte)(destinationAddress & 0xff); // Mote Address low byte sendPacket[8] = (byte)((address >> 8) & 0xff); // Address high byte sendPacket[7] = (byte)(address & 0xff); // Address low byte sendPacket[9] = (byte)(0x01 & 0xff); // length byte sendPacket[10] = (byte)(data & 0xff); // Data byte byte[] writeData = new byte[6]; writeData[0] = sendPacket[5]; writeData[1] = sendPacket[6]; writeData[2] = sendPacket[7]; writeData[3] = sendPacket[8]; writeData[4] = sendPacket[9]; writeData[5] = sendPacket[10]; if(broadcastEnabled) destinationAddress = 0xFFFF; SerialConnector.instance().sendMessage(destinationAddress, (short)sendPacket[2], (short)sendPacket[3], writeData); } } }//GEN-LAST:event_writeButtonActionPerformed private void readButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_readButtonActionPerformed System.out.println("Send Read"); sendThread = new RegisterReaderThread(); sendThread.start(); }//GEN-LAST:event_readButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel jLabel4; private javax.swing.JScrollPane channelBScrollPane; private javax.swing.JButton readButton; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel3; private javax.swing.JScrollPane channelCScrollPane; private javax.swing.JPanel jPanel3; private javax.swing.JButton writeButton; private javax.swing.JLabel jLabel2; private javax.swing.JCheckBox radioDelayCheckBox; private javax.swing.JPanel jPanel2; private javax.swing.JScrollPane channelAScrollPane; private javax.swing.JLabel moteLabel; private javax.swing.JCheckBox bcastCheckBox; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane generalScrollPane; private javax.swing.JTextField moteTextField; // End of variables declaration//GEN-END:variables private void updateMoteID(){ String value = moteTextField.getText(); if(value.trim().toUpperCase().startsWith("0X")) moteAddress=Short.parseShort(value.trim().substring(2),16); else moteAddress=Short.parseShort(value.trim()); } /** packetReceived() is called by the SerialPortStub object. After * the message processing we force the update of the screen. * * TODO: CRC checking */ public void packetReceived(byte[] packet) { int msgtype; int address; int baseAddress; int moteId; int data; int relativeAddress; int length; String msgstr; moteId = (packet[6] & 0xff) << 8; moteId |= packet[5] & 0xff; if(moteId != moteAddress) return; msgtype = packet[2] & 0xff; baseAddress = (packet[8] & 0xff) << 8; baseAddress |= packet[7] & 0xff; length = packet[9] & 0xff; if (msgtype == READ_REPLY) { for(int i = 0; i < length; i++){ data= packet[10+i] & 0xff; address = baseAddress+i; if( registerAddress[0] <= address && address < registerAddress[1] ){ relativeAddress = address-registerAddress[0]; if(relativeAddress < registerCount){ registerSpace[relativeAddress]=(byte)data; ((javax.swing.table.DefaultTableModel) generalTable.getModel()).fireTableCellUpdated(0, relativeAddress) ; //((javax.swing.table.DefaultTableModel) generalTable.getModel()).fireTableDataChanged(); } }else if( registerAddress[1] <= address && address < registerAddress[2] ){ relativeAddress = address-registerAddress[1]; if(relativeAddress < registerCount){ registerSpace[registerCount + relativeAddress]=(byte)data; ((javax.swing.table.DefaultTableModel) channelATable.getModel()).fireTableCellUpdated(0, relativeAddress) ; //((javax.swing.table.DefaultTableModel)channelATable.getModel()).fireTableDataChanged(); } }else if( registerAddress[2] <= address && address < registerAddress[3] ){ relativeAddress = address-registerAddress[2]; if(relativeAddress < registerCount){ registerSpace[2*registerCount + relativeAddress]=(byte)data; ((javax.swing.table.DefaultTableModel) channelBTable.getModel()).fireTableCellUpdated(0, relativeAddress) ; //((javax.swing.table.DefaultTableModel)channelBTable.getModel()).fireTableDataChanged(); } }else if( registerAddress[3] <= address && address < (registerAddress[3] + registerCount) ){ relativeAddress = address-registerAddress[3]; if(relativeAddress < registerCount){ registerSpace[3*registerCount + relativeAddress]=(byte)data; ((javax.swing.table.DefaultTableModel) channelCTable.getModel()).fireTableCellUpdated(0, relativeAddress) ; } } } } } /************************ Inner Classes ***********************************/ private class RegisterTableModel extends javax.swing.table.DefaultTableModel{ private int spaceStart; public RegisterTableModel(int spaceStart){ super(headTitles,1); this.spaceStart = spaceStart; } public Object getValueAt(int row, int column) { if(column < registerCount && row == 0){ return Integer.toHexString(registerSpace[spaceStart + column] & 0xFF); } return Integer.toString(-1); } public void setValueAt(Object aValue, int row, int column){ if(column < registerCount && row == 0){ registerSpace[spaceStart + column] = (byte)(Integer.parseInt((String)aValue,16) & 0xFF); changes.add(new Integer(spaceStart + column)); } } } private class RegisterReaderThread extends Thread{ public RegisterReaderThread(){} public void run(){ int address; int destinationAddress = moteAddress; for(int channel = 0; channel < 4; channel++){ //System.out.println("Channel"+Integer.toString(channel)); //address = Integer.parseInt(addressField.getText(), 16); address = registerAddress[channel]; sendPacket[2] = (byte)(READ_REQ & 0xff); // Type = AM_READ_REQ sendPacket[6] = (byte)((destinationAddress >> 8) & 0xff); // Mote Address high byte sendPacket[5] = (byte)(destinationAddress & 0xff); // Mote Address low byte sendPacket[8] = (byte)((address >> 8) & 0xff); // Address high byte sendPacket[7] = (byte)(address & 0xff); // Address low byte sendPacket[9] = (byte)(16 & 0xff); // length byte sendPacket[10] = (byte)(0x00 & 0xff); // Data byte byte[] readData = new byte[6]; readData[0] = sendPacket[5]; readData[1] = sendPacket[6]; readData[2] = sendPacket[7]; readData[3] = sendPacket[8]; readData[4] = sendPacket[9]; readData[5] = sendPacket[10]; if(broadcastEnabled) destinationAddress = 0xFFFF; SerialConnector.instance().sendMessage(destinationAddress, (short)sendPacket[2], (short)sendPacket[3], readData); try{ this.sleep(radioDelay); }catch(java.lang.InterruptedException ie){} } } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -