2014-02-28 3 views
0

Windows Mobile 6 (컴팩트 프레임 워크 사용)에서 응용 프로그램을 개발 중입니다. 응용 프로그램은 바코드 스캐너를 사용합니다. 메뉴에 키보드 단축키를 구현하고 싶습니다. 사용자가 1을 누르면 첫 번째 메뉴 항목이 열리도록 메뉴에서 키 누르기 이벤트를 구현했습니다. 하지만 내 문제는 응용 프로그램이 메뉴에있는 동안 사용자가 바코드를 스캔하면 스캐너가 읽은 바코드를 가져 와서 키 누르기로 변환한다는 것입니다. 하위 메뉴에서도 키보드 단축키를 구현 했으므로 사용자가 메뉴에서 바코드를 스캔하면 응용 프로그램이 메뉴간에 이동합니다.키보드 단축키가있는 메뉴

나는 100 % 확신 할 수는 없지만 내가 사용하는 장치에는 바코드 리더가 "키보드 쐐기"로되어 있고 사용자가 키보드에서 입력 한 것과 같은 종류의 텍스트를 얻을 수있는 것처럼 보입니다.

이 메뉴에서 키 누름이 구현하는 방법이다 : 나는 그것을 구현하는 여러 가지 방법을 시도했지만 내 문제를 해결하기 위해 관리하지 않은

private void mainList_KeyPress(object sender, KeyPressEventArgs e) 
    { 
      switch (e.KeyChar) 
      { 
       case (char)Keys.D1: 
        productRequestBtn_Click(sender, e); 
        break; 
       case (char)Keys.D2: 
        warehouseBtn_Click(sender, e); 
        break; 
       case (char)Keys.D3: 
        inventoryBtn_Click(sender, e); 
        break; 
       case (char)Keys.D4: 
        ordersBtn_Click(sender, e); 
        break; 
       case (char)Keys.D5: 
        discountBtn_Click(sender, e); 
        break; 
       case (char)Keys.D6: 
        intakeBtn_Click(sender, e); 
        break; 
       case (char)Keys.F1: 
        Close(); 
        break; 
      } 
    } 

.

누군가가 메뉴에 구현 된 키보드 단축키를 변경하거나 바코드 판독기 또는 설명 된 경우에 작동 할 수있는 것을 차단하는 방법을 알고 있다면 정말 고맙겠습니다.

+0

쐐기 모드를 끄고 공급 업체에서 제공 한 바코드 SDK를 사용하여 통합 스캐너를 직접 제어합니다 (스캔 이벤트를 수신합니다). – tcarvin

+0

응용 프로그램이 다른 공급 업체 장치와 작동해야하므로 공급 업체 SDK를 사용할 수 없습니다. – martinv

+0

여러분에게 달려 있지만, 벤더 SDK를 추상화하고 필요한 SDK를 추가하는 것이 가치가 있음을 발견했습니다. 거기에 많은 데이터 수집 장치 공급 업체가 없습니다. 즉, 웨지 모드 사용을 주장하는 경우 @josef가 제안한대로 프리앰블과 포스트 앰블을 사용하십시오. – tcarvin

답변

1

그래, 바코드 스캐너 SDK를 사용하는 것이 가장 좋은 해결책이 될 것입니다.

OEM 특정 제품을 코딩하지 않으려면 키보드 웨지의 위치 및/또는 프리 앰블 설정을 사용하여 문제를 해결할 수 있습니다.

대부분의 쐐기 구현이 스캔 된 데이터 앞뒤에 시퀀스 추가를 지원하지 않는 경우 대부분 프리앰블 및 포스트 앰블이라고 할 수 있습니다. 이 기능을 사용하면 코드를 변경할 수 있습니다. 예를 들어, *로 시작하고 #로 끝나면 무시 및 키 누르기를 할 수 있습니다. 그렇다면 장치의 쐐기 설정에서 *를 포스트 앰블로 * 및 프리앰블로 추가하십시오. 이 기술을 사용하여 바코드 데이터를 확인하고 처리하기 전에 바코드 입력 필드에서 문자를 제거해야합니다.

관련 문제