Win95
Апрель 12, 2012 19:11:25
Код должен делать следующее: Открывать gen.exe (2х канальный генератор звуковых сигналов), где пользователь должен задавать некие настройки и по нажатии кнопки Start должна работать основная часть кода: Первые 40 секунд мы просто получаем звук с генератора на звуковую плату, к которой подключены “датчики” (они как раз разогреваются в течении этого времени), затем включаем программу записи Free.exe и записываем со звуковой платы поступающий сигнал, затем сохраняем его и открываем в coolpro.exe, где сохраняем его как текстовый файл, затем открываем этот файл и удаляем первые 5 строк (т.к там содержится информация нам не нужная), ну а потом этот файл запихивается в маткад и по нему строится графики, проводятся преобразования Фурье и далее…
beelze
Апрель 12, 2012 21:37:55
Масса неясного тем не менее остается - например, _кто_ нажимает кнопку Start (если пользователь, то необходимо это отлавливать, а если не он - то _как_, и что важнее - _когда_ она нажимается? надо же от этого момента отсчитать 40 с, если я правильно понял?)
Но все же рекомендую ответить на вопросы - насколько незаменимы гуевины в данной задаче? Если даже предположить, что gen.exe незаменим, то утилиту записи, работающую из командной строки найти полагаю не проблема, что махом решит проблему определения момента окончания записи. Насчет coolpro - я не в курсе, что именно за текстовый формат звука такой используется? Если какой-нибудь более-менее распространенный, то опять-таки CLI encoder для него найти не будет проблемой. Тогда и код Ваш будет прост, понятен и надежен.
Win95
Апрель 13, 2012 17:50:22
beelze
кто_ нажимает кнопку Start
Пользователь нажимает на кнопку, она нажимается в произвольный момент времени, (я пока не придумывал как обрабатывать мне это событие, возможно заставить питон слушать исходящий звуковой сигнал)
beelze
надо же от этого момента отсчитать 40 с, если я правильно понял?)
Да, после нажатия кнопки должно пройти 40 секунд
beelze
насколько незаменимы гуевины в данной задаче
думаю если у меня не получится прикрутить что нибудь к кнопке старт в генераторе, то я буду биться головой об стену и переписывать\дизасемблировать генератор. Про программу записи звука - она полностью заменяема, однако должно поддерживаться определенное качество 16 бит и далее… На счет Cool Edit Pro я не уверен, думаю аналог найти крайне проблематично, он сохраняет файл как точки на графике(для левого канала - один, для правого другой графики) ниже приведена часть сохраняемого текстового файла
-6943 -5658
-4628 -3088
-1803 -517
0 13056
16716 17741
11827 14393
370 170
0 0
0 5120
9344 -12286
108 -32768
3584 30633
-31818 26667
beelze
Апрель 14, 2012 10:35:16
>я пока не придумывал как обрабатывать мне это событие
возможно, создается какое-то окно, индикатор выполнения, куда-то выводится какой-то текст итд? Это можно было бы использовать как событие начала генерации.. сответственно, что-то подобное, вероятно, происходит и по окончании. Тогда основная Ваша проблема решена я так полагаю?
>однако должно поддерживаться определенное качество 16 бит и далее
у Вас MP3 в примере. Если этого «качества» достаточно, то Вам практически любой CLI энкодер подойдет.
>На счет Cool Edit Pro я не уверен, думаю аналог найти крайне проблематично
я бы все же начал с выяснения, что это за формат такой; ну и возможно это и просто руками в сделать нетрудно будет? Я не специалист по аудио, поэтому конкретных рекомендаций не дам ибо не в теме.
Win95
Апрель 15, 2012 00:00:52
Ну что же уважаемые) Благодарю за Ваш интерес, помощь и советы (в особенности тебя beelze). Сейчас я уже пишу альфу этого “чуда” у которого костылей теперь больше чем ног ибо в + ко всему этому использую еще и TkInter :D Еще раз спасибо за хелпы)
beelze
Апрель 15, 2012 11:09:37
>использую еще и TkInter
могу посоветовать wxPython «взамест». TkInter уж чересчур дремуч имхо.
doza_and
Апрель 15, 2012 21:12:01
Может так попробовать:
import subprcess as sp
p=sp.Popen("Free.exe")
sp.check_call("gen.exe")
p.wait()
sp.check_call("coolpro.exe")
get_last_40()
sp.check_call("matlab.exe")
Зачем все эти задержки - пишите всегда, потом отрежете лишнее. Слушать в реальном времени тоже задача еще та - проще в файле почикать тишину.
@cckyi_boxxx
Апрель 16, 2012 17:16:03
я на вашем месте реализовал-бы блокировку следуюшим образом : софт который должен писать файл перед его написанием пусть создаст пустой файл допустим с именем lock и по завершении писания в нужный пусть удалит это самый lock
ну а второй софт просто должен мониторить наличие файла lock и только когда его нет начинать искать необходимый для работы
ps: если кому-то напомнило дебиан , да идея тупо стырена ))))