我使用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;
}
}
}
答案 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设置。