'LISTATO DEL PROGRAMMA PER CORRELAZIONE PANORAMICA 2 x 120 PUNTI 'con riferimento ai punti 1)...13) del testo riportato in p18 'VERSION 5.00 ========================PROGRAMMA ESECUTIVO================================= 'Dichiarazione matrici e variabili Dim h(130000) As Byte ' matrice dati grezzi da bit 1 e 2 di LPT1 rif.p18-7) Dim r(130000) As Byte ' matrice dati grezzi da bit 1 di LPT1 rif.p18-7) Dim s(130000) As byte ' matrice dati grezzi da bit 2 di LPT1 rif.p18-7) Dim cs(120) As Double 'matrice di corelazione semisettore di sinistra rif.p18-6) Dim cd(120) As Double 'matrice di corelazione semisettore di destra rif.p18-6) Dim spostamento As Integer ' dato di ritardo per simulazione 'Dichiarazioni per l'impiego DLL per LPT1 Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte) 'rif.p18-11) Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte '============================================================================= Private Sub Command1_Click() 'Nome del pulsante "SCANSIONE SETTORE" Command3.BackColor = &H8000000F 'ripristina i colori di pulsanti inerti Command4.BackColor = &H8000000F '========================== 'ACQUISIZIONE DEI 2 SEGNALI CLIPPATI DALL'ESTERNO-FASE DI CAMPIONATURA ' NB l'indirizzo della porta deve essere del P.C. in uso 'TT1 = Timer 'TT?? prima istruzione per la misura di fc Rif.p18 -12) For k = 1 To 130000 PortOut &H378, 255 'PREPARA LPT1 ALL'INGRESSO DATI rif:p18-11 h(k) = PortIn(&H378)'IN h(k)VENGONO MEMORIZZATI GLI 8 BIT CHE VENGONO DALLA LPT1 rif.p18-11 for comp = 0 to 1000 'ANELLO DI COMPENSAZIONE PER CALIBRARE fc next comp Next k 'I DUE SEGNALI A 2 STATI SONO APPLICATI RISPETT. AL bit1 e bit2 di LPT1 'TT2 = Timer 'TT?? seconda istruzione per la misura di fc 'Fc = 130000/(TT2 - TT1) 'TT?? terza istruzione per la misura di fc 'Label4.Caption= fc ' TT?? quarta istruzione per la misura di Fc -label da inserire al momento della misura '============================= 'FORMAZIONI MATRICI s(k) E r(k ) For k = 1 To 130000 s(k) = h(k) And 1 'CON and 1 SI SELEZIONA IL PRIMO SEGNALE A 2 STATI r(k) = (h(k) And 2) / 2 'CON and 2 / 2 SI SELEZIONA IL SECONDO SEGNALE A DUE STATI Next k Erase h 'cancella la memoria h(k) dopo aver caricato s(k) e r(k) '=========================== Command2.BackColor = vbGreen 'Illumina di verde il pulsante "ANALISI" dopo la scansione End Sub '=================================================================== Private Sub Command3_Click() 'Nome del pulsante "SORGENTE SN" 'SIMULAZIONE DEI SEGNALI DI INGRESSO - SEGNALI A SINISTRA 'NB nella fase di simulazione il numero dei campioni è ridotto a 24000 Command3.BackColor = vbRed 'colora in rosso il pulsante comm3 Command4.BackColor = &H8000000F 'colora di fondo il pulsante comm4 spostamento = HScroll1.Value ' legge il valore del numero dei punti ritardo simulato For X = 0 To 24000 Step 5 'carica matrice s(x) s(X) = (1 - ((-1) ^ (Int(100 * Rnd)))) / 2 'genera segnale casuale a 2 stati s(X + 1) = s(X)' allunga il tempo di ciascun stato s(X + 2) = s(X) s(X + 3) = s(X) s(X + 4) = s(X) Next X For X = 1 To 24000 'carica matrice r(x) r(X) = s(X + spostamento)' introduzione del ritardo simulato Next End Sub '=========================================================================== 'SIMULAZIONE DEI SEGNALI DI INGRESSO - SEGNALI A DESTRA 'NB nella fase di simulazione il numero dei campioni è ridotto a 24000 Private Sub Command4_Click()'Nome del pulsante "SORGENTE DX" Command4.BackColor = vbRed Command3.BackColor = &H8000000F spostamento = HScroll1.Value For X = 0 To 24000 Step 5 r(X) = (1 - ((-1) ^ (Int(100 * Rnd)))) / 2 'genera segnale casuale a 2 stati r(X + 1) = r(X) ' allunga il tempo di ciascun stato r(X + 2) = r(X) r(X + 3) = r(X) r(X + 4) = r(X) Next X For X = 1 To 24000 s(X) = r(X + spostamento) Next End Sub '======================================================================== 'INDICE CON MOUSE CON ROUTINE SULL'OGGETTO FORM Private Sub form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 'Con X ed Y si intendono le coordinate rese dal mouse rispetto l'angolo 'sinistro alto dello schermo 'INDICE DI COLLIMAZIONE PER CAMPO 0-120 Label1.Caption = Int((X - 7600) / 6.25) / 10 'Label2.Caption = 6500 - y 'istruzuione per controllo software End Sub '========================================================================== 'ANALISI DEL SETTORE ESPLORATO Sub command2_click() 'Nome del pulsante "ANALISI" Command2.BackColor = &H8000000F 'ripristina il colore di fondo dopo il click '========================================= 'Posto beta=512 si ha ki=1-1/beta=1-1/512=.998046875 'rif. p18-9) ki = 0.998046875 '========================================== 'CAMPO 0-120 'SINISTRA a = 0 b = 120 For Y = a To b Step passo 'PULIZIA DELLA MATRICE Cs(y) PRIMA DEL CALCOLO cs(Y) = 0 Next Y For Y = a To b Step 1 'calcolo dei 120 punti della funzione di correlazione For X = 1 To 540 cs(Y) = (1 - r(X) Xor s(X + Y)) + cs(Y) * ki 'CALCOLO Cs(y) INTEGRATA Next X 'presentazione video dei 120 segmenti di calcolo correlazione semisettore sinistra Line (100 + 12.5 * (-Y * 10 + 1200) / 2, 6000)-(100 + 12.5 * (-Y * 10 + 1200) / 2, 6500 - 10 * cs(Y)), &HFF0000 Next Y 'DESTRA For Y = a To b Step 1 'PULIZIA DELLA MATRICE Cd(y) PRIMA DEL CALCOLO cd(Y) = 0 Next Y For Y = a To b Step 1 For X = 1 To 540 cd(Y) = (1 - s(X) Xor r(X + Y)) + cd(Y) * ki 'CALCOLO C(y) INTEGRATA Next X 'presentazione video dei 120 segmenti di calcolo correlazione semisettore destra Line (7600 + 125 * Y / 2, 6000)-(7600 + 125 * Y / 2, 6500 - 10 * cd(Y)), &HFF0000 Next Y End Sub '================================================================== Private Sub HScroll1_Scroll() 'Nome oggetto "impostazione ritardo simulato" Label16.Caption = HScroll1.Value End Sub