vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
WinCE Barcodescanner Events richtig nutzen 
Autor: Jabberwock_v6
Datum: 04.06.18 23:24

Hallo zusammen,

ich stolpere mal gerade mal wieder über ein Problem das mich schon ab und zu mal genervt hat und ich es immer irgendwie (meist unschön) umschifft habe. Jetzt würde ich gerne mal von euch wissen wie es richtig wäre.

Es geht um ein mobiles Gerät das einen Barcodeimager verbaut hat.

Es werden in der Form.Load Eventhandler angelegt.
Ein Event ist z.B. wenn ein Code gelesen wurde. Dann prüfe ich meistens auf Gültigkeit und schreibe den in eine Textbox.

Das Problem ist jetzt wenn ich ein zweites Fenster öffne und dort auch wieder einen Barcode lese dann wird das Event auf beiden Forms ausgeführt.

Wenn ich den Scanner deaktiviere ist er global aus und geht nirgends mehr.
Ich vermute ich mache da irgendwas total falsch.
Es wäre schön wenn Ihr mir helfen könntet.


 Public Class frm_BTfreig
 
    Private ReadOnly accessLayer As GuiAccessLayer
 
Private Sub frm_BTfreig_Load(ByVal sender As System.Object, ByVal e As _
  System.EventArgs) Handles MyBase.Load
        AddHandler BarcodeDecodingDevice.Instance.NewTypeDecoded, AddressOf _
        Instance_NewTypeDecoded
        AddHandler BarcodeDecodingDevice.Instance.TriggerKeyPressed, AddressOf _
        Instance_TriggerKeyPressed
        AddHandler BarcodeDecodingDevice.Instance.TriggerKeyReleased, AddressOf _
        Instance_TriggerKeyReleased
        AddHandler BarcodeDecodingDevice.Instance.DecodeTimeout, AddressOf _
        Instance_DecodeTimeout
 
 
        Dim settings As DecodingDeviceSettings = _
          BarcodeDecodingDevice.Instance.DecodingDeviceSettings
        settings.RemoveAllDecodingTypes()
 
        Barcode_1D.Code128.MinLength = 8
        Barcode_1D.Code128.MaxLength = 20
        settings.AddDecodingType(Barcode_1D.Code128)
 
        BarcodeDecodingDevice.Instance.DecodingDeviceSettings = settings
        BarcodeDecodingDevice.Instance.Enable()
 
        Me.Button1.Focus()
 
 
 
    End Sub
 
    Private Sub Instance_DecodeTimeout(ByVal source As Object)
        Settings.PlaySystemSound(SystemSound.Exclamation)
        Timeout()
 
 
    End Sub
 
    Private Sub Instance_TriggerKeyReleased(ByVal source As Object)
        BarcodeDecodingDevice.Instance.StartDecoding()
    End Sub
 
    Private Sub Instance_TriggerKeyPressed(ByVal source As Object)
        BarcodeDecodingDevice.Instance.Aim()
 
    End Sub
 
    Private Sub Instance_NewTypeDecoded(ByVal source As Object, ByVal e As _
      HoeftUndWessel.CeLib.Device.IODevices.DecodingDevices.Events.DecodingEven_
      tArgs)
 
        Settings.PlaySystemSound(SystemSound.Ok)
 
        Me.accessLayer.UpdateControlText(Me.Label2, e.DecodedString)
 
    End Sub
 
 
    Private Sub Timeout()
        BarcodeDecodingDevice.Instance.Disable()
        BarcodeDecodingDevice.Instance.Enable()
    End Sub
 
 
 
    Public Sub New()
 
        ' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
        InitializeComponent()
 
        ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf 
        ' hinzu.
        Me.accessLayer = New GuiAccessLayer(Me)
 
    End Sub
 
 
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: WinCE Barcodescanner Events richtig nutzen 
Autor: Jabberwock_v6
Datum: 06.06.18 09:27

Weiß denn niemand was ich falsch mache?
Warum wird das Event auf immer auf jeder Form ausgeführt?
Ich habe die schon umbenannt damit die nicht alle gleich heißen aber das hat auch nichts gebracht.

Der Code ist auf jeder Form identisch!
So wie ich ihn gepostet habe.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: WinCE Barcodescanner Events richtig nutzen 
Autor: Tomahawk
Datum: 06.06.18 14:52

Hallo Jabberwock_v6,

bei mir sind die Zeiten schon etwas her, als ich noch auf Symbol Dolphin 6200 solche Apps proggen musste. Würde es sehr gerne wieder machen.

Kapsel den Inhalt der Subs Instance_TriggerKeyReleased, etc. doch in eine Bedingung "Ist mein Fenster momentan das aktive?". Wenn nicht, wird auch nix unternommen. Ich weiß, dass es hier wieder eine Art der Umschiffung wäre. Aber ich denke, dass der Event-Manager einfach alle informiert, die sich bei ihm für gewisse Events angemeldet haben.
Oder nutze RemoveHandler sobald das Fenster inaktiv (Fokusverlust) wird.

Die Zeit ist der größte Feind des Menschen.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: WinCE Barcodescanner Events richtig nutzen 
Autor: sv00010
Datum: 08.06.18 17:27

Jabberwock_v6 schrieb:
Zitat:


Warum wird das Event auf immer auf jeder Form ausgeführt?
Ich habe die schon umbenannt damit die nicht alle gleich
heißen aber das hat auch nichts gebracht.

Der Code ist auf jeder Form identisch!
So wie ich ihn gepostet habe.

Wer löst die Events aus?
Wurden die Formulare selber instanziert (mit New usw.) oder als Standardinstanz verwendet ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: WinCE Barcodescanner Events richtig nutzen 
Autor: Jabberwock_v6
Datum: 22.06.18 11:37

Hallo Tomahawk,

vielen Dank für den Tipp,
ich hatte halt gehofft das es ein "richtige" Lösung gibt.
Aber vielleicht ist das Problem halt auch zu Speziell.

Schöne Grüße
Jabberwock
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel