Motorola MC2180 EMDK-获取扫描数据

问题描述 投票:-1回答:2

我一直在尝试从Motorola MC2180获取扫描数据。我知道这是基本知识,但是我是一个初学者,以前从未接触过PDA。我可以扫描它,但是结果数据仍然为空。我使用以下代码:

    {
    public Symbol.Barcode.Reader SymbolReader = null;
    public Symbol.Barcode.ReaderData SymbolReaderData = null;
    public static System.EventHandler SymbolEventHandler = null;

    /// <summary>
    /// MyReaderData property provides access to the ReaderData 
    /// </summary>
    public Symbol.Barcode.ReaderData MyReaderData
    {
        get { return SymbolReader.GetNextReaderData(); }
    }

    public static System.EventHandler MyEventHandler
    {
        get { return SymbolEventHandler; }
        set { SymbolEventHandler = value; }
    }

    public bool InitScanner()
    {
        try
        {
            SymbolReader = new Symbol.Barcode.Reader();
            SymbolReaderData = new Symbol.Barcode.ReaderData(Symbol.Barcode.ReaderDataTypes.Text, Symbol.Barcode.ReaderDataLengths.MaximumLabel);
            SymbolReader.Actions.Enable();
            SymbolReader.Parameters.Feedback.Success.BeepTime = 0;
            SymbolReader.Parameters.Feedback.Success.WaveFile = "\\windows\\alarm3.wav";
        }

        catch(Exception ex)
        {
            ex.ToString();
        }

        return true;
    }

    public void TermReader()
    {
        try
        {
            if (SymbolReader != null)
            {
                SymbolReader.Actions.Disable();
                SymbolReader.Actions.Dispose();
                SymbolReader = null;
            }
        }
        catch (Exception ex)
        {
            ex.ToString();
        }
    }

    private bool ReadData()
    {
        {
            try
            {
                // Submit a read
                SymbolReader.ReadNotify += SymbolEventHandler;

                // Prevent duplicate reads
                if (!SymbolReaderData.IsPending)
                {
                    SymbolReader.Actions.Read(SymbolReaderData);

                    return true;
                }
                else
                    return false;
            }
            catch (Exception ex)
            {
                ex.ToString();
                return false;
            }
        }
    }

    public string StopRead()
    {
        if (SymbolReader != null)
        {
            try
            {
                // Flush (Cancel all pending reads)
                SymbolReader.ReadNotify -= SymbolEventHandler;
                SymbolReader.Actions.Flush();
                return "Closed";
            }
            catch (Exception ex)
            {
                return ex.ToString();
            }
        }
        else
            return "Already Closed";
    }

    public string ToggleTrigger()
    {
        this.InitScanner();
        SymbolReader.Actions.ToggleSoftTrigger();
        this.ReadData();
        return SymbolReaderData.Text;
    }
}

我尝试使用EMDK支持站点,但由于维护原因,它一直将我拒之门外。

我的主要问题是:1.扫描后获取数据-我不确定它如何解码条形码数据2.如何使扫描仪触发更长的时间?因为我可以使用Barcode2.Config.TriggerMode进行扫描,扫描时间比Barcode.Reader.ToggleSoftTrigger();

我可能需要解释,因为我无法访问EMDK指南,或者文档也无济于事:(

谢谢你! :)

c# visual-studio-2008 barcode-scanner motorola-emdk
2个回答
0
投票

请注意,Zebra Technologies在2014年10月收购了Motorola Solutions企业业务。这就是为什么我在这里谈论Zebra的原因,即使这些设备的商标可能是MotorolaSymbol

您最好的选择是从Zebra Technologies的.NET EMDK中包含的示例应用程序开始,最新的一个是Zebra支持站点上的v2.9。 Here's a direct link to that page

EMDK和独立指南是公共软件,您无需登录即可下载它们。

请记住,要使用EMDK为MC2180编写应用程序,您需要VisualStudio 2005 + SP1或VisualStudio2008。这是支持Windows CE 6.0的Microsoft开发工具的仅有的两个版本。较新版本的Microsoft VisualStudio不支持此操作系统。


0
投票

尝试http://support.symbol.com。您需要从那里下载当前的EMDK并进行安装。有了它,您将获得许多示例,可以在其中尝试不同的事情。另外,已安装的EMDK中还包含一个帮助文件。


0
投票

正如其他示例所提到的,您需要掌握EMDK-在发表此评论时,版本2.9仍是当前版本。

作为类中的示例,您可以尝试以下操作:

class ScanHelper : INotifyPropertyChanged
{
  Barcode2 barcode;
  public event PropertyChangedEventHandler PropertyChanged; 
  public ScanData scanData { get; private set; }  

  public ScanHelper()
  {
    barcode = new Barcode2();
    barcode.OnScan += new Barcode2.OnScanHandler(barcode_OnScan);
  }

  private void barcode_OnScan(ScanDataCollection scanCollection)
  {
    ScanData sData = scanCollection.GetFirst;

    if (sData.Result == Results.SUCCESS)
    {
      scanData = sData;
      NotifyPropertyChanged("ScanData");
    }
  }

  private void NotifyPropertyChanged(string propertyName)
  {
    if (PropertyChanged != null)
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
  }
}

您可以在调用代码中使用上面的类。只需订阅PropertyChanged事件,并在激发它时执行您需要做的一切。请记住使用System.ComponentModelSymbol.Barcode2

© www.soinside.com 2019 - 2024. All rights reserved.