-1

我使用 Datalogic 公司的 GD4430 手持式扫描仪和随附的 OPOS 驱动程序。使用以下代码,我设法解决了扫描仪问题。当我启动程序时,扫描仪将变为活动状态,您可以进行扫描。但我无法在 TextBox 中显示结果。

有谁看到错误在哪里?

视觉工作室 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;
    }

  }
}
4

1 回答 1

1

AxOPOSScanner1.BeginInit() 的处理原来不是在Form1.Designer.cs 中而不是这里吗?
(我假设源文件名是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 无关,但 PowerNotify 设置必须在 DeviceEnabled = true 之前完成。

于 2018-07-24T13:20:24.193 回答