草庐IT

Android POS 打印机 ESC/POS

coder 2023-12-03 原文

所以我一直在为蓝牙打印机编写 Android 应用程序一段时间,我意识到这实际上是 ESC/POS 标准:http://nicholas.piasecki.name/blog/wp-content/uploads/2009/12/ESC-POS-Command-Guide.pdf

现在我为打印机使用的文档是这些命令的有限子集,可以在这里找到: https://dl.dropboxusercontent.com/u/88265006/%E4%BA%A7%E5%93%81/Printer 's%20user%20manual/SP-MP-300-Technical%20Manual.pdf

        private void initPrinter() {
            byte[] init = new byte[2];
            init[0] = 0x1B;
            init[1] = 0x40;
            mService.write(init);
        }

        private void printText(String message){
            byte[] send;
            try{
                send = message.getBytes("UTF8");
            }
            catch(UnsupportedEncodingException e){
                send = "Error".getBytes();
            }
            initPrinter();
            mService.write(send);
        }

我可以连接到打印机,用“ESC @”命令初始化它,我可以用上面的命令写,但我似乎无法获得任何类型条形码的任何“视觉”效果。这是我对 1D EAN13 代码 (0000000000000) 的尝试:

        byte[] height = new byte[3];
        height[0] = 0x1D;
        height[1] = 0x68;
        height[2] = (byte)30;
        //height[3] = 0;

        byte[] width = new byte[3];
        width[0] = 0x1D;
        width[1] = 0x77;
        width[2] = (byte)3;

        byte[] textPos = new byte[3];
        textPos[0] = 0x1D;
        textPos[1] = 0x48;
        textPos[2] = (byte)2;

        byte[] level = new byte[3];
        level[0] = 0x1D;
        level[1] = 0x51;
        level[2] = (byte)32;

        byte[] code = new byte[18];
        code[0] = 0x1D;
        code[1] = 0x6B;
        code[2] = 0x02;
        code[3] = 0x0D;
        code[4] = 0x30;//1
        code[5] = 0x30;//2
        code[6] = 0x30;//3
        code[7] = 0x30;//4
        code[8] = 0x30;//5
        code[9] = 0x30;//6
        code[10] = 0x30;//7
        code[11] = 0x30;//8
        code[12] = 0x30;//9
        code[13] = 0x30;//10
        code[14] = 0x30;//11
        code[15] = 0x30;//12
        code[16] = 0x30;//13

        code[17] = 0x00;//end
        mService.write(height);
        mService.write(width);
        mService.write(textPos);
        mService.write(level);
        mService.write(code);

mService实际写入数据的地方。我得到的最佳输出是 0█0█0█0█0█0█0█0█0█0█0█0█0█0█ - 在连续多次发送数据之后。

如果我在多次发送后删除最后一个结束字节,我会得到 14 个 0,并且我还尝试将结尾 0 添加到高度、宽度、textPosition 和级别数组,但没有任何影响。

我还查看了以下地方: http://www.manualslib.com/manual/689542/Axiohm-A795.html?page=91
http://pyramidacceptors.com/phoenix-printer/esc-pos-command-set/
http://www.vbforums.com/showthread.php?754493-RESOLVED-Printing-Barcode-with-ESC-POS-on-Epson-Printers
http://www.manualslib.com/manual/753647/Axiohm-A630.html?page=51
https://www.sparkfun.com/datasheets/Components/General/Driver%20board.pdf
Where can I find a "ESC/POS" Epson Barcode Test Program?

最佳答案

好的,事实证明,在 ESC/POS 中,打印机实际上为您计算了一些数据。我不应该将校验字节(实际条形码的最后一位)放在我发送给打印品的数据中。

当然,我的文档缺少所有 <=>http://content.epson.de/fileadmin/content/files/RSD/downloads/escpos.pdf

我仍在研究 QR 码打印,但我很确定我的问题有些相似。

关于Android POS 打印机 ESC/POS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26442722/

有关Android POS 打印机 ESC/POS的更多相关文章

  1. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  2. ruby - 如何打印 ruby​​ 对象的实例变量 - 2

    classPacketdefinitialize(name,age,number,array)@name=name@age=age@number=number@neighbors=arrayendendp1=Packet.new("n1",5,2,[1,2,3,4])putsp1.name我有上面的代码,但是每当我执行puts语句时,我都会收到nameisnotamethod的错误。我不知道任何其他方式来打印p1的名称。如何打印姓名? 最佳答案 这里的问题是,虽然您拥有实例变量,但您并未使它们可访问。attr_reader:vari

  3. ruby - 如何打印出 Mechanized 存储的 cookie? - 2

    我正在使用mechanize登录网站,然后检索页面。我遇到了一些问题,我怀疑这是由于cookie中的某些值造成的。当Mechanize登录网站时,我假设它存储了cookie。如何通过Mechanize打印出存储在cookie中的所有数据? 最佳答案 代理有一个cookie方法。agent=Mechanize.newpage=agent.get("http://www.google.com/")agent.cookiesagent.cookies.to_scookie返回一个Mechanize::Cookiesobject

  4. ruby - 如何以表格格式快速打印 Ruby 哈希值? - 2

    有没有办法快速将表格格式的ruby​​哈希打印到文件中?如:keyAkeyBkeyC...1232343451253474456...其中散列的值是不同大小的数组。还是使用双循环是唯一的方法?谢谢 最佳答案 试试我写的这个gem(在表中打印散列、ruby对象、ActiveRecord对象):http://github.com/arches/table_print 关于ruby-如何以表格格式快速打印Ruby哈希值?,我们在StackOverflow上找到一个类似的问题:

  5. Ruby-rspec - 如何打印出测试(组)名称 - 2

    如果我有一些测试,例如require_relative"Line"require_relative"LineParser"describeLinedoit"Canbecreated"doload"spec_helper.rb"@line.class.should==Lineendit"Canbeparsed"do...如何打印出测试组名称-在本例中为“Line”。我尝试添加:before:alldoputs"In#{self.class}"end但这给出了:InRSpec::Core::ExampleGroup::Nested_3,而不是Line 最佳答案

  6. Ruby—Open3.popen3/如何打印输出 - 2

    我有一个执行mysql的小ruby脚本导入方式:mysql-u-p-h,但利用Open3.popen3这样做。这就是我到目前为止所拥有的:mysqlimp="mysql-u#{mysqllocal['user']}"mysqlimp这实际上是在做工作,但有一件事困扰着我,与我希望看到的输出有关。如果我将第一行更改为:mysqlimp="mysql-v-u#{mysqllocal['user']}"#notethe-v然后整个脚本永远挂起。我猜,发生这种情况是因为读流和写流相互阻塞,我也猜想stdout需要定期冲洗,以便stdin将继续被消耗。也就是说,只要stdout的buffer已满

  7. ruby - Ruby 中允许 "p *1..10"打印出数字 1-10 的功能是什么? - 2

    require'pp'p*1..10这会打印出1-10。为什么这么简洁?您还可以用它做什么? 最佳答案 它是“splat”运算符。它可用于分解数组和范围并在赋值期间收集值。这里收集赋值中的值:a,*b=1,2,3,4=>a=1b=[2,3,4]在此示例中,内部数组([3,4])中的值被分解并收集到包含数组中:a=[1,2,*[3,4]]=>a=[1,2,3,4]您可以定义将参数收集到数组中的函数:deffoo(*args)pargsendfoo(1,2,"three",4)=>[1,2,"three",4]

  8. ruby - 哈希的简单打印 key ? - 2

    很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。我想从给定的哈希键中打印出一个键,但找不到简单的解决方案:myhash=Hash.newmyhash["a"]="bar"#notworkingmyhash.fetch("a"){|k|putsk}#working,butuglyifmyhash.has_key("a")?puts"a"end还有其他办法吗?

  9. ruby - 打印一个范围内的数字 - 2

    我正在尝试使用以下代码打印1到50之间的所有数字:[1..50].each{|n|putsn}但是控制台打印[1..50]我想打印这样的东西1个2个3个4个...50 最佳答案 试试下面的代码:(1..50).each{|n|putsn}问题是您使用的是[]定界符而不是()定界符。 关于ruby-打印一个范围内的数字,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/14528573

  10. ruby-on-rails - 有没有办法在 Rails 中以编程方式查看(或打印)方法定义? - 2

    假设我在我的Rails应用中某处定义了一个名为bla的函数。在ruby​​或rails中有没有一种方法可以动态/以编程方式打印用于定义该函数的代码?例如:defblaputs"HiThere"end然后如果我调用一个函数,例如get_definition:putsget_definition(:bla)这会打印出来"puts\"HiThere\""有规范的方法吗?我以前实际上不需要这样做,而且我知道这在Rails中并不是很常见的做法。我也不想使用元(反射)编程定义我的方法,然后存储用于定义我的方法的字符串。感谢您的帮助! 最佳答案

随机推荐