Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# windows 7 vb.net中的pos for.net_C#_Vb.net_Barcode_Barcode Scanner_Motorola - Fatal编程技术网

C# windows 7 vb.net中的pos for.net

C# windows 7 vb.net中的pos for.net,c#,vb.net,barcode,barcode-scanner,motorola,C#,Vb.net,Barcode,Barcode Scanner,Motorola,我正在使用microsoft POS for.net dll,我正在将此部分从用c#编写的HOL示例条形码阅读教程转换为vb.net 编辑:设备列表显示,弹出窗口显示(按下激活按钮并测试扫描仪输入),但txteventhistory即使在使用扫描仪模拟器时也未更新,我怀疑上述部分是罪魁祸首。谢谢你的回复 { Action<string> updateEventHistoryAction = new Action<string>(p => { txtE

我正在使用microsoft POS for.net dll,我正在将此部分从用c#编写的HOL示例条形码阅读教程转换为vb.net

编辑:设备列表显示,弹出窗口显示(按下激活按钮并测试扫描仪输入),但txteventhistory即使在使用扫描仪模拟器时也未更新,我怀疑上述部分是罪魁祸首。谢谢你的回复

{
        Action<string> updateEventHistoryAction = new Action<string>(p => { txtEventHistory.Text = p; });
        txtEventHistory.Invoke(updateEventHistoryAction, newEvent);
    }
我试着把它转换成,但我想不是很好

Private Sub activeScanner_DataEvent(sender As Object, e As DataEventArgs)
    UpdateEventHistory("Data Event")
       Dim encoder As New ASCIIEncoding()
          Try
        ' Display the ASCII encoded label text
        Dim data As String = encoder.GetString(activeScanner.ScanDataLabel)
            Dim updateScanDataLabelAction append As New Action(Of String))
               txtEventHistory.Invoke(updateEventHistoryAction, newEvent)
               txtScanDataType.Invoke(updateScanDataTypeLabelAction, dataType)

        ' re-enable the data event for subsequent scans
        activeScanner.DataEventEnabled = True
    Catch generatedExceptionName As PosControlException
            ' Log any errors
            UpdateEventHistory("DataEvent Operation Failed")
      End Try
    End Sub

Private Sub p(ByVal text As String)
            txtScanDataType.Text = text
    End Sub
这是全部代码

Imports Microsoft.PointOfService
Imports System.Collections
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms

Namespace POS
    Partial Public Class ScannerLab
        Inherits Form
        Private explorer As PosExplorer
        Private scannerList As DeviceCollection
        Private scannerList1 As DeviceCollection
        Private activeScanner As Scanner

    Public Sub New()
        InitializeComponent()
    End Sub

    Private Sub ScannerLab_Load(ByVal sender As Object, ByVal e As EventArgs)handles mybase.load
        explorer = New PosExplorer()

        scannerList1 = explorer.GetDevices()
        bsdevices.DataSource = scannerList1
        cboDevices.DisplayMember = scannerList1.ToString()

        scannerList = explorer.GetDevices(DeviceType.Scanner)
        devicesBindingSource.DataSource = scannerList
        lstDevices.DisplayMember = scannerList.ToString()
    End Sub

    Private Sub btnActivateDevice_Click(ByVal sender As Object, ByVal e As EventArgs) handles btnActivateDevice.Click
        If lstDevices.SelectedItem IsNot Nothing Then
            ActivateScanner(DirectCast(lstDevices.SelectedItem, DeviceInfo))
        End If
    End Sub

    Private Sub reportFailure()
        Throw New Exception("The method or operation is not implemented.")
    End Sub

    Private Sub ActivateScanner(ByVal selectedScanner As DeviceInfo) 
        'Verifify that the selectedScanner is not null
        ' and that it is not the same scanner already selected
        If selectedScanner IsNot Nothing AndAlso Not selectedScanner.IsDeviceInfoOf(activeScanner) Then
            ' Configure the new scanner
            DeactivateScanner()

            ' Activate the new scanner
            UpdateEventHistory(String.Format("Activate Scanner: {0}", selectedScanner.ServiceObjectName))
            Try
                activeScanner = DirectCast(explorer.CreateInstance(selectedScanner), Scanner)
                activeScanner.Open()
                activeScanner.Claim(1000)
                activeScanner.DeviceEnabled = True
                AddHandler activeScanner.DataEvent, AddressOf activeScanner_DataEvent
                AddHandler activeScanner.ErrorEvent, AddressOf activeScanner_ErrorEvent
                activeScanner.DecodeData = True
                activeScanner.DataEventEnabled = True
            Catch generatedExceptionName As PosControlException
                ' Log error and set the active scanner to none
                UpdateEventHistory(String.Format("Activation Failed: {0}", selectedScanner.ServiceObjectName))
                activeScanner = Nothing
            End Try
        End If
    End Sub

    Private Sub DeactivateScanner()
        If activeScanner IsNot Nothing Then
            ' We have an active scanner, lets log that we are
            ' about to close it.
            UpdateEventHistory("Deactivate Current Scanner")

            Try
                ' Close the active scanner
                activeScanner.Close()
            Catch generatedExceptionName As PosControlException
                ' Log any error that happens
                UpdateEventHistory("Close Failed")
            Finally
                ' Don't forget to set activeScanner to null to
                ' indicate that we no longer have an active
                ' scanner configured.
                activeScanner = Nothing
            End Try
        End If
    End Sub

    Private Sub activeScanner_DataEvent(ByVal sender As Object, ByVal e As DataEventArgs)
        UpdateEventHistory("Data Event")
        Dim encoder As New ASCIIEncoding()

        Try
            ' Display the ASCII encoded label text
            Dim data As String = encoder.GetString(activeScanner.ScanDataLabel)
            Dim updateScanDataLabelAction As New Action(Of String)(AddressOf p)
            txtScanDataLabel.Invoke(updateScanDataLabelAction, data)

            ' Display the encoding type
            Dim dataType As String = activeScanner.ScanDataType.ToString()
            Dim updateScanDataTypeLabelAction As New Action(Of String)(AddressOf p)

            txtScanDataType.Invoke(updateScanDataTypeLabelAction, dataType)

            ' re-enable the data event for subsequent scans
            activeScanner.DataEventEnabled = True
        Catch generatedExceptionName As PosControlException
            ' Log any errors
            UpdateEventHistory("DataEvent Operation Failed")
        End Try
    End Sub
    Private Sub p(ByVal text As String)
        txtScanDataType.Text = text

    End Sub
    Private Sub q(ByVal text As String)
        txtScanDataType.Text = text

    End Sub
    Private Sub UpdateEventHistory(ByVal newEvent As String)
        If txtEventHistory.InvokeRequired Then
            Dim updateEventHistoryAction As New Action(Of String)(AddressOf q)


            txtEventHistory.Invoke(updateEventHistoryAction, newEvent)
        Else
            txtEventHistory.Text = (Convert.ToString(newEvent) & System.Environment.NewLine) + txtEventHistory.Text
        End If
    End Sub

    Private Sub activeScanner_ErrorEvent(ByVal sender As Object, ByVal e As DeviceErrorEventArgs)
        UpdateEventHistory("Error Event")

        Try

            ' re-enable the data event for subsequent scans

            activeScanner.DataEventEnabled = True

        Catch generatedExceptionName As PosControlException
            ' Log any errors
            UpdateEventHistory("ErrorEvent Operation Failed")
        End Try
    End Sub

编辑:更新了代码

为什么您认为问题出在“activeScanner\u DataEvent”方法上?根据您的错误描述,问题应该与“ScannerLab_Load”方法有关。是的,您是正确的。组合框和listview被分配了一个类似于c#中的数据源,但仍然没有将ScannerLab#Load方法中的“scannerList”和“lstDevices”处理方式与练习2步骤8中的代码片段进行比较。在您链接的教程中。我将scannerlist更改为arraylist并对其进行了编辑,但没有更改“code”scannerlist=New arraylist(explorer.GetDevices(“扫描仪”))devicesBindingSource.DataSource=scannerlist lstDevices.DataSource=devicesBindingSource lstDevices.DisplayMember=“ServiceObjectName”“code”好的,是时候使用调试器了。在“scannerList=newarraylist(explorer.GetDevices(“Scanner”);”行设置一个断点,然后逐步执行代码。持续监控扫描列表的内容。扫描列表是否包含对象,还是为空?如果它包含对象,它们是否具有名为“ServiceObjectName”的公共属性?如果是,其值是什么?scannerList(分别为devicesBindingSource)是否仍包含分配给lstDevices的对象?DeviceBindingSource对象是否在ScannerLab_Load()方法之外的其他地方使用?
Private Sub activeScanner_DataEvent(sender As Object, e As DataEventArgs)
    UpdateEventHistory("Data Event")
       Dim encoder As New ASCIIEncoding()
          Try
        ' Display the ASCII encoded label text
        Dim data As String = encoder.GetString(activeScanner.ScanDataLabel)
            Dim updateScanDataLabelAction append As New Action(Of String))
               txtEventHistory.Invoke(updateEventHistoryAction, newEvent)
               txtScanDataType.Invoke(updateScanDataTypeLabelAction, dataType)

        ' re-enable the data event for subsequent scans
        activeScanner.DataEventEnabled = True
    Catch generatedExceptionName As PosControlException
            ' Log any errors
            UpdateEventHistory("DataEvent Operation Failed")
      End Try
    End Sub

Private Sub p(ByVal text As String)
            txtScanDataType.Text = text
    End Sub
Imports Microsoft.PointOfService
Imports System.Collections
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms

Namespace POS
    Partial Public Class ScannerLab
        Inherits Form
        Private explorer As PosExplorer
        Private scannerList As DeviceCollection
        Private scannerList1 As DeviceCollection
        Private activeScanner As Scanner

    Public Sub New()
        InitializeComponent()
    End Sub

    Private Sub ScannerLab_Load(ByVal sender As Object, ByVal e As EventArgs)handles mybase.load
        explorer = New PosExplorer()

        scannerList1 = explorer.GetDevices()
        bsdevices.DataSource = scannerList1
        cboDevices.DisplayMember = scannerList1.ToString()

        scannerList = explorer.GetDevices(DeviceType.Scanner)
        devicesBindingSource.DataSource = scannerList
        lstDevices.DisplayMember = scannerList.ToString()
    End Sub

    Private Sub btnActivateDevice_Click(ByVal sender As Object, ByVal e As EventArgs) handles btnActivateDevice.Click
        If lstDevices.SelectedItem IsNot Nothing Then
            ActivateScanner(DirectCast(lstDevices.SelectedItem, DeviceInfo))
        End If
    End Sub

    Private Sub reportFailure()
        Throw New Exception("The method or operation is not implemented.")
    End Sub

    Private Sub ActivateScanner(ByVal selectedScanner As DeviceInfo) 
        'Verifify that the selectedScanner is not null
        ' and that it is not the same scanner already selected
        If selectedScanner IsNot Nothing AndAlso Not selectedScanner.IsDeviceInfoOf(activeScanner) Then
            ' Configure the new scanner
            DeactivateScanner()

            ' Activate the new scanner
            UpdateEventHistory(String.Format("Activate Scanner: {0}", selectedScanner.ServiceObjectName))
            Try
                activeScanner = DirectCast(explorer.CreateInstance(selectedScanner), Scanner)
                activeScanner.Open()
                activeScanner.Claim(1000)
                activeScanner.DeviceEnabled = True
                AddHandler activeScanner.DataEvent, AddressOf activeScanner_DataEvent
                AddHandler activeScanner.ErrorEvent, AddressOf activeScanner_ErrorEvent
                activeScanner.DecodeData = True
                activeScanner.DataEventEnabled = True
            Catch generatedExceptionName As PosControlException
                ' Log error and set the active scanner to none
                UpdateEventHistory(String.Format("Activation Failed: {0}", selectedScanner.ServiceObjectName))
                activeScanner = Nothing
            End Try
        End If
    End Sub

    Private Sub DeactivateScanner()
        If activeScanner IsNot Nothing Then
            ' We have an active scanner, lets log that we are
            ' about to close it.
            UpdateEventHistory("Deactivate Current Scanner")

            Try
                ' Close the active scanner
                activeScanner.Close()
            Catch generatedExceptionName As PosControlException
                ' Log any error that happens
                UpdateEventHistory("Close Failed")
            Finally
                ' Don't forget to set activeScanner to null to
                ' indicate that we no longer have an active
                ' scanner configured.
                activeScanner = Nothing
            End Try
        End If
    End Sub

    Private Sub activeScanner_DataEvent(ByVal sender As Object, ByVal e As DataEventArgs)
        UpdateEventHistory("Data Event")
        Dim encoder As New ASCIIEncoding()

        Try
            ' Display the ASCII encoded label text
            Dim data As String = encoder.GetString(activeScanner.ScanDataLabel)
            Dim updateScanDataLabelAction As New Action(Of String)(AddressOf p)
            txtScanDataLabel.Invoke(updateScanDataLabelAction, data)

            ' Display the encoding type
            Dim dataType As String = activeScanner.ScanDataType.ToString()
            Dim updateScanDataTypeLabelAction As New Action(Of String)(AddressOf p)

            txtScanDataType.Invoke(updateScanDataTypeLabelAction, dataType)

            ' re-enable the data event for subsequent scans
            activeScanner.DataEventEnabled = True
        Catch generatedExceptionName As PosControlException
            ' Log any errors
            UpdateEventHistory("DataEvent Operation Failed")
        End Try
    End Sub
    Private Sub p(ByVal text As String)
        txtScanDataType.Text = text

    End Sub
    Private Sub q(ByVal text As String)
        txtScanDataType.Text = text

    End Sub
    Private Sub UpdateEventHistory(ByVal newEvent As String)
        If txtEventHistory.InvokeRequired Then
            Dim updateEventHistoryAction As New Action(Of String)(AddressOf q)


            txtEventHistory.Invoke(updateEventHistoryAction, newEvent)
        Else
            txtEventHistory.Text = (Convert.ToString(newEvent) & System.Environment.NewLine) + txtEventHistory.Text
        End If
    End Sub

    Private Sub activeScanner_ErrorEvent(ByVal sender As Object, ByVal e As DeviceErrorEventArgs)
        UpdateEventHistory("Error Event")

        Try

            ' re-enable the data event for subsequent scans

            activeScanner.DataEventEnabled = True

        Catch generatedExceptionName As PosControlException
            ' Log any errors
            UpdateEventHistory("ErrorEvent Operation Failed")
        End Try
    End Sub