当前条码扫描如何输出值?
How can the current barcode scan output the value?
我使用 Datalogic 公司的 GD4430 手持式扫描仪,其中包含 OPOS 驱动程序。使用以下代码,我设法解决了扫描仪问题。当我启动程序时,扫描仪变为活动状态,您可以扫描。但是我无法在 TextBox 中显示结果。
有没有人看出错误在哪里?
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;
}
}
}
源上的 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);
另外:
你应该做的是暂存所有方法的return值,增加一个判断方法是否正常执行的过程,同样是立即读取ResultCode属性设置属性后(可能会出错)添加判断属性设置是否正常的处理
此外,虽然与 DataEvent 无关,但必须在 DeviceEnabled = true 之前完成 PowerNotify 设置。
我使用 Datalogic 公司的 GD4430 手持式扫描仪,其中包含 OPOS 驱动程序。使用以下代码,我设法解决了扫描仪问题。当我启动程序时,扫描仪变为活动状态,您可以扫描。但是我无法在 TextBox 中显示结果。
有没有人看出错误在哪里?
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;
}
}
}
源上的 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);
另外:
你应该做的是暂存所有方法的return值,增加一个判断方法是否正常执行的过程,同样是立即读取ResultCode属性设置属性后(可能会出错)添加判断属性设置是否正常的处理
此外,虽然与 DataEvent 无关,但必须在 DeviceEnabled = true 之前完成 PowerNotify 设置。