2011-04-12 3 views
0

안녕하세요. 바코드 스캐너가 PC에 연결되어있어 C# program.now에서 작동합니다. 스캐너와 키보드 중 어느 것을 내 프로그램으로 보내고 있는지 구별하고 싶습니다. 모두가 코드를 사용하거나 C#에서 조언 할 수 있습니까?은 스캐너와 키보드를 구별합니다.

누구나 다른 주제로 나에게이 말을했다. (그러나 나는 아직 할 수 없다.) 기본적으로 스캐너는 기본적으로 컴퓨터에 "hi, it 's me"라는 문자를 보내도록 구성 할 수있다. 입력 스트림에서 해당 문자를 볼 때 사용자가 키보드에서 입력 한 내용이 아니라 바코드 스캐너에서 정보가 전달된다는 것을 알고 있습니다. 바코드 스캐너와 함께 제공된 설명서를 확인 했습니까? 이에 대한 자세한 정보가 있어야합니다.

+0

스캐너가 시스템 장치 관리자의 HID 키보드 장치이면 키보드입니다. – Enigmativity

답변

2

응용 프로그램이 특정 바코드 (예 : 동일한 문자 길이 또는 RegEx와 일치 할 수있는 문자)로 작동하는 경우 로봇 타이핑 테스트를 코딩하여 해결할 수 있습니다. 예 :

VB.Net :

Private sw As Stopwatch 
Private Sub FirstCharacterEntered() 
    sw.Start() 
End Sub 
Private Sub txt_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt.TextChanged 
    If txt.length = 0 Then FirstCharacterEntered() 
    If txt.Length = BarCodeSerialLength Or New RegularExpressions.Regex("your pattern").IsMatch(txt.Text) Then 
     sw.Stop() 
     If sw.ElapsedMilliseconds < TimeAHumanWouldTakeToType Then 
      'Input is from the BarCode Scanner 
     End If  
    End If 
End Sub 

C 번호 :

private Stopwatch sw; 
private void FirstCharacterEntered() 
{ 
    sw.Start(); 
} 
private void txt_TextChanged(System.Object sender, System.EventArgs e) 
{ 
    if (txt.length == 0) 
     FirstCharacterEntered(); 
    if (txt.Length == BarCodeSerialLength | new RegularExpressions.Regex("your pattern").IsMatch(txt.Text)) { 
     sw.Stop(); 
     if (sw.ElapsedMilliseconds < TimeAHumanWouldTakeToType) { 
      //Input is from the BarCode Scanner 
     } 
    } 
} 
0

스캔 데이터는 일반적으로 캐리지 리턴 또는 라인 피드 문자로 끝납니다는 접미사를했다. 접두어도 포함하도록 스캐너를 구성 할 수 있습니다. 그것이 당신 친구가 당신에게 말하려고했던 것입니다.

+0

thanks.but 나는 difrrent way.iut에서 이것을했는지. 어떤 입력 (키보드 또는 바코드 스캐너 입력을 보내는)이 링크를 사용 http://www.codeproject.com/KB/system/rawinput.aspx –

관련 문제