当前条形码扫描如何输出该值?

时间:2018-07-24 12:04:24

标签: c# opos pointofservice

我使用Datalogic公司的GD4430手持式扫描仪和随附的OPOS驱动程序。通过以下代码,我设法对扫描仪进行寻址。当我启动程序时,扫描仪将变为活动状态,您可以进行扫描。但是我无法在文本框中显示结果。

有人看到错误在哪里吗?

Visual Studio 2010 C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TestRead
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {            
        axOPOSScanner1.BeginInit();
        axOPOSScanner1.Open("USBHHScanner"); 
        axOPOSScanner1.ClaimDevice(0);            
        axOPOSScanner1.DeviceEnabled = true;
        axOPOSScanner1.DataEventEnabled = true;
        axOPOSScanner1.PowerNotify = 1; //(OPOS_PN_ENABLED);
        axOPOSScanner1.DecodeData = true;
    }               

    void axOPOSScanner1_DataEvent(object sender, AxOposScanner_CCO._IOPOSScannerEvents_DataEventEvent e)        
    {                
        textBox1.Text = axOPOSScanner1.ScanDataLabel;
        textBox2.Text = axOPOSScanner1.ScanData.ToString();

        axOPOSScanner1.DataEventEnabled = true;                       
        axOPOSScanner1.DataEventEnabled = true;
    }

  }
}

1 个答案:

答案 0 :(得分:1)

不是最初在Form1.Designer.cs中而不是在此处对源上的AxOPOSScanner1.BeginInit()进行处理吗?
(我假设源文件名为Form1.cs)

如下(在Form1.Designer.cs中):

this.axOPOSScanner1 = new AxOposScanner_CCO.AxOPOSScanner();
((System.ComponentModel.ISupportInitialize)(this.axOPOSScanner1)).BeginInit();
this.SuspendLayout();

由于您将其移至Form1.cs或同时在Form1.Designer.cs和Form1.cs上调用BiginInit(),因此可能出现了问题。

或者,Form1.Designer.cs中不存在以下处理,或者指定的函数名称(axOPOSScanner1_DataEvent)错误。

this.axOPOSScanner1.DataEvent += new AxOposScanner_CCO._IOPOSScannerEvents_DataEventEventHandler(this.axOPOSScanner1_DataEvent);


此外:

您应该做的是临时存储所有方法的返回值,添加一个过程以确定该方法是否正常执行,同样,这是在设置属性后立即读取ResultCode属性(可能导致错误)并添加处理以判断属性设置是否正常完成。

尽管与DataEvent不相关,但必须在DeviceEnabled = true之前完成PowerNotify设置。