И тут возникла еще и другая проблема - моя программа, написанная с использованием VideoForWindows, т.е. VfW (avicap32.dll), работает только с форматом данных YUY2, но он не может обеспечить высокую скорость передачи данных. Тогда мне пришлось написать еще и код с использованием DirectShow (quartz.dll), где можно использовать и формат MJPEG.. Сейчас моя программа выглядит так, как изображено на скриншоте, а скачать исходный код на языке Visual Basic 6 вместе с исполняемым файлом можно здесь http://modsys.narod.ru/Prog/Prog_Prog/WebCamGen.rar (в архиве есть библиотека FSFWrap.dll, которая нужна для работы с DirectShow. Ее надо поместить в папку C:\Windows\System32 и потом зарегистрировать).

Но, в связи с тем, что после того как буферы с данными инфразвука запущены на воспроизведение, я не могу контролировать работу компьютера, а я не уверен, что буферы будут воспроизводиться периодически точно через 1 секунду, у меня сейчас возникла новая проблема. Ведь, если буферы будут воспроизводиться не через 1 секунду, а через 1, 001 секунды, то меня уже это не устроит, т.к. при многократном повторение звука, например, 100 раз погрешность составит уже 0,1 секунды. Поэтому я сейчас ищу способ как проконтролировать время воспроизведения буферов звуковых данных, а еще лучше как узнать амплитуду сигнала в тот момент, когда я через заданный период времени делаю снимок с вэбкамеры.
Конечно, идеальным решением было бы как то узнать амплитуду сигнала на выходе звуковой карты, но как это сделать я не знаю. Да, в интернете есть несколько программ, которые определяют уровень сигнала, например, поступающего с микрофона, но там, как я понял, опять таки сигнал сначала записывается в буфер, а потом данные оттуда выводятся на экран. Т.е. здесь мы определяем амплитуду сигнала не в конкретный момент времени, а на каком то прошедшем отрезке времени. Можно, конечно, синхронно с основной вэбкамерой измерять напряжение каким то прибором на динамике, куда поступает сигнал от моего генератора, и фиксировать эти показания, например, еще одной вэбкамерой и накладывать это изображение на картинку с интерференционными полосами, снятую основной вэбкамерой, но боюсь, что это значительно снизит скорость работы программы. Есть и программы различных осциллографов, которые тоже можно было бы как то использовать при этом, но я не знаю можно ли их использовать непосредственно в коде моей программы.
С наилучшими пожеланиями Сергей Юдин.


