我有两个条形码扫描仪-MC9090和MC9190。最初在MC9090下编写了读取条形码并使用SQL数据库的应用程序。在MC9090上,MS9190上的所有功能均正常运行-问题-无法读取条形码类型I2OF5(长度分别为min-6-max-8)。借助一段代码(在MC9090上)修改默认值(分别为14和10):
myReader.Decoders.I2OF5.MinimumLength = 6;
myReader.Decoders.I2OF5.MaximumLength = 8;
[使用MC9190,我可以读取具有默认参数的I2OF5条形码(分别为14和10),但是我不能读取长度最小= 6,最大= 8的I2OF5条形码。
试图发送这样的完整参数列表(已经在MC9190上发送:]
myReader.Parameters.CodeIdType = CodeIdTypes.None;
myReader.Parameters.ScanType = ScanTypes.Foreground;
myReader.Decoders.I2OF5.MinimumLength = 6;
myReader.Decoders.I2OF5.MaximumLength = 8;
myReader.Decoders.I2OF5.Redundancy = true;
myReader.Decoders.I2OF5.CheckDigitScheme = I2OF5.CheckDigitSchemes.None;
myReader.Decoders.I2OF5.ConvertToEAN13 = false;
myReader.Decoders.I2OF5.ReportCheckDigit = false;
myReader.Actions.SetParameters();
使用这些参数,条形码可以在摩托罗拉的演示应用程序中读取,而在我的应用程序中无法读取。
我确实这样检查:
if (_scnAPI.Reader.Decoders.I2OF5.Enabled == true)
{
if (_scnAPI.Reader.Decoders.I2OF5.MinimumLength == 6)
{
MessageBox.Show("6");
}
if (_scnAPI.Reader.Decoders.I2OF5.MaximumLength == 8)
{
MessageBox.Show("8");
}
if (_scnAPI.Reader.Decoders.I2OF5.Redundancy == true)
{
MessageBox.Show("Redundancy");
}
if (_scnAPI.Reader.Parameters.CodeIdType == Symbol.Barcode.CodeIdTypes.None)
{
MessageBox.Show("CodeType");
}
if (_scnAPI.Reader.Decoders.I2OF5.CheckDigitScheme == Symbol.Barcode.I2OF5.CheckDigitSchemes.None)
{
MessageBox.Show("CheckDigit");
}
if (_scnAPI.Reader.Parameters.ScanType == Symbol.Barcode.ScanTypes.Foreground)
{
MessageBox.Show("foreground");
}
}
else
{
MessageBox.Show("App Exit!");
Application.Exit();
}
所有检查均已通过,但尚不清楚为什么没有读取长度合适的I2OF5条形码?请帮助我找出问题所在。
P.S。我使用Symbol.Barcode库,.NET的Motorola EMDK 2.4。我查看了EMDK 2.4版本与9100系列兼容的规范。
我的经验:Code128条码设置阻止了I2OF5读取。
public FormMain()
{
bcl.OnScan +=new Barcode2.OnScanHandler(bcl_OnScan);
bcl.Config.Decoders.I2OF5.Enabled = true;
bcl.Config.Decoders.CODE128.Enabled = false;
bcl.Config.Decoders.I2OF5.MinLength = 6;
bcl.Config.Decoders.I2OF5.MaxLength = 8;
bcl.Scan();
InitializeComponent();
}
禁用CODE128,启用I2OF5,并设置I2OF5的参数。它对我有用!