- Epson TM-T88V-i型号。
- 连接到局域网。
- Ping响应OK。
- 打印状态页确定。
我可以访问打印机配置页面。打印机错误(EX_TIMEOUT)Epson TM-T88V-I with epson.ePOSBuilder
在配置页 - 部分设备的打印机“本地打印机”打印测试按钮引发错误,错误:“EX_TIMEOUT超时内容时发生”。
参考(EPOS-打印API/XML):
https://download.epson-biz.com/modules/community/index.php?content_subject=ePOS-Print%20API/XML
简单的测试网站:
print.html
<script type="text/javascript" src="js/epos-print-3.0.0.js"></script>
代码
function printTest() {
// open print dialog
$('#print').dialog('open');
//
// build print data
//
// create print data builder object
var builder = new epson.ePOSBuilder();
builder.addText('Test Print\n');
builder.addFeedLine(1);
// append paper cutting
builder.addCut();
//
// send print data
//
// create print object
var url = 'http://192.168.x.x/cgi-bin/epos/service.cgi?devid=local_printer&timeout=6000';
var epos = new epson.ePOSPrint(url);
// register callback function
epos.onreceive = function (res) {
// close print dialog
$('#print').dialog('close');
// print failure
if (!res.success) {
// show error message
$('#receive').dialog('open');
}
}
// register callback function
epos.onerror = function (err) {
// close print dialog
$('#print').dialog('close');
// show error message
$('#error').dialog('open');
}
// send
epos.send(builder.toString());
}
请求service.cgi:
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<epos-print xmlns="http://www.epson-pos.com/schemas/2011/03/epos-print">
<text>Test Print!! </text>
<feed line="1"/>
<cut/>
</epos-print>
</s:Body>
</s:Envelope>
响应:EPSON API手册(状态:00000001 =从TM打印机无响应)
<?xml version="1.0" encoding="UTF-8" ?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<response success="false" code="EX_TIMEOUT" status="1" xmlns="http://www.epson-pos.com/schemas/2011/03/epos-print" />
</soapenv:Body>
</soapenv:Envelope>
当我改变服务URL一个其他设备
var url = 'http://192.168.x.x/cgi-bin/epos/service.cgi?devid=other_printer&timeout=6000';
请求正确
Sucess="False" code="DeviceNotFound" status="0"
Windows应用程序例如同样的反应:
Public Class Form1
' URL of ePOS-Print supported TM printer
Private address As String = "http://192.168.x.x/cgi-bin/epos/service.cgi?devid=local_printer&timeout=10000"
' XML namespace
Private soap As XNamespace = "http://schemas.xmlsoap.org/soap/envelope/"
Private epos As XNamespace = "http://www.epson-pos.com/schemas/2011/03/epos-print"
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Create print document
Dim req As XElement = _
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<epos-print xmlns="http://www.epson-pos.com/schemas/2011/03/epos-print">
<text lang="en" smooth="true">Intelligent Printer </text>
<cut/>
</epos-print>
</s:Body>
</s:Envelope>
' Send print document
Dim client As WebClient = New WebClient()
client.Headers.Set("Content-Type", "text/xml; charset=utf-8")
AddHandler client.UploadStringCompleted, AddressOf UploadStringCompletedEventHandler
client.UploadStringAsync(New Uri(address, UriKind.Absolute), req.ToString())
End Sub
' Receive response document
Private Sub UploadStringCompletedEventHandler(sender As Object, e As UploadStringCompletedEventArgs)
If (e.Error IsNot Nothing) Then
MessageBox.Show(e.Error.Message)
Else
'Parse response document
Dim res As XElement = XElement.Parse(e.Result)
Dim c = From el In res.Descendants(epos + "response") Select el.Attribute("success")
MessageBox.Show(c.First().Value)
End If
End Sub
End Class
但是我们怎样才能得到设备ID,因为在配置页面中没有什么像DeviceId? – Kashyap
我再也无法访问打印机了,但我相信“local_printer”可能是打印机的原始名称(=设备ID),所以我会先从该打印机开始。 – semmelbroesel
#semmelbroesel。我发现它上面有些打印机配置页面是不同的。我有TM82-I,它有很多选择,然后TM-U220-B和TM-88V-i。在配置页面中,我可以设置设备ID。 TM-82-I。 – Kashyap