Альтернативное событие при нажатии кнопки сканирования на устройстве памяти данных с использованием C # - PullRequest
3 голосов
/ 30 января 2012

Я использую C # 2003 для приложения Datalogic Memor.Я исследовал, что событие KeyPress запускается при нажатии «кнопки сканирования» устройства.Захватил это if(e.KeyChar == 13), но это не работает.Есть ли другая альтернатива для этого?

Ответы [ 2 ]

2 голосов
/ 09 мая 2018

Попробуйте установить Datalogic SDK 2_0_0_0 Вы можете скачать его с сайта Datalogic .

А затем добавить ссылку на API данных:

C:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE\Datalogic.API.dll

Теперь вы можете использовать API следующим образом:

В вашей декларации формы:

private DecodeEvent dcdEvent;
private DecodeHandle hDcd;

В событии загрузки формы:

// Attempt to load a handle to the decoder.

try
{
    hDcd = new DecodeHandle(DecodeDeviceCap.Exists | DecodeDeviceCap.Barcode);
}
catch(DecodeException)
{
    MessageBox.Show("Exception loading barcode decoder.", "Decoder Error");
    return;
}

// Now that we've got a connection to a barcode reading device, assign a
// method for the DcdEvent.  A recurring request is used so that we will
// continue to get barcode data until our dialog is closed.
DecodeRequest reqType = (DecodeRequest)1 | DecodeRequest.PostRecurring;

// Initialize all events possible
//dcdEvent = new DecodeEvent(hDcd, reqType);
dcdEvent = new DecodeEvent(hDcd, reqType, this);
dcdEvent.Scanned += new DecodeScanned(dcdEvent_Scanned);

А это слушатель вашего события:

private void dcdEvent_Scanned(object sender, DecodeEventArgs e)
{
    CodeId cID = CodeId.NoData;
    string dcdData = string.Empty;
    // Obtain the string and code id.
    try
    {
        dcdData = hDcd.ReadString(e.RequestID, ref cID);
    }
    catch(Exception)
    {
        MessageBox.Show("Error reading string!");
        return;
    }

    string result = "Barcode Text: " + dcdData;
    result +=" AND Barcode Code Id : " + cID.ToString();
    MessageBox.Show(result);
}

НА событие закрытия формы:

if(dcdEvent.IsListening)
{
    dcdEvent.StopScanListener();
}

if (hDcd != null)
{
    hDcd.Dispose();
} 
0 голосов
/ 27 сентября 2017

Для Datalogic Memor X3 я использую DLScannerListener следующим образом:

DLScanner Scanner = new DLScanner();
Scanner.init();
Scanner.scanEnable();
Scanner.Listeners += new DLScannerListener(scanner_notify);

Затем я делаю логику внутри метода scanner_notify

private void scanner_notify(DLScannerEvent scannerEvent, DLScanner sender)
{
    //Write your code here
}
...