Flutter 蓝牙打印到 Zebra

2023-12-24

我需要在 Zebra zq520 蓝牙热敏打印机上添加打印功能。 我设法使用 flutter_blue 插件来做到这一点,但我对实现并不满意。 我讨厌将字符串分成更小的块以便通过蓝牙(并且等待!!!!!)。 我想知道是否有更好的方法,就像我们在过去的(好?)java for android 使用 android.bluetooth.BluetoothAdapter 类中使用的方法

Thanks.


我最终创建了自己的插件。

源代码 https://github.com/gmeles/flutter_cblue

编辑:2021/11/29 整合评论部分的一些评论

  1. 此代码不限于 zpl。理论上它可以支持将明文发送到蓝牙串行的每种打印机语言

  2. 它仅适用于 Android

  3. 为了使该源代码按原样工作:

  • 您必须配对名称以“zebra”开头的蓝牙打印机
  • 您必须以字符串形式发送 zpl 命令。
  1. 检查 zpl 命令是否有效的最简单方法是使用超级有用的标签查看器 http://labelary.com/viewer.html。测试标签布局(字体大小、图像、条形码等)的最简单方法是使用上述免费服务。事实上,您所要做的就是在 labelary 中创建所需的布局,然后将整个字符串从第一个 ^XA 到最后一个 ^XZ 复制到 FlutterCblue.printToBT。例如,如果您发送此
printToBT("^XA

^FX Top section with logo, name and address.
^CF0,60
^FO50,50^GB100,100,100^FS
^FO75,75^FR^GB100,100,100^FS
^FO93,93^GB40,40,40^FS
^FO220,50^FDIntershipping, Inc.^FS
^CF0,30
^FO220,115^FD1000 Shipping Lane^FS
^FO220,155^FDShelbyville TN 38102^FS
^FO220,195^FDUnited States (USA)^FS
^FO50,250^GB700,3,3^FS

^FX Second section with recipient address and permit information.
^CFA,30
^FO50,300^FDJohn Doe^FS
^FO50,340^FD100 Main Street^FS
^FO50,380^FDSpringfield TN 39021^FS
^FO50,420^FDUnited States (USA)^FS
^CFA,15
^FO600,300^GB150,150,3^FS
^FO638,340^FDPermit^FS
^FO638,390^FD123456^FS
^FO50,500^GB700,3,3^FS

^FX Third section with bar code.
^BY5,2,270
^FO100,550^BC^FD12345678^FS

^FX Fourth section (the two boxes on the bottom).
^FO50,900^GB700,250,3^FS
^FO400,900^GB3,250,3^FS
^CF0,40
^FO100,960^FDCtr. X34B-1^FS
^FO100,1010^FDREF1 F00B47^FS
^FO100,1060^FDREF2 BL4H8^FS
^CF0,190
^FO470,955^FDCA^FS

^XZ")

你会得到这个:

还有一件事:请记住,如果您想打印特殊语言字符(我需要打印希腊语),您必须找到打印机中安装的正确字体。例如:为了打印希腊字符,我必须集成这个

^CWN,E:TT0003M_.FNT

就在第一个 ^XA 之后。然后我使用 N 字体来打印希腊语。如果您了解基础知识,它会非常灵活

希望能帮助到你

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter 蓝牙打印到 Zebra 的相关文章

随机推荐

  • 从主要活动中禁用片段中的按钮

    我的片段中有 3 个按钮 我想从主要活动中禁用它们 我尝试在replace newfragment之前使用bundle选项 但它产生了其他问题 片段中的按钮可以投射到主要活动吗 像这样的东西 我收到错误无法投射 但我的输入不正确 RedUp
  • Babel 7 中的外部导入不会被转译

    我目前正在将代码库从 Babel 6 迁移到 7 该代码由多个具有自己配置的单独项目组成 The main项目从以下位置导入文件external然而脚本是从导入的external by main没有被转译并且在 意外的令牌导入 上失败 脚本
  • Angular ui 选项卡,每个选项卡都有单独的控制器

    我想制作一个引导选项卡集 每个选项卡都有自己的控制器 谁能指出我应该朝哪个方向走 目前我已经制作了几个不同的控制器 我希望在选项卡集中使用它们 而不是将它们显示为不同的路线 我知道我可以通过在不同的控制器模板中将选项卡集显示为活动的给定控制
  • 如何找到最佳的模糊字符串匹配?

    蟒蛇的新的正则表达式模块 https pypi python org pypi regex支持模糊字符串匹配 大声歌颂 现在 根据文档 The ENHANCEMATCH标志进行模糊匹配尝试以提高拟合度 它找到的下一个匹配项 The BEST
  • 获取用户输入的数字列表

    我尝试使用input Py3 raw input Py2 获取数字列表 但是使用代码 numbers input print len numbers 输入 1 2 3 and 1 2 3给出的结果是7 and 5分别 它似乎将输入解释为字符
  • 在Lua中,我可以轻松地选择第N个结果而不需要自定义函数吗?

    假设我将一个字符串插入到表中 如下所示 table insert tbl mystring 然后mystring通过将所有出现的 a 替换为 b 生成input mystring string gsub input a b 将两者合并为一个
  • 使用 JSON.NET 序列化/反序列化动态属性名称

    我有以下课程 public class MyRequest public string Type get set public string Source get set 我想序列化 反序列化以下值Source来自名为值的 JSON 字段T
  • java使用excel打开csv文件

    我正在为大学做一个项目 并制作了一个创建 csv 文件的程序 我希望有一个按钮 您可以单击该按钮 然后使用 Excel 打开 csv 文件 谢谢 知道系统上安装了 MsOffice 您应该能够使用以下命令从命令行打开文档 excel myD
  • Keycloak.loadUserProfile() 上的 Keycloak 403(禁止)

    我是 Keycloak 的新手 我尝试使用以下代码获取用户信息 keycloakAuth loadUserProfile success function profile debugger console log profile error
  • InvalidOperationException:无法为“角色”创建 DbSet,因为该类型未包含在上下文的模型中

    以下解决方案在 net core 1 1中有效 但从1 1升级到2 0后 我收到以下错误 InvalidOperationException 无法为 Role 创建 DbSet 因为该类型未包含在上下文的模型中 当用户尝试登录时 执行以下语
  • 捕获谷歌应用程序引擎日志输出

    如何在管理控制台之外查看 Google App Engine 日志 我正在开发 所以使用dev appserver py 管理控制台并希望在发出记录时查看日志 我想使用标准 Unix 工具 例如 在控制台中监控日志输出 less grep
  • 查找文件中最后一次出现的字符串

    我需要从 C 中的特定字符串中获取最后一次出现的日志跟踪 例如 lines File ReadLines logPath SkipWhile line gt line Contains param Take 20 该代码可以工作 但它从日志
  • Coffeescript 中的臃肿 JS 想要返回所有内容

    我这里有这个 Coffeescript brew args gt for e in args alert e null brew fo re eo 我希望我不需要在那里放置 null 来让它工作 但可惜的是 它编译成这样 brew func
  • 比较 Pyspark 中的列

    我正在开发一个包含 n 列的 PySpark DataFrame 我有一组 m 列 m 例如 输入 PySpark DataFrame 包含 col 1 1 2 3 col 2 2 1 4 col 3 3 2 5 Ouput col 4 m
  • 如何将 git note 移动到不同的提交?

    我已经错误地记录了错误的提交 有没有一种简单的方法可以将其整体移动到不同的提交 我希望有一种方法可以在语义上将注释重新定位到不同的提交上 但是无论什么是最简单的都会很高兴知道 我怀疑最简单的选择是使用桌面剪贴板复制粘贴文本 可能最简单的方法
  • 等宽窗扇

    我的应用程序有一个带有两个孩子的 SashForm 我希望在调整窗口大小时左孩子保持相同的大小 我想要 Eclipse 对 Package Explorer 和主编辑器做同样的事情 当您调整窗口大小时 只有文本编辑器会更改大小 但是 Pac
  • Django 子查询和带有 OuterRef 的注释

    我在使用 annotate 时遇到问题OuterRef在 Django 1 11 中的子查询 型号示例 class A models Model name models CharField max length 50 class B mod
  • IIS Express 与 VS2010 SP1 不断重建网站

    我正在使用具有多个网站项目的大型解决方案 最近决定从 Cassini 切换到 IIS Express 大约有 10 名左右的开发人员共享相同的解决方案 项目以及 web configs 除了我之外 他们都在愉快地使用 IIS Express
  • Nougat 版本的快捷方式

    当我尝试在 Intent 包中传递可序列化时 我发现了这个致命异常 我认为这与我试图实现的牛轧糖快捷方式有关 这里有一个例外 12 16 16 17 32 972 20461 20461 debug E AndroidRuntime FAT
  • Flutter 蓝牙打印到 Zebra

    我需要在 Zebra zq520 蓝牙热敏打印机上添加打印功能 我设法使用 flutter blue 插件来做到这一点 但我对实现并不满意 我讨厌将字符串分成更小的块以便通过蓝牙 并且等待 我想知道是否有更好的方法 就像我们在过去的 好 j