2017-12-12 15 views
0

ハネウェルキセノン1902バーコードスキャナにクエリを送信しようとしています。スキャナは仮想COMポートを介して接続されています。通信の設定 が正常に動作します:ハニーウェルキセノン1902バーコードリーダーに仮想COMポート経由でデータを送信

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? " Honeywellの文書からスキャナーに送信し、その答えを受け取ります。私はハネウェルウェブインターフェースでこれを行う場合、それはすべて正常に動作します:

Screenshot from the Honeywell Web Interface Terminal をだから私の問題は、私はTera Termのか、他の端末を経由しても、私のコード経由でもないスキャナにコマンドを送信することができませんということです。

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 
+0

'SerialPort1.WriteLine(" cbr?。 ")という形式を使って私たちのZPLプリンタに物を送るとき、うまくいきます。すべてをエンコードしてバイト配列を送るのではなく、 – soohoonigan

+0

はい、試しましたが、スキャナの応答が表示されませんでした。私がButton1イベントを起こすたびに、私はスキャナでLEDが点滅するのを見ることができますが、それ以上のアクションはありません。特にスキャナレスポンスはありません。 – Marc

答えて

0

が原因kunifの先端に私は再びHoneywell社のドキュメントを読んで、私は私の問題解決:

コマンドは、接頭辞 "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ユーザーズガイドの11-1ページの「Menu Command Syntax」のプレフィックスにCRコードがありますが、「cbr?」にCRコードはありません。 11-3ページの「問合せコマンドの例」を参照してください。

また、SerialPort/USBプロトコルモニタ/スニファと呼ばれるソフトウェア/ハードウェアを使用して、どのような通信が行われているかを調べることもできます。

関連する問題