首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过虚拟com端口将数据发送到Honeywell Xenon 1902条形码阅读器

通过虚拟com端口将数据发送到Honeywell Xenon 1902条形码阅读器
EN

Stack Overflow用户
提问于 2017-12-12 15:17:53
回答 2查看 1.2K关注 0票数 1

我试图发送一个查询到霍尼韦尔Xenon 1902条形码扫描仪。扫描器通过虚拟com端口连接。建立沟通机制很好:

代码语言:javascript
复制
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

当我手动按下用于扫描的按钮时,我从扫描仪接收读取的数据:

代码语言:javascript
复制
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上这么做,一切都很好:

因此,我的问题是,我无法通过Tera术语或任何其他终端或通过我的代码向扫描仪发送命令:

代码语言:javascript
复制
 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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-03 13:32:05

由于库尼韦尔提示,我再次阅读了霍尼韦尔的文档,并解决了我的问题:

命令需要前缀“SYNMCRcbr”(ASCII 22,77,13) ->“SYNMCRcbr?”。必须通过串行连接发送到扫描仪。

这是我发送给扫描仪的代码:

代码语言:javascript
复制
 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

然后,我得到一个在文档中定义的答案。

票数 1
EN

Stack Overflow用户

发布于 2017-12-20 12:18:08

也许,删除命令末尾的"vbCr“可能有效。

在“区域成像扫描仪用户指南”第11-1页的“菜单命令语法”前缀中有一个CR代码,但是在“cbr?”中没有CR代码。第11-3页中的“查询命令示例”。

或者,您可以使用称为SerialPort/USB协议监视器/嗅探器的软件/硬件来研究正在发生的通信类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47775930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档