Javascript 爱普生热敏打印机

Javascript 爱普生热敏打印机,javascript,printing,thermal-printer,Javascript,Printing,Thermal Printer,我正试图通过网页使用爱普生TM-T20II(热敏打印机)。我已经完成了必要的配置,打印机使用给定的软件在我的网络上运行良好。因此,我下载了JS epos打印SDK,并尝试运行以下示例代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>TITLE</title> <script type="text/j

我正试图通过网页使用爱普生TM-T20II(热敏打印机)。我已经完成了必要的配置,打印机使用给定的软件在我的网络上运行良好。因此,我下载了JS epos打印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>

标题
函数buildMessage(){
//创建ePOS打印生成器对象
var builder=new epson.ePOSBuilder();
//创建打印文档
builder.addTextLang('en')
builder.addTextSmooth(true);
builder.addTextFont(builder.FONT\u A);
builder.addTextSize(3,3);
builder.addText('Hello,\tWorld!\n');
builder.addCut(builder.CUT\u FEED);
//获取打印文档
var request=builder.toString();
var地址=http://192.168.1.65/cgi-bin/epos/service.cgi?devid=99&timeout=1000';
//创建ePOS打印对象
var epos=新的epson.ePOSPrint(地址);
epos.onreceive=函数(res){
//打印不成功时,显示一条消息
如果(!res.success){
警报(“发生打印错误”);
}
}
//发送打印文档
发送(请求);
}
跑
对于devid参数,我尝试了“local_printer”,它是设备的名称, 然后我在配置面板中看到打印机id是99。尽管如此,它还是不起作用,我在cgi请求中得到了一个405方法不允许的状态代码

有什么建议吗?提前谢谢

编辑:


因此,经过一些研究,问题似乎来自CORS请求。该请求是出于安全考虑的飞行前请求,此飞行前请求未通过访问控制,因为响应中缺少“访问控制允许来源”标头。那么如何设置此标题?

由于您的编辑提到了CORS问题,或许您可以尝试在禁用web安全的情况下运行Chrome。这应该告诉chrome忽略失败的CORS标头:

chromium-browser --disable-web-security

您找到解决方案了吗?我还有405的回复。我查看了epson制作的javascript库。他们似乎试图通过套接字连接,但连接未成功。我还尝试了epson制作的iOS库,它工作得很好(它也是一个套接字连接),最后我用python编写了一个程序,使用了一个为所有类型的网络热敏打印机制作的开源库,并在我的JS脚本中调用了它,这是我发现它工作的唯一方法,它工作起来很有魅力。好的,谢谢你的回答!我用开源库对nodeJs做了同样的“把戏:)@LongDuZboub你最终使用的库是什么?@CountMurphy python-escpos,这里有一个链接