Vb6

Vb6 - 11 oct. 2020 à 12:58
JeuDuTaquin Messages postés 249 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 31 mai 2023 - 12 oct. 2020 à 07:44
Bonjour,
Dans ce problème on vous suggère de réaliser un programme qui permet la visualisation sur un contrôle graphique (BPS-Graph ou MsChart) un signal Carrée et sinusoïdal.

L'utilisateur doit être en mesure de en temps réel :

· Sélectionner le type du signal (carrée ou sinusoïdal)

· Modifier l’amplitude

· Modifier la fréquence

· Enregistrement du signal

La gestion de toutes les erreurs est primordiale
Qui peut m'aider svp

2 réponses

Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
11 oct. 2020 à 13:32
0
JeuDuTaquin Messages postés 249 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 31 mai 2023 7
Modifié le 12 oct. 2020 à 07:48
Salut,
Pourquoi utiliser une OCX exotique ?
Une simple image box fait l'affaire...

[Sin.BAS]
Option Explicit

Public buffer(44100) As Byte


Sub main()
Dim f0, Fs As Long
Dim VScale
Dim P, Q, Ck, Sk, Ck_New, Sk_New
Dim Cnt, Oh

Dim nFile2 As Integer ' Output File Hook.

For Cnt = 0 To UBound(buffer)
buffer(Cnt) = 128
Next

Fs = 44100 ' fréquence d'échantillonage.
f0 = 1200 ' Fréquence du signal.
VScale = 90 ' échelle du signal (Amplitude)

' Constantes
Dim pi
pi = 4 * Atn(1)
P = Cos(2 * pi * f0 / Fs)
Q = Sin(2 * pi * f0 / Fs)

' Selection du cadran.

'Partie Haute.
Ck = 0 ' ) Sinus )1 Cosinus \/\ pi/4
Sk = -1 ')       )0

'Partie Basse.
'Ck = 0 'Decallage PI/2
'Sk = 1


' Création du signal.
' -> pour une période.
'OH = Fs \ f0 ' Période.
'Oh = (Fs \ f0) / 2 ' Demie-période.
Oh = UBound(buffer)
For Cnt = 0 To Oh 'UBound(buffer)
buffer(Cnt) = Int((VScale * Ck) + 128) '+ 128 (Azimute du signal)
Ck_New = P * Ck - Q * Sk
Sk_New = Q * Ck + P * Sk
Ck = Ck_New
Sk = Sk_New

'VScale = VScale * (1 - (Cnt / 5000)) ' Amortissement RLC.
Next

nFile2 = FreeFile
Open "Sin_22K_8bits_unsigned.raw" For Binary Access Write As #nFile2
Put #nFile2, 1, buffer
Close #nFile2


FrmScale.Show

End Sub

Dans la frame principale: [FrmScale]
ici on imprime directement dans la frame, mais on peut tout mettre dans une picturebox...
Option Explicit

Public buffer(44100) As Byte


Sub main()
Dim f0, Fs As Long
Dim VScale
Dim P, Q, Ck, Sk, Ck_New, Sk_New
Dim Cnt, Oh

Dim nFile2 As Integer ' Output File Hook.

For Cnt = 0 To UBound(buffer)
buffer(Cnt) = 128
Next

Fs = 44100 ' fréquence d'échantillonage.
f0 = 1200 ' Fréquence du signal.
VScale = 90 ' échelle du signal (Amplitude)

' Constantes
Dim pi
pi = 4 * Atn(1)
P = Cos(2 * pi * f0 / Fs)
Q = Sin(2 * pi * f0 / Fs)

' Selection du cadran.

'Partie Haute.
Ck = 0 ' ) Sinus )1 Cosinus \/\ pi/4
Sk = -1 ')       )0

'Partie Basse.
'Ck = 0 'Decallage PI/2
'Sk = 1


' Création du signal.
' -> pour une période.
'OH = Fs \ f0 ' Période.
'Oh = (Fs \ f0) / 2 ' Demie-période.
Oh = UBound(buffer)
For Cnt = 0 To Oh 'UBound(buffer)
buffer(Cnt) = Int((VScale * Ck) + 128) '+ 128 (Azimute du signal)
Ck_New = P * Ck - Q * Sk
Sk_New = Q * Ck + P * Sk
Ck = Ck_New
Sk = Sk_New

'VScale = VScale * (1 - (Cnt / 5000)) ' Amortissement RLC.
Next

nFile2 = FreeFile
Open "Sin_22K_8bits_unsigned.raw" For Binary Access Write As #nFile2
Put #nFile2, 1, buffer
Close #nFile2


FrmScale.Show

End Sub


Un petit exemple que j'avais fait ... donc, si ça peut aider...
0
Rejoignez-nous