爱普生热敏打印机的JavaScript

7
我正在尝试通过一个网页使用Epson TM-T20II(热敏打印机)。我已经完成了必要的配置,并且在我的网络上使用给定的软件时,打印机工作正常。因此,我下载了JS epos print SDK,并尝试运行这个示例代码:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
    <title>TITLE</title>
    <script type="text/javascript" src="../ePOS-Print_SDK/ePOS-Print_SDK_150729E/JavaScript/epos-print-5.0.0.js"></script>
    <script type="text/javascript">
         function buildMessage() {
             //Create an ePOS-Print Builder object
             var builder = new epson.ePOSBuilder();
             //Create a print document
             builder.addTextLang('en')
             builder.addTextSmooth(true);
             builder.addTextFont(builder.FONT_A);
             builder.addTextSize(3, 3);
             builder.addText('Hello,\tWorld!\n');
             builder.addCut(builder.CUT_FEED);
             //Acquire the print document
             var request = builder.toString();
             var address = 'http://192.168.1.65/cgi-bin/epos/service.cgi?devid=99&timeout=1000';
             //Create an ePOS-Print object
             var epos = new epson.ePOSPrint(address);
             epos.onreceive = function (res) {
             //When the printing is not successful, display a message
             if (!res.success) {
                alert('A print error occurred');
                }
             }
             //Send the print document
             epos.send(request);
         }
    </script>
    </head>
    <body>
     <button onclick='buildMessage()'>Run</button>
    </body>
</html>

对于devid参数,我尝试了设备的名称'local_printer',然后在配置面板中看到打印机的ID是99。但是,它仍然无法工作,我在cgi请求中得到了405 Method not allowed状态码。
有什么建议吗?提前感谢。
编辑:
经过一些研究,似乎问题出在CORS请求上。这个请求是为了安全考虑而进行的预检请求,但是这个预检请求没有通过访问控制,因为响应中缺少'Access-Control-Allow-Origin'头部。那么我该如何设置这个头部呢?

你找到任何解决方案了吗?我也遇到了405响应。我查看了epson制作的javascript库,它似乎尝试通过socket连接,但连接不成功。我还尝试了epson制作的iOS库,它工作正常(也是一个socket连接)。 - CR7
最终我用Python写了一个程序,使用了一个开源库,适用于各种类型的网络热敏打印机,并在我的JS脚本中调用它,这是我找到的唯一让它正常工作的方法,而且它运行起来非常顺畅。 - elachere
@LongDuZboub 你最终使用的库是什么? - CountMurphy
2
@CountMurphy,python-escpos,这是一个链接 escpos - elachere
1个回答

0

这绝不是任何解决方案。 - Md. A. Apu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接