00001 package GuiComponents.SctApi;
00002
00003 import javax.swing.*;
00004 import javax.swing.table.*;
00005
00006 import java.awt.*;
00007 import java.awt.event.*;
00008 import java.io.*;
00009 import javax.swing.table.AbstractTableModel;
00010 import javax.swing.table.TableCellRenderer;
00011 import javax.swing.table.TableModel;
00012 import javax.swing.table.TableColumn;
00013 import javax.swing.table.JTableHeader;
00014 import java.lang.Math;
00015 import java.lang.Object;
00016
00017 import GuiComponents.System.SystemInterface;
00018
00019 import java.awt.Component;
00020 import java.awt.Color;
00021 import javax.swing.JTable;
00022 import javax.swing.table.DefaultTableCellRenderer;
00023
00024
00025
00026 public class HarnessTestView extends JPanel {
00027 Sct_SctApi.SctApiIPC api;
00028 Sct_SctApi.SctApiDDCServer apiDDC;
00029
00030 SystemInterface sys;
00031 sctConf.Configuration conf;
00032
00033 int maxHarnessOnROD = 8;
00034 int maxDoglegNumberInHarness = 6;
00035
00036 short ps_state = 2;
00037 String passedFailed;
00038 String dataFile;
00039 String log_root = "/work/ppatlas4/logs/HarnessTest";
00040 org.omg.CORBA.IntHolder murID;
00041
00042 int m_partition = 0;
00043 int m_crate = 0;
00044 int m_rod = 0;
00045 int m_select = -1;
00046
00047 int [] m_harnessList;
00048 int m_harnessMax = 0;
00049 int m_rxThreshold = 128;
00050 int m_txCurrent = 160;
00051 short [][] m_daq_scanResults;
00052 float [][] m_dcs_scanResults;
00053 String[][] m_daq_scanResultsTable;
00054 String[][] m_dcs_scanResultsTable;
00055 String[][][] m_summary_scanResults;
00056
00057
00058
00059
00060
00061
00062 String [] psChannelParametersList = {"LVchStat", "LVch_Icc", "LVch_Idd", "LVchVCSI", "LVchPINI","MOch_Tm0",
00063 "MOch_Tm1", "HVchCurr"};
00064
00065
00066
00067
00068
00069
00070 String [] psChannelParametersList_short = {"Status", "Icc", "Idd", "VCSI", "PINI", "Tm0", "Tm1", "HVCu"};
00071
00072
00073 float psChannelParametersLimits[][] =
00074 {
00075 {(float)-999999, (float)999999},
00076 {(float)55, (float)115},
00077 {(float)175, (float)245},
00078 {(float)1.80,(float)2.40 },
00079 {(float)0.20, (float)1.00},
00080 {(float)20, (float)30},
00081 {(float)5, (float)10},
00082 {(float)140, (float)160},
00083 };
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107 org.omg.CORBA.IntHolder ps_partition;
00108 org.omg.CORBA.IntHolder ps_crate;
00109 org.omg.CORBA.IntHolder [] [] ps_channel;
00110 int selectLine = 2;
00111 String [] psChannelParameterList;
00112 float [][] dcs_scanResults_select0Harness0;
00113 float [][] dcs_scanResults_select0Harness1;
00114 float [][] dcs_scanResults_select1Harness0;
00115 float [][] dcs_scanResults_select1Harness1;
00116
00117 Boolean dcsScanCompletedSelect0Harness0 = Boolean.FALSE;
00118 Boolean dcsScanCompletedSelect0Harness1 = Boolean.FALSE;
00119 Boolean dcsScanCompletedSelect1Harness0 = Boolean.FALSE;
00120 Boolean dcsScanCompletedSelect1Harness1 = Boolean.FALSE;
00121
00122
00123
00124 public HarnessTestView(Sct_SctApi.SctApiIPC a) {
00125 api = a;
00126 apiDDC = SystemInterface.getInstance().getSctApiDDCServer();
00127
00128 murID = new org.omg.CORBA.IntHolder();
00129 ps_partition = new org.omg.CORBA.IntHolder();
00130 ps_crate = new org.omg.CORBA.IntHolder();
00131 ps_channel = new org.omg.CORBA.IntHolder[8][maxDoglegNumberInHarness];
00132 for(int i=0; i<8; i++){
00133 for(int j=0;j<maxDoglegNumberInHarness;j++){
00134 ps_channel[i][j]= new org.omg.CORBA.IntHolder();
00135 }
00136 }
00137
00138 m_daq_scanResults = new short[0][0];
00139 m_daq_scanResultsTable = new String[25][12];
00140
00141 m_dcs_scanResults = new float[psChannelParametersList.length][maxDoglegNumberInHarness];
00142
00143 m_dcs_scanResultsTable = new String[psChannelParametersList.length+1][maxDoglegNumberInHarness];
00144
00145 for(int row=0; row<25; row++)
00146 for(int column=0; column<12; column++)
00147 m_daq_scanResultsTable[row][column] = "?";
00148
00149 sys = SystemInterface.getInstance();
00150 conf = sys.getConfigurationService();
00151
00152
00153
00154
00155 m_harnessMax=0;
00156 m_harnessList = new int[8];
00157
00158 if(conf!=null){
00159 for(int harness=0; harness<maxHarnessOnROD; harness++){
00160 try{
00161 System.out.println("part " + m_partition + " crate " + m_crate + " rod " + m_rod + " harness " + harness);
00162 conf.getMapRODMUR(m_partition, m_crate, m_rod, harness, murID);
00163 System.out.println(" harness " + harness + " MUR " + murID.value);
00164
00165 m_harnessList[m_harnessMax] = harness;
00166 m_harnessMax++;
00167
00168 for(int module=1; module<=6; module++){
00169 conf.translateToPowerSupply(murID.value, module, ps_partition, ps_crate, ps_channel[m_harnessMax-1][module-1]);
00170 System.out.println("Map for harness "+harness +" chan " + module + "ps chan " + ps_channel[m_harnessMax-1][module-1].value);
00171 }
00172 }
00173 catch(sctConf.ConfigurationException e) {
00174 System.out.println("No MUR at harness " + harness);
00175 }
00176 }
00177 }else{
00178 javax.swing.JOptionPane.showMessageDialog(null, "Unable to connect to the configuration service");
00179 }
00180
00181 passedFailed = "?";
00182 initComponents();
00183
00184
00185 dataFile = fileNameValue.getText();
00186 File dataFile_withpath = new File(dataFile);
00187 try{BufferedWriter out = new BufferedWriter(new FileWriter(dataFile, false)); out.close();}
00188 catch(IOException e) {javax.swing.JOptionPane.showMessageDialog(null, "Failed to Open File? " + dataFile_withpath.getPath());}
00189
00190
00191
00192 modifyComponents();
00193 }
00194
00195
00196 public HarnessTestView()
00197 {
00198 initComponents();
00199 modifyComponents();
00200 }
00201
00202 public void modifyComponents() {
00203
00204 }
00205
00211 private void initComponents()
00212 {
00213 topPanel = new javax.swing.JPanel();
00214 panelForLabels = new javax.swing.JPanel();
00215 partitionLabel = new javax.swing.JLabel();
00216 crateLabel = new javax.swing.JLabel();
00217 rodLabel = new javax.swing.JLabel();
00218 harnessMaxLabel = new javax.swing.JLabel();
00219 rxLabel = new javax.swing.JLabel();
00220 txLabel = new javax.swing.JLabel();
00221 fileNameLabel = new javax.swing.JLabel();
00222
00223 partitionValue = new javax.swing.JTextField();
00224 crateValue = new javax.swing.JTextField();
00225 rodValue = new javax.swing.JTextField();
00226 harnessMaxValue = new javax.swing.JTextField();
00227 rxThValue = new javax.swing.JTextField();
00228 txCurrentValue = new javax.swing.JTextField();
00229 fileNameValue = new javax.swing.JTextField();
00230 panelForClose = new javax.swing.JPanel();
00231 closeButton = new javax.swing.JButton();
00232
00233 jTabbedPaneTest = new javax.swing.JTabbedPane();
00234 jTabbedPaneDAQData = new javax.swing.JTabbedPane();
00235 jTabbedPaneDCSData = new javax.swing.JTabbedPane();
00236
00237 setLayout(new java.awt.BorderLayout());
00238
00239 add(panelForClose, java.awt.BorderLayout.SOUTH);
00240 panelForClose.setOpaque(false);
00241 panelForClose.add(closeButton);
00242 closeButton.setText("Close");
00243 closeButton.addActionListener(
00244 new java.awt.event.ActionListener()
00245 {
00246 public void actionPerformed(java.awt.event.ActionEvent evt)
00247 {
00248 closeButtonPerformed(evt);
00249 }
00250 });
00251
00252 add(topPanel, java.awt.BorderLayout.NORTH);
00253 topPanel.setLayout(new javax.swing.BoxLayout(topPanel, javax.swing.BoxLayout.Y_AXIS));
00254 topPanel.add(panelForLabels);
00255 panelForLabels.setLayout(new javax.swing.BoxLayout(panelForLabels, javax.swing.BoxLayout.X_AXIS));
00256
00257 panelForLabels.add(partitionLabel);
00258 partitionLabel.setText(" Partition ");
00259 panelForLabels.add(partitionValue);
00260 partitionValue.setText(Integer.toString(m_partition));
00261 partitionValue.addActionListener
00262 (new java.awt.event.ActionListener(){
00263 public void actionPerformed(java.awt.event.ActionEvent evt) {
00264 m_partition = Integer.parseInt(partitionValue.getText());
00265 }
00266 });
00267
00268 panelForLabels.add(crateLabel);
00269 crateLabel.setText(" Crate ");
00270 panelForLabels.add(crateValue);
00271 crateValue.setText(Integer.toString(m_crate));
00272 crateValue.addActionListener
00273 (new java.awt.event.ActionListener(){
00274 public void actionPerformed(java.awt.event.ActionEvent evt) {
00275 m_crate = Integer.parseInt(crateValue.getText());
00276 }
00277 });
00278
00279 panelForLabels.add(rodLabel);
00280 rodLabel.setText(" ROD ");
00281 panelForLabels.add(rodValue);
00282 rodValue.setText(Integer.toString(m_rod));
00283 rodValue.addActionListener
00284 (new java.awt.event.ActionListener(){
00285 public void actionPerformed(java.awt.event.ActionEvent evt) {
00286 m_rod = Integer.parseInt(rodValue.getText());
00287 }
00288 });
00289
00290 panelForLabels.add(harnessMaxLabel);
00291 harnessMaxLabel.setText(" HarnessMax ");
00292 panelForLabels.add(harnessMaxValue);
00293 harnessMaxValue.setText(Integer.toString(m_harnessMax));
00294 harnessMaxValue.addActionListener
00295 (new java.awt.event.ActionListener(){
00296 public void actionPerformed(java.awt.event.ActionEvent evt) {
00297 m_harnessMax = Integer.parseInt(harnessMaxValue.getText());
00298 createTabs(m_harnessMax);
00299 }
00300 });
00301
00302 panelForLabels.add(rxLabel);
00303 rxLabel.setText(" Rx Threshold ");
00304 panelForLabels.add(rxThValue);
00305
00306 rxThValue.setText("?");
00307 rxThValue.addActionListener
00308 (new java.awt.event.ActionListener(){
00309 public void actionPerformed(java.awt.event.ActionEvent evt) {
00310 if(api!=null){
00311 m_rxThreshold = Integer.parseInt(rxThValue.getText());
00312 for(int harness = 0; harness < m_harnessMax; harness++){
00313 for(int channel = (m_harnessList[harness]*6); channel < ((m_harnessList[harness]+1)*6); channel++){
00314 api.modifyBOCParam(m_partition,m_crate,m_rod,channel,50,m_rxThreshold);
00315 }
00316 }
00317
00318 }
00319 }
00320 });
00321
00322 panelForLabels.add(txLabel);
00323 txLabel.setText(" Tx Current ");
00324 panelForLabels.add(txCurrentValue);
00325
00326 txCurrentValue.setText("?");
00327 txCurrentValue.addActionListener
00328 (new java.awt.event.ActionListener(){
00329 public void actionPerformed(java.awt.event.ActionEvent evt) {
00330 m_txCurrent = Integer.parseInt(txCurrentValue.getText());
00331 if(api!=null){
00332 for(int harness = 0; harness < m_harnessMax; harness++){
00333 for(int channel = (m_harnessList[harness]*6); channel < ((m_harnessList[harness]+1)*6); channel++){
00334 api.modifyBOCParam(m_partition,m_crate,m_rod,channel,53,m_txCurrent);
00335 }
00336 }
00337 }
00338 }
00339 });
00340
00341 panelForLabels.add(fileNameLabel);
00342 fileNameLabel.setText(" FileName ");
00343 panelForLabels.add(fileNameValue);
00344 java.util.Date date = new java.util.Date();
00345 String timeStampForDataFile = date.getDate() + "_" + date.getMonth() + "_" + date.getYear() + "_"+ date.getHours()+ "." + date.getMinutes() + "." + date.getSeconds();
00346 String this_dataFile = log_root + "/saved_data/" + "harnessData_" + timeStampForDataFile + ".txt";
00347 fileNameValue.setText(this_dataFile);
00348
00349
00350 createTabs(m_harnessMax);
00351 }
00352
00353 private void createTabs(int harnessMax)
00354 {
00355
00356 m_summary_scanResults = new String[m_harnessMax][6][6];
00357 for(int harness=0; harness<m_harnessMax; harness++){
00358 for(int test=0; test<6; test++){
00359 for(int module=0; module<6; module++){
00360 m_summary_scanResults[harness][test][module] = "?";
00361 }
00362 }
00363 }
00364
00365 add(jTabbedPaneTest, java.awt.BorderLayout.CENTER);
00366
00367 jTabbedPaneTest.removeAll();
00368
00369
00370
00371 summaryScrollPanelForTable = new javax.swing.JScrollPane[m_harnessMax];
00372 summaryHarnessTable = new javax.swing.JTable[m_harnessMax];
00373 summaryHarnessTableModels = new HarnessTestsSummaryTableModel[m_harnessMax];
00374
00375 summaryHarnessPanel = new javax.swing.JPanel();
00376 jTabbedPaneTest.addTab("Test", summaryHarnessPanel);
00377 summaryHarnessPanel.setLayout(new javax.swing.BoxLayout(summaryHarnessPanel, javax.swing.BoxLayout.Y_AXIS));
00378 summaryHarnessPanel.setPreferredSize(new Dimension(150,180));
00379 performHarnessTestButton = new javax.swing.JButton();
00380 summaryHarnessPanel.add(performHarnessTestButton, java.awt.BorderLayout.CENTER);
00381 performHarnessTestButton.setText("Perform Harness Test");
00382 performHarnessTestButton.addActionListener(
00383 new java.awt.event.ActionListener() {
00384 public void actionPerformed(java.awt.event.ActionEvent evt) {
00385 doTestsForAllHarnesses();
00386 }
00387 });
00388
00389 for(int index=0; index<m_harnessMax; index++){
00390 summaryScrollPanelForTable[index] = new javax.swing.JScrollPane();
00391 summaryHarnessPanel.add(summaryScrollPanelForTable[index], java.awt.BorderLayout.CENTER);
00392 summaryHarnessTable[index] = new javax.swing.JTable();
00393 summaryScrollPanelForTable[index].setViewportView(summaryHarnessTable[index]);
00394
00395 summaryHarnessTable[index].setFont(new java.awt.Font("Monospaced", 0, 12));
00396 String[] columnsNames = {"Harness ","DAQ Select 0","DAQ Select 1","DCS Select 0","DCS Select 1",
00397 "DCS S0vsS1", "RESULTS"};
00398 columnsNames[0] = columnsNames[0]+m_harnessList[index];
00399 summaryHarnessTableModels[index] = new HarnessTestsSummaryTableModel(m_harnessList[index],columnsNames);
00400 summaryHarnessTableModels[index].newData(m_summary_scanResults[index]);
00401 summaryHarnessTable[index].setModel(summaryHarnessTableModels[index]);
00402
00403 changeSummaryTableCellsColor(summaryHarnessTable[index]);
00404 }
00405
00406
00407
00408 jTabbedPaneTest.addTab("DAQ Data",jTabbedPaneDAQData);
00409
00410 jTabbedPaneDAQData.removeAll();
00411
00412 daqHaernessPanels = new javax.swing.JPanel[m_harnessMax];
00413 daqPanelForLabels = new javax.swing.JPanel[m_harnessMax];
00414 daqSelectLineLabel = new javax.swing.JLabel[m_harnessMax];
00415 daqSelectLineChoices = new javax.swing.JComboBox[m_harnessMax];
00416 performDAQScanButton = new javax.swing.JButton[m_harnessMax];
00417 daqScrollPanelForTable_Select0 = new javax.swing.JScrollPane[m_harnessMax];
00418 daqHarnessTable_Select0 = new javax.swing.JTable[m_harnessMax];
00419 daqHarnessTableModels_Select0 = new SamplingDataTableModel[m_harnessMax];
00420 daqPanelForSecondTable = new javax.swing.JPanel[m_harnessMax];
00421 daqScrollPanelForTable_Select1 = new javax.swing.JScrollPane[m_harnessMax];
00422 daqHarnessTable_Select1 = new javax.swing.JTable[m_harnessMax];
00423 daqHarnessTableModels_Select1 = new SamplingDataTableModel[m_harnessMax];
00424
00425 for(int index=0; index<m_harnessMax; index++) {
00426 daqHaernessPanels[index] = new javax.swing.JPanel();
00427 jTabbedPaneDAQData.addTab("Harness "+ m_harnessList[index], daqHaernessPanels[index]);
00428 daqPanelForLabels[index] = new javax.swing.JPanel();
00429 daqHaernessPanels[index].setLayout(new java.awt.BorderLayout());
00430 daqHaernessPanels[index].add(daqPanelForLabels[index], java.awt.BorderLayout.NORTH);
00431 daqPanelForLabels[index].setLayout(new javax.swing.BoxLayout(daqPanelForLabels[index],
00432 javax.swing.BoxLayout.X_AXIS));
00433 daqSelectLineLabel[index] = new javax.swing.JLabel();
00434 daqPanelForLabels[index].add(daqSelectLineLabel[index]);
00435 daqSelectLineLabel[index].setText(" Select Line ");
00436 daqSelectLineChoices[index] = new javax.swing.JComboBox();
00437 daqPanelForLabels[index].add(daqSelectLineChoices[index]);
00438 daqSelectLineChoices[index].setModel(
00439 new javax.swing.DefaultComboBoxModel(new String[]
00440 { "Normal + Redundant", "Normal", "Redundant" }));
00441
00442 performDAQScanButton[index] = new javax.swing.JButton();
00443 daqPanelForLabels[index].add(performDAQScanButton[index]);
00444 performDAQScanButton[index].setText("Perform DAQ scan");
00445 performDAQScanButton[index].addActionListener(new java.awt.event.ActionListener() {
00446 public void actionPerformed(java.awt.event.ActionEvent evt) {
00447
00448 int selectedHarness = jTabbedPaneDAQData.getSelectedIndex();
00449
00450 String selectLine =
00451 (String)daqSelectLineChoices[selectedHarness].getSelectedItem();
00452
00453 if(selectLine.equals("Normal"))
00454 {
00455 changeSelect(0);
00456 daqHarnessTableModels_Select0[selectedHarness].
00457 newData(probeScanHarnessWithTrigger(selectedHarness, (short)0),
00458 dataFile, getTimeStamp());
00459 }
00460 else if(selectLine.equals("Redundant"))
00461 {
00462 changeSelect(1);
00463 daqHarnessTableModels_Select1[selectedHarness].
00464 newData(probeScanHarnessWithTrigger(selectedHarness, (short)1),
00465 dataFile, getTimeStamp());
00466 }
00467 else if(selectLine.equals("Normal + Redundant"))
00468 {
00469 changeSelect(0);
00470 daqHarnessTableModels_Select0[selectedHarness].
00471 newData(probeScanHarnessWithTrigger(selectedHarness, (short)0),
00472 dataFile, getTimeStamp());
00473
00474 changeSelect(1);
00475 daqHarnessTableModels_Select1[selectedHarness].
00476 newData(probeScanHarnessWithTrigger(selectedHarness, (short)1),
00477 dataFile, getTimeStamp());
00478 }
00479 }
00480 });
00481
00482 daqHaernessPanels[index].setPreferredSize(new Dimension(850,550));
00483
00484 daqScrollPanelForTable_Select0[index] = new javax.swing.JScrollPane();
00485 daqHaernessPanels[index].add(daqScrollPanelForTable_Select0[index], java.awt.BorderLayout.CENTER);
00486 daqHarnessTable_Select0[index] = new javax.swing.JTable();
00487 daqScrollPanelForTable_Select0[index].setViewportView(daqHarnessTable_Select0[index]);
00488 daqHarnessTable_Select0[index].setFont(new java.awt.Font("Monospaced", 0, 12));
00489
00490 daqHarnessTableModels_Select0[index] = new SamplingDataTableModel(m_harnessList[index], 0);
00491 daqHarnessTable_Select0[index].setModel(daqHarnessTableModels_Select0[index]);
00492 changeDAQTableCellsColor(daqHarnessTable_Select0[index]);
00493
00494 daqPanelForSecondTable[index] = new javax.swing.JPanel();
00495 daqHaernessPanels[index].add(daqPanelForSecondTable[index], java.awt.BorderLayout.SOUTH);
00496 daqPanelForSecondTable[index].setLayout(new java.awt.BorderLayout());
00497 daqPanelForSecondTable[index].setPreferredSize(new Dimension(550,250));
00498 daqScrollPanelForTable_Select1[index] = new javax.swing.JScrollPane();
00499 daqPanelForSecondTable[index].add(daqScrollPanelForTable_Select1[index], java.awt.BorderLayout.CENTER);
00500 daqHarnessTable_Select1[index] = new javax.swing.JTable();
00501 daqScrollPanelForTable_Select1[index].setViewportView(daqHarnessTable_Select1[index]);
00502 daqHarnessTable_Select1[index].setFont(new java.awt.Font("Monospaced", 0, 12));
00503
00504 daqHarnessTableModels_Select1[index] = new SamplingDataTableModel(m_harnessList[index], 1);
00505 daqHarnessTable_Select1[index].setModel(daqHarnessTableModels_Select1[index]);
00506 changeDAQTableCellsColor(daqHarnessTable_Select1[index]);
00507 }
00508
00509 jTabbedPaneTest.addTab("DCS Data", jTabbedPaneDCSData);
00510
00511 jTabbedPaneDCSData.removeAll();
00512
00513 dcsHarnessPanels = new javax.swing.JPanel[harnessMax];
00514 dscScrollPanelForTable_Select0 = new javax.swing.JScrollPane[harnessMax];
00515 dcsHarnessTable_Select0 = new javax.swing.JTable[harnessMax];
00516 dcsHarnessTableModels_Select0 = new DCSDataTableModel[harnessMax];
00517 dcsPanelForSecondTable = new javax.swing.JPanel[harnessMax];
00518 dscScrollPanelForTable_Select1 = new javax.swing.JScrollPane[harnessMax];
00519 dcsHarnessTable_Select1 = new javax.swing.JTable[harnessMax];
00520 dcsHarnessTableModels_Select1 = new DCSDataTableModel[harnessMax];
00521 dcsPanelForLabels = new javax.swing.JPanel[harnessMax];
00522 stateTransitionLabel = new javax.swing.JLabel[harnessMax];
00523 transitionStateChoices = new javax.swing.JComboBox[harnessMax];
00524 changePSStateButton = new javax.swing.JButton[harnessMax];
00525 dcsSelectLineLabel = new javax.swing.JLabel[harnessMax];
00526 dcsSelectLineChoices = new javax.swing.JComboBox[harnessMax];
00527 performDCSScanButton = new javax.swing.JButton[harnessMax];
00528
00529 for(int index=0; index<harnessMax; index++)
00530 {
00531 dcsHarnessPanels[index] = new javax.swing.JPanel();
00532 jTabbedPaneDCSData.addTab("Harness "+ m_harnessList[index], dcsHarnessPanels[index] );
00533 dcsHarnessPanels[index].setLayout(new java.awt.BorderLayout());
00534 dcsHarnessPanels[index].setPreferredSize(new Dimension(350,550));
00535 dcsHarnessPanels[index].setPreferredSize(new Dimension(250,350));
00536
00537 dscScrollPanelForTable_Select0[index] = new javax.swing.JScrollPane();
00538 dcsHarnessPanels[index].add(dscScrollPanelForTable_Select0[index], java.awt.BorderLayout.CENTER);
00539 dcsHarnessTable_Select0[index] = new javax.swing.JTable();
00540 dscScrollPanelForTable_Select0[index].setViewportView(dcsHarnessTable_Select0[index]);
00541 dcsHarnessTable_Select0[index].setFont(new java.awt.Font("Monospaced", 0, 12));
00542 dcsHarnessTableModels_Select0[index] = new DCSDataTableModel(m_harnessList[index], 0);
00543 dcsHarnessTable_Select0[index].setModel(dcsHarnessTableModels_Select0[index]);
00544 changeDCSTableCellsColor(dcsHarnessTable_Select0[index]);
00545
00546 dcsPanelForSecondTable[index] = new javax.swing.JPanel();
00547 dcsHarnessPanels[index].add(dcsPanelForSecondTable[index], java.awt.BorderLayout.SOUTH);
00548 dcsPanelForSecondTable[index].setLayout(new java.awt.BorderLayout());
00549 dcsPanelForSecondTable[index].setPreferredSize(new Dimension(350,250));
00550 dscScrollPanelForTable_Select1[index] = new javax.swing.JScrollPane();
00551 dcsPanelForSecondTable[index].add(dscScrollPanelForTable_Select1[index],
00552 java.awt.BorderLayout.CENTER);
00553 dcsHarnessTable_Select1[index] = new javax.swing.JTable();
00554 dscScrollPanelForTable_Select1[index].setViewportView(dcsHarnessTable_Select1[index]);
00555 dcsHarnessTable_Select1[index].setFont(new java.awt.Font("Monospaced", 0, 12));
00556 dcsHarnessTableModels_Select1[index] = new DCSDataTableModel(m_harnessList[index], 1);
00557 dcsHarnessTable_Select1[index].setModel(dcsHarnessTableModels_Select1[index]);
00558 changeDCSTableCellsColor(dcsHarnessTable_Select1[index]);
00559 dcsPanelForLabels[index] = new javax.swing.JPanel();
00560 dcsHarnessPanels[index].add(dcsPanelForLabels[index], java.awt.BorderLayout.NORTH);
00561 dcsPanelForLabels[index].setLayout(new javax.swing.BoxLayout(dcsPanelForLabels[index],
00562 javax.swing.BoxLayout.X_AXIS));
00563 stateTransitionLabel[index] = new javax.swing.JLabel();
00564 dcsPanelForLabels[index].add(stateTransitionLabel[index]);
00565 stateTransitionLabel[index].setText(" Select PS State ");
00566 transitionStateChoices[index] = new javax.swing.JComboBox();
00567 dcsPanelForLabels[index].add(transitionStateChoices[index]);
00568 transitionStateChoices[index].setModel(
00569 new javax.swing.DefaultComboBoxModel(new String[] { "STANDBY", "ON", "OFF" }));
00570 changePSStateButton[index] = new javax.swing.JButton();
00571 dcsPanelForLabels[index].add(changePSStateButton[index]);
00572 changePSStateButton[index].setText("Change STATE");
00573 changePSStateButton[index].addActionListener(
00574 new java.awt.event.ActionListener()
00575 {
00576 public void actionPerformed(java.awt.event.ActionEvent evt)
00577 {
00578
00579 int selectedHarness = jTabbedPaneDCSData.getSelectedIndex();
00580
00581 String state =
00582 (String)transitionStateChoices[selectedHarness].getSelectedItem();
00583 short stateNumber = 0;
00584 if(state.equals("ON")) {
00585 stateNumber = 1;
00586 } else if(state.equals("OFF")) {
00587 stateNumber = 0;
00588 } else if(state.equals("STANDBY")) {
00589 stateNumber = 2;
00590 }
00591
00592 changePSState(selectedHarness, stateNumber);
00593 }
00594 });
00595 dcsSelectLineLabel[index] = new javax.swing.JLabel();
00596 dcsPanelForLabels[index].add(dcsSelectLineLabel[index]);
00597 dcsSelectLineLabel[index].setText(" Select Line ");
00598 dcsSelectLineChoices[index] = new javax.swing.JComboBox();
00599 dcsPanelForLabels[index].add(dcsSelectLineChoices[index]);
00600 dcsSelectLineChoices[index].setModel(new javax.swing.DefaultComboBoxModel(
00601 new String[] { "Normal + Redundant", "Normal", "Redundant" }));
00602
00603 performDCSScanButton[index] = new javax.swing.JButton();
00604 dcsPanelForLabels[index].add(performDCSScanButton[index]);
00605 performDCSScanButton[index].setText("Perform DCS scan");
00606 performDCSScanButton[index].addActionListener(
00607 new java.awt.event.ActionListener()
00608 {
00609 public void actionPerformed(java.awt.event.ActionEvent evt)
00610 {
00611
00612 int selectedHarness = jTabbedPaneDCSData.getSelectedIndex();
00613
00614 String selectLine =
00615 (String)dcsSelectLineChoices[selectedHarness].getSelectedItem();
00616
00617 if(selectLine.equals("Normal"))
00618 {
00619 changeSelect(0);
00620 dcsHarnessTableModels_Select0[selectedHarness].
00621 newData(readDCSData(selectedHarness, (short)0),
00622 dataFile, getTimeStamp());
00623 }
00624 else if(selectLine.equals("Redundant"))
00625 {
00626 changeSelect(1);
00627 dcsHarnessTableModels_Select1[selectedHarness].
00628 newData(readDCSData(selectedHarness, (short)1),
00629 dataFile, getTimeStamp());
00630 }
00631 else if(selectLine.equals("Normal + Redundant"))
00632 {
00633 changeSelect(0);
00634 dcsHarnessTableModels_Select0[selectedHarness].
00635 newData(readDCSData(selectedHarness, (short)0),
00636 dataFile, getTimeStamp());
00637
00638 changeSelect(1);
00639 dcsHarnessTableModels_Select1[selectedHarness].
00640 newData(readDCSData(selectedHarness, (short)1),
00641 dataFile, getTimeStamp());
00642
00643 daqDcsAnalyse(selectedHarness);
00644 }
00645 }
00646 });
00647 }
00648 }
00649
00650
00651
00652
00653
00654 private String[][] probeScanHarnessWithTrigger(int selectedHarness, short selectLine)
00655 {
00656 if(api == null){
00657 System.out.println("Error: api pointer is NULL");
00658 return m_daq_scanResultsTable;
00659 }
00660
00661 Sct_SctApi.Scan probeScan = api.createScan();
00662 probeScan.getTrigger1().doubleL1A((short)10);
00663 probeScan.configure((short)20, 0.0, 24.0, 1.0);
00664
00665 try {
00666 m_daq_scanResults = api.probeScanHarnessWithTrigger(m_partition, m_crate, m_rod,
00667 probeScan, m_harnessList[selectedHarness]);
00668 }
00669 catch(NumberFormatException e) {
00670 javax.swing.JOptionPane.showMessageDialog(null, "Failed to interpet harness value");
00671 }
00672
00673
00674 harnessDAQTestAnalyse(selectedHarness, selectLine);
00675
00676
00677 return m_daq_scanResultsTable;
00678
00679 }
00680
00681 private void changePSState(int selectedHarness, short stateNumber) {
00682
00683
00684
00685
00686
00687
00688 if(apiDDC == null){
00689 System.out.println("Error: apiDDC pointer is NULL");
00690 return;
00691 }
00692
00693 for(int dogleg=0; dogleg<=5; dogleg++) {
00694 System.out.println("Requesting PS state change: " + getPSCrate().value + " " +
00695 getPSChannel(selectedHarness, dogleg).value + " " + stateNumber);
00696 apiDDC.ddcChangeState(getPSCrate().value, getPSChannel(selectedHarness, dogleg).value, stateNumber);
00697 }
00698 }
00699
00700 private void changeSelect(int selection) {
00701
00702
00703
00704
00705 boolean select;
00706 if(selection == 1) select = true;
00707 else select = false;
00708
00709 if(apiDDC == null){
00710 System.out.println("Error: apiDDC pointer is NULL");
00711 return;
00712 }
00713
00714 if(selection == m_select){
00715 System.out.println("changeSelect: select already set to " + selection + ". No action taken.");
00716 return;
00717 }
00718
00719 short oldTimeout = apiDDC.ddcGetMultipleTimeout();
00720 short newTimeout = 60;
00721 apiDDC.ddcSetMultipleTimeout(newTimeout);
00722
00723 System.out.println("changeSelect: Requesting Select " + selection + " Timeout " + newTimeout);
00724 apiDDC.setSelectAllInCrate(getPSCrate().value, select);
00725
00726 apiDDC.ddcSetMultipleTimeout(oldTimeout);
00727
00728 m_select = selection;
00729
00730 }
00731
00732 private String[][] readDCSData(int selectedHarness, short selectLine) {
00733
00734
00735
00736
00737
00738 if(apiDDC == null){
00739 System.out.println("Error: apiDDC pointer is NULL");
00740 return m_dcs_scanResultsTable;
00741 }
00742
00743 for(int dogleg=0; dogleg<=5; dogleg++){
00744 System.out.println("DOGLEG N = " + dogleg);
00745
00746 for( int parameter=0; parameter<psChannelParametersList.length; parameter++){
00747
00748 System.out.println(" Parameter: " + psChannelParametersList[parameter] + " channel " +
00749 getPSChannel(selectedHarness,dogleg).value);
00750 m_dcs_scanResults[parameter][dogleg] =
00751 apiDDC.ddcGetChannelParameterFloat(getPSCrate().value, getPSChannel(selectedHarness, dogleg).value,
00752 psChannelParametersList[parameter]);
00753 System.out.println(" ParameterValue = " + m_dcs_scanResults[parameter][dogleg]);
00754 }
00755 }
00756
00757 harnessDCSTestAnalyse(selectedHarness, selectLine);
00758
00759
00760 return m_dcs_scanResultsTable;
00761 }
00762
00763 private void doTestsForAllHarnesses() {
00764
00765
00766
00767 changeSelect(0);
00768
00769 for(int harness=0; harness<m_harnessMax; harness++) {
00770
00771 daqHarnessTableModels_Select0[harness].newData(probeScanHarnessWithTrigger(harness, (short)0),
00772 dataFile, getTimeStamp());
00773 dcsHarnessTableModels_Select0[harness].newData(readDCSData(harness, (short)0),
00774 dataFile, getTimeStamp());
00775
00776 summaryHarnessTableModels[harness].newData(m_summary_scanResults[harness],
00777 dataFile, getTimeStamp());
00778 }
00779
00780 changeSelect(1);
00781
00782 for(int harness=0; harness<m_harnessMax; harness++) {
00783
00784 daqHarnessTableModels_Select1[harness].newData(probeScanHarnessWithTrigger(harness, (short)1),
00785 dataFile, getTimeStamp());
00786
00787
00788
00789
00790
00791
00792 summaryHarnessTableModels[harness].newData(m_summary_scanResults[harness],
00793 dataFile, getTimeStamp());
00794
00795
00796
00797 }
00798
00799
00800
00801
00802 }
00803
00804 public void harnessDAQTestAnalyse(int selectedHarness, short selectLine)
00805 {
00806
00807 m_summary_scanResults[selectedHarness] = summaryHarnessTableModels[selectedHarness].getData();
00808
00809 int clk;
00810
00811 for(int link=0; link<12; link++) {
00812 int numberL=0;
00813 int number1=0;
00814 int number2=0;
00815 int numberE=0;
00816 int numberJunk=0;
00817 int number0=0;
00818 int numberUnidentified=0;
00819
00820 for(clk=0; clk<24; clk++) {
00821
00822 char linkResult = (char)m_daq_scanResults[clk][link];
00823
00824 if((linkResult == 'L') || (linkResult == 'l')) numberL++;
00825 else if(linkResult == '1') number1++;
00826 else if(linkResult == '2') number2++;
00827 else if(linkResult == 'E') numberE++;
00828 else if(linkResult == 'J') numberJunk++;
00829 else if(linkResult == '0') number0++;
00830 else numberUnidentified++;
00831
00832
00833 m_daq_scanResultsTable[clk][link] = "" + linkResult;
00834 }
00835
00836
00837
00838 if(number0 >= 22) m_daq_scanResultsTable[clk][link] = "Dead";
00839 else if(number1 >= 22) m_daq_scanResultsTable[clk][link] = "Stuck";
00840 else if(number1+number0>=18 && number0<=14) m_daq_scanResultsTable[clk][link] = "CLK";
00841 else if(number2 >= 18) m_daq_scanResultsTable[clk][link] = "Clock by 2";
00842 else if(numberE >= 18) m_daq_scanResultsTable[clk][link] = "Event";
00843 else if(numberL >= 18) m_daq_scanResultsTable[clk][link] = "L1A";
00844 else m_daq_scanResultsTable[clk][link] = "Junk";
00845 }
00846
00847
00848
00849
00850 for(int dogleg=0; dogleg<6; dogleg++) {
00851 String link0Result = m_daq_scanResultsTable[24][(dogleg*2)];
00852 String link1Result = m_daq_scanResultsTable[24][(dogleg*2)+1];
00853
00854 String linksState = "FAIL";
00855 if(selectLine == 1){
00856
00857 if (link0Result == "CLK" && link1Result == "L1A") linksState = "PASS";
00858 else if(link0Result == "L1A" && link1Result == "CLK") linksState = "SWAP";
00859 }else{
00860
00861 if (link0Result == "L1A" && link1Result == "CLK") linksState = "PASS";
00862 else if(link0Result == "CLK" && link1Result == "L1A") linksState = "SWAP";
00863 }
00864
00865 if( link0Result == "Dead" && link1Result == "Dead") linksState = "Both Dead";
00866 else if( link0Result == "Dead") linksState = "Link0 Dead";
00867 else if( link1Result == "Dead") linksState = "Link1 Dead";
00868
00869 if( link0Result == "Stuck" && link1Result == "Stuck") linksState = "Both Stuck";
00870 else if( link0Result == "Stuck") linksState = "Link0 Stuck";
00871 else if( link1Result == "Stuck") linksState = "Link1 Stuck";
00872
00873 m_summary_scanResults[selectedHarness][selectLine][dogleg] = linksState;
00874 }
00875
00876
00877 summaryHarnessTableModels[selectedHarness].newData(m_summary_scanResults[selectedHarness],
00878 dataFile, getTimeStamp());
00879 }
00880
00881 public void harnessDCSTestAnalyse(int selectedHarness, short selectLine)
00882 {
00883
00884 m_summary_scanResults[selectedHarness] = summaryHarnessTableModels[selectedHarness].getData();
00885
00886 for(int dogleg=0; dogleg<6; dogleg++) {
00887
00888
00889
00890 String parametersState = "PASS";
00891
00892 for(int parameter=0; parameter<psChannelParametersList.length; parameter++) {
00893 float thisParameterLowerLimit = psChannelParametersLimits[parameter][0];
00894 float thisParameterUpperLimit = psChannelParametersLimits[parameter][1];
00895
00896 if(m_dcs_scanResults[parameter][dogleg]<thisParameterLowerLimit ||
00897 m_dcs_scanResults[parameter][dogleg]>thisParameterUpperLimit) {
00898 parametersState="FAIL";
00899 }
00900
00901
00902 if(parameter==0){
00903 m_dcs_scanResultsTable[parameter][dogleg] = "0x" + Integer.toHexString((int)m_dcs_scanResults[parameter][dogleg]);
00904 }else{
00905 m_dcs_scanResultsTable[parameter][dogleg] = "" + m_dcs_scanResults[parameter][dogleg];
00906 }
00907 }
00908
00909 int status = (int) m_dcs_scanResults[0][dogleg];
00910 if((status&0x20)==0x20){
00911 parametersState="TRIP";
00912 }
00913
00914
00915 m_dcs_scanResultsTable[psChannelParametersList.length][dogleg] = parametersState;
00916
00917
00918
00919 m_summary_scanResults[selectedHarness][selectLine+2][dogleg] = parametersState;
00920 }
00921
00922
00923 summaryHarnessTableModels[selectedHarness].newData(m_summary_scanResults[selectedHarness],
00924 dataFile, getTimeStamp());
00925 }
00926
00927 public void daqDcsAnalyse(int selectedHarness) {
00928
00929 m_summary_scanResults[selectedHarness] = summaryHarnessTableModels[selectedHarness].getData();
00930
00931
00932 String[][] select0_table = dcsHarnessTableModels_Select0[selectedHarness].getData();
00933 String[][] select1_table = dcsHarnessTableModels_Select1[selectedHarness].getData();
00934
00935 if(select0_table==null || select0_table==null) {
00936 System.out.println("pointer select0_table or select1_table is null. this means one select line table is empty");
00937 return;
00938 }
00939
00940
00941
00942
00943 for(int row=0; row<select0_table[0].length; row++) {
00944 String compareParameterValue = "";
00945 for(int column=1; column<select0_table.length-1; column++){
00946 float value1= Float.parseFloat(select0_table[column][row]);
00947 float value2= Float.parseFloat(select1_table[column][row]);
00948 float valuesComparison = 0;
00949
00950 if(value2 != 0)
00951 valuesComparison = value1/value2;
00952 else if(value1<-0.05 || value1>0.05)
00953 valuesComparison = 0;
00954 else
00955 valuesComparison = 1;
00956
00957 if(valuesComparison>1.05 || valuesComparison<0.95)
00958 compareParameterValue = "FAIL";
00959 else
00960 compareParameterValue = "PASS";
00961 }
00962
00963
00964
00965 if(compareParameterValue != "PASS" )
00966 m_summary_scanResults[selectedHarness][4][row] = "FAIL";
00967 else
00968 m_summary_scanResults[selectedHarness][4][row] = "PASS";
00969 }
00970
00971
00972
00973 for(int row=0; row<6; row++) {
00974 String daq_dcs_result = "PASS";
00975 for(int column=0; column<5; column++) {
00976 if(m_summary_scanResults[selectedHarness][column][row] != "PASS"){
00977 daq_dcs_result = "FAIL";
00978 }
00979 }
00980 m_summary_scanResults[selectedHarness][5][row] = daq_dcs_result;
00981 }
00982
00983
00984 summaryHarnessTableModels[selectedHarness].newData(m_summary_scanResults[selectedHarness],
00985 dataFile, getTimeStamp());
00986 }
00987
00988 private void closeButtonPerformed(java.awt.event.ActionEvent evt) {
00989 ((Window)getTopLevelAncestor()).dispose();
00990 }
00991
00992 public org.omg.CORBA.IntHolder getPSPartition() {return ps_partition;}
00993
00994 public org.omg.CORBA.IntHolder getPSCrate() {return ps_crate;}
00995
00996 public org.omg.CORBA.IntHolder getPSChannel(int selectedHarness, int dogleg) {return ps_channel[selectedHarness][dogleg];}
00997
00998
00999
01000
01001
01002
01003
01004
01005
01006 class SamplingDataTableModel extends javax.swing.table.AbstractTableModel
01007 {
01008
01009 int m_harness;
01010 int m_selectLine;
01011 String[][] m_harnessSamplingData;
01012
01013
01014 public SamplingDataTableModel(int harness, int selectLine) {
01015 m_harness = m_harness;
01016 m_selectLine = selectLine;
01017 m_harnessSamplingData = new String[25][12];
01018 for(int column=0; column< (getColumnCount()-1); column++){
01019 for(int row=0; row< getRowCount(); row++){
01020 m_harnessSamplingData[column][row] = "?";
01021 }
01022 }
01023 }
01024
01025 public Class getColumnClass(int column) {
01026 return getValueAt(0, column).getClass();
01027 }
01028
01029 public void newData(String[][] harnessSamplingData, String dataFile, String timeStamp) {
01030 for(int column=0; column< (getColumnCount()-1); column++){
01031 for(int row=0; row< getRowCount(); row++){
01032 m_harnessSamplingData[column][row] = harnessSamplingData[column][row];
01033 }
01034 }
01035 fireTableStructureChanged();
01036 saveDataToFile(dataFile, timeStamp);
01037 }
01038
01039 public String[][] getData() {
01040 return m_harnessSamplingData;
01041 }
01042
01043 public int getColumnCount() {
01044 return (1+m_harnessSamplingData.length);
01045 }
01046
01047 public int getRowCount() {
01048 return m_harnessSamplingData[0].length;
01049 }
01050
01051 public Object getValueAt(int rowIndex, int columnIndex) {
01052 if(columnIndex == 0)
01053 return "Ln" + rowIndex;
01054 else
01055 return "" + m_harnessSamplingData[columnIndex-1][rowIndex];
01056 }
01057
01058 public String getColumnName(int columnIndex) {
01059 String retValue;
01060
01061 if(columnIndex == 0) {
01062 retValue = "Select"+m_selectLine;
01063 } else if(columnIndex == 25) {
01064 retValue ="P/F";
01065 } else {
01066 columnIndex--;
01067 retValue = "" + columnIndex;
01068 }
01069
01070 return retValue;
01071 }
01072
01073 public void saveDataToFile(String dataFile, String timeStamp) {
01074 java.io.File dataFile_withpath = new File(dataFile);
01075
01076 try
01077 {
01078
01079 BufferedWriter out = new BufferedWriter(new FileWriter(dataFile_withpath, true));
01080
01081 out.write("---- DAQ Data for harness "+m_harness+ " Select Line "+m_selectLine);
01082 out.newLine();
01083 out.write(timeStamp);
01084 out.write(" Rx Threshold = " + m_rxThreshold);
01085 out.newLine();
01086 out.newLine();
01087
01088 out.write(getColumnName(0) + " ");
01089 for (int column =1; column<m_harnessSamplingData.length; column++)
01090 if(column<10) out.write(getColumnName(column) + " ");
01091 else out.write(getColumnName(column) + " ");
01092 out.newLine();
01093 out.newLine();
01094
01095 for (int row =0; row<m_harnessSamplingData[0].length; row++)
01096 {
01097 if(row<10) out.write("Link" + row+" ");
01098 else out.write("Link" + row+" ");
01099 for(int column=0; column<m_harnessSamplingData.length; column++)
01100 out.write(m_harnessSamplingData[column][row]+" ");
01101 out.newLine();
01102 }
01103
01104 out.newLine();
01105 out.newLine();
01106 out.close();
01107 }
01108 catch(IOException e)
01109 {
01110 javax.swing.JOptionPane.showMessageDialog(null, "Failed to Open File = " + dataFile_withpath.getAbsolutePath());
01111 }
01112 }
01113 }
01114
01115
01116
01117
01118
01119 class DCSDataTableModel extends javax.swing.table.AbstractTableModel
01120 {
01121
01122 int m_harness;
01123 int m_selectLine;
01124 String[][] m_harnessDCSData;
01125
01126
01127 public DCSDataTableModel(int harness, int selectLine) {
01128 m_harness = harness;
01129 m_selectLine = selectLine;
01130 m_harnessDCSData = new String[psChannelParametersList.length+1][maxDoglegNumberInHarness];
01131 for(int column=0; column< (getColumnCount()-1); column++){
01132 for(int row=0; row< getRowCount(); row++){
01133 m_harnessDCSData[column][row] = "?";
01134 }
01135 }
01136 }
01137
01138 public void newData(String[][] harnessDCSData, String dataFile, String timeStamp) {
01139 for(int column=0; column< (getColumnCount()-1); column++){
01140 for(int row=0; row< getRowCount(); row++){
01141 m_harnessDCSData[column][row] = harnessDCSData[column][row];
01142 }
01143 }
01144 fireTableStructureChanged();
01145 saveDataToFile(dataFile, timeStamp);
01146 }
01147
01148 public Class getColumnClass(int column) {
01149 return getValueAt(0, column).getClass();
01150 }
01151
01152 public String[][] getData() {
01153 return m_harnessDCSData;
01154 }
01155
01156 public int getColumnCount() {
01157 return (1+m_harnessDCSData.length);
01158 }
01159
01160 public int getRowCount() {
01161 return m_harnessDCSData[0].length;
01162 }
01163
01164 public Object getValueAt(int rowIndex, int columnIndex) {
01165 if(columnIndex == 0)
01166 return "Dogleg " + (rowIndex+1);
01167 else
01168 return "" + m_harnessDCSData[columnIndex-1][rowIndex];
01169 }
01170
01171 public String getColumnName(int columnIndex) {
01172 String retValue;
01173
01174 if(columnIndex == 0)
01175 retValue = "Select"+m_selectLine;
01176 else if(columnIndex == psChannelParametersList_short.length+1)
01177 retValue = "P/F";
01178 else
01179 retValue = "" + psChannelParametersList_short[columnIndex-1];
01180
01181 return retValue;
01182 }
01183
01184 public void saveDataToFile(String dataFile, String timeStamp) {
01185 java.io.File dataFile_withpath = new File(dataFile);
01186
01187 try
01188 {
01189
01190
01191 BufferedWriter out = new BufferedWriter(new FileWriter(dataFile_withpath, true));
01192
01193 out.write("---- DCS Data for harness "+m_harness+ " Select Line "+m_selectLine);
01194 out.newLine();
01195 out.write(timeStamp);
01196 out.newLine();
01197 out.newLine();
01198
01199 out.write(getColumnName(0)+" ");
01200 for (int column =1; column<m_harnessDCSData.length; column++)
01201 out.write(getColumnName(column) + " ");
01202 out.newLine();
01203 out.newLine();
01204
01205 for (int row =0; row<m_harnessDCSData[0].length; row++)
01206 {
01207 out.write("Dogleg" + (row+1) +" ");
01208 for(int column=0; column<m_harnessDCSData.length; column++)
01209 out.write(m_harnessDCSData[column][row]+" ");
01210 out.newLine();
01211 }
01212
01213 out.newLine();
01214 out.newLine();
01215 out.close();
01216 }
01217 catch(IOException e)
01218 {
01219 javax.swing.JOptionPane.showMessageDialog(null, "Failed to Open File:" + dataFile_withpath.getAbsolutePath());
01220 }
01221 }
01222 }
01223
01224
01225
01226
01227
01228 class HarnessTestsSummaryTableModel extends javax.swing.table.AbstractTableModel
01229 {
01230 String[][] m_HarnessTestsSummaryData;
01231 String[] m_columnsNames;
01232
01233 int m_harness;
01234
01235 public HarnessTestsSummaryTableModel(int harness, String[] columsNames) {
01236 m_harness = harness;
01237 m_columnsNames = columsNames;
01238 }
01239
01240 public void newData(String[][] harnessTestsSummaryData) {
01241 m_HarnessTestsSummaryData = harnessTestsSummaryData;
01242 fireTableStructureChanged();
01243 }
01244
01245 public void newData(String[][] harnessTestsSummaryData, String dataFile, String timeStamp) {
01246 m_HarnessTestsSummaryData = harnessTestsSummaryData;
01247 fireTableStructureChanged();
01248 saveDataToFile(dataFile, timeStamp);
01249 }
01250
01251 public Class getColumnClass(int column) {
01252 return getValueAt(0, column).getClass();
01253 }
01254
01255 public String[][] getData() {
01256 return m_HarnessTestsSummaryData ;
01257 }
01258
01259 public int getColumnCount() { return 7; }
01260
01261 public int getRowCount() { return 6; }
01262
01263 public Object getValueAt(int rowIndex, int columnIndex)
01264 {
01265 String retValue = "UNKNOWN";
01266 if(m_HarnessTestsSummaryData == null) return "Ptr Null";
01267 else
01268 {
01269 if(columnIndex == 0)
01270 retValue = "Dogleg " + (rowIndex+1);
01271 else
01272 retValue = ""+ m_HarnessTestsSummaryData[columnIndex-1][rowIndex];
01273 }
01274 return retValue;
01275 }
01276
01277 public String getColumnName(int columnIndex)
01278 {
01279 return m_columnsNames[columnIndex];
01280 }
01281 public void saveDataToFile(String dataFile, String timeStamp)
01282 {
01283 java.io.File dataFile_withpath = new File(dataFile);
01284
01285 try
01286 {
01287
01288
01289 BufferedWriter out = new BufferedWriter(new FileWriter(dataFile_withpath, true));
01290 out.write("---- DAQ-DCS Data Summary for harness "+m_harness);
01291 out.newLine();
01292 out.write(timeStamp);
01293 out.write(" Rx Threshold = " + m_rxThreshold);
01294 out.newLine();
01295 out.newLine();
01296
01297
01298 for (int column =0; column<m_HarnessTestsSummaryData.length; column++)
01299 out.write(getColumnName(column) + " ");
01300 out.newLine();
01301 out.newLine();
01302
01303 for (int row =0; row<m_HarnessTestsSummaryData[0].length; row++)
01304 {
01305 out.write("Dogleg" + (row+1)+" ");
01306 for(int column=0; column<m_HarnessTestsSummaryData.length; column++)
01307 out.write(m_HarnessTestsSummaryData[column][row]+" ");
01308 out.newLine();
01309 }
01310
01311 out.newLine();
01312 out.newLine();
01313 out.close();
01314 }
01315 catch(IOException e)
01316 {
01317 javax.swing.JOptionPane.showMessageDialog(null, "Failed to Open File " + dataFile_withpath.getAbsolutePath());
01318 }
01319 }
01320 }
01321
01322 public String getTimeStamp()
01323 {
01324
01325
01326
01327
01328
01329
01330
01331
01332
01333
01334
01335
01336 java.util.Date date = new java.util.Date();
01337
01338 String timestamp = date.getDate()+"/"+ date.getMonth() +"/"+ date.getYear() + " "+
01339 date.getHours()+":"+ date.getMinutes()+":"+date.getSeconds();
01340 return timestamp;
01341 }
01342
01343
01344
01345
01346
01347
01348
01349 public void changeDCSTableCellsColor(JTable table)
01350 {
01351 TableCellRenderer cellRenderer = new DCSTableCellRenderer();
01352 try {
01353 table.setDefaultRenderer(Class.forName("java.lang.String"), cellRenderer);
01354 }
01355 catch( ClassNotFoundException ex ) {
01356 System.exit( 0 );
01357 }
01358 }
01359
01360 class DCSTableCellRenderer extends DefaultTableCellRenderer
01361 {
01362 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
01363 int row, int column)
01364 {
01365 Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
01366
01367 String cellValue = (String)value;
01368 String stripped;
01369
01370 if(cellValue.equals("?")){
01371 return cell;
01372 }
01373
01374 switch(column){
01375 case 0:
01376 cell.setForeground(Color.black);
01377 break;
01378
01379 case 1:
01380 stripped = cellValue.substring(2, cellValue.length());
01381 int status = Integer.parseInt(stripped,16);
01382
01383 if((status & 0x20)==0){
01384 cell.setForeground(Color.black);
01385 }else{
01386 cell.setForeground(Color.red);
01387 }
01388 break;
01389
01390 case 9:
01391
01392 if(cellValue.equals("PASS")){
01393 cell.setForeground(Color.green);
01394 }else{
01395 cell.setForeground(Color.red);
01396 }
01397 break;
01398
01399 default:
01400 float valueFloat = Float.parseFloat(cellValue);
01401 float thisParameterLowerLimit = psChannelParametersLimits[column-1][0];
01402 float thisParameterUpperLimit = psChannelParametersLimits[column-1][1];
01403
01404 if(valueFloat<thisParameterLowerLimit || valueFloat>thisParameterUpperLimit) {
01405 cell.setForeground(Color.red);
01406 }else{
01407 cell.setForeground(Color.black);
01408 }
01409 break;
01410 }
01411 return cell;
01412 }
01413 }
01414
01415
01416
01417
01418
01419 public void changeDAQTableCellsColor(JTable table)
01420 {
01421 TableCellRenderer cellRenderer = new DAQTableCellRenderer();
01422 try {
01423 table.setDefaultRenderer(Class.forName("java.lang.String"), cellRenderer);
01424 }
01425 catch( ClassNotFoundException ex ) {
01426 System.exit( 0 );
01427 }
01428 }
01429
01430 class DAQTableCellRenderer extends DefaultTableCellRenderer
01431 {
01432 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
01433 int row, int column)
01434 {
01435 Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
01436
01437 String cellValue = (String)value;
01438
01439 if(cellValue.equals("PASS")) {
01440 cell.setForeground(Color.green);
01441 }else if(cellValue.equals("FAIL")) {
01442 cell.setForeground(Color.red);
01443 }else if(cellValue.equals("Dead")) {
01444 cell.setForeground(Color.blue);
01445 }else{
01446 cell.setForeground(Color.black);
01447 }
01448
01449 return cell;
01450 }
01451 }
01452
01453
01454
01455
01456
01457 public void changeSummaryTableCellsColor(JTable table)
01458 {
01459 TableCellRenderer cellRenderer = new SummaryTableCellRenderer();
01460 try {
01461 table.setDefaultRenderer(Class.forName("java.lang.String"), cellRenderer);
01462 }
01463 catch( ClassNotFoundException ex ) {
01464 System.exit( 0 );
01465 }
01466 }
01467
01468 class SummaryTableCellRenderer extends DefaultTableCellRenderer
01469 {
01470 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
01471 int row, int column)
01472 {
01473 Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
01474
01475 String cellValue = (String)value;
01476
01477 if(cellValue.equals("PASS")) {
01478 cell.setForeground(Color.green);
01479 }else if(cellValue.equals("FAIL")){
01480 cell.setForeground(Color.red);
01481 }else{
01482 cell.setForeground(Color.black);
01483 }
01484
01485 return cell;
01486 }
01487 }
01488
01489 private javax.swing.JPanel topPanel;
01490 private javax.swing.JPanel panelForLabels;
01491 private javax.swing.JLabel partitionLabel;
01492 private javax.swing.JLabel crateLabel;
01493 private javax.swing.JLabel rodLabel;
01494 private javax.swing.JLabel harnessMaxLabel;
01495 private javax.swing.JLabel rxLabel;
01496 private javax.swing.JLabel txLabel;
01497 private javax.swing.JLabel fileNameLabel;
01498 private javax.swing.JTextField partitionValue;
01499 private javax.swing.JTextField crateValue;
01500 private javax.swing.JTextField rodValue;
01501 private javax.swing.JTextField harnessMaxValue;
01502 private javax.swing.JTextField rxThValue;
01503 private javax.swing.JTextField txCurrentValue;
01504 private javax.swing.JTextField fileNameValue;
01505 private javax.swing.JTabbedPane jTabbedPaneTest;
01506 private javax.swing.JPanel panelForClose;
01507 private javax.swing.JButton closeButton;
01508
01509 private javax.swing.JPanel summaryHarnessPanel;
01510 private javax.swing.JButton performHarnessTestButton;
01511 private javax.swing.JScrollPane[] summaryScrollPanelForTable;
01512 private javax.swing.JTable[] summaryHarnessTable;
01513 private HarnessTestsSummaryTableModel[] summaryHarnessTableModels;
01514
01515
01516 private javax.swing.JTabbedPane jTabbedPaneDAQData;
01517 private javax.swing.JPanel[] daqHaernessPanels;
01518 private javax.swing.JPanel[] daqPanelForLabels;
01519 private javax.swing.JLabel[] daqSelectLineLabel;
01520 private javax.swing.JComboBox[] daqSelectLineChoices;
01521 private javax.swing.JButton[] performDAQScanButton;
01522 private javax.swing.JScrollPane[] daqScrollPanelForTable_Select0;
01523 private javax.swing.JTable[] daqHarnessTable_Select0;
01524 private SamplingDataTableModel[] daqHarnessTableModels_Select0;
01525 private javax.swing.JPanel[] daqPanelForSecondTable;
01526 private javax.swing.JScrollPane[] daqScrollPanelForTable_Select1;
01527 private javax.swing.JTable[] daqHarnessTable_Select1;
01528 private SamplingDataTableModel[] daqHarnessTableModels_Select1;
01529
01530
01531 private javax.swing.JTabbedPane jTabbedPaneDCSData;
01532 private javax.swing.JPanel[] dcsHarnessPanels;
01533 private javax.swing.JScrollPane[] dscScrollPanelForTable_Select0;
01534 private javax.swing.JTable[] dcsHarnessTable_Select0;
01535 private DCSDataTableModel[] dcsHarnessTableModels_Select0;
01536 private javax.swing.JPanel[] dcsPanelForSecondTable;
01537 private javax.swing.JScrollPane[] dscScrollPanelForTable_Select1;
01538 private javax.swing.JTable[] dcsHarnessTable_Select1;
01539 private DCSDataTableModel[] dcsHarnessTableModels_Select1;
01540 private javax.swing.JPanel[] dcsPanelForLabels;
01541 private javax.swing.JLabel[] stateTransitionLabel;
01542 private javax.swing.JComboBox[] transitionStateChoices;
01543 private javax.swing.JButton[] changePSStateButton;
01544 private javax.swing.JLabel[] dcsSelectLineLabel;
01545 private javax.swing.JComboBox[] dcsSelectLineChoices;
01546 private javax.swing.JButton[] performDCSScanButton;
01547 }
01548