pyqt4 串口通信 自动化测试

Wolf_Electric_UI.py

  1 # -*- coding: utf-8 -*-
  2 
  3 # Form implementation generated from reading ui file 'wolf_electric.ui'
  4 #
  5 # Created: Mon Aug 28 14:30:16 2017
  6 #      by: PyQt4 UI code generator 4.11.3
  7 #
  8 # WARNING! All changes made in this file will be lost!
  9 
 10 from PyQt4 import QtCore, QtGui
 11 
 12 try:
 13     _fromUtf8 = QtCore.QString.fromUtf8
 14 except AttributeError:
 15     def _fromUtf8(s):
 16         return s
 17 
 18 try:
 19     _encoding = QtGui.QApplication.UnicodeUTF8
 20     def _translate(context, text, disambig):
 21         return QtGui.QApplication.translate(context, text, disambig, _encoding)
 22 except AttributeError:
 23     def _translate(context, text, disambig):
 24         return QtGui.QApplication.translate(context, text, disambig)
 25 
 26 class Ui_ElectricalCalibration(object):
 27     def setupUi(self, ElectricalCalibration):
 28         ElectricalCalibration.setObjectName(_fromUtf8("ElectricalCalibration"))
 29         ElectricalCalibration.resize(650, 557)
 30         self.centralwidget = QtGui.QWidget(ElectricalCalibration)
 31         self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
 32         self.label = QtGui.QLabel(self.centralwidget)
 33         self.label.setGeometry(QtCore.QRect(10, 50, 31, 16))
 34         self.label.setObjectName(_fromUtf8("label"))
 35         self.label_3 = QtGui.QLabel(self.centralwidget)
 36         self.label_3.setGeometry(QtCore.QRect(170, 20, 101, 21))
 37         self.label_3.setObjectName(_fromUtf8("label_3"))
 38         self.CalibrationFunction = QtGui.QComboBox(self.centralwidget)
 39         self.CalibrationFunction.setGeometry(QtCore.QRect(280, 20, 87, 22))
 40         self.CalibrationFunction.setMaxCount(2147483647)
 41         self.CalibrationFunction.setObjectName(_fromUtf8("CalibrationFunction"))
 42         self.Begin_Calibration = QtGui.QPushButton(self.centralwidget)
 43         self.Begin_Calibration.setGeometry(QtCore.QRect(30, 250, 101, 31))
 44         self.Begin_Calibration.setObjectName(_fromUtf8("Begin_Calibration"))
 45         self.Log_write = QtGui.QTextEdit(self.centralwidget)
 46         self.Log_write.setGeometry(QtCore.QRect(30, 290, 581, 211))
 47         self.Log_write.setObjectName(_fromUtf8("Log_write"))
 48         self.widget = QtGui.QWidget(self.centralwidget)
 49         self.widget.setGeometry(QtCore.QRect(10, 20, 135, 23))
 50         self.widget.setObjectName(_fromUtf8("widget"))
 51         self.horizontalLayout = QtGui.QHBoxLayout(self.widget)
 52         self.horizontalLayout.setMargin(0)
 53         self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
 54         self.label_2 = QtGui.QLabel(self.widget)
 55         self.label_2.setObjectName(_fromUtf8("label_2"))
 56         self.horizontalLayout.addWidget(self.label_2)
 57         self.UUT_NUMBER = QtGui.QSpinBox(self.widget)
 58         self.UUT_NUMBER.setMinimum(1)
 59         self.UUT_NUMBER.setMaximum(3)
 60         self.UUT_NUMBER.setProperty("value", 1)
 61         self.UUT_NUMBER.setObjectName(_fromUtf8("UUT_NUMBER"))
 62         self.horizontalLayout.addWidget(self.UUT_NUMBER)
 63         self.widget1 = QtGui.QWidget(self.centralwidget)
 64         self.widget1.setGeometry(QtCore.QRect(10, 70, 120, 25))
 65         self.widget1.setObjectName(_fromUtf8("widget1"))
 66         self.horizontalLayout_2 = QtGui.QHBoxLayout(self.widget1)
 67         self.horizontalLayout_2.setMargin(0)
 68         self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
 69         self.Equip_5520 = QtGui.QCheckBox(self.widget1)
 70         self.Equip_5520.setText(_fromUtf8(""))
 71         self.Equip_5520.setObjectName(_fromUtf8("Equip_5520"))
 72         self.horizontalLayout_2.addWidget(self.Equip_5520)
 73         self.horizontalLayout_6 = QtGui.QHBoxLayout()
 74         self.horizontalLayout_6.setObjectName(_fromUtf8("horizontalLayout_6"))
 75         self.COM_5524 = QtGui.QLabel(self.widget1)
 76         self.COM_5524.setObjectName(_fromUtf8("COM_5524"))
 77         self.horizontalLayout_6.addWidget(self.COM_5524)
 78         self.COM_5520 = QtGui.QSpinBox(self.widget1)
 79         self.COM_5520.setMaximum(500)
 80         self.COM_5520.setProperty("value", 1)
 81         self.COM_5520.setObjectName(_fromUtf8("COM_5520"))
 82         self.horizontalLayout_6.addWidget(self.COM_5520)
 83         self.horizontalLayout_2.addLayout(self.horizontalLayout_6)
 84         self.widget2 = QtGui.QWidget(self.centralwidget)
 85         self.widget2.setGeometry(QtCore.QRect(10, 90, 120, 25))
 86         self.widget2.setObjectName(_fromUtf8("widget2"))
 87         self.horizontalLayout_7 = QtGui.QHBoxLayout(self.widget2)
 88         self.horizontalLayout_7.setMargin(0)
 89         self.horizontalLayout_7.setObjectName(_fromUtf8("horizontalLayout_7"))
 90         self.Equip_uut1 = QtGui.QCheckBox(self.widget2)
 91         self.Equip_uut1.setText(_fromUtf8(""))
 92         self.Equip_uut1.setObjectName(_fromUtf8("Equip_uut1"))
 93         self.horizontalLayout_7.addWidget(self.Equip_uut1)
 94         self.horizontalLayout_3 = QtGui.QHBoxLayout()
 95         self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
 96         self.COM_5521 = QtGui.QLabel(self.widget2)
 97         self.COM_5521.setObjectName(_fromUtf8("COM_5521"))
 98         self.horizontalLayout_3.addWidget(self.COM_5521)
 99         self.UUT1_COM = QtGui.QSpinBox(self.widget2)
100         self.UUT1_COM.setMinimum(1)
101         self.UUT1_COM.setMaximum(500)
102         self.UUT1_COM.setObjectName(_fromUtf8("UUT1_COM"))
103         self.horizontalLayout_3.addWidget(self.UUT1_COM)
104         self.horizontalLayout_7.addLayout(self.horizontalLayout_3)
105         self.widget3 = QtGui.QWidget(self.centralwidget)
106         self.widget3.setGeometry(QtCore.QRect(10, 110, 120, 25))
107         self.widget3.setObjectName(_fromUtf8("widget3"))
108         self.horizontalLayout_8 = QtGui.QHBoxLayout(self.widget3)
109         self.horizontalLayout_8.setMargin(0)
110         self.horizontalLayout_8.setObjectName(_fromUtf8("horizontalLayout_8"))
111         self.Equip_uut2 = QtGui.QCheckBox(self.widget3)
112         self.Equip_uut2.setText(_fromUtf8(""))
113         self.Equip_uut2.setObjectName(_fromUtf8("Equip_uut2"))
114         self.horizontalLayout_8.addWidget(self.Equip_uut2)
115         self.horizontalLayout_4 = QtGui.QHBoxLayout()
116         self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4"))
117         self.COM_5522 = QtGui.QLabel(self.widget3)
118         self.COM_5522.setObjectName(_fromUtf8("COM_5522"))
119         self.horizontalLayout_4.addWidget(self.COM_5522)
120         self.UUT2_COM = QtGui.QSpinBox(self.widget3)
121         self.UUT2_COM.setMinimum(1)
122         self.UUT2_COM.setMaximum(500)
123         self.UUT2_COM.setObjectName(_fromUtf8("UUT2_COM"))
124         self.horizontalLayout_4.addWidget(self.UUT2_COM)
125         self.horizontalLayout_8.addLayout(self.horizontalLayout_4)
126         self.widget4 = QtGui.QWidget(self.centralwidget)
127         self.widget4.setGeometry(QtCore.QRect(10, 130, 120, 25))
128         self.widget4.setObjectName(_fromUtf8("widget4"))
129         self.horizontalLayout_9 = QtGui.QHBoxLayout(self.widget4)
130         self.horizontalLayout_9.setMargin(0)
131         self.horizontalLayout_9.setObjectName(_fromUtf8("horizontalLayout_9"))
132         self.Equip_uut3 = QtGui.QCheckBox(self.widget4)
133         self.Equip_uut3.setText(_fromUtf8(""))
134         self.Equip_uut3.setObjectName(_fromUtf8("Equip_uut3"))
135         self.horizontalLayout_9.addWidget(self.Equip_uut3)
136         self.horizontalLayout_5 = QtGui.QHBoxLayout()
137         self.horizontalLayout_5.setObjectName(_fromUtf8("horizontalLayout_5"))
138         self.COM_5523 = QtGui.QLabel(self.widget4)
139         self.COM_5523.setObjectName(_fromUtf8("COM_5523"))
140         self.horizontalLayout_5.addWidget(self.COM_5523)
141         self.UUT3_COM = QtGui.QSpinBox(self.widget4)
142         self.UUT3_COM.setMinimum(1)
143         self.UUT3_COM.setMaximum(500)
144         self.UUT3_COM.setObjectName(_fromUtf8("UUT3_COM"))
145         self.horizontalLayout_5.addWidget(self.UUT3_COM)
146         self.horizontalLayout_9.addLayout(self.horizontalLayout_5)
147         ElectricalCalibration.setCentralWidget(self.centralwidget)
148         self.Clear_msg = QtGui.QPushButton(self.centralwidget)
149         self.Clear_msg.setGeometry(QtCore.QRect(500, 250, 93, 28))
150         self.Clear_msg.setObjectName(_fromUtf8("Clear_msg"))
151         self.menubar = QtGui.QMenuBar(ElectricalCalibration)
152         self.menubar.setGeometry(QtCore.QRect(0, 0, 650, 26))
153         self.menubar.setObjectName(_fromUtf8("menubar"))
154         ElectricalCalibration.setMenuBar(self.menubar)
155         self.statusbar = QtGui.QStatusBar(ElectricalCalibration)
156         self.statusbar.setObjectName(_fromUtf8("statusbar"))
157         ElectricalCalibration.setStatusBar(self.statusbar)
158 
159         self.retranslateUi(ElectricalCalibration)
160         self.CalibrationFunction.setCurrentIndex(-1)
161         QtCore.QMetaObject.connectSlotsByName(ElectricalCalibration)
162 
163     def retranslateUi(self, ElectricalCalibration):
164         ElectricalCalibration.setWindowTitle(_translate("ElectricalCalibration", "MainWindow", None))
165         self.label.setText(_translate("ElectricalCalibration", "COM", None))
166         self.label_3.setText(_translate("ElectricalCalibration", "Select_Func", None))
167         #self.Begin_Calibration.setText(_translate("ElectricalCalibration", "Calibration", None))
168         self.Begin_Calibration.setText(_translate("ElectricalCalibration", "Cal Test", None))
169         self.label_2.setText(_translate("ElectricalCalibration", "UUT_Number", None))
170         self.COM_5524.setText(_translate("ElectricalCalibration", "5520", None))
171         self.COM_5521.setText(_translate("ElectricalCalibration", "UUT1", None))
172         self.COM_5522.setText(_translate("ElectricalCalibration", "UUT2", None))
173         self.COM_5523.setText(_translate("ElectricalCalibration", "UUT3", None))
174         self.Clear_msg.setText(_translate("ElectricalCalibration", "Clear", None))
View Code

Wolf_Electric.py

 1 # -*- coding: utf-8 -*-
 2 
 3 import sys
 4 from PyQt4.QtGui import *
 5 from PyQt4.QtCore import *
 6 import Wolf_Electric_UI
 7 #import Wolf_electrical_cal
 8 import Wolf_threads
 9 import time
10 import datetime
11 
12  
13 class MyApp(QMainWindow,Wolf_Electric_UI.Ui_ElectricalCalibration):
14     def __init__(self,parent=None):
15         super(MyApp, self).__init__(parent)
16         self.setupUi(self)
17         self.setWindowTitle( "Wolf" )
18         # set Log_write readonly
19         self.Log_write.setReadOnly(True)
20         self.CalibrationFunction.addItem("C_cal")
21         self.CalibrationFunction.addItem("V_cal")
22         self.CalibrationFunction.addItem("C_Test")
23         self.CalibrationFunction.addItem("V_Test")
24         self.Equip_5520.setChecked(True)
25 
26         QTextCodec.setCodecForTr(QTextCodec.codecForName("system"))
27         QTextCodec.setCodecForCStrings(QTextCodec.codecForName("system"))
28         QTextCodec.setCodecForLocale(QTextCodec.codecForName("system"))
29         #self.Begin_Calibration.clicked.connect(self.bigwork)
30         self.Begin_Calibration.clicked.connect(self.begin)
31         self.Clear_msg.clicked.connect(self.clear)
32     def  clear(self):
33         self.Log_write.setText("")
34     def bigwork(self):
35         from Wolf_threads import MyThread
36         self.testthread = MyThread(int(9))
37         self.testthread.start()
38         #self.Begin_Calibration.setDisabled(True)
39     def begin(self):
40         # disable button
41         self.Begin_Calibration.setDisabled(True)
42         #get UUT NUMBER
43         UUT_Num = int(self.UUT_NUMBER.value())
44 
45         #get com
46         COM_5520 = self.COM_5520.value()
47         UUT1_COM = self.UUT1_COM.value()
48         UUT2_COM = self.UUT2_COM.value()
49         UUT3_COM = self.UUT3_COM.value()
50 
51         #get Cal Function
52         Switch_Func = self.CalibrationFunction.currentText()
53         
54         Equip5520_state = self.Equip_5520.isChecked()
55         UUT1_state = self.Equip_uut1.isChecked()
56         UUT2_state = self.Equip_uut2.isChecked()
57         UUT3_state = self.Equip_uut3.isChecked()
58 
59         from Wolf_threads import MyThread
60         self.testthread = MyThread(Switch_Func,
61                                    UUT_Num,
62                                    COM_5520,UUT1_COM,UUT2_COM,UUT3_COM,
63                                    Equip5520_state,UUT1_state,UUT2_state,UUT3_state)
64         # connect sub thread single
65         self.testthread.FinishSignal.connect(self.end)
66         self.testthread.start()
67         
68     def end(self,show_message):
69         C_time = datetime.datetime.now()
70         show_message = C_time.strftime('%y-%m-%d %I:%M:%S ') +":" + show_message
71         self.Log_write.append(show_message)
72         #self.Log_write.append('
')
73 
74         # recover button
75         #Rex_Rsp = r'[-]?d+over!'
76         if(('complete' in show_message) or ('Electrical' in show_message) ):
77             self.Begin_Calibration.setDisabled(False)
78         #if(str == "Current cal complete!" or str == "Current test complete!" or str == "Volt cal complete!" or str == "Voltage test complete!"):
79         #    self.Begin_Calibration.setDisabled(False)
80         
81  
82 if __name__ == "__main__":
83     app = QApplication(sys.argv)
84     window  = MyApp()
85     window .show()
86     sys.exit(app.exec_())
View Code

Wolf_threads.py

 1 # -*- coding: utf-8 -*-
 2 
 3 from PyQt4 import QtCore, QtGui
 4 import time
 5 import Wolf_Electrical_cal_test
 6 
 7 class MyThread(QtCore.QThread):
 8     # statement a signal and return a str
 9     FinishSignal = QtCore.pyqtSignal(str) 
10     def __init__(self,Switch_Func,
11                  UUT_Num,
12                  COM_5520,UUT1_COM,UUT2_COM,UUT3_COM,
13                  Equip5520_state,UUT1_state,UUT2_state,UUT3_state,
14                  parent=None):
15         super(MyThread,self).__init__(parent)
16         self.Switch_Func = Switch_Func
17         self.UUT_Num = UUT_Num
18         self.COM_5520 = COM_5520
19         self.UUT1_COM = UUT1_COM
20         self.UUT2_COM = UUT2_COM
21         self.UUT3_COM = UUT3_COM
22         self.Equip5520_state = Equip5520_state
23         self.UUT1_state = UUT1_state
24         self.UUT2_state = UUT2_state
25         self.UUT3_state = UUT3_state
26         #pass
27         
28     def run(self):
29         #print ("=============")
30         
31         if(self.Switch_Func == 'C_cal'):
32             self.FinishSignal.emit("Current cal begin!")
33             s = Wolf_Electrical_cal_test.Current_Calibration(self.UUT_Num,self.COM_5520,self.UUT1_COM,self.UUT2_COM,self.UUT3_COM,self.Equip5520_state,
34                                                     self.UUT1_state,self.UUT2_state,self.UUT3_state)
35             self.FinishSignal.emit(s)
36             #self.FinishSignal.emit("Current cal over!")
37 
38         if(self.Switch_Func == 'V_cal'):
39             self.FinishSignal.emit("Voltage cal begin!")
40             s = Wolf_Electrical_cal_test.Voltage_Calibration(self.UUT_Num,self.COM_5520,self.UUT1_COM,self.UUT2_COM,self.UUT3_COM,self.Equip5520_state,
41                                                     self.UUT1_state,self.UUT2_state,self.UUT3_state)
42             self.FinishSignal.emit(s)
43             #self.FinishSignal.emit("Voltage cal over!")
44 
45         if(self.Switch_Func == 'C_Test'):
46             self.FinishSignal.emit("Current test begin!")
47             s = Wolf_Electrical_cal_test.Current_Test(self.UUT_Num,self.COM_5520,self.UUT1_COM,self.UUT2_COM,self.UUT3_COM,self.Equip5520_state,
48                                              self.UUT1_state,self.UUT2_state,self.UUT3_state)
49             self.FinishSignal.emit(s)
50             #self.FinishSignal.emit("Current test over!")
51 
52         if(self.Switch_Func == 'V_Test'):
53             self.FinishSignal.emit("Voltage test begin!")
54             s = Wolf_Electrical_cal_test.Voltage_Test(self.UUT_Num,self.COM_5520,self.UUT1_COM,self.UUT2_COM,self.UUT3_COM,self.Equip5520_state,
55                                              self.UUT1_state,self.UUT2_state,self.UUT3_state)
56             self.FinishSignal.emit(s)
57             #self.FinishSignal.emit("Voltage test over!")
58 
59         #self.FinishSignal.emit("")
View Code

Wolf_Electrical_cal_test.py

  1 #!/usr/bin/env python
  2 # -*- coding: utf-8 -*-   
  3 import datetime
  4 import time
  5 import sys
  6 import Wolf_device
  7 
  8 
  9 Cal_Cur_List = ['0.4','24']
 10 Cal_Volt_List = ['0m','30']
 11 Test_Volt_List = ['0','3','6','9','12','15','18','21','24','27','30']
 12 Test_Cur_List = ['0','0.4','2.4','4.8','7.2','9.6','12','14.4','16.8','19.2','21.6','24']
 13 Wait_5520_Steady = 10
 14 #保存文件路径及名称
 15 File_Name = 'wolf_Electrical_performance.csv'
 16 
 17 def SEND_Command(uut_dev_in, CMD):
 18     uut_dev_in.write(CMD)
 19 def uut_get_val(uut_dev_in, cmd):      #[0-9]d*.d+$     r'[- ][0-9]{1,5}.[0-9]{2,3}'
 20     Rex_Rsp = r'[-]?d+.[0-9]{3}'
 21     m = uut_dev_in.trx(cmd,Rex_Rsp)
 22     print ("m = %s")% m.group(0)
 23     return float(m.group(0))
 24     
 25 def Current_Calibration(UUT_Num,COM_5520,UUT1_COM,UUT2_COM,UUT3_COM,Equip5520_state,UUT1_state,UUT2_state,UUT3_state):
 26     DUT_Num = UUT_Num
 27     ComList = ["COM"+str(COM_5520),"COM"+str(UUT1_COM),"COM"+str(UUT2_COM),"COM"+str(UUT3_COM)]
 28 
 29     try:
 30         if(Equip5520_state == True):
 31             Equip_5520COM_001 = Wolf_device.SerialDevice(False, True, port = ComList[0], baudrate = 9600)
 32         if(UUT1_state == True):
 33             UUT1_COM = Wolf_device.SerialDevice(False, True, port = ComList[1], baudrate = 9600)
 34             SEND_Command(UUT1_COM,'imeas
')
 35             SEND_Command(UUT1_COM,'imeas
')
 36             SEND_Command(UUT1_COM,"iref[0] 0.4
")
 37             SEND_Command(UUT1_COM,"iref[1] 24
")
 38         if(UUT2_state == True):
 39             UUT2_COM = Wolf_device.SerialDevice(False, True, port = ComList[2], baudrate = 9600)
 40             SEND_Command(UUT2_COM,'imeas
')
 41             SEND_Command(UUT2_COM,'imeas
')
 42             SEND_Command(UUT2_COM,"iref[0] 0.4
")
 43             SEND_Command(UUT2_COM,"iref[1] 24
") 
 44         if(UUT2_state == True):
 45             UUT3_COM = Wolf_device.SerialDevice(False, True, port = ComList[3], baudrate = 9600)
 46             SEND_Command(UUT3_COM,'imeas
')
 47             SEND_Command(UUT3_COM,'imeas
')
 48             SEND_Command(UUT3_COM,"iref[0] 0.4
")
 49             SEND_Command(UUT3_COM,"iref[1] 24
")
 50     except Exception as e:
 51         return str(e) + "Wolf_Electrical_cal_test.py:line50"
 52 
 53     
 54     # STBY 5520
 55     print ("5520 STBY!")
 56     SEND_Command(Equip_5520COM_001,'STBY
')
 57     time.sleep(2)
 58    
 59     #5520控制电流输出
 60     for i in range(0,len(Cal_Cur_List)):
 61         SEND_Command(Equip_5520COM_001,'*CLS; OUT '+Cal_Cur_List[i]+'mA; OPER
')
 62         print ("5520 output %s mA and Wait %d s steady!")% (Cal_Cur_List[i],Wait_5520_Steady)
 63         time.sleep(Wait_5520_Steady)
 64 
 65         ICAL_POINT = "ICAL_POINT[" + str(i) + "]
"
 66         print ("ICAL_POINT = %s") % ICAL_POINT
 67         if(UUT1_state == True):
 68             SEND_Command(UUT1_COM,ICAL_POINT)
 69         if(UUT2_state == True):
 70             SEND_Command(UUT2_COM,ICAL_POINT)
 71         if(UUT3_state == True):
 72             SEND_Command(UUT3_COM,ICAL_POINT)
 73         time.sleep(2)
 74     
 75     print ("Store the calibration parameters!")
 76     if(UUT1_state == True):
 77         SEND_Command(UUT1_COM,"TEMP_CAL_STORE
")
 78     if(UUT2_state == True):
 79             SEND_Command(UUT2_COM,"TEMP_CAL_STORE
")
 80     if(UUT3_state == True):
 81         SEND_Command(UUT3_COM,"TEMP_CAL_STORE
")
 82 
 83     #Equip_5520_STBY()
 84     print ("5520 STBY!")
 85     SEND_Command(Equip_5520COM_001,'STBY
')
 86     print ("Current cal complete!")
 87     return "Current cal complete!"
 88 
 89 def Current_Test(UUT_Num,COM_5520,UUT1_COM,UUT2_COM,UUT3_COM,Equip5520_state,UUT1_state,UUT2_state,UUT3_state):
 90     DUT_Num = UUT_Num
 91     ComList = ["COM"+str(COM_5520),"COM"+str(UUT1_COM),"COM"+str(UUT2_COM),"COM"+str(UUT3_COM)]
 92     try:
 93         if(Equip5520_state == True):
 94             Equip_5520COM_001 = Wolf_device.SerialDevice(False, True, port = ComList[0], baudrate = 9600)
 95         if(UUT1_state == True):
 96             UUT1_COM = Wolf_device.SerialDevice(False, True, port = ComList[1], baudrate = 9600)
 97             SEND_Command(UUT1_COM,'imeas
')
 98             SEND_Command(UUT1_COM,'imeas
')
 99         if(UUT2_state == True):
100             UUT2_COM = Wolf_device.SerialDevice(False, True, port = ComList[2], baudrate = 9600)
101             SEND_Command(UUT2_COM,'imeas
')
102             SEND_Command(UUT2_COM,'imeas
')
103         if(UUT3_state == True):
104             UUT3_COM = Wolf_device.SerialDevice(False, True, port = ComList[3], baudrate = 9600)
105             SEND_Command(UUT3_COM,'imeas
')
106             SEND_Command(UUT3_COM,'imeas
')
107     except Exception as e:
108         return str(e) + "Wolf_Electrical_cal_test.py:line103"
109 
110     # STBY 5520
111     print ("5520 STBY!")
112     SEND_Command(Equip_5520COM_001,'STBY
')
113     time.sleep(3)
114 
115     try:
116         fp = open(File_Name,'a')
117     except IOError as e:
118         return str(e) + "
 please close wolf_Electrical_performance.csv"
119     #5520控制电流输出
120     for i in range(0,len(Test_Cur_List)):
121         SEND_Command(Equip_5520COM_001,'*CLS; OUT '+Test_Cur_List[i]+'mA; OPER
')
122         print ("5520 output %s mA and Wait %d s steady!")% (Test_Cur_List[i],Wait_5520_Steady)
123         time.sleep(Wait_5520_Steady)
124 
125         t = datetime.datetime.now()
126         uut_001 = ''
127         uut_002 = ''
128         uut_003 = ''        
129 
130         if(UUT1_state == True):
131             uut_001 = uut_get_val(UUT1_COM,"EVAL?
")
132         if(UUT2_state == True):
133             uut_002 = uut_get_val(UUT2_COM,"EVAL?
")
134         if(UUT2_state == True):
135             uut_003 = uut_get_val(UUT3_COM,"EVAL?
")
136         time.sleep(2)
137         uut_reading = '%s,%s,%s,%s 
'%(t,uut_001,uut_002,uut_003)
138         fp.write(uut_reading)
139     
140     fp.close()
141     print ("5520 STBY!")
142     SEND_Command(Equip_5520COM_001,'STBY
')
143     print ("Current test complete!")
144     return "Current test complete!"
145 
146 
147 def Voltage_Calibration(UUT_Num,COM_5520,UUT1_COM,UUT2_COM,UUT3_COM,Equip5520_state,UUT1_state,UUT2_state,UUT3_state):
148     DUT_Num = UUT_Num
149     ComList = ["COM"+str(COM_5520),"COM"+str(UUT1_COM),"COM"+str(UUT2_COM),"COM"+str(UUT3_COM)]
150 
151     try:
152         if(Equip5520_state == True):
153             Equip_5520COM_001 = Wolf_device.SerialDevice(False, True, port = ComList[0], baudrate = 9600)
154         if(UUT1_state == True):
155             UUT1_COM = Wolf_device.SerialDevice(False, True, port = ComList[1], baudrate = 9600)
156             SEND_Command(UUT1_COM,'vmeas
')
157             SEND_Command(UUT1_COM,'vmeas
')
158             SEND_Command(UUT1_COM,"vref[0] 0
")
159             SEND_Command(UUT1_COM,"vref[1] 30
")
160         if(UUT2_state == True):
161             UUT2_COM = Wolf_device.SerialDevice(False, True, port = ComList[2], baudrate = 9600)
162             SEND_Command(UUT2_COM,'vmeas
')
163             SEND_Command(UUT2_COM,'vmeas
')
164             SEND_Command(UUT2_COM,"vref[0] 0
")
165             SEND_Command(UUT2_COM,"vref[1] 30
") 
166         if(UUT3_state == True):
167             UUT3_COM = Wolf_device.SerialDevice(False, True, port = ComList[3], baudrate = 9600)
168             SEND_Command(UUT3_COM,'vmeas
')
169             SEND_Command(UUT3_COM,'vmeas
')
170             SEND_Command(UUT3_COM,"vref[0] 0
")
171             SEND_Command(UUT3_COM,"vref[1] 30
")
172     except Exception as e:
173         return str(e) + "Wolf_Electrical_cal_test.py:line161"
174     # STBY 5520
175     print ("5520 STBY!")
176     SEND_Command(Equip_5520COM_001,'STBY
')
177     time.sleep(2)
178    
179     #5520控制电压输出
180     for i in range(0,len(Cal_Volt_List)):
181         SEND_Command(Equip_5520COM_001,'*CLS; OUT '+ Cal_Volt_List[i]+'V; OPER
')
182         print ("5520 output %s V and Wait %d s steady!")% (Cal_Volt_List[i],Wait_5520_Steady)
183         time.sleep(Wait_5520_Steady)
184 
185         VCAL_POINT = "VCAL_POINT[" + str(i) + "]
"
186         print ("VCAL_POINT = %s") % VCAL_POINT
187         if(UUT1_state == True):
188             SEND_Command(UUT1_COM,VCAL_POINT)
189         if(UUT2_state == True):
190             SEND_Command(UUT2_COM,VCAL_POINT)
191         if(UUT3_state == True):
192             SEND_Command(UUT3_COM,VCAL_POINT)
193         time.sleep(3)
194     
195     print ("Store the calibration parameters!")
196     if(UUT1_state == True):
197         SEND_Command(UUT1_COM,"TEMP_CAL_STORE
")
198     if(UUT2_state == True):
199             SEND_Command(UUT2_COM,"TEMP_CAL_STORE
")
200     if(UUT3_state == True):
201         SEND_Command(UUT3_COM,"TEMP_CAL_STORE
")
202 
203     #Equip_5520_STBY()
204     print ("5520 STBY!")
205     SEND_Command(Equip_5520COM_001,'STBY
')
206     print ("Volt cal complete!")
207     return "Volt cal complete!"
208 
209 def Voltage_Test(UUT_Num,COM_5520,UUT1_COM,UUT2_COM,UUT3_COM,Equip5520_state,UUT1_state,UUT2_state,UUT3_state):
210     DUT_Num = UUT_Num
211     ComList = ["COM"+str(COM_5520),"COM"+str(UUT1_COM),"COM"+str(UUT2_COM),"COM"+str(UUT3_COM)]
212 
213     try:
214         if(Equip5520_state == True):
215             Equip_5520COM_001 = Wolf_device.SerialDevice(False, True, port = ComList[0], baudrate = 9600)
216         if(UUT1_state == True):
217             UUT1_COM = Wolf_device.SerialDevice(False, True, port = ComList[1], baudrate = 9600)
218             SEND_Command(UUT1_COM,'vmeas
')
219             SEND_Command(UUT1_COM,'vmeas
')
220         if(UUT2_state == True):
221             UUT2_COM = Wolf_device.SerialDevice(False, True, port = ComList[2], baudrate = 9600)
222             SEND_Command(UUT2_COM,'vmeas
')
223             SEND_Command(UUT2_COM,'vmeas
')
224         if(UUT3_state == True):
225             UUT3_COM = Wolf_device.SerialDevice(False, True, port = ComList[3], baudrate = 9600)
226             SEND_Command(UUT3_COM,'vmeas
')
227             SEND_Command(UUT3_COM,'vmeas
')
228     except Exception as e:
229         return str(e) + "Wolf_Electrical_cal_test.py:line213"
230 
231     # STBY 5520
232     print ("5520 STBY!")
233     SEND_Command(Equip_5520COM_001,'STBY
')
234     time.sleep(2)
235 
236     try:
237         fp = open(File_Name,'a')
238     except IOError as e:
239         return str(e) + "
 please close wolf_Electrical_performance.csv"
240     #5520控制电流输出
241     for i in range(0,len(Test_Volt_List)):
242         SEND_Command(Equip_5520COM_001,'*CLS; OUT '+Test_Volt_List[i]+'V; OPER
')
243         print ("5520 output %s V and Wait %d s steady!")% (Test_Volt_List[i],Wait_5520_Steady)
244         time.sleep(Wait_5520_Steady)
245 
246         t = datetime.datetime.now()
247         uut_001 = ''
248         uut_002 = ''
249         uut_003 = ''        
250 
251         if(UUT1_state == True):
252             uut_001 = uut_get_val(UUT1_COM,"EVAL?
")
253         if(UUT2_state == True):
254             uut_002 = uut_get_val(UUT2_COM,"EVAL?
")
255         if(UUT3_state == True):
256            uut_003 = uut_get_val(UUT3_COM,"EVAL?
")
257         time.sleep(2)
258         uut_reading = '%s,%s,%s,%s 
'%(t,uut_001,uut_002,uut_003)
259         fp.write(uut_reading)
260     
261     fp.close()
262     print ("5520 STBY!")
263     SEND_Command(Equip_5520COM_001,'STBY
')
264     print ("Voltage test complete!")
265     return "Voltage test complete!"
View Code

Wolf_device.py

 1 '''
 2     Document string:
 3 '''
 4 import re
 5 
 6 import sys
 7 import time
 8 import serial
 9 
10 class SerialDevice(serial.Serial):
11     def __init__(self, tx_log=False, rx_log=False, *args, **kwargs):
12         self.tx_log = tx_log
13         self.rx_log = rx_log
14         serial.Serial.__init__(self, *args, **kwargs)
15         self.setTimeout(0.1)
16         self.setWriteTimeout(1.0)
17 
18     def read(self, size=1):
19         '''
20             Document string:
21         '''
22         data = serial.Serial.read(self, size)
23         if self.rx_log:
24             #sys.stdout.write(data)
25             i =1
26         return data
27 
28     def write(self, data):
29         '''
30             Document string:
31         '''
32         #print 'data = %s' % data
33         serial.Serial.write(self, data)
34         if self.tx_log:
35             sys.stdout.write(data)
36         return
37 
38     def trx(self, omsg, imsgs, delay=0, trx_wait = 2):
39         '''
40             Document string:
41         '''
42         if omsg:
43             self.write(omsg)
44         start = time.clock()
45         if type(imsgs) == type('str'):
46             imsgs = (imsgs, )
47         for imsg in imsgs:
48             line = ''
49             m = None
50             while True:
51                 line = line + self.read()
52                 #print (line)
53                 m = re.search(imsg, line)
54                 if m: 
55                     #print m.group(0)
56                     break
57                 now = time.clock()
58                 if (now - start) > trx_wait:
59                     raise Exception("trx timeout")
60         time.sleep(delay)
61         return m
View Code
原文地址:https://www.cnblogs.com/njuptlwh/p/7488317.html