У меня есть код Python, который измеряет HP LCR Meter и собирает данные для нас различными способами. Недавно я создал графический интерфейс для задания начальных условий для сотрудников, которым неудобно изменять переменные в коде. Все работает, кроме 1 вещи. МЫ используем последнюю версию python xy, поэтому версию python 2.6.6 с pyqt и spyder на ПК с Windows 7.
Обычно мы открываем код в spyder. Но открытие spyder занимает некоторое время, и моему руководителю понравилась возможность просто дважды щелкнуть файл, который открывает графический интерфейс с окном консоли python для печати ошибок и различной информации, как в spyder.
Как видно на предоставленных снимках экрана, существует режим начальной настройки машины для настройки устройства, которое будет сканироваться измерителем LCR, и есть два пользовательских ввода, которые запрашивает код. В 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()
.