次の手順でバーコードリーダの設定と起動・停止を行うことにより、AM_ExecMenu関数でバーコードを読み取り、AMENU_BARCODE_READイベントを受け取ることができます。
  1. AM_BarcodeBuffer構造体を定義し、読み取ったバーコードデータを格納するためのバッファを指定しておきます。
    サンプル
        char barcodebuff[13+1];
        AM_BarcodeBuffer buffer;
    
        buffer.dataBuf = barcodebuff;
        buffer.dataBufLength = sizeof(barcodebuff);
    

  2. AM_ConfigBarcodeReader関数を呼び出して、上記のAM_BarcodeBuffer構造体の情報とバーコードリーダの初期化コマンドをメニューリソースに登録します。
    サンプル
        hMenu = AM_CreateMenu(Task1MenuTable, (const pAM_Option)&TaskOption);
    
        // Set option commands
        //  B0:  Disable all symbology
        //  R1:  Enable UPC
        //  R4:  Enable EAN/JAN
        AM_ConfigBarcodeReader(hMenu, &buffer, "B0R1R4");
    

  3. AM_EnableBarcodeReader関数を呼び出して、バーコードの読み取りを許可します。
    サンプル
        AM_ShowMenu(hMenu, AM_SELECT_NO_ID);
        AM_EnableBarcodeReader(hMenu);
    

  4. バーコードの読み取りが許可されている場合、AM_ExecMenu関数で入力を待機している間に[SCAN]キーが押されるとバーコードの読み取りを開始します。

  5. バーコードの読み取りが成功したらAM_ExecMenu関数がAMENU_BARCODE_READイベントを返します。

  6. このイベントを受け取ったら、いったんAMenu_AM_DisableBarcodeReader関数でバーコードリーダを停止させます。

  7. 読み取ったバーコードデータの処理が終了し、引き続きバーコードを読み取る場合は、再びAM_EnableBarcodeReader関数を呼び出して次のバーコードの読み取りを許可します。
    サンプル
        while(1){
            event = AM_ExecMenu(hMenu);
            // Waiting scan
            if (event == AMENU_BARCODE_READ){
                AM_DisableBarcodeReader(hMenu);
                // Got result
                AM_SetText(hMenu, TASK1_ID_RESULT, barcodebuff);
                AM_EnableBarcodeReader(hMenu);
                continue;
            }else if (event == CLR_KEY){
                //Exit
                break;
            }
        }
    

  8. バーコードを読み取りを停止する場合は、AMenu_AM_DisableBarcodeReader関数を呼び出します。

サンプル

    ...

void task1(void)
{
    MENU_HANDLE hMenu;
    int event;
    char barcodebuff[13+1];
    AM_BarcodeBuffer buffer;

    buffer.dataBuf = barcodebuff;
    buffer.dataBufLength = sizeof(barcodebuff);

    hMenu = AM_CreateMenu(Task1MenuTable, (const pAM_Option)&TaskOption);

    // Set option commands
    //  B0:  Disable all symbology
    //  R1:  Enable UPC
    //  R4:  Enable EAN/JAN
    AM_ConfigBarcodeReader(hMenu, &buffer, "B0R1R4");

    AM_ShowMenu(hMenu, AM_SELECT_NO_ID);
    AM_EnableBarcodeReader(hMenu);

    while(1){
        event = AM_ExecMenu(hMenu);
        // Waiting scan
        if (event == AMENU_BARCODE_READ){
            AM_DisableBarcodeReader(hMenu);
            // Got result
            AM_SetText(hMenu, TASK1_ID_RESULT, barcodebuff);
            AM_EnableBarcodeReader(hMenu);
            continue;
        }else if (event == CLR_KEY){
            //Exit
            break;
        }
    }
    AM_DisableBarcodeReader(hMenu);

    AM_ReleaseMenu(hMenu);
    return;
}

関連事項

最終更新日:2020/10/12