首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zebra浏览器打印到网络打印机~HQES收到空白响应

Zebra浏览器打印到网络打印机~HQES收到空白响应
EN

Stack Overflow用户
提问于 2018-04-03 17:49:59
回答 1查看 815关注 0票数 1

我在Windows应用程序中使用浏览器打印到iMZ320打印机。当打印机通过USB连接时,应用程序的整个流程工作正常,打印机状态的~HQES请求返回信息,我可以发送命令和项目以成功打印。

当我将打印机连接更改为网络连接时,我可以使用浏览器打印正常打印,但~HQES响应为空。我可以使用HTTP POST命令打印并通过Postman发送它,它工作得很好。当我在Postman中发送~HQES命令时,我得到一个带有200 (成功)响应的空响应,所以这并不是浏览器打印代码以某种方式屏蔽了响应。当我使用Zebra设置实用程序发送~HQES命令时,我得到响应:

代码语言:javascript
复制
"







  PRINTER STATUS                           

  ERRORS:         0 00000000 00000000     

  WARNINGS:       0 00000000 00000000     

"

当我通过Zebra设置实用程序发送命令时,当打印机没有打印机或门打开时,我得到预期的错误响应,格式与上面显示的OK响应相同。

有人知道如何获得网络打印机的打印机状态信息吗?

EN

回答 1

Stack Overflow用户

发布于 2018-08-25 07:24:04

非常简单的例子在vb。

私有函数ZPLTest(Ip作为字符串)作为字符串

代码语言:javascript
复制
    Dim client As TcpClient = New TcpClient()
    ZPLTest = "0-Printer on line"
    'check if ip is active
    Try
        client.Connect(Ip, 9100)
    Catch se As SocketException
        ZPLTest = "1-Printer off or network down"
        Exit Function
    End Try

    'send command
    Dim stream As NetworkStream = client.GetStream()
    Dim buffer As Byte() = New Byte(client.ReceiveBufferSize - 1) {}
    Dim sw As StreamWriter = New StreamWriter(stream)
    sw.Write("~HQES")
    sw.Flush()

    'check if stream reader is ok
    Dim i As Integer = 0
    While stream.DataAvailable = False
        Thread.Sleep(10)
        i += 1

        If i = 30 Then
            ZPLTest = "1- Printer not send status"
            Exit Function
        End If
    End While


    'read status printer
    Dim sr As StreamReader = New StreamReader(stream)
    Dim length As Integer = 0
    Thread.Sleep(500)
    While (stream.DataAvailable)
        length += stream.Read(buffer, length, (buffer.Length - length))
    End While

    sr.Close()
    sw.Close()
    client.Close()

    Dim results As String = (Encoding.UTF8.GetString(buffer, 0, length))

    Dim Errore As String = results.Substring(36, 1)

    If Errore = "1" Then ZPLTest = "1-Generic error"

    Dim Media As Integer
    Try
        Media = CInt(results.Substring(54, 1))
        If Media = 1 Then ZPLTest = "1-Error label"
        If Media > 1 Then ZPLTest = "1-Error ribbon"
        If Media > 3 Then ZPLTest = "1-Head open"
    Catch

    End Try

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

https://stackoverflow.com/questions/49627055

复制
相关文章

相似问题

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