跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. POS小票打印输出的流程解释,顺便求助ESCPOS指令中的删除线

POS小票打印输出的流程解释,顺便求助ESCPOS指令中的删除线

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
7 帖子 4 发布者 5.9k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • V 离线
    V 离线
    vFire
    写于 最后由 编辑
    #1

    先贡献后求助。。。

    POS小票打印输出的基本流程如下:

    小票输出部分的定义在【addons/point_of_sale/static/src/xml/pos.xml】中的<t t-name="XmlReceipt">便签内,很容易读懂,但是同样一个文件,只有这个地方的定义和其他部分是不同的,因为这个部分是会输出给【addons/hw_escpos】进行解析后打印的,这个打印和你生成的PDF打印完全是不同的逻辑,生产环境下必须搞定POSBOX,用PDF这种方法打印太无法上台面,也不利于后期扩展和维护。

    然后再解释一下这个地方的语法特别的地方,这里面不能自己乱用HTML标签,本来我想要加个下划线把原始未打折价格显示出来,这个一般来讲很简单嘛,加个<s>标签就搞定了,因为相同文件,其他地方的模板(主要是屏幕显示用和PDF打印用的部分)都是这么简单的解决的。但是结果我用了<s>标签后,小票机输出的时候直接忽略了<s>中的东东,经过测试是因为hw_escpos模块根本不认这个标签,直接过滤掉了,后来就去查了一下hw_escpos模块的具体定义,发现他接受的标签很少,像b,em,line,left,right...这些都是可以接受的,但我死活找不到设定删除线的方法,后来再仔细看了看,找到了下面这些ESCPOS的打印指令,之前研究posbox的时候接触过,所以基本看得明白:
    ------------------------------------------------
    # Text format 
    TXT_NORMAL      = '\x1b\x21\x00' # Normal text
    TXT_2HEIGHT    = '\x1b\x21\x10' # Double height text
    TXT_2WIDTH      = '\x1b\x21\x20' # Double width text
    TXT_DOUBLE      = '\x1b\x21\x30' # Double height & Width
    TXT_UNDERL_OFF  = '\x1b\x2d\x00' # Underline font OFF
    TXT_UNDERL_ON  = '\x1b\x2d\x01' # Underline font 1-dot ON
    TXT_UNDERL2_ON  = '\x1b\x2d\x02' # Underline font 2-dot ON
    TXT_BOLD_OFF    = '\x1b\x45\x00' # Bold font OFF
    TXT_BOLD_ON    = '\x1b\x45\x01' # Bold font ON
    TXT_FONT_A      = '\x1b\x4d\x00' # Font type A
    TXT_FONT_B      = '\x1b\x4d\x01' # Font type B
    TXT_ALIGN_LT    = '\x1b\x61\x00' # Left justification
    TXT_ALIGN_CT    = '\x1b\x61\x01' # Centering
    TXT_ALIGN_RT    = '\x1b\x61\x02' # Right justification
    TXT_COLOR_BLACK = '\x1b\x72\x00' # Default Color
    TXT_COLOR_RED  = '\x1b\x72\x01' # Alternative Color ( Usually Red )
    ---------------------------------------------------
    这里就很清楚了,他是怎么定义ESCPOS的原始指令集的,但是这里面没有找到删除线的定义,所以我就去查了一下ESCPOS的指令集,找到了删除线的定义:
    ESC ! n
    格式:  十六进制:1B 21 n
    位0:设置打印字体(0:24x24中文 1:16x16中文)
    位1:保留
    位2:保留 
    位3:1:字体加粗
    位4:1:双倍高度
    位5:1:双倍宽度
    位6:1:删除线
    位7:1:下划线

    终于找到这个该死的删除线了,以粗体为例,odoo中设定的是\x1b\x45\x01,
    然并卵。。。16进制什么的完全不懂,求大神帮忙解读,我应该怎么设定这个删除线的指令。

    1 条回复 最后回复
    0
    • V 离线
      V 离线
      vFire
      写于 最后由 编辑
      #2

      胡乱尝试终于找到规律了。。。
      那个位数就是对应8个00000000
      所以删除线的对应序列应该是00000010

      然后最关键的来了,我本来以为是2进制转16进制。。。结果反复尝试发现应该是2进制转4进制。。我去。。。还是学的太少啊,对这个实在没什么研究,只能瞎撞撞出来。
      所以删除线对应的正确编码应该是

      1B 21 02

      明天去单位测试,预祝成功!成功了我一定来报喜!

      1 条回复 最后回复
      0
      • 卓忆卓 离线
        卓忆卓 离线
        卓忆
        写于 最后由 编辑
        #3

        今天上午逛官方社区,<br / https://www.odoo.com/forum/help-1/question/french-tutorial-module-creation-pos-modification-25396 br />发现有人写了个 pos相关的开发文档:

        http://thierry-godin.developpez.com/openerp/tutorial-module-creation-pos-modification-english-version/#

        您看看 有没有 有帮助的地方。

        恬淡

        1 条回复 最后回复
        0
        • mrshellyM 离线
          mrshellyM 离线
          mrshelly
          写于 最后由 编辑
          #4

          嗯.... 按上面的位数说明...
          就是  \x1b\x21\x02

          恭喜... 能分享一下比较完整的 escpos 指令集吗? 可以 PO 到官网, 这样, 下一版本就可以支持更多的 ESCPOS指令了...

          1 条回复 最后回复
          0
          • V 离线
            V 离线
            vnsoft
            写于 最后由 编辑
            #5

            EPSON ESC/P Reference Manual

            1 条回复 最后回复
            0
            • mrshellyM 离线
              mrshellyM 离线
              mrshelly
              写于 最后由 编辑
              #6

              感谢.....

              1 条回复 最后回复
              0

              • 登录

              • 没有帐号? 注册

              • 登录或注册以进行搜索。
              • 第一个帖子
                最后一个帖子
              0
              • 版块
              • 标签
              • 热门
              • 用户
              • 群组