문제

기호 LS2208 바코드 스캐너가 있으며 Linux 상자 (Kubuntu 8.10 Intrepid IBEX)에서 확인합니다. 바코드를 스캔 할 때마다 스캐너 (USB 포트에 연결됨)는 텍스트 관리자가있는 곳으로 판독 값을 보냅니다. 스캐너에서 응용 프로그램의 특정 위젯으로 모든 판독 값을 리디렉션하고 싶습니다 (예 : 텍스트 편집 제어). 어떻게하니? QT GUI 라이브러리와 함께 C ++를 사용하지만 모든 언어 또는 GUI 라이브러리에서 환영합니다.

도움이 되었습니까?

해결책

답을 모르지만 다음은 귀하의 옵션이 무엇인지 알아내는 몇 가지 제안이 있습니다.

  1. qcoreapplication :: instance ()에 이벤트 필터를 설치하십시오 (또는 QcoreApplication :: notify ()).
  2. 이벤트 필터 핸들러에서 유용한 것을 찾고있는 각 이벤트를 출력합니다.

    void eventFilter(QObject *obj, QEvent *evt) {
        qDebug() << obj << evt;
    }
    
  3. 디버그 출력을 검사하여 스캐너에서 트리거되는 이벤트를 결정하십시오.

qdebug ()는 사실상 모든 유형을 이해하고 키보드 이벤트 또는 다른 무언가로 들어오는 지 알 수있는 합리적인 출력을 제공해야합니다.

다른 팁

대부분의 바코드 스캐너는 키보드 웨지라고도합니다. 키보드로 기능하고 키를 이벤트 스트림으로 밀어 넣어 키보드와 구별 할 수없는 것입니다. 이것은 가장 큰 호환성을 만듭니다.

많은 USB 바코드 스캐너는 자신을 숨겨진 엔드 포인트로 게시 한 다음 모든 의도와 목적을 위해 키보드입니다.

많은 스캐너가 바코드 데이터 주위에 접두사와 접미사를 뿌릴 수 있도록 구성 가능합니다. 이를 테스트 할 수 있으면 문자열을 올바른 위치로 보냅니다. 이것은 스캐너를 메타 프로 그램으로 만들어야한다는 점에서 적합하지 않습니다. 일반적으로 이것은 특별한 바코드 세트로 이루어집니다. 다음은 매뉴얼에 대한 링크입니다 스캐너를 위해. 249 페이지에는 접두사와 접미사를 메타 프로 그램을위한 바코드가 있습니다.

HID 이벤트의 클라이언트가되는 방법을 알아 내고 원하는 곳에 스캐너 이벤트를 리디렉션 할 수 있습니다. 나는 Linux에서 이것을 시도한 적이 없습니다. Windows와 OS 9 Era Mac 모두에 고통이 있습니다 (USB를 마지막으로 광범위하게 플레이 한 것은).

허용 된 답변에 문제가있는 것 같습니다. 입력은 활성 응용 프로그램으로 간주되는 모든 것에 의해 처리됩니다. 따라서 누군가가 웹 브라우저를 제기 한 다음 바코드 스캔을 시작하면 입력이 응용 프로그램이 아닌 웹 브라우저로 이동합니다. 원하는 응용 프로그램은 이벤트조차 볼 수 없습니다.

애플리케이션이 활성화되면 이벤트를 가두고 결국 바코드 스캐너에서 어떤 이벤트가 나오는지 알아낼 수 있습니다. 그런 다음 적절한 위젯을 활성화하여 입력을 수신 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top