Ciao a tutti quelli che ancora non sono in vacanza e mi leggeranno...
Ho un problema: sto facendo un programma che registra l'audio in ingresso (con DirectX9) in sincrono con determinate azioni e registra su un xml il millisecondo in cui è avvenuta l'azione.
Ho tentato di sincronizzarlo con il timer di windows, ma non è stato possibile...
Al che ho pensato di risolvere memorizzando il millisecondo di registrazione del file audio, l'ho testato con valori fissi, copiando le funzioni di registrazione nello stesso form, e funziona.
Purtroppo però le funzioni di registrazione devono essere disponibili anche da altri form e quindi sono in un form apposito [opzioniAudioWindow] che contiene tutte le variabili di registrazione (frequenza, canali, ecc)
Per richiamare la variabile necessaria alla memorizzazione ho quindi creato una Proprietà a cui poter accedere da tutti i form che ne abbiano bisogno.
Purtroppo però non rieco a richiamare la variabile...
Ecco il codice:
codice:Public Class opzioniAudioWindow 'funzioni di registrazione varie... Private countValue As Integer Public Property conta() As Integer Get Return countValue End Get Set(ByVal value As Integer) If value <> 0 Then countValue = value / freq / shBytesPerSample * 1000 Else countValue = 0 End If End Set End Property Public Sub saveRecord() Dim CaptureData As Byte() = Nothing Dim ReadPos As Integer Dim CapturePos As Integer Dim LockSize As Integer cBuff.GetCurrentPosition(CapturePos, ReadPos) LockSize = ReadPos - NextCaptureOffset If LockSize < 0 Then LockSize += captureBufferSize End If LockSize -= LockSize Mod notifySize If 0 = LockSize Then Return End If ' legge i dati CaptureData = CType(cBuff.Read(NextCaptureOffset, GetType(Byte), LockFlag.None, LockSize), Byte()) SampleCount += CaptureData.Length 'scrivi sul file Writer.Write(CaptureData, 0, CaptureData.Length) NextCaptureOffset += CaptureData.Length NextCaptureOffset = NextCaptureOffset Mod captureBufferSize conta() = SampleCount End Sub End ClassPurtroppo il codice mi restituisce sempre 0...codice:Public Class form1 Sub salvaRegistrazione() Dim mc As New opzioniAudioWindow() CurrentSlideSecondCount = mc.conta() 'altre istruzioni... End Sub End Class
Ho provato anche a richiamare la variabile con una funzione che restituisce conta(), ma mi prende solo il primo valore, coma se ai cicli successivi SampleCount diventasse 0...
qualcuno sa dirmi perchè?...
Già che ci sono, volevo chiedere anche un consiglio: il file xml conviene scriverlo volta per volta (ad ogni azione aggiungo un nodo), memorizzarlo in uno stream e scriverlo alla fine o, come sto facendo ora, memorizzarlo in una stringa e scriverlo alla fine?
Grazie a chi mi aiuterà!
![]()

Rispondi quotando
