Filtri digitali 
Quella che voglio presentarvi oggi è la mia esperienza fatta nel tentativo (riuscito direi) di realizzare dei filtri digitali, ovvero dei filtri che non sono fatti di componenti elettronici, ma da un algoritmo, implementabili quindi in un pc o in un microcontrollore.

Descrizione


Le notizie che leggerete in questo articolo non sono sconosciute al mondo, semplicemente non sono molto comuni, forse perché quando si sente parlare di analisi di Fourier e numeri immaginari si ci tira subito indietro. Stavolta anche noi comuni mortali che conosciamo poco più delle 4 operazioni riusciremo a capirci qualcosa. Ci tengo a sottolineare che quanto dirò non è tratto da nessun articolo, né deriva da argomenti appresi da qualche parte, l'ho semplicemente "creato" io prima di rendermi conto che qualcuno l'aveva già fatto. Per chi non ha voglia di leggere tutte le formule può andare in fondo alla pagina dove troverà i risultati pronti.

Requisiti


Per comprendere la spiegazione è necessario conoscere la legge di ohm, sapere cos'è un filtro RC, ed avere dimestichezza con le equazioni di primo grado. E' utile avere qualche nozione sul campionamento dei segnali, che mi limiterò a spiegare molto velocemente, per maggiori dettagli vedere qui: campionamento dei segnali.

Considerazioni


Prima di tutto facciamo qualche piccola nota. Un filtro è un'entità capace di trasformare un segnale in un altro, secondo un metodo preciso. Se consideriamo un filtro analogico, esso potrebbe essere un circuito elettronico RC, oppure l'ammortizzatore di un'automobile, mentre se consideriamo un filtro digitale esso è una funzione matematica. Questo non vuol dire che un filtro analogico non possa essere rappresentato da una funzione, anzi, il comportamento dei filtri analogici è proprio la base per costruire i filtri digitali. In elettronica la funzione matematica che descrive il comportamento di un circuito è detta funzione di trasferimento.
Qualunque segnale può essere rappresentato come la successione dei valori che esso assume nel tempo. Per valori si intende l'intensità del segnale (tensione) in un dato istante; per approfondire questo modo rappresentare del segnale, vi rimando alla codifica PCM, che è già ampiamente discussa in rete. Quindi, il nostro filtro sarà una funzione del tipo
Uscita(Tempo)=Funzione(Ingresso(Tempo))

Per semplicità indicheremo i segnali con i nomi che si usano generalmente in elettronica:
vi = segnale in ingresso
vo = segnale in uscita
t = tempo
Continua...
1 commento ( 883 letture )   |  permalink   |  $star_image$star_image$star_image$star_image$star_image ( 3 / 72 )

Lettore di codici a barre a scopo dimostrativo 
Friday, 17 August 2012, 21:01 - Informatica, Programmazione, Programmazione strutturata, Linguaggi, Visual Basic 6, Elettronica, Progetti
Postata da Daniels118
Quello che voglio presentare è un lettore di codice a barre realizzato a scopo dimostrativo come progetto per l'esame di stato.

Descrizione


Il lettore di codici a barre è uno di quelli classici a penna (i più economici e lenti) che devono essere passati sopra il codice da un lato all'altro. La lettura avviene tenendo premuto un pulsante e le barre convertite in segnali elettrici vengono inviate al computer tramite un collegamento USB; il lettore è dotato anche di un LED che segnala l'esito della lettura.

Com'è fatto il codice a barre


Un codice a barre è una sequenza di linee di spessore diverso che codificano un valore. Nel nostro caso le barre hanno solo 2 spessori: le barre strette valgono 0, quelle larghe 1.
Per decodificare le barre si utilizza un sistema di numerazione posizionale pesato, nel nostro caso quello binario. Ciascuna cifra ha un peso che dipende dalla posizione che occupa.
Il valore del codice è dato dalla somma dei valori delle cifre, moltiplicata ciascuna per il suo peso.

Continua...
2 commenti ( 14226 letture )   |  permalink   |  $star_image$star_image$star_image$star_image$star_image ( 2.9 / 330 )

Ottenere informazioni sul job in C 
Wednesday, 15 August 2012, 16:21 - Informatica, Programmazione, Programmazione strutturata, Linguaggi, C, Mainframe
Postata da Daniels118
Questo modulo scritto in C, consente di ottenere informazioni sul job in esecuzione. Le informazioni disponibili sono:
- jobid;
- jobname;
- stepname;
- procstepname;
- cpuid (Lpar);
- userid;
- lista dd e dataset concatenati

Esempio di utilizzo

#include <jobinfo>

int main(int argc, char **argv) {
char s[16];
  getCurUserId(s);
  printf("USERID:   %s\n", s);
  getCurJobId(s);
  printf("JOBID:    %s\n", s);
  getCurJobName(s);
  printf("JOBNAME:  %s\n", s);
  getCurStepName(s);
  printf("STEPNAME: %s\n", s);
  getCurProcStepName(s);
  printf("PROCSTEP: %s\n", s);
  getCurCpuId(s);
  printf("CPUID:    %s\n", s);
}


Continua...
commenta ( 143 letture )   |  permalink   |  $star_image$star_image$star_image$star_image$star_image ( 2.9 / 75 )

Gestire lo spool in REXX 
Wednesday, 15 August 2012, 16:10 - Informatica, Programmazione, Programmazione strutturata, Linguaggi, REXX, Mainframe
Postata da Daniels118
Queste routine consentono un facile accesso allo spool tramite l'interfaccia SDSF.
La prima operazione da eseguire è quella di richiamare la routine initIsf che inizializza l'interfaccia ISF. A questo punto è possibile utilizzare la routine findJoblogs specificando il prefisso del job che ci interessa ed eventualmente le colonne che vogliamo selezionare. La routine restituisce il numero di joblog trovati e valorizza degli stem con lo stesso nome delle colonne con i dati ottenuti; viene inoltre creato uno stem denominato "token.", che contiene un identificativo necessario per ottenere informazioni sul sysout. Per ottenere il sysout bisogna richiamare la funzione getJoblog, specificando il token relativo al joblog e il nome di uno stem in cui inserire i dati (sottoforma di stringa, senza punto finale). Volendo ottenere invece il sysout di una DD specifica, è necessario richiamare la funzione getJoblogDD, specificando come argomenti il token, il nome della DD e il nome dello stem di output.
Prima di terminare il programma è bene chiudere l'interfaccia ISF richiamando la routine termIsf.

Esempio di utilizzo:
Questo programma stampa il sysout di tutti i job chiamati "PROVA":

/* REXX */
  call initIsf
  n = findJoblogs('PROVA')
  say n' jobs found'
  do i = 1 to n
    say 'JOB: 'jname.i
    call getJoblog token.i 'jl'
    do j = 1 to jl.0
      say jl.j
    end
    say ''
  end
  call termIsf
exit 0


Continua...
1 commento ( 228 letture )   |  permalink   |  $star_image$star_image$star_image$star_image$star_image ( 2.9 / 72 )

Gestione degli stem in REXX 
Wednesday, 15 August 2012, 15:40 - Informatica, Programmazione, Programmazione strutturata, Linguaggi, REXX
Postata da Daniels118
Rimuovere e restituire N elementi da una determinata posizione

aRemove: /* (src, index, cnt, dst) */
  $sc = value(arg(1)".0")
  $cnt = arg(3)
  $si = arg(2)
  if $si + $cnt - 1 > $sc then $cnt = $sc - $si + 1
  do $di = 1 to $cnt
    interpret arg(4)".$di="arg(1)".$si"
    $si = $si + 1
  end
  $di = arg(2)
  do $si = arg(2) + $cnt to $sc
    interpret arg(1)".$di="arg(1)".$si"
    $di = $di + 1
  end
  do $i = $sc - $cnt + 1 to $sc
    interpret "drop "arg(1)".$i"
  end
  $sc = $sc - $cnt
  interpret arg(1)".0=$sc"
  interpret arg(4)".0=$cnt"
return $sc


Continua...
commenta ( 443 letture )   |  permalink   |  $star_image$star_image$star_image$star_image$star_image ( 2.9 / 283 )


<<Prima <Indietro | 1 | 2 | 3 | Altre notizie> Ultima>>