Имам код на Python, който взема измервания от HP LCR Meter и събира данните за нас по различни начини. Наскоро създадох GUI за вписване на начални условия за служители, които не се чувстват удобно да променят променливи в кода. Всичко работи с изключение на 1 нещо. НИЕ използваме най-новия python xy, така че python версия 2.6.6 с pyqt и spyder на компютър с Windows 7.
Обикновено отваряме кода в spyder. Но отварянето на spyder отнема известно време и моят ръководител хареса възможността просто да щракне два пъти върху файла, който отваря GUI с прозорец на конзолата на python за отпечатване на грешки и различна информация, както бихте виждали в spyder.
Както може да се види на предоставените екранни снимки, има режим на първоначална настройка на машината за настройка на устройството, което да бъде сканирано от LCR Meter, и има два потребителски входа, които кодът подканва. На spyder отпечатва добре тези подкани в конзолата, но в конзолата на python, отворена без spyder, непрекъснато отпечатва QCoreApplication::exec: The event loop is already running
Странното е, че все още можете просто да натиснете enter два пъти по-нормално и кодът ще работи както обикновено. Но това ще бъде объркващо за всички, освен за мен.
Някой знае ли защо това се случва?
Ето кода, който подсказва въвеждането.
lcr = visa.instrument('GPIB::17')
#clear the instrument
lcr.write('*RST;*CLS')
#enable operation complete notification
lcr.write('*OPC')
if parallel:
lcr.write('FUNC:IMP CPG') #Parallel capacitance, conductance model
else:
lcr.write('FUNC:IMP CSRS') #Series capacitance, resistance model
lcr.write('APER '+integration+','+averages)
lcr.write('OUTP:HPOW ON')
lcr.write('OUTP:DC:ISOL OFF')
lcr.write('VOLT '+vac)
lcr.write('TRIG:SOUR BUS')
if zero == True:
#set open correction parameters
lcr.write('DISP:PAGE CSET')
lcr.write('CORR:LENG 1')
lcr.write('CORR:METH SING')
lcr.write('CORR:LOAD CPG')
lcr.write('CORR:USE 10')
lcr.write('CORR:SPOT1:STATE ON')
lcr.write('CORR:SPOT2:STATE OFF')
lcr.write('CORR:SPOT3:STATE OFF')
lcr.write('CORR:SPOT1:FREQ '+frequency)
#perform open correction -> unprobe device\
raw_input('Unprobe DUT and press ENTER to continue...')
lcr.write('CORR:SPOT1:OPEN')
lcr.write('CORR:OPEN:STATE ON')
lcr.write('DISP:PAGE MEAS')
#poll lcr to determine measurment state
lcr.write('*OPC?')
done = lcr.read()
while done == 0:
lcr.write('*OPC?')
done = lcr.read()
time.sleep(0.5)
#reprobe device
raw_input('Probe DUT, then press ENTER')
lcr.write('FREQ '+frequency)
Подканите са двете raw_input()
.