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...
4 commenti ( 31286 letture )   |  permalink   |  $star_image$star_image$star_image$star_image$star_image ( 3 / 5 )

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 ( 376 letture )   |  permalink   |  $star_image$star_image$star_image$star_image$star_image ( 2 / 3 )

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...
commenta ( 195 letture )   |  permalink   |  $star_image$star_image$star_image$star_image$star_image ( 3 / 250 )

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 ( 656 letture )   |  permalink   |  $star_image$star_image$star_image$star_image$star_image ( 3 / 598 )

Manipolazione delle stringhe in REXX 
Wednesday, 15 August 2012, 15:12 - Informatica, Programmazione, Programmazione strutturata, Linguaggi, REXX
Postata da Daniels118
Dividere una stringa in sottostringhe

split: /* (string, sep, stem[, limit]) */
  $sep = escape(arg(2), "'", "'")
  $l = cequ(arg(4, "E"), arg(4), -1)
  if $l = 1 then do
    $w = arg(1)
    $s = ""
  end
  else interpret "parse value arg(1) with $w'"$sep"'$s"
  $i = 1
  interpret arg(3)".$i=$w"
  do while $s <> ""
    $l = $l - 1
    if $l = 1 then do
      $w = $s
      $s = ""
    end
    else interpret "parse var $s $w'"$sep"'$s"
    $i = $i + 1
    interpret arg(3)".$i=$w"
  end
  interpret arg(3)".0=$i"
return 1



Eseguire l'escape dei caratteri

escape: procedure /* (string, chars, escape) */
  s = arg(1)
  sc = cequ(arg(2, "E"), arg(2), "'""\<>")
  ec = cequ(arg(3, "E"), arg(3), "\")
  r = ""
  l = length(s)
  do i = 1 to l
     c = substr(s, i, 1)
     if index(sc, c) > 0 then r = r !! ec
     r = r !! c
  end
return r


Continua...
commenta ( 91 letture )   |  permalink   |  $star_image$star_image$star_image$star_image$star_image ( 2.6 / 63 )


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