Differenze tra le versioni di "Leggere codici a barre con una webcam mediante il Componente gb.media"
Da Gambas-it.org - Wikipedia.
(Una versione intermedia di uno stesso utente non è mostrata) | |||
Riga 1: | Riga 1: | ||
Il Componente gb.media offre la possibilità di leggere codici a barre mediante una webcam. | Il Componente gb.media offre la possibilità di leggere codici a barre mediante una webcam. | ||
− | Di seguito mostriamo un codice utile a detto scopo, usando | + | Di seguito mostriamo un codice utile a detto scopo, usando le Classi ''MediaPipeline'' e ''MediaControl'' del Componente gb.media. |
Fasi necessarie: | Fasi necessarie: | ||
Riga 34: | Riga 34: | ||
Public Sub Form_Open() | Public Sub Form_Open() | ||
− | Dim src, zbr, snk As MediaControl | + | Dim src, con, zbr, snk As MediaControl |
pl = New MediaPipeline As "Pipeline" | pl = New MediaPipeline As "Pipeline" | ||
src = New MediaControl(pl, "v4l2src") | src = New MediaControl(pl, "v4l2src") | ||
+ | con = New MediaControl(pl, "videoconvert") | ||
zbr = New MediaControl(pl, "zbar") | zbr = New MediaControl(pl, "zbar") | ||
snk = New MediaControl(pl, "xvimagesink") | snk = New MediaControl(pl, "xvimagesink") | ||
− | src.LinkTo(zbr) | + | src.LinkTo(con) |
+ | con.LinkTo(zbr) | ||
zbr.LinkTo(snk) | zbr.LinkTo(snk) | ||
Versione attuale delle 14:25, 27 apr 2023
Il Componente gb.media offre la possibilità di leggere codici a barre mediante una webcam.
Di seguito mostriamo un codice utile a detto scopo, usando le Classi MediaPipeline e MediaControl del Componente gb.media.
Fasi necessarie:
- collegare una webcam al computer;
- lanciare il codice;
- avvicinare (...non troppo) il codice a barre alla webcam, cercando (...con pazienza) la distanza e l'inclinazione ottimali.
Private pl As MediaPipeline Private tb As ToggleButton Private drar As DrawingArea Public Sub _new() With Me .W = 600 .H = 600 End With drar = New DrawingArea(Me) drar.Background = Color.Transparent With tb = New ToggleButton(Me) As "Tasto" .X = 500 .Y = 550 .W = 80 .H = 40 .Text = "Avvia" End With End Public Sub Form_Open() Dim src, con, zbr, snk As MediaControl pl = New MediaPipeline As "Pipeline" src = New MediaControl(pl, "v4l2src") con = New MediaControl(pl, "videoconvert") zbr = New MediaControl(pl, "zbar") snk = New MediaControl(pl, "xvimagesink") src.LinkTo(con) con.LinkTo(zbr) zbr.LinkTo(snk) snk.SetWindow(drar) End Public Sub Tasto_Click() If tb.Value Then pl.Play() tb.Text = "Chiudi" Else pl.Stop() pl.Close() Me.Close Endif End Public Sub Pipeline_Event(Message As MediaMessage) Dim b As Byte If Message.Name = "barcode" Then For b = 1 To Message.count - 1 With Message Print .Keys[b], Message[.Keys[b]], End With Next Print Endif End