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