Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как работать с waveinopen 
V
    Опции темы
suvorr
Дата 24.9.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 28.1.2006
Где: SPb

Репутация: нет
Всего: нет



Всем здрасте! Работая с WaveIn.... хочу естественно при заполнении буфера вызывать процедуру обработки.
Ну, вроде все сделал как просят. (см.код). И при открытии ввода она действительно вызывается (хотя это никому не надо!)! 
А при заполнении буфера -ни фига!!! В чем дело ...?

Код
Type WAVEFORMATEX: wFormatTag As Integer: nChannels As Integer: nSamplesPerSec As Long
  nAvgBytesPerSec As Long: nBlockAlign As Integer: wBitsPerSample As Integer:
  cbSize As Integer: End Type
Type WAVEHDR: lpData As Long: dwBufferLength As Long: dwBytesRecorded As Long:
  dwUser As Long: dwFlags As Long: dwLoops As Long: lpNext As Long: Reserved As Long: End Type


Declare Function waveInGetNumDevs Lib "winmm.dll" () As Long
Public Declare Function waveInAddBuffer Lib "winmm.dll" (ByVal hwavein As Long, lpWaveInHdr As WAVEHDR, ByVal uSize As Long) As Long
Declare Function waveInReset Lib "winmm.dll" (ByVal hwavein As Long) As Long
Declare Function waveInOpen Lib "winmm.dll" (lphWaveIn As Long, ByVal uDeviceID As Long, _
   lpFormat As WAVEFORMATEX, ByVal dwCallback As Long, ByVal dwInstance As Long, ByVal dwFlags As Long) As Long
Declare Function waveInClose Lib "winmm.dll" (ByVal hwavein As Long) As Long
Declare Function waveInPrepareHeader Lib "winmm.dll" (ByVal hwavein As Long, lpWaveInHdr As WAVEHDR, ByVal uSize As Long) As Long
Declare Function waveInUnprepareHeader Lib "winmm.dll" (ByVal hwavein As Long, lpWaveInHdr As WAVEHDR, ByVal uSize As Long) As Long
Declare Function waveInStart Lib "winmm.dll" (ByVal hwavein As Long) As Long
Declare Function waveInStop Lib "winmm.dll" (ByVal hwavein As Long) As Long
Public hwavein&, wdt(10000) As Integer, WH As WAVEHDR, WF As WAVEFORMATEX, FVI As Integer
Public exam(9, 30000) As Integer, exfr(9, 30000) As Integer, ppp As Integer, nmbutton As Integer, nmcall As Integer
Private CALLBACK_NULL
Dim ddd As Integer
Public Const MM_WIM_DATA = &H3C0





Public Sub start():
     If waveInGetNumDevs <= 0 Then MsgBox "Unable to detect any wave input devices": End
        WF.wFormatTag = 1:
        WF.nChannels = 1:
        WF.nBlockAlign = 1:
        WF.nSamplesPerSec = 22050
        WF.wBitsPerSample = 16:
        WF.nAvgBytesPerSec = 44100:
        WF.cbSize = 0
        WH.lpData = VarPtr(wdt(0)):
        WH.dwBufferLength = 20000:
        WH.dwFlags = 0
100:    aa = waveInOpen(hwavein, -1&, WF, cbf, 0, CALLBACK_FUNCTION):
        If aa <> 0 Then MsgBox "Ââîä çàíÿò  ": Exit Sub
        waveInStart hwavein:
        waveInPrepareHeader hwavein, WH, Len(WH):                             'çàïóñê óõà
        DoEvents: DoEvents: DoEvents
        waveInAddBuffer hwavein, WH, Len(WH):
        End Sub
Public Function cbf(): MsgBox ddd: End Function




PM MAIL WWW Skype   Вверх
suvorr
Дата 25.9.2007, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 28.1.2006
Где: SPb

Репутация: нет
Всего: нет



Похоже дело не в CallBack функции а в том что по завершении буфера вообще никакого события не происходит!
То есть я отслеживаю заполнение буфера вручную, делаю паузу, затем вызываю WaveInAddBuffer и она мне возвращает ошибку 33 = WAVERR_STILLPLAYING ! Причем не всегда, но часто! По описаниям апишек не понять ни хрена. Примерчик бы кода работающего! 
PM MAIL WWW Skype   Вверх
suvorr
Дата 25.9.2007, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 28.1.2006
Где: SPb

Репутация: нет
Всего: нет



Что то я какой-то бред написал. Снимаю вопрос !
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0396 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.