2017-12-12 10 views
0

Honeywell Xenon 1902 바코드 스캐너에 쿼리를 보내려고합니다. 스캐너는 가상 COM 포트를 통해 연결됩니다. 통신 설정 잘 작동합니다 :가상 COM 포트를 통해 Honeywell Xenon 1902 바코드 판독기로 데이터를 보냅니다.

With SerialPort1 

     If Not .IsOpen Then 
      Try 
       .PortName = "Com9" 
       .BaudRate = 115200 
       .DataBits = 8 
       .Parity = Parity.None 
       .StopBits = StopBits.One 
       .Handshake = Handshake.None 
       .DtrEnable = False 
       .RtsEnable = False 

       .Open() 

      Catch ex As Exception 
       MessageBox.Show(ex.Message & vbNewLine & ex.StackTrace, "Fehler beim Öffnen des COM Ports", MessageBoxButtons.OK, MessageBoxIcon.Error) 
      End Try 

     End If 

    End With 

내가 스캔 수동으로 버튼을 누를 때 나는 스캐너에서 읽는 데이터를 수신 :

Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived 

    Try 

     Dim sp As SerialPort = CType(sender, SerialPort) 
     PufferString = sp.ReadExisting 

     MsgBox(PufferString) 

    Catch ex As Exception 
     MessageBox.Show(ex.Message & vbNewLine & ex.StackTrace, "Fehler beim Empfangen", MessageBoxButtons.OK, MessageBoxIcon.Error) 
    End Try 

End Sub 

가 지금은 쿼리 명령을 전송하고 싶습니다 " cbr? " 하니웰 문서에서 스캐너로 보내고 답변을 받으십시오. 나는 하니웰 WebInterface에 이렇게 할 경우 모두 잘 작동합니다 :

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    Dim BefehlsString As String = "cbr?." 
    Dim enc As System.Text.Encoding = New System.Text.ASCIIEncoding() 

    Try 
     Dim ByteArray() As Byte        ' Oder String in ... 
     ByteArray = enc.GetBytes(BefehlsString & vbCr)    ' ... Einzelbytes umwandeln 
     SerialPort1.BaseStream.Write(ByteArray, 0, ByteArray.Length) ' Einzelbytes senden 

    Catch ex As Exception 
     MessageBox.Show(ex.Message & vbNewLine & ex.StackTrace, "Fehler beim Senden", MessageBoxButtons.OK, MessageBoxIcon.Error) 
    End Try 

End Sub 
:

Screenshot from the Honeywell Web Interface Terminal 그래서 내 문제는 내가 스캐너로도 테라 기간 또는 다른 단자를 통해도 내 코드를 통해 명령을 보낼 수 없습니다입니다이다

+0

'SerialPort1.WriteLine ("cbr?.") 형식을 사용하여 ZPL 프린터에 물건을 보내면 모든 것을 인코딩하고 바이트 배열을 보내지 않고 그냥 사용하려고 했습니까? – soohoonigan

+0

예, 시도했지만 스캐너 응답이 나타나지 않았습니다. Button1 이벤트를 발생시킬 때마다 스캐너에서 깜박이는 LED를 볼 수는 있지만 더 이상의 조치는 필요하지 않습니다. 특히 스캐너 응답이 없습니다. – Marc

답변

0

인해 kunif 팁에 나는 다시 하니웰 문서를 읽고 나는 내 문제 해결 :

명령은 접두사 "SYN M CR"(ASCII 22,77,13)가 필요합니다 -> "SYNMCRcbr을?" 직렬 연결을 통해 스캐너에 보내야합니다. 문서에 정의 된

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    Try 

     Dim BefehlsString As String = Chr(&H16) & "M" & Chr(&HD) & "cbr?." 

     serialport.WriteLine(BefehlsString) 

    Catch ex As Exception 
     MessageBox.Show(ex.Message & vbNewLine & ex.StackTrace, "Fehler beim Senden", MessageBoxButtons.OK, MessageBoxIcon.Error) 
    End Try 

End Sub 

그럼 내가 답변을 얻을 :

내가 스캐너에 보내는 코드입니다.

0

아마도 명령 끝에 "vbCr"을 제거해도됩니다.
Area Imaging Scanner User 's Guide의 11-1 페이지에있는 "Menu Command Syntax"접두사에 CR 코드가 있지만 "cbr?"에 CR 코드가 없습니다. 11-3 페이지의 : 조회 명령의 예제;

또는 SerialPort/USB 프로토콜 모니터/스니퍼라는 소프트웨어/하드웨어를 사용하여 어떤 종류의 통신이 진행되고 있는지 조사 할 수 있습니다.