Leggere codici a barre con una webcam mediante il Componente gb.media

Da Gambas-it.org - Wikipedia.

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