Разработвам в C# за устройството Motorola "MC67" и имам проблеми с инициализирането на скенера.
Кодът, който използвам, изглежда е общ, тъй като намерих подобни примери навсякъде в Интернет; за справка ето кода, който ми създава проблеми:
/// <summary>
/// Initialize the reader.
/// </summary>
///
public override bool InitReader()
{
Logger.Instance.Debug("InitReader");
bool result = false;
// Logger.Instance.AddToDebuggerLog("Symbol.InitReader");
// If reader is already present then fail initialize
if (this._MyReader != null)
{
return false;
}
try
{
// Create new reader, first available reader will be used.
this._MyReader = new Symbol.Barcode.Reader();
// Create reader data
this._MyReaderData = new Symbol.Barcode.ReaderData(
Symbol.Barcode.ReaderDataTypes.Text,
Symbol.Barcode.ReaderDataLengths.MaximumLabel);
// Enable reader, with wait cursor
this._MyReader.Actions.Enable();
if ((GetDeviceType() != DeviceTypes.SymbolMC3070) && (GetDeviceType() != DeviceTypes.SymbolMC3090BT))
{
this._MyReader.Parameters.Feedback.Success.BeepTime = 0;
}
else
{
this._MyReader.Parameters.Feedback.Success.BeepTime = 50;
}
SetScannerDecoderTypeToUseWithScanSys();
result = true;
}
catch (Exception ex)
{
// Something has gone wrong Initializing barcode reader etc
// Log Exception
Logger.Instance.Exception("InitReader", ex);
// Ensure reader is Disposed
if (_MyReader != null)
{
try
{
_MyReader.Dispose();
}
catch
{
// Just incase something goes wrong
Logger.Instance.Error("Error Disposing MyReader in InitReader Exception");
}
_MyReader = null;
}
// Ensure ReaderData is Disposed
if (_MyReaderData != null)
{
try
{
_MyReaderData.Dispose();
}
catch
{
// Just incase something goes wrong
Logger.Instance.Error("Error Disposing MyReaderData in InitReader Exception");
}
_MyReaderData = null;
}
// null the EventHandler
_MyEventHandler = null;
}
return result;
}
Проблемът ми е, че когато се извика горният метод, следният ред генерира грешка при изключение:
this._MyReader.Actions.Enable();
Изключението е „OperationFailureException“ и съобщението за грешка споменава „Неуспешно получаване на всички поддържани атрибути: E_SCN_INVALIDIOCTRL“
Сега странното е, че всъщност мога да използвам правилно скенера на устройството, така че мога да сканирам баркодове и да чета данните дори с това изключение, но фактът, че се случва, ме притеснява, така че се опитвам да го предотвратя.
Някой има ли представа защо получавам изключението или някакви предложения за неща, които мога да опитам?