Newsgroup: it.comp.programmare
Titolo: Idee per il seguente problema ?

Espongo il mio problema cosi ci capiamo.
Supponiamo avere un'applicazione gestionale sviluppata in Visual c#.
Mi piacerebbe che ogni qualvolta l'operatore passi lo scanner su un 
prodotto, se non è già aperta la form di vendita prodotti la apra e 
aggiunga quel prodotto alla datagridview della form.
Una complicanza in più potrebbe essere che se ho 2 scanner diversi 
allora è possibile aprire 2 form diverse che popolano le rispettive 
datagrid con prodotti pervenuti dai rispettivi scanner.
Spero di essere stato chiaro.
Un'altra cosa. Questo meccanismo deve essere controllato, nel senso che 
posso utilizzare lo scanner per caricare i codici a barre di un 
determinato prodotto per archiviarlo.
Lo so che è tutto complicato e spiegato cosi cosi ma è il mio problema.
L'applicazione mi serve a livello familiare quindi ho tutto il tempo per 
implementarla.
Attendo fiducioso nuovi input anche perchè mi muovo in un campo che non 
è il mio.
Grazie e buon lavoro.

 determinato prodotto per archiviarlo.
Non ho capito. Che cosa intendi dire per "controllato"?
Leggi un codice a barre e ti si apre la maschera con la scheda del
prodotto selezionato.
Intendi forse dire che se il codice non c'e' allora ti si deve aprire la
maschera di inserimento di una nuova scheda?
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Roberto Montaruli ha scritto:

Hai ragione, forse sono stato un pò superficiale nell'esporre il problema.
Cerco di rispiegarti i 2 punti non chiari:
L'obiettivo è lavorare in multithreading:
Se ci sono n commessi con n lettori a barre:
Ciascuno di loro gestisce una form di inserimento prodotti per i fatti 
suoi senza che un prodotto caricato dal lettore 2 vada a finire nella 
form gestita dal lettore 1 etc etc.
Non so se chiaro.
Ti faccio un esempio con 2 lettori di codici a barre LET1 e LET2:
Time1:
LET1 carica PROD1;--> Si apre istanza FRM1 di FORM1 che carica PROD1
Time2:
LET1 carica PROD2;--> in  FRM1 si carica PROD2 (PROD1; PROD2)
Time3:
LET2 carica PROD1; ------> Si apre ist.  FRM2 si carica PROD1
Time4:
LET1 carica PROD3; ------> in FRM1 si carica PROD3 (PROD1;PROD2;PROD3)
etc.etc.
Spero di essere stato + chiaro.
Salve e buon lavoro.


Ma non hai chiarito come sono fisicamente collegati gli "scanner" ad
un singolo computer...
Per il resto e' evidente che ciascuna form deve sapere da quale
scanner gli arrivano i dati (ecco perche' e' importante sapere come
sono collegati)
Se ad esmpio fossero collegati via seriale potresti avere :
Scanner1 su Com1
Scanne2 su Com2
Di conseguenza quando crei l'istanza FRM1 di Form1 gli dici che deve
leggere i dati da com1, quando crei l'istanza FRM1 di Form1 gli
indichi la Com2.
In questo modo ogni istanza si preoccupa dei dati che provengono solo
dalla giusta com.
ciao
S

 LET1 carica PROD3; ------> in FRM1 si carica PROD3 (PROD1;PROD2;PROD3)
Se non si deve interagire sulla form, non e' neppure necessario che si apra.
Pero' lo sai tu che cosa devi fare quando hai acquisito il numero di 
codice a barre: se non ce lo spieghi e' dura.

 codice il server fa quello che deve fare.
Il processo in ascolto lo devo progettare io ? fa parte già del lettore ?


 Il processo in ascolto lo devo progettare io ? fa parte già del lettore ?
I lettori che conoscevo io, quelli per porta seriale, si collegavano alla
seriale e quando passavi sopra un codice a barre questi mandavano alla
seriale i dati.
Quindi c'era da scrivere un banale programmino che apriva la seriale e
restava in ascolto dei dati in arrivo e quando arrivavano li processava.
Quelli che invece si collegavano tra la tastiera e il computer, quando
passavi su un codice a barre, inviavano la sequenza del codice come se
fosse stata digitata da tastiera, e c'era un programma di configurazione
che permetteva di far inviare al lettore una sequenza di prefisso, in modo
che l'applicazione che sta in attesa di un tasto, riconoscendo il
prefisso, sa che sta per arrivare il codice a barre e quindi si comporta
di conseguenza.
Per quanto riguarda l'USB, concettualmente non cambia molto: il programma
resta in ascolto anche sulla USB, e quando arriva qualcosa, si comporta di
conseguenza.
Come ho detto qualche riga sopra, pero', io non ho idea di come si faccia
a leggere una porta USB: non l'ho mai fatto.
Magari e' una sciocchezza, ma al momento non lo so fare.


Roberto Montaruli ha scritto:

Grazie della risposta.

 la condivisione di una stessa postazione.
Questo non e' necessariamente vero.
Se il tipo di lavoro lo consente, gli operatori possono avere ciascuno
una Form dedicata ed a turno inseriscono i dati e validano.
Tipo per intenderci i salumieri/macellai che hanno una sola bilancia
ma servono in due al banco.
Per il discorso Lettori USB gli unici che conosco vanno in emulazione
tastiera e quindi non si possono usare due o piu' lettori come
vorrebbe Hinoki.
ciao
S

SergioC ha scritto:

Ti spiego come ho in mente di fare funzionare il mecccanismo.
L'applicazione viene caricata e posto nella traybar.
L'applicazione si compone di una form per caricare i prodotti che un 
cliente acquista.
Quando l'operatore passa il lettore nel codice a barra del prodotto cosa 
deve succedere ?
1) Viene caricato il form (se già non è caricato).
2) nella 1a cella della 1a riga di una datagrid presente nella form si 
carica il codice a barre.
In base al codice a barre vengono caricati i dati del prodotto.
Cosi via con gli altri prodotti.
Alla fine l'operatore conferma ed esce lo scontrino dalla cassa.
Spero di avere reso l'idea.
Vi sembra irraggiungibile questo obiettivo ?
Attendo fiducioso risposta.


Fattibilissimo... se sai programmare ;)
Se i lettori sono seriali in pratica dovrai avere un processo per ogni
porta seriale che gestisce le operazioni del singolo operatore.
Resta sempre da verificare che l'operatore 1 non faccia danni con la
tastiera alla lista dell'operatore 2
ciao
S

 tastiera alla lista dell'operatore 2
E qui la vedo molto, molto dura, soprattutto quando il tutto diventera' 
operativo, con clienti in coda, etc etc...
Senza contare che se per qualche motivo dovesse capitare un blocco, si 
blocca tutto: entrambi gli operatori sono fermi.

Hinoki ha scritto:

Grazie delle dritte: Mi sono molto utili per pianificare il tutto.