2013-10-31 1 views
2

포커스를 사용하지 않고 특정 텍스트 상자에 바코드를 표시하는 방법. 바코드 리더를 사용하여 데이터를 읽으면 특정 텍스트 상자에 데이터가 표시되어야합니다.C#에서 포커스를 설정하지 않고 특정 텍스트 상자에서 바코드를 읽는 중입니까?

+0

답변은 구현 된 실제 논리에 따라 다릅니다. 몇 가지 코드를 제공하고 다른 텍스트 상자의 데이터를 읽음으로써 무엇을 의미합니까? 바코드가 안되면 .. 너의 경우에 먹겠 니? – Ratna

답변

0

DataReceive 이벤트와 함께 직렬 포트 클래스를 사용할 수 있습니다. 데이터가 수신되면 해당 데이터를 텍스트 상자에 채 웁니다.

SerialPort mySerialPort = new SerialPort("COM1"); //give your barcode serial port 
mySerialPort.BaudRate = 9600; 
mySerialPort.Parity = Parity.None; 
mySerialPort.StopBits = StopBits.One; 
mySerialPort.DataBits = 8; 
mySerialPort.Handshake = Handshake.None; 
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler); 
mySerialPort.Open(); 

private void DataReceivedHandler(object sender,SerialDataReceivedEventArgs e) 
    { 
     SerialPort sp = (SerialPort)sender; 
     string indata = sp.ReadExisting(); 
     txtBoxName.Text = indata; 
    } 
0

내가 자바 스크립트 함수가 이벤트를 window.keypress을 듣고 다음과 같이 바코드 순서를 확인하는 추가합니다 :

<html> 
<body> 
<script type="text/javascript"> 
    document.currentBarcodeSequence = ""; 
    document.lastKeypress = new Date(); 
    var monitorBarcodes = function(e){ 
     //sequenceLimitMs should be set as low as possible to prevent capture of human keyed numbers. 
     //200 allow testing without a barcode scanner, you could try a value of 50 with a scanner. 
     var sequenceLimitMs = 200; 
     var now = new Date(); 
     var elapsed = now - document.lastKeypress; 
     document.lastKeypress = now; 
     if(e.charCode >= 48 && e.charCode <= 57){ 
      //pressed key is a number 
      if(elapsed < sequenceLimitMs || document.currentBarcodeSequence === ""){ 
       //event is part of a barcode sequence 
       document.currentBarcodeSequence += (e.charCode - 48); 

       if(document.currentBarcodeSequence.length > 1){ 
        clearTimeout(document.printBarcodeTimeout); 
        document.printBarcodeTimeout = setTimeout("setBarcode()", sequenceLimitMs+10); 
       } 
      } else { 
       document.currentBarcodeSequence = "" + (e.charCode - 48); 
       clearTimeout(document.printBarcodeTimeout); 
      } 
     } else { 
      document.currentBarcodeSequence = ""; 
      clearTimeout(document.printBarcodeTimeout); 
     } 
    } 
    var setBarcode = function(){ 
     var barcodeInput = document.getElementById("barcode"); 
     barcodeInput.value = document.currentBarcodeSequence; 
    } 

    window.onkeypress = monitorBarcodes; 
</script> 
<input type="text" id="barcode"></input> 
<input type="text"></input> 
</body> 
</html> 

파이어 폭스, IE10, 크롬 & 오페라에서 테스트.

편집 : 스크립트는 스캐너가 키보드에서와 동일한 방식으로 키 시퀀스를 전송한다고 가정하여 작동합니다.