문제

저는 키보드 웨지 magcard 리더로부터 입력을 받는 C# POS(판매 시점) 시스템을 작성하고 있습니다.이는 자기 띠에서 읽은 모든 데이터가 마치 키보드로 입력한 것처럼 매우 빠르게 입력된다는 것을 의미합니다.현재 저는 KeyPress 이벤트에 연결하고 카드 스와이프 센티넬 문자가 포함된 일련의 매우 빠른 키 누름을 찾는 방식으로 이 문제를 처리하고 있습니다.

이런 종류의 입력을 처리하는 더 좋은 방법이 있습니까?

편집하다:장치는 단순히 데이터를 키 입력으로 표시하며 다른 드라이버를 통해 인터페이스하지 않습니다.또한 우리는 이러한 유형의 장치를 광범위하게 사용하므로 이상적으로는 사용되는 특정 웨지 모델에 관계없이 방법이 독립적으로 작동해야 합니다.그러나 다른 선택이 없다면 내가 해야 할 일이다.

도움이 되었습니까?

해결책

당신이 할 수 있는 한 가지는 문자열 앞이나 뒤에 하나 이상의 이스케이프 문자를 표시하도록 웨지 리더를 구성할 수 있어야 한다는 것입니다.이러한 이스케이프 문자를 사용하면 magcard 입력을 곧 수행할 것인지(또는 방금 수행할 것인지) 알 수 있습니다.

이 동일한 기술은 바코드 판독기 장치에서 사용되므로 응용 프로그램은 장치에서 입력된 데이터에 초점을 맞추거나 처리하는 방법을 알 수 있습니다.

이 접근 방식의 단점은 외부 장치를 적절하게 구성해야 한다는 것입니다.이는 배포 문제일 수 있습니다.

이는 장치가 단순히 키 입력으로 데이터를 표시하고 다른 드라이버를 통해 인터페이스하지 않는다고 가정합니다.

다른 팁

장치의 하드웨어 ID를 미리 알고 있는 경우 원시 입력 API를 사용할 수도 있습니다. 최근에 이에 대해 블로그에 글을 올렸습니다. 이상할 수도 있지만 내 요구 사항을 충족했습니다.내 경우의 주요 목표는 누군가가 팔레트에 있는 항목을 스캔하기 위해 뒤적거리다가 실수로 무언가에 부딪혀 애플리케이션이 초점을 잃었을 때에도 입력을 받을 수 있도록 하는 것이었습니다.두 번째 목표는 센티넬 문자를 추가할 수 없다는 것입니다. 그렇게 하면 스캔 건과 함께 사용되는 기존 타사 응용 프로그램이 손상될 수 있기 때문입니다.

이전에 센티넬 캐릭터 방법을 수행한 적이 있지만 두 방법 모두 KeyPress 연결하거나 낮은 수준의 키보드 후크를 통해 SetWindowsHookEx() 또는 통해 KeyPreview 애플리케이션의 기본 양식에 있습니다.귀하의 요구 사항을 충족한다면 해당 방법을 사용하는 것이 훨씬 더 간단하고 쉬우므로 이미 제공된 권장 사항을 따르겠습니다.

나는 당신이 그것을 수용 가능한 방식으로 처리하고 있다고 생각합니다. 카드가 데이터를 얼마나 빨리 전송하는지 주의하십시오. 우리는 무선 바코드 스캐너를 가지고 있으며 때때로 그들은 응용 프로그램이 처리할 수 있도록 키보드에 키 입력을 빠르게 던집니다.

또한 소프트웨어를 다른 지역에 배포하는 경우 키 스트로크가 다를 수 있습니다. 예를 들어 스페인(제 생각에는 프랑스일 수도 있지만)에서는 키보드의 맨 윗줄이 !"£$%^&입니다.()는 USA/UK 1234567890과 반대이며, 카드 리더기가 usa/uk로 설정되어 있으면 !"£$%^&를 보냅니다.() 1234567890 대신 웨지는 해당 키를 에뮬레이트하고 Windows에서 다르게 해석하면 문제가 됩니다.

또 다른 투표 jttraino의 아이디어.키보드 웨지와 USB 및 RS232를 지원해야 하는 POS 시스템의 카드 판독기와 수표 판독기에 대해서도 동일한 작업을 수행합니다.

기본적으로 키보드에서 나올 가능성이 없는 짧은 문자 시퀀스를 선택하고 이러한 문자가 도착하는 것을 확인하도록 메시지 처리 루프를 프로그래밍하세요.패턴과 일치하는 완전한 문자 스트림을 얻으면 지정된 '끝' 시퀀스에 도달하거나 들어오는 시퀀스에 오류가 있다고 판단할 때까지 나머지 입력을 디코딩할 수 있습니다.편집 마스크 및 다양한 화면의 동작 등을 고려하여 일반 키보드에서 앱에 입력하기 어렵거나 불가능한 문자열을 선택하세요.

좋은 출발점은 틸다플링(~!)과 같은 것입니다. 이러한 문자는 다른 사람의 개인 정보에 표시될 가능성이 없고 메모 등의 텍스트에 함께 표시될 필요가 없기 때문입니다.:-)

단점은 jttraino가 말했듯이 각 리더 장치 자체를 구성/프로그래밍해야 한다는 것입니다.일부 제조업체에서는 이 작업을 매우 쉽게 수행할 수 있습니다. 어떤 키트를 사용하고 있습니까?마텍?웰치 앨린?

나는 두 번째 @jttraino의 아이디어.

이는 바 스캔/코드 판독기 및 기타 PnP(플러그 앤 플레이) 장치를 사용하는 방법입니다.저는 이전 과제에서 동일한 기술을 사용하여 두 개의 1D 및 2D 바코드 스캐너를 구성했습니다.

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